diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index c381b50f1bae..930d20a01858 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -3,6 +3,14 @@ ## Description +## Images + + + +## Issue(s) that this PR fixes + + + ## **Discord contact info** - - \ No newline at end of file + + \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5393aa155f6f..a2b93f23bd5f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -50,6 +50,8 @@ jobs: run: make -j${nproc} -O all - name: Test + env: + TEST: 1 run: | make -j${nproc} -O pokeemerald-test.elf make -j${nproc} check diff --git a/Makefile b/Makefile index 8e3ff29753f1..05f5d1aa4dd4 100644 --- a/Makefile +++ b/Makefile @@ -41,11 +41,16 @@ GAME_CODE := BPEE MAKER_CODE := 01 REVISION := 0 MODERN ?= 0 +TEST ?= 0 ifeq (modern,$(MAKECMDGOALS)) MODERN := 1 endif +ifeq (check,$(MAKECMDGOALS)) + TEST := 1 +endif + # use arm-none-eabi-cpp for macOS # as macOS's default compiler is clang # and clang's preprocessor will warn on \u @@ -79,6 +84,7 @@ ELF = $(ROM:.gba=.elf) MAP = $(ROM:.gba=.map) SYM = $(ROM:.gba=.sym) +TEST_OBJ_DIR_NAME := build/test TESTELF = $(ROM:.gba=-test.elf) HEADLESSELF = $(ROM:.gba=-test-headless.elf) @@ -119,7 +125,15 @@ LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a) LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall endif -CPPFLAGS := -iquote include -iquote $(GFLIB_SUBDIR) -Wno-trigraphs -DMODERN=$(MODERN) +ifeq ($(TESTELF),$(MAKECMDGOALS)) + TEST := 1 +endif + +ifeq ($(TEST),1) +OBJ_DIR := $(TEST_OBJ_DIR_NAME) +endif + +CPPFLAGS := -iquote include -iquote $(GFLIB_SUBDIR) -Wno-trigraphs -DMODERN=$(MODERN) -DTESTING=$(TEST) ifneq ($(MODERN),1) CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef endif @@ -142,6 +156,7 @@ ROMTESTHYDRA := tools/mgba-rom-test-hydra/mgba-rom-test-hydra$(EXE) PERL := perl +# Inclusive list. If you don't want a tool to be built, don't add it here. TOOLDIRS := tools/aif2pcm tools/bin2c tools/gbafix tools/gbagfx tools/jsonproc tools/mapjson tools/mid2agb tools/preproc tools/ramscrgen tools/rsfont tools/scaninc CHECKTOOLDIRS = tools/patchelf tools/mgba-rom-test-hydra TOOLBASE = $(TOOLDIRS:tools/%=%) @@ -167,7 +182,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst # Disable dependency scanning for clean/tidy/tools # Use a separate minimal makefile for speed # Since we don't need to reload most of this makefile -ifeq (,$(filter-out all rom compare modern check libagbsyscall syms,$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS))) $(call infoshell, $(MAKE) -f make_tools.mk) else NODEP ?= 1 @@ -177,9 +192,9 @@ endif ifeq (,$(MAKECMDGOALS)) SCAN_DEPS ?= 1 else - # clean, tidy, tools, check-tools, mostlyclean, clean-tools, clean-check-tools, $(TOOLDIRS), $(CHECKTOOLDIRS), tidymodern, tidynonmodern don't even build the ROM + # clean, tidy, tools, check-tools, mostlyclean, clean-tools, clean-check-tools, $(TOOLDIRS), $(CHECKTOOLDIRS), tidymodern, tidynonmodern, tidycheck don't even build the ROM # libagbsyscall does its own thing - ifeq (,$(filter-out clean tidy tools mostlyclean clean-tools $(TOOLDIRS) clean-check-tools $(CHECKTOOLDIRS) tidymodern tidynonmodern libagbsyscall,$(MAKECMDGOALS))) + ifeq (,$(filter-out clean tidy tools mostlyclean clean-tools $(TOOLDIRS) clean-check-tools $(CHECKTOOLDIRS) tidymodern tidynonmodern tidycheck libagbsyscall,$(MAKECMDGOALS))) SCAN_DEPS ?= 0 else SCAN_DEPS ?= 1 @@ -256,7 +271,7 @@ clean-tools: clean-check-tools: @$(foreach tooldir,$(CHECKTOOLDIRS),$(MAKE) clean -C $(tooldir);) -mostlyclean: tidynonmodern tidymodern +mostlyclean: tidynonmodern tidymodern tidycheck rm -f $(SAMPLE_SUBDIR)/*.bin rm -f $(CRY_SUBDIR)/*.bin rm -f $(MID_SUBDIR)/*.s @@ -267,7 +282,7 @@ mostlyclean: tidynonmodern tidymodern rm -f $(AUTO_GEN_TARGETS) @$(MAKE) clean -C libagbsyscall -tidy: tidynonmodern tidymodern +tidy: tidynonmodern tidymodern tidycheck tidynonmodern: rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME) @@ -277,6 +292,10 @@ 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 $(TEST_OBJ_DIR_NAME) + ifneq ($(MODERN),0) $(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member endif @@ -464,7 +483,7 @@ LD_SCRIPT_TEST := ld_script_test.txt $(OBJ_DIR)/ld_script_test.ld: $(LD_SCRIPT_TEST) $(LD_SCRIPT_DEPS) cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT_TEST) > ld_script_test.ld -$(TESTELF): $(OBJ_DIR)/ld_script_test.ld $(OBJS) $(TEST_OBJS) libagbsyscall check-tools +$(TESTELF): $(OBJ_DIR)/ld_script_test.ld $(OBJS) $(TEST_OBJS) libagbsyscall tools check-tools @echo "cd $(OBJ_DIR) && $(LD) -T ld_script_test.ld -o ../../$@ " @cd $(OBJ_DIR) && $(LD) $(TESTLDFLAGS) -T ld_script_test.ld -o ../../$@ $(OBJS_REL) $(TEST_OBJS_REL) $(LIB) $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent @@ -479,7 +498,7 @@ endif check: $(TESTELF) @cp $< $(HEADLESSELF) $(PATCHELF) $(HEADLESSELF) gTestRunnerHeadless '\x01' gTestRunnerSkipIsFail "$(TEST_SKIP_IS_FAIL)" - $(ROMTESTHYDRA) $(ROMTEST) $(HEADLESSELF) + $(ROMTESTHYDRA) $(ROMTEST) $(OBJCOPY) $(HEADLESSELF) libagbsyscall: @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN) diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index 6ff38769068c..742cdb2f26d4 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -270,7 +270,7 @@ .macro stopsound .byte 0x2f .endm - + @ same as createvisualtask except takes in battlerargindex, which is the battle anim arg index of the battler to loop through .macro createvisualtaskontargets addr:req, priority:req, battlerargindex:req, argv:vararg .byte 0x30 @@ -282,7 +282,7 @@ .2byte \argv .Lcreatetask_\@_2: .endm - + @ same as createsprite except takes in battlerargindex, which is the battle anim arg index of the battler to loop through .macro createspriteontargets template:req, anim_battler:req, subpriority_offset:req, battlerargindex:req, argv:vararg .byte 0x31 @@ -298,7 +298,7 @@ .2byte \argv .Lsprite_\@_2: .endm - + @ does not overwrite gBattleAnimArgs[battlerargindex], some sprite templates are too dependent on the value (e.g. heal block) .macro createspriteontargets_onpos template:req, anim_battler:req, subpriority_offset:req, battlerargindex:req, argv:vararg .byte 0x32 @@ -332,57 +332,3 @@ createvisualtask AnimTask_IsDoubleBattle, 0 jumprettrue \ptr .endm - -@ keep CFRU macros cause I'm lazy. todo: update to createsprite and createvisualtask, respectively -.macro launchtemplate launchtemplatePtr launchtemplatePriority launchtemplateArgsNo launchtemplatearg0 launchtemplatearg1 launchtemplatearg2 launchtemplatearg3 launchtemplatearg4 launchtemplatearg5 launchtemplatearg6 launchtemplatearg7 launchtemplatearg8 - .byte 0x2 - .word \launchtemplatePtr - .byte \launchtemplatePriority - .byte \launchtemplateArgsNo - .hword \launchtemplatearg0 - .hword \launchtemplatearg1 - .hword \launchtemplatearg2 - .hword \launchtemplatearg3 - .hword \launchtemplatearg4 - .hword \launchtemplatearg5 - .hword \launchtemplatearg6 - .hword \launchtemplatearg7 - .hword \launchtemplatearg8 - .endm - -.macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8 - .byte 0x3 - .word \launchtaskPtr - .byte \launchtaskPriority - .byte \launchtaskArgsNo - .hword \launchtaskarg0 - .hword \launchtaskarg1 - .hword \launchtaskarg2 - .hword \launchtaskarg3 - .hword \launchtaskarg4 - .hword \launchtaskarg5 - .hword \launchtaskarg6 - .hword \launchtaskarg7 - .hword \launchtaskarg8 - .endm - -.macro setblends setblends_value - .byte 0xC - .hword \setblends_value - .endm - -.macro launchsoundtask launchsoundtaskPtr launchsoundtaskArgsNo launchsoundtaskarg0 launchsoundtaskarg1 launchsoundtaskarg2 launchsoundtaskarg3 launchsoundtaskarg4 launchsoundtaskarg5 launchsoundtaskarg6 launchsoundtaskarg7 launchsoundtaskarg8 - .byte 0x1F - .word \launchsoundtaskPtr - .byte \launchsoundtaskArgsNo - .hword \launchsoundtaskarg0 - .hword \launchsoundtaskarg1 - .hword \launchsoundtaskarg2 - .hword \launchsoundtaskarg3 - .hword \launchsoundtaskarg4 - .hword \launchsoundtaskarg5 - .hword \launchsoundtaskarg6 - .hword \launchsoundtaskarg7 - .hword \launchsoundtaskarg8 - .endm - diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 4f11fc78b8ef..014a8bb7ff41 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1299,7 +1299,7 @@ .byte 0xfe .4byte \failInstr .endm - + .macro callnative func:req .byte 0xff .4byte \func @@ -1317,12 +1317,80 @@ .2byte \holdEffect .4byte \jumpInstr .endm + + .macro dostockpilestatchangeswearoff, battler:req, statChangeInstr:req + callnative BS_DoStockpileStatChangesWearOff + .byte \battler + .4byte \statChangeInstr + .endm + + .macro jumpifmorethanhalfHP battler:req, jumpInstr:req + callnative BS_JumpIfMoreThanHalfHP + .byte \battler + .4byte \jumpInstr + .endm + + .macro itemrestorehp + callnative BS_ItemRestoreHP + .endm + + .macro itemcurestatus + callnative BS_ItemCureStatus + .endm + + .macro itemincreasestat + callnative BS_ItemIncreaseStat + .endm + + .macro itemrestorepp + callnative BS_ItemRestorePP + .endm + + .macro tryrevertweatherform + callnative BS_TryRevertWeatherForm + .endm + + .macro setsnow + callnative BS_SetSnow + .endm + + .macro setzeffect + callnative BS_SetZEffect + .endm + + @ Used by effects that may proc Symbiosis but do not call removeitem. + .macro trysymbiosis + callnative BS_TrySymbiosis + .endm + + @ returns TRUE or FALSE to gBattleCommunication[0] + .macro canteleport battler:req + callnative BS_CanTeleport + .byte \battler + .endm + + @ returns B_SIDE_x to gBattleCommunication[0] + .macro getbattlerside battler:req + callnative BS_GetBattlerSide + .byte \battler + .endm + + .macro checkparentalbondcounter counter:req, ptr:req + callnative BS_CheckParentalBondCounter + .byte \counter + .4byte \ptr + .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 setmagiccoattarget battler:req various \battler, VARIOUS_SET_MAGIC_COAT_TARGET .endm @@ -1798,10 +1866,6 @@ various \battler, VARIOUS_TRY_ACTIVATE_GRIM_NEIGH .endm - .macro setzeffect - various BS_ATTACKER, VARIOUS_SET_Z_EFFECT - .endm - .macro consumeberry battler:req, fromBattler:req various \battler, VARIOUS_CONSUME_BERRY .byte \fromBattler @@ -1943,7 +2007,7 @@ .macro shellsidearmcheck various BS_ATTACKER, VARIOUS_SHELL_SIDE_ARM_CHECK .endm - + .macro jumpifrodaffected battler:req, jumpInstr:req various \battler, VARIOUS_JUMP_IF_ROD .4byte \jumpInstr @@ -2012,20 +2076,7 @@ .macro swapsidestatuses various BS_ATTACKER, VARIOUS_SWAP_SIDE_STATUSES .endm - - .macro canteleport battler:req - various \battler, VARIOUS_CAN_TELEPORT - .endm - - .macro getbattlerside battler:req - various \battler, VARIOUS_GET_BATTLER_SIDE - .endm - - .macro checkparentalbondcounter counter:req, jumpInstr:req - various BS_ATTACKER, VARIOUS_CHECK_PARENTAL_BOND_COUNTER - .byte \counter - .4byte \jumpInstr - .endm + .macro swapstats stat:req various BS_ATTACKER, VARIOUS_SWAP_STATS .byte \stat @@ -2044,9 +2095,12 @@ various \battler, VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES .endm - .macro jumpifnovalidtargets jumpInstr:req - various BS_ATTACKER, VARIOUS_JUMP_IF_NO_VALID_TARGETS - .4byte \jumpInstr + .macro trytrainerslidezmovemsg battler:req + various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE + .endm + + .macro trytrainerslidemegaevolutionmsg battler:req + various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION .endm @ helpful macros @@ -2202,11 +2256,6 @@ various 0, VARIOUS_SKY_DROP_YAWN .endm - @ Used by effects that may proc Symbiosis but do not call removeitem. - .macro trysymbiosis - various BS_ATTACKER, VARIOUS_TRY_SYMBIOSIS - .endm - @ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script. .macro modifybattlerstatstage battler:req, stat:req, mode:req, amount:req, script:req, animation:req, customString @@ -2242,3 +2291,17 @@ various \battler, VARIOUS_JUMP_IF_EMERGENCY_EXITED .4byte \jumpInstr .endm + + .macro jumpifshelltrap battler:req, ptr:req + various \battler, VARIOUS_JUMP_IF_SHELL_TRAP + .4byte \ptr + .endm + + .macro hitswitchtargetfailed + various 0, VARIOUS_HIT_SWITCH_TARGET_FAILED + .endm + + .macro tryrevivalblessing, jumpInstr:req + various 0, VARIOUS_TRY_REVIVAL_BLESSING + .4byte \jumpInstr + .endm diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 49a97a24771f..78d3037aeb6f 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1582,15 +1582,15 @@ .4byte \value .endm - @ Sets the eventLegal bit for the Pokemon in the specified slot of the player's party. - .macro setmoneventlegal slot:req + @ Sets the modernFatefulEncounter bit for the Pokemon in the specified slot of the player's party. + .macro setmodernfatefulencounter slot:req .byte 0xcd .2byte \slot .endm - @ Checks if the eventLegal bit is set for the Pokemon in the specified slot of the player's party. If it isn't set, + @ Checks if the modernFatefulEncounter bit is set for the Pokemon in the specified slot of the player's party. If it isn't set, @ VAR_RESULT is TRUE. If the bit is set (or if the specified slot is empty or invalid), VAR_RESULT is FALSE. - .macro checkmoneventlegal slot:req + .macro checkmodernfatefulencounter slot:req .byte 0xce .2byte \slot .endm @@ -1938,12 +1938,12 @@ closebraillemessage .endm - @ Creates an "event legal" Pokémon for an encounter + @ Creates a Pokémon with the modernFatefulEncounter bit set for an encounter .macro seteventmon species:req, level:req, item=ITEM_NONE setvar VAR_0x8004, \species setvar VAR_0x8005, \level setvar VAR_0x8006, \item - special CreateEventLegalEnemyMon + special CreateEnemyEventMon .endm @ Set up a totem boost for the next battle. diff --git a/asm/macros/map.inc b/asm/macros/map.inc index 662257e41694..21445138dec0 100644 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -19,11 +19,11 @@ .4byte \script .endm - @ Defines an object event template for map data. Mirrors the struct layout of ObjectEventTemplate in include/global.fieldmap.h - .macro object_event index:req, gfx:req, inConnection:req, x:req, y:req, elevation:req, movement_type:req, x_radius:req, y_radius:req, trainer_type:req, sight_radius_tree_etc:req, script:req, event_flag:req + @ Defines an object event template for map data, to be used by a normal object. Mirrors the struct layout of ObjectEventTemplate in include/global.fieldmap.h + .macro object_event index:req, gfx:req, x:req, y:req, elevation:req, movement_type:req, x_radius:req, y_radius:req, trainer_type:req, sight_radius_tree_etc:req, script:req, event_flag:req .byte \index .byte \gfx - .byte \inConnection + .byte OBJ_KIND_NORMAL .space 1 @ Padding .2byte \x, \y .byte \elevation @@ -38,6 +38,22 @@ inc _num_npcs .endm + @ Defines an object event template for map data, to be used by a clone object. Mirrors the struct layout of ObjectEventTemplate in include/global.fieldmap.h + @ NOTE: The handling for this type of event does not exist in Emerald by default; it is exclusive to FRLG. + .macro clone_event index:req, gfx:req, x:req, y:req, target_local_id:req, target_map_id:req + .byte \index + .byte \gfx + .byte OBJ_KIND_CLONE + .space 1 @ Padding + .2byte \x, \y + .byte \target_local_id + .space 3 @ Padding + .2byte \target_map_id & 0xFF @ map num + .2byte \target_map_id >> 8 @ map group + .space 8 @ Padding + inc _num_npcs + .endm + @ Defines a warp event for map data. Mirrors the struct layout of WarpEvent in include/global.fieldmap.h .macro warp_def x:req, y:req, elevation:req, warpId:req, map_id:req .2byte \x, \y @@ -49,12 +65,12 @@ .endm @ Defines a coord event for map data. Mirrors the struct layout of CoordEvent in include/global.fieldmap.h - .macro coord_event x:req, y:req, elevation:req, trigger:req, index:req, script:req + .macro coord_event x:req, y:req, elevation:req, var:req, varValue:req, script:req .2byte \x, \y .byte \elevation .space 1 @ Padding - .2byte \trigger - .2byte \index + .2byte \var + .2byte \varValue .space 2 @ Padding .4byte \script inc _num_traps diff --git a/charmap.txt b/charmap.txt index 99aca4c1849d..220ff2ed5535 100644 --- a/charmap.txt +++ b/charmap.txt @@ -805,7 +805,7 @@ MUS_LITTLEROOT = 95 01 MUS_MT_CHIMNEY = 96 01 MUS_ENCOUNTER_FEMALE = 97 01 MUS_LILYCOVE = 98 01 -MUS_ROUTE111 = 99 01 +MUS_DESERT = 99 01 MUS_HELP = 9A 01 MUS_UNDERWATER = 9B 01 MUS_VICTORY_TRAINER = 9C 01 diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 5d8f61d027da..2faa39dec2c4 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -854,6 +854,8 @@ gBattleAnims_Moves:: .4byte Move_NOXIOUS_TORQUE .4byte Move_COMBAT_TORQUE .4byte Move_MAGICAL_TORQUE + .4byte Move_PSYBLADE + .4byte Move_HYDRO_STEAM @@@@ Z MOVES .4byte Move_BREAKNECK_BLITZ .4byte Move_ALL_OUT_PUMMELING @@ -945,6 +947,7 @@ gBattleAnims_General:: .4byte General_ShellTrapSetUp @ B_ANIM_SHELL_TRAP_SETUP .4byte General_ZMoveActivate @ B_ANIM_ZMOVE_ACTIVATE .4byte General_AffectionHangedOn @ B_ANIM_AFFECTION_HANGED_ON + .4byte General_Snow @ B_ANIM_SNOW_CONTINUES .align 2 gBattleAnims_Special:: @@ -1558,7 +1561,7 @@ Move_GASTRO_ACID: playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 15 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, ANIM_PAL_DEF, 2, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(30, 0, 31) createsprite gGreenPoisonDrip, ANIM_TARGET, 2, 0, -22, 0, 15, 55, FALSE playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 @@ -1859,7 +1862,7 @@ General_AquaRingHeal: playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER createsprite gSmallBubblePairSpriteTemplate, 2, 4, 12, 0, 25, 0 setalpha 8, 8 - playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER, + playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER createsprite gGuardRingSpriteTemplate, 2, 0 delay 4 createsprite gGuardRingSpriteTemplate, 2, 0 @@ -2671,7 +2674,7 @@ Move_NASTY_PLOT: waitbgfadein delay 8 createsprite gQuestionMarkSpriteTemplate, 20, 0 - playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER, + playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER delay 54 loopsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER, 16, 3 waitforvisualfinish @@ -2833,7 +2836,7 @@ Move_SHADOW_CLAW: createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - delay 12, + delay 12 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET @@ -2952,18 +2955,18 @@ Move_SHADOW_SNEAK: loadspritegfx ANIM_TAG_POISON_BUBBLE @Poison loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x7 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x7, 0x0000 waitforvisualfinish playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x12 0x6 0x1 0x3 - launchtask AnimTask_AttackerFadeToInvisible 0x2 0x1 0x1 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x12, 0x6, 0x1, 0x3 + createvisualtask AnimTask_AttackerFadeToInvisible, 0x2, 0x1 waitforvisualfinish clearmonbg ANIM_ATTACKER invisible ANIM_ATTACKER delay 0x1 - launchtask AnimTask_DestinyBondWhiteShadow 0x5 0x2 0x0 0x30 + createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30 delay 0x30 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x2 0x0 0xF 0x0 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_TARGET, 0x2, 0x2, 0x0, 0xF, 0x0 createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 call ShadowSneakMovement createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0 @@ -2974,12 +2977,12 @@ Move_SHADOW_SNEAK: call ShadowSneakMovement waitforvisualfinish visible ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x7 0x0 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x7, 0x0, 0x0000 waitforvisualfinish end ShadowSneakMovement: playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 delay 0x4 return @@ -3050,7 +3053,7 @@ Move_PSYCHO_CUT: monbg ANIM_TARGET splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gPsychoCutSpriteTemplate, ANIM_TARGET, 2, 20, 0, -8, 0, 20 waitforvisualfinish createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 7, 0, 9, 1 @@ -3070,10 +3073,10 @@ Move_ZEN_HEADBUTT: createsprite gSimplePaletteBlendSpriteTemplate, 2, 5, 1, 2, 0, 4, 0 waitforvisualfinish createsprite gZenHeadbuttSpriteTemplate, 66, 1, 0 - delay 18, + delay 18 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER waitforvisualfinish - delay 2, + delay 2 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER loadspritegfx ANIM_TAG_IMPACT createsprite gBowMonSpriteTemplate, 2, 1, 0 @@ -3231,7 +3234,7 @@ Move_TRICK_ROOM:: InitRoomAnimation: setalpha 8, 8 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET - launchtask AnimTask_ScaleMonAndRestore 5 5 0xfffa 0xfffa 15, 1 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, 0xfffa, 0xfffa, 15, 1, 1 return Move_DRACO_METEOR: @@ -3784,7 +3787,7 @@ Move_CAPTIVATE: playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, 3, 2, 20, 20 - playsewithpan 228, SOUND_PAN_ATTACKER, + playsewithpan 228, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish end @@ -4618,7 +4621,7 @@ ShadowForceWaitEnd: end ShadowForcePrep: monbg ANIM_ATTACKER - playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER, + playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER createsprite gSimplePaletteBlendSpriteTemplate ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, FALSE @@ -4736,7 +4739,7 @@ Move_WIDE_GUARD: Move_GUARD_SPLIT:: loadspritegfx ANIM_TAG_BLUEGREEN_ORB - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x1, 0x0, 0xC, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 loopsewithpan SE_M_LOCK_ON, SOUND_PAN_ATTACKER, 0x18, 0x3 call GuardSplitLaunch call GuardSplitLaunch @@ -4749,7 +4752,7 @@ Move_GUARD_SPLIT:: call GuardSplitLaunch call GuardSplitLaunch waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x1, 0xC, 0x0, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish end GuardSplitLaunch: @@ -4761,7 +4764,7 @@ GuardSplitLaunch: Move_POWER_SPLIT:: loadspritegfx ANIM_TAG_RED_HEART loadspritegfx ANIM_TAG_BLUEGREEN_ORB - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x1, 0x0, 0xC, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 loopsewithpan SE_M_LOCK_ON, SOUND_PAN_ATTACKER, 0x18, 0x3 call PowerSplitLaunch call PowerSplitLaunch @@ -4774,7 +4777,7 @@ Move_POWER_SPLIT:: call PowerSplitLaunch call PowerSplitLaunch waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x1, 0xC, 0x0, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish end PowerSplitLaunch: @@ -4869,7 +4872,7 @@ Move_RAGE_POWDER:: call RagePowderSprinkle call RagePowderSprinkle call RagePowderSprinkle - createvisualtask AnimTask_BlendColorCycle, ANIM_ATTACKER, 0x2, ANIM_PAL_ATK, 0x2, 0x2, 0x0, 0xb, 0x1f + createvisualtask AnimTask_BlendColorCycle, ANIM_ATTACKER, 0x2, F_PAL_ATTACKER, 0x2, 0x2, 0x0, 0xb, 0x1f waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -4884,9 +4887,9 @@ RagePowderSprinkle: Move_TELEKINESIS:: loadspritegfx ANIM_TAG_SPARKLE_4 @detect - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x1, 0x0, 0x9, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x1, 0x0, 0x9, 0x0 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_ATK, 0x1, 0x0, 0x9, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0x1, 0x0, 0x9, 0x7fff delay 0x12 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 0xd, 0x14, 0xffec @@ -4895,8 +4898,8 @@ Move_TELEKINESIS:: createvisualtask AnimTask_SwayMon, 0x5, 0x1, 0x18, 0xD0, 0x1, ANIM_TARGET waitforvisualfinish delay 0xA - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x1, 0x9, 0x0, 0x0 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_ATK, 0x2, 0x9, 0x0, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x1, 0x9, 0x0, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0x2, 0x9, 0x0, 0x7fff waitforvisualfinish end @@ -5044,7 +5047,7 @@ Move_SYCHRONOISE: loadspritegfx ANIM_TAG_AIR_WAVE_2 @aero particles monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x1, 0x0, 0xC, 0x0 @Darken + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 @Darken waitforvisualfinish panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 createsprite gSynchronoiseVioletRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 @@ -5069,7 +5072,7 @@ Move_SYCHRONOISE: createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xff20, 0xffe0, 0x28 createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0x70, 0xff80, 0x28 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x1, 0xC, 0x0, 0x0 @Darken + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 @Darken waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -5152,37 +5155,37 @@ Move_FLAME_CHARGE: delay 0x9 call FlameChargeSwirl waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x18 0x0 0x0 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x18, 0x0, 0x0, 0x5 delay 0x3 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - launchtemplate gBasicHitSplatSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0 createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x6, 0x0, 0x8, 0x1 call FireSpreadEffect playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_ATTACKER waitforvisualfinish delay 0x8 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x7 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x7 waitforvisualfinish clearmonbg ANIM_TARGET end FlameChargeSwirl: - launchtemplate gFlameChargeEmberTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gFlameChargeEmberTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c return Move_COIL: loadspritegfx ANIM_TAG_TENDRILS loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 0x6, 0x4 - launchtemplate gConstrictBindingSpriteTemplate 0x84, 0x4, 0x0 0x10 0x0 0x2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x10, 0x0, 0x2 delay 0x7 - launchtemplate gConstrictBindingSpriteTemplate 0x83 0x4 0x0 0x0 0x0 0x2 - launchtemplate gConstrictBindingSpriteTemplate 0x82, 0x4, 0x0 0x8 0x1 0x2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x0, 0x2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x8, 0x1, 0x2 delay 0x7 - launchtemplate gConstrictBindingSpriteTemplate 0x83 0x4 0x0 0xfff8 0x1 0x2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfff8, 0x1, 0x2 delay 0x8 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x3, 0x0, 0x6, 0x1 delay 0x14 - launchtask AnimTask_ShakeMon2 0x83 0x5 0x1 0x4 0x0 0x5 0x1 - launchtask AnimTask_StretchTargetUp 0x3 0x0 + createvisualtask AnimTask_ShakeMon2, 0x83, 0x1, 0x4, 0x0, 0x5, 0x1 + createvisualtask AnimTask_StretchTargetUp, 0x3 playsewithpan SE_M_BIND, SOUND_PAN_TARGET setarg 0x7 0xffff waitforvisualfinish @@ -5233,17 +5236,17 @@ Move_FOUL_PLAY: loadspritegfx ANIM_TAG_HANDS_AND_FEET @Black colour monbg ANIM_TARGET setalpha 12, 8 - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 delay 0x6 - launchtemplate gFoulPlayImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + createsprite gFoulPlayImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x3, 0x0, 0x6, 0x1 playsewithpan SE_M_VITAL_THROW SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, (ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS), 0x3, 0xa, 0x0, 0x0 - launchtemplate gFoulPlayRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x3, 0xa, 0x0, 0x0 + createsprite gFoulPlayRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 delay 0x8 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, (ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS), 0x3, 0xa, 0x0, 0x0 - launchtemplate gFoulPlayRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x3, 0xa, 0x0, 0x0 + createsprite gFoulPlayRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -5256,42 +5259,42 @@ Move_SIMPLE_BEAM: loadspritegfx ANIM_TAG_THIN_RING @ring setalpha 8, 8 monbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish playsewithpan SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER call SimpleBeamsRegular call SimpleBeamsRegular - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x9 0x7FFF - launchtask AnimTask_SwayMon 0x5 0x5 0x0 0x6 0x800 0x4 ANIM_TARGET + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x7FFF + createvisualtask AnimTask_SwayMon, 0x5, 0x0, 0x6, 0x800, 0x4, ANIM_TARGET call SimpleBeamWithRings call SimpleBeamWithRings call SimpleBeamWithRings call SimpleBeamWithRings call SimpleBeamWithRings - launchtemplate gSimpleBeamBrownRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + createsprite gSimpleBeamBrownRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8 delay 0x2 - launchtemplate gSimpleBeamPinkRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + createsprite gSimpleBeamPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8 delay 0x2 stopsound waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x7FFF - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x9, 0x0, 0x7FFF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff end SimpleBeamsRegular: - launchtemplate gSimpleBeamBrownTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0xd 0x0 + createsprite gSimpleBeamBrownTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xd, 0x0 delay 0x2 - launchtemplate gSimpleBeamPinkTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0xd 0x0 + createsprite gSimpleBeamPinkTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xd, 0x0 delay 0x2 return SimpleBeamWithRings: - launchtemplate gSimpleBeamBrownTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0xd 0x0 - launchtemplate gSimpleBeamBrownRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + createsprite gSimpleBeamBrownTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xd, 0x0 + createsprite gSimpleBeamBrownRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8 delay 0x2 - launchtemplate gSimpleBeamPinkTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0xd 0x0 - launchtemplate gSimpleBeamPinkRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + createsprite gSimpleBeamPinkTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xd, 0x0 + createsprite gSimpleBeamPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8 delay 0x2 return @@ -5306,21 +5309,21 @@ Move_ENTRAINMENT: playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 0x18 playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x1f 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x1f, 0x1 waitforvisualfinish end Move_AFTER_YOU: loadspritegfx ANIM_TAG_ANGER @rage loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @green color - launchtask AnimTask_SwayMon 0x5 0x5 0x1 0xF 0x600 0x2 ANIM_ATTACKER + createvisualtask AnimTask_SwayMon, 0x5, 0x1, 0xF, 0x600, 0x2, ANIM_ATTACKER delay 0x1 - launchtemplate gAfterYouGreenRageTemplate 0x2 0x3 0x0 0xffec 0xffe0 - launchtemplate gAfterYouGreenRageTemplate 0x2 0x3 0x0 0xfffb 0xffe5 + createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0x0, 0xffec, 0xffe0 + createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xffe5 playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER delay 0x14 - launchtemplate gAfterYouGreenRageTemplate 0x2 0x3 0x0 0x14 0xffe0 - launchtemplate gAfterYouGreenRageTemplate 0x2 0x3 0x0 0x23 0xffe5 + createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0x0, 0x14, 0xffe0 + createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0x0, 0x23, 0xffe5 playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER waitforvisualfinish end @@ -5351,7 +5354,7 @@ Move_ECHOED_VOICE: loadspritegfx ANIM_TAG_METAL_SOUND_WAVES monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x2 0x0 0x8 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x2, 0x0, 0x8, 0x1 call MetalSoundPlayNote call MetalSoundPlayNote call MetalSoundPlayNote @@ -5363,24 +5366,24 @@ Move_ECHOED_VOICE: end MetalSoundPlayNote: panse SE_M_UPROAR, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0 - launchtemplate gMetalSoundSpriteTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0x1e 0x0 + createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0x1e, 0x0 delay 0x2 return Move_CHIP_AWAY: loadspritegfx ANIM_TAG_IMPACT - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0x9 0x7FFF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0x9, 0x7FFF waitforvisualfinish monbg ANIM_ATK_PARTNER setalpha 12, 8 - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x18 0x6 0x1 0x5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x18, 0x6, 0x1, 0x5 delay 0x4 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x6 0x1 - launchtemplate gBasicHitSplatSpriteTemplate 0x84, 0x4, 0x0 0x0 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x5, 0x0, 0x6, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_VITAL_THROW2 SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x9 0x0 0x7FFF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x9, 0x0, 0x7FFF waitforvisualfinish blendoff end @@ -5447,27 +5450,27 @@ Move_QUICK_GUARD: loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @hand loadspritegfx ANIM_TAG_SPARKLE_4 @sparkles setalpha 12, 8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x0 0x2 0x0 0xa 0x7FFF + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x0, 0x2, 0x0, 0xa, 0x7FFF delay 0x10 monbg ANIM_ATTACKER - launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xE 0x0 0x8 0x0 0x0 - launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xfff2 0x0 0x8 0x0 0x0 + createsprite gQuickGuardArmImpactTemplate, ANIM_TARGET, 3, 0xE, 0x0, 0x8, 0x0, 0x0 + createsprite gQuickGuardArmImpactTemplate, ANIM_TARGET, 3, 0xfff2, 0x0, 0x8, 0x0, 0x0 delay 0x1 - launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xE 0x0 0x8 0x0 0x0 - launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xfff2 0x0 0x8 0x0 0x0 + createsprite gQuickGuardArmImpactTemplate, ANIM_TARGET, 3, 0xE, 0x0, 0x8, 0x0, 0x0 + createsprite gQuickGuardArmImpactTemplate, ANIM_TARGET, 3, 0xfff2, 0x0, 0x8, 0x0, 0x0 delay 0x1 - launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xE 0x0 0x8 0x0 0x0 - launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xfff2 0x0 0x8 0x0 0x0 + createsprite gQuickGuardArmImpactTemplate, ANIM_TARGET, 3, 0xE, 0x0, 0x8, 0x0, 0x0 + createsprite gQuickGuardArmImpactTemplate, ANIM_TARGET, 3, 0xfff2, 0x0, 0x8, 0x0, 0x0 waitforvisualfinish playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x0 0xffe3 @up - launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x16 0xffec @upper right - launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x1D 0x0 @right - launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0xffe9 0xffec @upper left - launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0xffe2 0x0 @left - launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x0 0x1c @down - launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x16 0x13 @lower left - launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0xffea 0x13 @lower right + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x0, 0xffe3 @up + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x16, 0xffec @upper right + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x1D, 0x0 @right + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0xffe9, 0xffec @upper left + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0xffe2, 0x0 @left + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x0, 0x1c @down + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x16, 0x13 @lower left + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0xffea, 0x13 @lower right waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER @@ -5584,21 +5587,21 @@ Move_HEAL_PULSE: Move_HEX: loadspritegfx ANIM_TAG_PURPLE_FLAME loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0x10 0x4C4A @;Deep purple + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0x10, 0x4C4A @;Deep purple waitforvisualfinish monbg ANIM_TARGET splitbgprio_all playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein - launchtask AnimTask_PurpleFlamesOnTarget 0x3 0x0 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x2 0x0 0x25 0x1 + createvisualtask AnimTask_PurpleFlamesOnTarget, 0x3 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x2, 0x0, 0x25, 0x1 playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET delay 0x20 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x2 0x0 0xc 0x4C4A @;Deep purple - launchtemplate gCurseGhostSpriteTemplate 0x84, 0x0 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_TARGET, 0x2, 0x2, 0x0, 0xc, 0x4C4A @;Deep purple + createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 4 waitforvisualfinish clearmonbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x10 0x0 0x4C4A @;Deep purple + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x10, 0x0, 0x4C4A @;Deep purple waitforvisualfinish end @@ -5614,22 +5617,22 @@ SkyDropSetup: loadspritegfx ANIM_TAG_ROUND_SHADOW @fly delay 0x0 playsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER - launchtemplate gSkyDropFlyBallTemplate 0x80 0x6 0x0 0x0 0x0 0x0 0x1e 0x0 + createsprite gSkyDropFlyBallTemplate, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0 waitforvisualfinish invisible ANIM_TARGET playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gSkyDropTargetFlyingTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gSkyDropTargetFlyingTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 end SkyDropUnleash: visible ANIM_TARGET monbg ANIM_DEF_PARTNER setalpha 12, 8 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 + createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 delay 0x7 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - launchtemplate gBasicHitSplatSpriteTemplate 0x82, 0x4, 0x0 0x0 0x1 0x0 - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x5 0xb 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x0 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x5, 0xb, 0x1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5639,8 +5642,8 @@ Move_SHIFT_GEAR: loadspritegfx ANIM_TAG_GEAR @Gear monbg ANIM_ATTACKER playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER - launchtemplate gShiftGearGearsTemplate 0x2 0x5 ANIM_ATTACKER 0xFFF3 0x8 0x65 0xa - launchtemplate gShiftGearGearsTemplate 0x2 0x5 ANIM_ATTACKER 0xE 0xFFF8 0x65 0xa + createsprite gShiftGearGearsTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xFFF3, 0x8, 0x65, 0xa + createsprite gShiftGearGearsTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xE, 0xFFF8, 0x65, 0xa waitforvisualfinish clearmonbg ANIM_ATTACKER end @@ -5652,21 +5655,21 @@ Move_CIRCLE_THROW: monbg ANIM_DEF_PARTNER setalpha 12, 8 playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0xc 0x4 0x1 0x2 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0xc, 0x4, 0x1, 0x2 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x14 0x0 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x14, 0x0, 0x0, 0x4 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x1 - launchtemplate gCircleThrowRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1 + createsprite gCircleThrowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 0x1 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe8 0x0 0x0 0x4 - launchtemplate gCircleThrowRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe8, 0x0, 0x0, 0x4 + createsprite gCircleThrowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 waitforvisualfinish delay 0x3 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x7 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x7 delay 0xb - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0xa + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xa waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5718,10 +5721,10 @@ Move_QUASH: waitbgfadein setalpha 12, 8 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtemplate gQuashArmHitTemplate 0x83, 0x3 0x0 0xffe0 0xf + createsprite gQuashArmHitTemplate, ANIM_TARGET, 3, 0x0, 0xffe0, 0xf delay 0x13 playsewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER - launchtask AnimTask_SquishTarget 0x2 0x0 + createvisualtask AnimTask_SquishTarget, 0x2 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -5756,31 +5759,31 @@ Move_REFLECT_TYPE: monbg ANIM_TARGET setalpha 8, 8 playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET - launchtemplate gReflectTypeBlueStringTemplate 0x82 0x2 0x0 0xa + createsprite gReflectTypeBlueStringTemplate, ANIM_TARGET, 2, 0x0, 0xa delay 0x4 - launchtemplate gReflectTypeVioletStringTemplate 0x82 0x2 0x0 0xfffe + createsprite gReflectTypeVioletStringTemplate, ANIM_TARGET, 2, 0x0, 0xfffe delay 0x4 - launchtemplate gReflectTypeWhiteStringTemplate 0x82 0x2 0x0 0x16 + createsprite gReflectTypeWhiteStringTemplate, ANIM_TARGET, 2, 0x0, 0x16 waitforvisualfinish clearmonbg ANIM_TARGET delay 0x1F monbg ANIM_ATTACKER playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER - launchtemplate gReflectTypeWhiteRingTemplate 0x2 0x0 + createsprite gReflectTypeWhiteRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gReflectTypePinkRingTemplate 0x2 0x0 + createsprite gReflectTypePinkRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gReflectTypeVioletRingTemplate 0x2 0x0 + createsprite gReflectTypeVioletRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gReflectTypeBlueRingTemplate 0x2 0x0 + createsprite gReflectTypeBlueRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gReflectTypeWhiteRingTemplate 0x2 0x0 + createsprite gReflectTypeWhiteRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gReflectTypePinkRingTemplate 0x2 0x0 + createsprite gReflectTypePinkRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gReflectTypeVioletRingTemplate 0x2 0x0 + createsprite gReflectTypeVioletRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gReflectTypeBlueRingTemplate 0x2 0x0 + createsprite gReflectTypeBlueRingTemplate, ANIM_ATTACKER, 2 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff @@ -5790,18 +5793,18 @@ Move_RETALIATE: loadspritegfx ANIM_TAG_CUT @Cut monbg ANIM_DEF_PARTNER setalpha 9, 8 - launchtask AnimTask_AttackerPunchWithTrace 0x2 0x2 0x7128 0xa - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 + createvisualtask AnimTask_AttackerPunchWithTrace, 0x2, 0x7128, 0xa + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 waitforvisualfinish playsewithpan SE_M_CUT, SOUND_PAN_TARGET - launchtemplate gGuillotineSpriteTemplate 0x2 0x1 0x0 - launchtemplate gGuillotineSpriteTemplate 0x2 0x1 0x1 + createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0x0 + createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0x1 delay 0x38 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x10 0x43D + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x10, 0x43D waitforvisualfinish - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x043D + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xf, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x043D waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5811,26 +5814,26 @@ Move_FINAL_GAMBIT: loadspritegfx ANIM_TAG_PINK_CLOUD @yawn animation loadspritegfx ANIM_TAG_WATER_IMPACT @blue colour loadspritegfx ANIM_TAG_EXPLOSION @explosion animation - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 @Darken + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 @Darken waitforvisualfinish - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0xa 0x1 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x0 0x2 0x0 0x8 0x7fff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0xa, 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x0, 0x2, 0x0, 0x8, 0x7fff waitforvisualfinish playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER - launchtemplate gFinalGambitBlueYawnTemplate 0x2 0x3 0x0 0x0 0x25 + createsprite gFinalGambitBlueYawnTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x25 delay 0x4 waitforvisualfinish - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0xf 0x1 - launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffc 0xfffc 0xf 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0xf, 0x1 + createvisualtask AnimTask_ScaleMonAndRestore, 0x5, 0xfffc, 0xfffc, 0xf, 0x1, 0x1 waitforvisualfinish monbg ANIM_TARGET delay 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gFinalGambitExplosionTemplate 0x3 0x4 0x0 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + createsprite gFinalGambitExplosionTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xf, 0x1 waitforvisualfinish clearmonbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish end @@ -5838,7 +5841,7 @@ Move_BESTOW: monbg ANIM_TARGET splitbgprio ANIM_TARGET panse SE_M_METRONOME, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 - launchtask AnimTask_CreateBestowItem 0x2 0x6 0x14 0x0 0x0 0x0 0x28 0xffe7 + createvisualtask AnimTask_CreateBestowItem, 0x2, 0x14, 0x0, 0x0, 0x0, 0x28, 0xffe7 waitforvisualfinish unloadspritegfx ANIM_TAG_ITEM_BAG @;The generated item sprite uses this tag clearmonbg ANIM_TARGET @@ -6254,7 +6257,7 @@ Move_STRUGGLE_BUG: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_ATK, 2, 0, 9, 0x0a1f + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 9, 0x0a1f waitforvisualfinish createvisualtask AnimTask_FlailMovement, 2, 0 createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 @@ -6265,7 +6268,7 @@ Move_STRUGGLE_BUG: createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 0x1e, 1, 0 createvisualtask AnimTask_ShakeTargetPartnerBasedOnMovePowerOrDmg, 2, FALSE, 1, 0x1e, 1, 0 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_ATK, 2, 9, 0, 0x0a1f + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, 0x0a1f delay 5 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 1 delay 5 @@ -6276,7 +6279,7 @@ Move_STRUGGLE_BUG: end Move_BULLDOZE: - launchtask AnimTask_Splash 0x2 0x2 0x0 0x3 + createvisualtask AnimTask_Splash, 0x2, 0x0, 0x3 delay 0x8 goto Move_EARTHQUAKE @@ -6286,34 +6289,34 @@ Move_FROST_BREATH: loadspritegfx ANIM_TAG_FIRE_PLUME fadetobg BG_ICE waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x300 0x0 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x300, 0x0, 0x0, 0xffff waitbgfadein playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x5 0x5 0x0 0x0 0x2 0x28 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, 0x0, 0x0, 0x2, 0x28, 0x1 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x82 0x5 0x0 0xf 0x0 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xf, 0x0, 0x0, 0x4 waitforvisualfinish - launchtemplate gFrostBreathBlueBreathTemplate 0x82 0x5 0x1e 0xf 0x0 0xa 0xa + createsprite gFrostBreathBlueBreathTemplate, ANIM_TARGET, 2, 0x1e, 0xf, 0x0, 0xa, 0xa waitforvisualfinish loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 0xb, 0x3 - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x3 0x19 0x1 - launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0x5 0x0 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x3, 0x19, 0x1 + createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0x5, 0x0 delay 0x1 - launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0xfff6 0xfff1 + createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0xfff6, 0xfff1 delay 0x1 - launchtemplate gFrostBreathBlueRageTemplate 0x82, 0x3, 0x1 0x0 0x19 + createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x19 delay 0x1 - launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0xf 0x5 + createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0xf, 0x5 delay 0x1 - launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0xffe7 0x0 + createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0xffe7, 0x0 delay 0x1 - launchtemplate gFrostBreathBlueRageTemplate 0x82, 0x3, 0x1 0x1e 0x1e + createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 0x1, 0x1e, 0x1e delay 0x1 - launchtemplate gFrostBreathBlueRageTemplate 0x82, 0x3, 0x1 0xffe5 0x19 + createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 0x1, 0xffe5, 0x19 delay 0x1 - launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0x0 0x8 + createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0x0, 0x8 waitforvisualfinish - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0xc2 0x3 0x0 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 66, 0x0, 0x0, 0x4 waitforvisualfinish call UnsetPsychicBg end @@ -6327,31 +6330,31 @@ Move_DRAGON_TAIL: waitforvisualfinish setalpha 12, 8 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x14 0x3 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x14, 0x3, 0x0, 0x4 delay 0x1 - launchtemplate gSlamHitSpriteTemplate 0x2 0x2 0x0 0x0 + createsprite gSlamHitSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 delay 0x3 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - launchtemplate gBasicHitSplatSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x1 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xfff4 0xa 0x0 0x3 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfff4, 0xa, 0x0, 0x3 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5 call TailWhackDown delay 0x3 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x0 0x3 0x6 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0x0, 0x3, 0x6, 0x1 waitforvisualfinish delay 0x5 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x6 waitforvisualfinish clearmonbg ANIM_TARGET blendoff end TailWhackDown: - launchtemplate gBasicHitSplatSpriteTemplate 0x83 4 0xfff6 0xfff8 1 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xfff6, 0xfff8, 1, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET - launchtemplate gRockScatterSpriteTemplate, 0x82, 4, -12, 0x1b, 2, 3 - launchtemplate gRockScatterSpriteTemplate, 0x82, 4, 8, 28, 3, 4 - launchtemplate gRockScatterSpriteTemplate, 0x82, 4, -4, 30, 2, 3 - launchtemplate gRockScatterSpriteTemplate, 0x82, 4, 12, 25, 4, 4 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 0x1b, 2, 3 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 28, 3, 4 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 30, 2, 3 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 25, 4, 4 return Move_WORK_UP: @@ -6417,7 +6420,7 @@ Move_WILD_CHARGE: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gGrowingShockWaveOrbSpriteTemplate 0x2 0x0 @electric circle + createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 2 @electric circle delay 0x1e waitforvisualfinish loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 0x1c, 0x2 @@ -6426,23 +6429,23 @@ Move_WILD_CHARGE: call ScreenFlash waitforvisualfinish playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x6 0x1 0x0 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0 waitforvisualfinish delay 0xb - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x1a 0x0 0x0 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1a, 0x0, 0x0, 0x5 delay 0x6 - launchtemplate gBasicHitSplatSpriteTemplate 0x4 0x4 0xfff6 0x0 0x1 0x0 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x10 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0x10, 0x1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call ElectricityEffect waitforvisualfinish - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5 waitforvisualfinish clearmonbg ANIM_TARGET blendoff end ScreenFlash: - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x07FE + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x07FE return Move_DRILL_RUN: @@ -6451,51 +6454,51 @@ Move_DRILL_RUN: setalpha 12, 8 fadetobg BG_FISSURE waitbgfadeout - launchtask AnimTask_PositionFissureBgOnBattler 0x5 0x3 0x1 0x5 0xffff - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x0 + createvisualtask AnimTask_PositionFissureBgOnBattler, 0x5, 0x1, 0x5, 0xffff + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x0 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 0x2 - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x1 - launchtemplate gHornHitSpriteTemplate 0x84 0x3 0x0 0x0 0xc + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x1 + createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0xc waitforvisualfinish playse 0x14 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x0 0x2 0x0 0x28 0x1 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0xa 0x0 0x28 0x1 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x3 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x0, 0x2, 0x0, 0x28, 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0xa, 0x0, 0x28, 0x1 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x3 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x2 0x1 0x3 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x2, 0x1, 0x3 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0xfffc 0x3 0x1 0x3 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xfffc, 0x3, 0x1, 0x3 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0xfff8 0xfffb 0x1 0x3 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xfff8, 0xfffb, 0x1, 0x3 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x4 0xfff4 0x1 0x3 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x4, 0xfff4, 0x1, 0x3 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x10 0x0 0x1 0x3 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x0, 0x1, 0x3 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x5 0x12 0x1 0x3 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x5, 0x12, 0x1, 0x3 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0xffef 0xc 0x1 0x2 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffef, 0xc, 0x1, 0x2 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0xffeb 0xfff1 0x1 0x2 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffeb, 0xfff1, 0x1, 0x2 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x8 0xffe5 0x1 0x2 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x8, 0xffe5, 0x1, 0x2 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x20 0x0 0x1 0x2 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x0, 0x1, 0x2 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x2 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x2 waitforvisualfinish call UnsetPsychicBg end @@ -6508,15 +6511,15 @@ Move_DUAL_CHOP: splitbgprio ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 delay 0x6 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x5 0x0 0x6 0x1 - launchtemplate gKarateChopSpriteTemplate 0x2 0x8 0xffe0 0x0 0x0 0x0 0xa 0x1 0x3 0x0 @left - launchtemplate gKarateChopSpriteTemplate 0x2 0x8 0x0515 0x0 0x0 0x0 0xa 0x1 0x3 0x0 @right + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x5, 0x0, 0x6, 0x1 + createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x0, 0x0, 0xa, 0x1, 0x3, 0x0 @left + createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, 0x0515, 0x0, 0x0, 0x0, 0xa, 0x1, 0x3, 0x0 @right waitforvisualfinish playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtemplate gDualChopImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x4 0x0 0x6 0x1 + createsprite gDualChopImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x4, 0x0, 0x6, 0x1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -6526,12 +6529,12 @@ Move_HEART_STAMP: loadspritegfx ANIM_TAG_HEART_STAMP monbg ANIM_TARGET loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 0xc, 0x3 - launchtemplate gHeartStampSpinningHeartTemplate, 0x80, 0x4 0x0 0x0 0x1 0x1e + createsprite gHeartStampSpinningHeartTemplate, ANIM_TARGET, 0, 0x0, 0x0, 0x1, 0x1e delay 0x1E clearmonbg ANIM_TARGET playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon2 0x83 0x5 0x1 0x4 0x0 0x5 0x1 - launchtask AnimTask_StretchTargetUp 0x3 0x0 + createvisualtask AnimTask_ShakeMon2, 0x83, 0x1, 0x4, 0x0, 0x5, 0x1 + createvisualtask AnimTask_StretchTargetUp, 0x3 waitforvisualfinish end @@ -6541,10 +6544,10 @@ Move_HORN_LEECH: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER - launchtemplate gHornLeechHornTemplate 0x82, 0x3, 0x0 0x0 0x25 + createsprite gHornLeechHornTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x25 waitforvisualfinish - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x6 0x1 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x5, 0x0, 0x6, 0x1 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET call GigaDrainAbsorbEffect waitforvisualfinish @@ -6560,18 +6563,18 @@ Move_SACRED_SWORD: monbg ANIM_ATTACKER setalpha 12, 8 playsewithpan SE_M_SWORDS_DANCE, SOUND_PAN_ATTACKER - launchtemplate gSwordsDanceBladeSpriteTemplate 0x2 0x2 0x0 0x0 + createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 delay 0x16 - launchtask AnimTask_FlashAnimTagWithColor 0x2 0x7 0x2715 0x2 0x2 0x7ff2 0x10 0x0 0x0 + createvisualtask AnimTask_FlashAnimTagWithColor, 0x2, 0x2715, 0x2, 0x2, 0x7ff2, 0x10, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_ATTACKER delay 0x1 monbg ANIM_TARGET playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - launchtemplate gSacredSwordBladesTemplate 0x81 0x5 0x0 0xa 0x0 0xFF00 0xA - launchtemplate gSacredSwordCutTemplate 0x2 0x3 0x28 0xffe0 0x0 + createsprite gSacredSwordBladesTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xFF00, 0xA + createsprite gSacredSwordCutTemplate, ANIM_ATTACKER, 2, 0x28, 0xffe0, 0x0 delay 0x5 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x0 0x3 0xa 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x0, 0x3, 0xa, 0x1 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -6582,11 +6585,11 @@ Move_RAZOR_SHELL: loadspritegfx ANIM_TAG_RAZOR_SHELL loadspritegfx ANIM_TAG_CUT monbg ANIM_TARGET - launchtemplate gRazorShellTemplate 0x2 0x5 ANIM_TARGET 0x0 0x0 25 0 + createsprite gRazorShellTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x0, 25, 0 playsewithpan SE_M_CUT, SOUND_PAN_TARGET - launchtemplate gCuttingSliceSpriteTemplate 0x1 0x3 0x28 0xffe0 0x0 + createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 1, 0x28, 0xffe0, 0x0 delay 0x5 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xa 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xa, 0x1 waitforvisualfinish clearmonbg ANIM_TARGET waitforvisualfinish @@ -6599,19 +6602,19 @@ Move_HEAT_CRASH: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_SUCCESS, SOUND_PAN_TARGET - launchtemplate gHeatCrashEruptionRockTemplate 0x3 0x3 0x0 0xffe0 0xf + createsprite gHeatCrashEruptionRockTemplate, ANIM_ATTACKER, 3, 0x0, 0xffe0, 0xf delay 0x13 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0xfff8 0x1 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x4 0x9 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff8, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x4, 0x9, 0x1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 0x5 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xa 0xfff8 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xa, 0xfff8, 0x1, 0x1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x5 0x1 - launchtemplate gRockScatterSpriteTemplate 0x82, 0x4, 0xfff4 0x20 0x3 0x4 - launchtemplate gRockScatterSpriteTemplate 0x82, 0x4, 0x8 0x1f 0x2 0x2 - launchtemplate gRockScatterSpriteTemplate 0x82, 0x4, 0xfffc 0x1c 0x2 0x3 - launchtemplate gRockScatterSpriteTemplate 0x82, 0x4, 0xc 0x1e 0x4 0x3 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0x5, 0x1 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfff4, 0x20, 0x3, 0x4 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0x8, 0x1f, 0x2, 0x2 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfffc, 0x1c, 0x2, 0x3 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xc, 0x1e, 0x4, 0x3 clearmonbg ANIM_TARGET blendoff end @@ -6622,9 +6625,9 @@ Move_LEAF_TORNADO: monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET playsewithpan SE_M_GUST, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x2 0x2f 0x1 - launchtemplate gEllipticalGustSpriteTemplate 0x2 0x2 0x0 0xfff0 - launchtask AnimTask_AnimateGustTornadoPalette 0x5 0x2 0x1 0x46 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x2, 0x2f, 0x1 + createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 + createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46 call LeafTornadoVortex call LeafTornadoVortex call LeafTornadoVortex @@ -6633,17 +6636,17 @@ Move_LEAF_TORNADO: clearmonbg ANIM_TARGET end LeafTornadoVortex: - launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x1 + createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x1 delay 0x2 - launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x1 + createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x1 delay 0x2 - launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x1 + createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x1 delay 0x2 - launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x1 + createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x1 delay 0x2 - launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x1 + createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x1 delay 0x2 - launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce 0x1 + createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x1 delay 0x2 return @@ -6687,19 +6690,19 @@ Move_COTTON_GUARD: blendoff end CottonSporesSpiralInward: - launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0x28 0xfff6 0xd + createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0x28, 0xfff6, 0xd delay 0x3 - launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0xffdd 0xfff6 0xd + createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0xffdd, 0xfff6, 0xd delay 0x3 - launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0xf 0xffd8 0xd + createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0xf, 0xffd8, 0xd delay 0x3 - launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0xfff6 0xffe0 0xd + createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xffe0, 0xd delay 0x3 - launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0x19 0xffec 0xd + createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0x19, 0xffec, 0xd delay 0x3 - launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0xffd8 0xffec 0xd + createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0xd delay 0x3 - launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0x5 0xffd8 0xd + createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0x5, 0xffd8, 0xd delay 0x3 return @@ -6707,37 +6710,37 @@ Move_NIGHT_DAZE: loadspritegfx ANIM_TAG_THIN_RING @uproar loadspritegfx ANIM_TAG_PURPLE_FLAME @dark violet color loadspritegfx ANIM_TAG_RED_ORB @circles - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish playsewithpan SE_ORB, SOUND_PAN_ATTACKER - launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 - launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x0 - launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x20 - launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x40 - launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x60 - launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x80 - launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0xa0 - launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x0 - launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0xe0 - delay 0x1 - launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 - delay 0x1 - launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 + createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x0 + createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x20 + createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x40 + createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x60 + createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x80 + createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0xa0 + createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x0 + createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0xe0 + delay 0x1 + createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 + delay 0x1 + createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 delay 0xF - launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 delay 0x1 - launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 delay 0x1 - launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 waitforvisualfinish - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x1f 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x0 0x9 0x2002 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x1f, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x2002 delay 0x6 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x2002 + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_TARGET, 0x2, 0x9, 0x0, 0x2002 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish end @@ -6766,17 +6769,17 @@ Move_TAIL_SLAP: setalpha 12, 8 choosetwoturnanim TailSlapRight TailSlapLeft TailSlapContinue: - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET blendoff end TailSlapRight: - launchtemplate gTailSlapTemplate 0x2 0x4 0xfff8 0x0 0x1 0x0 + createsprite gTailSlapTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x0 goto TailSlapContinue TailSlapLeft: - launchtemplate gTailSlapTemplate 0x2 0x4 0x8 0x0 0x1 0x0 + createsprite gTailSlapTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x0 goto TailSlapContinue Move_HURRICANE: @@ -6786,10 +6789,10 @@ Move_HURRICANE: setalpha 12, 8 fadetobg BG_HURRICANE waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x1000 0x0 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x1000, 0x0, 0x1, 0xffff waitbgfadein playsewithpan SE_M_GUST, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x40 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0x40, 0x1 call HurricaneGust delay 0xA call HurricaneGust @@ -6816,16 +6819,16 @@ Move_HEAD_CHARGE: loadspritegfx ANIM_TAG_IMPACT fadetobgfromset BG_GIGA_IMPACT_OPPONENT, BG_GIGA_IMPACT_PLAYER, BG_GIGA_IMPACT_OPPONENT waitbgfadein - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x0 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x0 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 0x2 - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x1 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x1 waitforvisualfinish - launchtask AnimTask_ShakeMon 0x2 0x5 0x0 0x2 0x0 0x4 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x6 0x1 - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x2 - launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x0, 0x2, 0x0, 0x4, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x5, 0x0, 0x6, 0x1 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x2 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish restorebg @@ -6838,17 +6841,17 @@ Move_GEAR_GRIND: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER - launchtemplate gGearGrindTemplate 0x2 0x6 0xffe0 0xffe0 0x0 0x333 0x333 0xa - launchtemplate gGearGrindTemplate 0x2 0x6 0x20 0x20 0x0 0xfccd 0xfccd 0xa + createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x0, 0x333, 0x333, 0xa + createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x0, 0xfccd, 0xfccd, 0xa delay 0xa - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff8 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x7 0x5 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x7, 0x5, 0x2 waitforvisualfinish - launchtemplate gGearGrindTemplate 0x2 0x6 0x20 0xffe0 0x0 0xfccd 0x333 0xa - launchtemplate gGearGrindTemplate 0x2 0x6 0xffe0 0x20 0x0 0x333 0xfccd 0xa + createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe0, 0x0, 0xfccd, 0x333, 0xa + createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x20, 0x0, 0x333, 0xfccd, 0xa delay 0xa - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x8 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x8 0x4 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x8, 0x4, 0x2 waitforvisualfinish stopsound clearmonbg ANIM_TARGET @@ -6865,16 +6868,16 @@ Move_SEARING_SHOT: createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_WARM_ROCK, 0x0, 0xB, 0xB, 0x01BE @Orange monbg ANIM_ATTACKER setalpha 8, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 waitforvisualfinish - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x3c 0x2 0xc - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_ATK 0x2 0x0 0x9 0x1F + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x3c, 0x2, 0xc + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ATTACKER, 0x2, 0x0, 0x9, 0x1F playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 0x1e playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 0x1e playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gSearingShotRedChargeTemplate 0x2 0x1 0x0 + createsprite gSearingShotRedChargeTemplate, ANIM_ATTACKER, 2, 0x0 delay 0x19 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 0x14 @@ -6883,66 +6886,66 @@ Move_SEARING_SHOT: playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER waitforvisualfinish playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x0 0x1e 0x19 0xffec - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x20 0x1e 0x19 0xffec - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x40 0x1e 0x19 0xffec + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x1e, 0x19, 0xffec + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x20, 0x1e, 0x19, 0xffec + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x40, 0x1e, 0x19, 0xffec delay 0x2 - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x60 0x1e 0x19 0xffec - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x80 0x1e 0x19 0xffec + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x60, 0x1e, 0x19, 0xffec + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x80, 0x1e, 0x19, 0xffec delay 0x2 - launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xa0 0x1e 0x19 0xffec - launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xa0 0x1e 0x19 0xffec + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xa0, 0x1e, 0x19, 0xffec + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xa0, 0x1e, 0x19, 0xffec delay 0x2 - launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xe0 0x1e 0x19 0xffec + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xe0, 0x1e, 0x19, 0xffec delay 0xF playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x0 0x1e 0x19 0x0 + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x1e, 0x19, 0x0 delay 0x2 - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x20 0x1e 0x19 0x0 - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x40 0x1e 0x19 0x0 - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x60 0x1e 0x19 0x0 + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x20, 0x1e, 0x19, 0x0 + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x40, 0x1e, 0x19, 0x0 + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x60, 0x1e, 0x19, 0x0 delay 0x2 - launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x80 0x1e 0x19 0x0 + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x80, 0x1e, 0x19, 0x0 delay 0x2 - launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xa0 0x1e 0x19 0x0 - launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xa0 0x1e 0x19 0x0 + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xa0, 0x1e, 0x19, 0x0 + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xa0, 0x1e, 0x19, 0x0 delay 0x2 - launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xe0 0x1e 0x19 0x0 + createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xe0, 0x1e, 0x19, 0x0 delay 0x15 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_ATK 0x2 0x9 0x0 0x1F + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ATTACKER, 0x2, 0x9, 0x0, 0x1F clearmonbg ANIM_ATTACKER fadetobg BG_FIRE waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xA00 0x0 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xA00, 0x0, 0x1, 0xffff waitbgfadein delay 0x1E monbg ANIM_ATK_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_ATK_PARTNER | ANIM_PAL_DEF | ANIM_PAL_DEF_PARTNER 0x2 0x0 0x9 0x1F + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ADJACENT, 0x2, 0x0, 0x9, 0x1F playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x1B 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x1B 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATK_PARTNER 0x3 0x0 0x1B 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x1B, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x1B, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_ATK_PARTNER, 0x3, 0x0, 0x1B, 0x1 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET - launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, -5, -5, 0x1 0x1E ANIM_TARGET - launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, 5, 10, 0x1 0x1E ANIM_TARGET - launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, -5, -5, 0x1 0x1E ANIM_DEF_PARTNER - launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, 5, 10, 0x1 0x1E ANIM_DEF_PARTNER - launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, -5, -5, 0x1 0x1E ANIM_ATK_PARTNER - launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, 5, 10, 0x1 0x1E ANIM_ATK_PARTNER + createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 0x1, 0x1E, ANIM_TARGET + createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 0x1, 0x1E, ANIM_TARGET + createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 0x1, 0x1E, ANIM_DEF_PARTNER + createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 0x1, 0x1E, ANIM_DEF_PARTNER + createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 0x1, 0x1E, ANIM_ATK_PARTNER + createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 0x1, 0x1E, ANIM_ATK_PARTNER delay 0x1E playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_ATK_PARTNER | ANIM_PAL_DEF | ANIM_PAL_DEF_PARTNER 0x2 0x9 0x0 0x1F + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ADJACENT, 0x2, 0x9, 0x0, 0x1F delay 0x1E call UnsetPsychicBg - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x0, 0x0 clearmonbg ANIM_ATK_PARTNER blendoff end Move_TECHNO_BLAST: - launchtask AnimTask_TechnoBlast 0x5 0x0 + createvisualtask AnimTask_TechnoBlast, 0x5 jumpargeq 0x0, TYPE_FIRE, TechnoBlastFire jumpargeq 0x0, TYPE_WATER, TechnoBlastWater jumpargeq 0x0, TYPE_ELECTRIC, TechnoBlastElectric @@ -6955,96 +6958,96 @@ TechnoBlastNormal: loadspritegfx ANIM_TAG_SPARK_2 @blast particles loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal monbg ANIM_ATTACKER - setblends 0x80E - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 0xE, 0x8 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x28 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0x28 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0xffd8 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0xffec 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0xffec, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x14 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffec 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteChargeTemplate 0x2 0x1 0x0 + createsprite gTechnoBlastWhiteChargeTemplate, ANIM_ATTACKER, 2, 0x0 call TechnoBlastWhiteCircles call TechnoBlastWhiteCircles - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x28 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0x28 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0xffd8 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0xffec 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0xffec, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x14 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffec 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0x10 delay 0x2 waitforvisualfinish playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastWhiteBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 - launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 - launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 - launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 - launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 - launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 - launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 - launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + createsprite gTechnoBlastWhiteBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0 + createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 + createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1 + createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0 + createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2 + createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0 + createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1 + createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0 + createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2 waitforvisualfinish playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 - launchtemplate gTechnoBlastWhiteSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x5, 0x1 + createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0 delay 0x2 - launchtemplate gTechnoBlastWhiteSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 + createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0 delay 0x2 - launchtemplate gTechnoBlastWhiteSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 + createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0 delay 0x2 - launchtemplate gTechnoBlastWhiteSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 + createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER end TechnoBlastWhiteCircles: - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0x14 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffec 0x1e 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x1e, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x14 0xffe2 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x14, 0xffe2, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffec 0xffe2 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffec, 0xffe2, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x14 0x1e 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x14, 0x1e, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0x0 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x0, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x0 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x0, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x28 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0x28 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0xffd8 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0xffec 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0xffec, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x14 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10 delay 0x2 - launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffec 0x10 + createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0x10 delay 0x2 return @@ -7055,11 +7058,11 @@ TechnoBlastElectric: loadspritegfx ANIM_TAG_SPARK_2 @blast particles loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal monbg ANIM_ATTACKER - setblends 0x80E - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 0xE, 0x8 - launchtemplate gGrowingChargeOrbSpriteTemplate 0x2 0x1 0x0 + createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x0 call TechnoBlastCharging1 delay 0xF call TechnoBlastCharging2 @@ -7078,52 +7081,52 @@ TechnoBlastElectric: delay 0xF waitforvisualfinish playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastYellowBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + createsprite gTechnoBlastYellowBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0 + createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 + createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1 + createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0 + createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2 + createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0 + createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1 + createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0 + createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2 waitforvisualfinish playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 - launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x5, 0x1 + createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x5, 0x1 delay 0x2 - launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xf, 0x14, 0x5, 0x2 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0 delay 0x2 - launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x19, 0x0, 0x5, 0x1 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2 delay 0x2 - launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1 + createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x2, 0xfff8, 0x5, 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER end TechnoBlastCharging1: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 return TechnoBlastCharging2: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 return TechnoBlastWater: @@ -7134,113 +7137,113 @@ TechnoBlastWater: loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal loadspritegfx ANIM_TAG_BUBBLE @bubbles monbg ANIM_ATTACKER - setblends 0x80E - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x1 + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x1 waitforvisualfinish - launchtemplate gTechnoBlastBlueChargeTemplate 0x2 0x1 0x0 + createsprite gTechnoBlastBlueChargeTemplate, ANIM_ATTACKER, 2, 0x0 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0 waitforvisualfinish playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastBlueBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + createsprite gTechnoBlastBlueBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0 + createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 + createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1 + createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0 + createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2 + createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0 + createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1 + createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0 + createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2 waitforvisualfinish playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 - launchtemplate gTechnoBlastBlueSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x1 - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x5, 0x1 + createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x1 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x1 delay 0x2 - launchtemplate gTechnoBlastBlueSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x1 - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x1 + createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x1 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x1 delay 0x2 - launchtemplate gTechnoBlastBlueSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x1 - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x1 + createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x1 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x1 delay 0x2 - launchtemplate gTechnoBlastBlueSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x1 - launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x1 + createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x1 + createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER @@ -7255,29 +7258,29 @@ TechnoBlastFire: loadspritegfx ANIM_TAG_SPARK_2 @blast particles loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal monbg ANIM_ATTACKER - setblends 0x80E - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish - launchtemplate gTechnoBlastRedChargeTemplate 0x2 0x1 0x0 + createsprite gTechnoBlastRedChargeTemplate, ANIM_ATTACKER, 2, 0x0 delay 0x5 call TechnoBlastFireSpiral call TechnoBlastFireSpiral call TechnoBlastFireSpiral waitforvisualfinish playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastRedBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + createsprite gTechnoBlastRedBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0 + createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 + createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1 + createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0 + createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2 + createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0 + createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1 + createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0 + createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2 waitforvisualfinish playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 - launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x5, 0x1 + createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40 @@ -7286,37 +7289,37 @@ TechnoBlastFire: createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40 delay 0x2 - launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 + createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0 delay 0x2 - launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 + createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0 delay 0x2 - launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 + createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER end TechnoBlastFireSpiral: - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x4 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x8 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0xc + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x10 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x14 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x18 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 return @@ -7329,77 +7332,77 @@ TechnoBlastIce: loadspritegfx ANIM_TAG_SPARK_2 @blast particles loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal monbg ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish - launchtemplate gTechnoBlastIceChargeTemplate 0x2 0x1 0x0 + createsprite gTechnoBlastIceChargeTemplate, ANIM_ATTACKER, 2, 0x0 delay 0x5 call TechnoBlastIceChargeParticles call TechnoBlastIceChargeParticles call TechnoBlastIceChargeParticles - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfff6 0xfff6 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xfff6, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xa 0x14 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xa, 0x14, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfffb 0xa 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfffb, 0xa, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0x11 0xfff4 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0x11, 0xfff4, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET waitforvisualfinish playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gTechnoBlastIceBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + createsprite gTechnoBlastIceBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0 + createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 + createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1 + createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0 + createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2 + createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0 + createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1 + createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0 + createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2 waitforvisualfinish playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 - launchtemplate gTechnoBlastIceSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x5, 0x1 + createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 delay 0x2 - launchtemplate gTechnoBlastIceSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xa 0x14 0x0 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0 delay 0x2 - launchtemplate gTechnoBlastIceSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x11 0xfff4 0x0 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xfff1 0xf 0x0 + createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0 delay 0x2 - launchtemplate gTechnoBlastIceSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x0 0x0 0x0 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0x14 0x2 0x0 + createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0x14, 0x2, 0x0 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_ATTACKER end TechnoBlastIceChargeParticles: - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfff6 0xfff6 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xfff6, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xa 0x14 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xa, 0x14, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfffb 0xa 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfffb, 0xa, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0x11 0xfff4 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0x11, 0xfff4, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfff1 0xf 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xf, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0x14 0x2 0x0 0x2 + createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0x14, 0x2, 0x0, 0x2 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 return @@ -7410,78 +7413,78 @@ Move_RELIC_SONG: loadspritegfx ANIM_TAG_MUSIC_NOTES loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - launchtask AnimTask_MusicNotesRainbowBlend 0x2 0x0 + createvisualtask AnimTask_MusicNotesRainbowBlend, 0x2 waitforvisualfinish createvisualtask SoundTask_PlayCryWithEcho, 2, ANIM_ATTACKER, 2 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x1d 0xfff4 0x0 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xfff4 0xffe3 0x1 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x7 0x0 0xc + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x7, 0x0, 0xc delay 0x5 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x6 0x1 0xc + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x6, 0x1, 0xc delay 0x5 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xc 0xffe3 0x1 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe3 0xfff4 0x0 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x1 0x2 0xc + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xc, 0xffe3, 0x1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe3, 0xfff4, 0x0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x2, 0xc delay 0x5 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x2 0x3 0xc + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x2, 0x3, 0xc delay 0x5 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x18 0xffe8 0x1 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe8 0xffe8 0x0 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x3 0x0 0xc + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0xffe8, 0x1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0xffe8, 0x0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x3, 0x0, 0xc delay 0x5 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x2 0x1 0xc + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x2, 0x1, 0xc delay 0x5 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x1d 0xfff4 0x0 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xfff4 0xffe3 0x1 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x5 0x2 0xc + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x2, 0xc delay 0x5 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x6 0x3 0xc + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x6, 0x3, 0xc delay 0x5 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xc 0xffe3 0x1 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe3 0xfff4 0x0 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x2 0x0 0xc + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xc, 0xffe3, 0x1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe3, 0xfff4, 0x0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x2, 0x0, 0xc delay 0x5 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x2 0x1 0xc + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x2, 0x1, 0xc delay 0x5 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x18 0xffe8 0x1 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe8 0xffe8 0x0 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x1 0x2 0xc + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0xffe8, 0x1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0xffe8, 0x0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x2, 0xc delay 0x5 - launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x5 0x3 0xc + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x3, 0xc delay 0x5 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x1d 0xfff4 0x0 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xfff4 0xffe3 0x1 + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1 waitforvisualfinish - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x3 0x0 0xc 0x1 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x3 0x3 0x0 0xc 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0x3, 0x0, 0xc, 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x3, 0x3, 0x0, 0xc, 0x1 delay 0x5 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x5 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x5 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER - launchtask AnimTask_MusicNotesClearRainbowBlend 0x2 0x0 + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 0x2 waitforvisualfinish end @@ -7493,21 +7496,21 @@ Move_SECRET_SWORD: monbg ANIM_ATTACKER setalpha 12, 8 playsewithpan SE_M_SWORDS_DANCE, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0x10 0x0 - launchtemplate gSwordsDanceBladeSpriteTemplate 0x2 0x2 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0x10, 0x0 + createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 delay 0x16 - launchtask AnimTask_FlashAnimTagWithColor 0x2 0x7 0x2715 0x2 0x2 0x7ff2 0x10 0x0 0x0 + createvisualtask AnimTask_FlashAnimTagWithColor, 0x2, 0x2715, 0x2, 0x2, 0x7ff2, 0x10, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_ATTACKER delay 0x1 monbg ANIM_TARGET playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - launchtemplate gSecretSwordBladesTemplate 0x81 0x5 0x0 0xa 0x0 0xFF00 0xA - launchtemplate gCuttingSliceSpriteTemplate 0x2 0x3 0x28 0xffe0 0x0 + createsprite gSecretSwordBladesTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xFF00, 0xA + createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0xffe0, 0x0 delay 0x5 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x0 0x3 0xa 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x0, 0x3, 0xa, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x10 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x10, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -7523,22 +7526,22 @@ Move_GLACIATE: fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xfff4 0x68 0x0 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xfff4 0x48 0x1 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xfffa 0x38 0x1 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xfffa 0x58 0x0 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x0 0x38 0x0 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x0 0x58 0x1 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x6 0x48 0x0 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x6 0x68 0x1 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xc 0x48 0x0 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xc 0x38 0x1 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x12 0x50 0x0 0x4b - launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x12 0x48 0x1 0x4b - waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, (ANIM_PAL_DEF | ANIM_PAL_DEF_PARTNER), 0x2, 0x0, 0xA, 0x7FFF + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x68, 0x0, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x48, 0x1, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x38, 0x1, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x58, 0x0, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x38, 0x0, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x58, 0x1, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x48, 0x0, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x68, 0x1, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x48, 0x0, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x38, 0x1, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x50, 0x0, 0x4b + createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x48, 0x1, 0x4b + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_DEF_SIDE, 0x2, 0x0, 0xA, 0x7FFF call IceCrystalEffectLong - createvisualtask AnimTask_BlendBattleAnimPal, 10, (ANIM_PAL_DEF | ANIM_PAL_DEF_PARTNER), 0x2, 0xA, 0x0, 0x7FFF + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_DEF_SIDE, 0x2, 0xA, 0x0, 0x7FFF waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER @@ -7552,38 +7555,38 @@ Move_BOLT_STRIKE:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @Electric Circle monbg ANIM_ATTACKER setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0x9 0x07FE - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x40 0x0 0x2 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0x9, 0x07FE + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x40, 0x0, 0x2 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 0xc - launchtemplate gGrowingShockWaveOrbSpriteTemplate 0x2 0x0 + createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish clearmonbg ANIM_ATTACKER playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 0x8 - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x12 0x6 0x2 0x4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x12, 0x6, 0x2, 0x4 delay 0xA fadetobg BG_BOLT_STRIKE waitbgfadeout waitforvisualfinish monbg ANIM_TARGET - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x1a 0x0 0x0 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1a, 0x0, 0x0, 0x5 delay 0x6 - launchtemplate gBasicHitSplatSpriteTemplate 0x4 0x4 0xfff6 0x0 0x1 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x9 0x07FE - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0x20 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x07FE + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x2, 0x0, 0x20, 0x1 playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET call ElectricityEffect - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x9 0x0 0x07FE + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x9, 0x0, 0x07FE playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET call ElectricityEffect waitforvisualfinish clearmonbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x07FE + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x9, 0x0, 0x07FE call UnsetPsychicBg - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x0, 0x0 blendoff waitforvisualfinish end @@ -7591,32 +7594,32 @@ Move_BOLT_STRIKE:: Move_BLUE_FLARE:: loadspritegfx ANIM_TAG_SMALL_EMBER @Fire loadspritegfx ANIM_TAG_METAL_BITS @Blue Flare Colour - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0x10, 0x0 loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 0x7, 0x9 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x0 0xffe0 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe0, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x16 0xffea 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xffea, 0x10 delay 0x2 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x1 0x0 0x9 0x1F - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x1e 0x0 0x10 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x1, 0x0, 0x9, 0x1F + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1e, 0x0, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x14 0x14 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x0 0x1c 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1c, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0xffed 0x13 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffed, 0x13, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0xffe5 0x0 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffe5, 0x0, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0xffee 0xffee 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffee, 0xffee, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x0 0xffe7 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe7, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x11 0xffef 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x11, 0xffef, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x17 0x0 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x17, 0x0, 0x10 delay 0x2 - launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x10 0x10 0x10 + createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0x10, 0x10 waitforvisualfinish playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET call BlueFlareFireSpin @@ -7624,47 +7627,47 @@ Move_BLUE_FLARE:: call BlueFlareFireSpin fadetobg BG_FIRE_2 waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x1000 0x0 0x0 0xFFFF + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x1000, 0x0, 0x0, 0xFFFF waitbgfadein playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER call BlueFlareFlameSpreadEffect waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0x0 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x1 0x9 0x0 0x1f + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0x0, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x1, 0x9, 0x0, 0x1f call UnsetPsychicBg waitforvisualfinish end BlueFlareFireSpin: - launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x1 + createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x1 delay 0x2 - launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x1 + createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x1 delay 0x2 - launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x1 + createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x1 delay 0x2 - launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x1 + createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x1 delay 0x2 - launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x1 + createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x1 delay 0x2 - launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce 0x1 + createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x1 delay 0x2 return BlueFlareFlameSpreadEffect: - launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0x0 0xb0 0x28 - launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0xff40 0xf0 0x28 - launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0x0 0xff60 0x28 - launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0xff40 0xff90 0x28 - launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0xa0 0x30 0x28 - launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0xff20 0xffe0 0x28 - launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0x70 0xff80 0x28 + createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xb0, 0x28 + createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff40, 0xf0, 0x28 + createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xff60, 0x28 + createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff40, 0xff90, 0x28 + createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xa0, 0x30, 0x28 + createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff20, 0xffe0, 0x28 + createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x70, 0xff80, 0x28 return Move_FIERY_DANCE:: loadspritegfx ANIM_TAG_SMALL_EMBER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xc 0x14be + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xc, 0x14be waitforvisualfinish playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x2 0x40 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x1 0x0 0x9 0x1f + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x2, 0x40, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x1, 0x0, 0x9, 0x1f call FireSpinEffect call FireSpinEffect call FireSpinEffect @@ -7673,8 +7676,8 @@ Move_FIERY_DANCE:: call FireSpinEffect call FireSpinEffect waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x1 0x9 0x0 0x1f - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xc 0x0 0x14be + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x1, 0x9, 0x0, 0x1f + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xc, 0x0, 0x14be waitforvisualfinish end @@ -7685,37 +7688,37 @@ Move_FREEZE_SHOCK:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @Electric Circle choosetwoturnanim FreezeShockCharge FreezeShockAttack FreezeShockCharge: - launchtask AnimTask_HorizontalShake 0x5 0x3 0x0 0x2 0x10 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x0, 0x2, 0x10 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x1 0x0 0xf 0x7fff - launchtemplate gFreezeShockCircleTemplate 0x2 0x0 @electric circle + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x1, 0x0, 0xf, 0x7fff + createsprite gFreezeShockCircleTemplate, ANIM_ATTACKER, 2 @electric circle delay 0x14 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x1 0xf 0x0 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x1, 0xf, 0x0, 0x7fff waitforvisualfinish end FreezeShockAttack: loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 0x5, 0x5 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 monbg ANIM_TARGET waitforvisualfinish playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER - launchtemplate gFreezeShockIceBallTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 - waitforvisualfinish - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + createsprite gFreezeShockIceBallTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2 + waitforvisualfinish + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x5, 0x1 delay 0xf waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 0x13 call ElectricityEffect waitforvisualfinish clearmonbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x0 waitforvisualfinish end @@ -7728,58 +7731,58 @@ Move_ICE_BURN:: waitforvisualfinish end IceBurnCharge: - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 0x4, 0x3 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x1 0x8 0x0 0x0 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x0 0x2 0x10 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x1 0x0 0xf 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x1, 0x8, 0x0, 0x0 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x0, 0x2, 0x10 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x1, 0x0, 0xf, 0x7fff delay 0x14 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x1 0xf 0x0 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x1, 0xf, 0x0, 0x7fff waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish end IceBurnUnleash: monbg ANIM_TARGET fadetobg BG_ICE waitbgfadeout - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x9 0x7fff - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x7fff + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xfff4 0x68 0x0 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xfff4 0x48 0x1 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xfffa 0x38 0x1 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xfffa 0x58 0x0 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x0 0x38 0x0 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x0 0x58 0x1 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x6 0x48 0x0 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x6 0x68 0x1 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xc 0x48 0x0 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xc 0x38 0x1 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x12 0x50 0x0 0x4b - launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x12 0x48 0x1 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x68, 0x0, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x48, 0x1, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x38, 0x1, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x58, 0x0, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x38, 0x0, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x58, 0x1, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x48, 0x0, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x68, 0x1, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x48, 0x0, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x38, 0x1, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x50, 0x0, 0x4b + createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x48, 0x1, 0x4b call FireSpreadEffect playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xa 0x14 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xfff1 0xf 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x0 0x0 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0x14 0x2 0x0 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0x14, 0x2, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x9, 0x0, 0x7fff waitforvisualfinish restorebg clearmonbg ANIM_TARGET @@ -7792,36 +7795,36 @@ Move_SNARL:: monbg ANIM_DEF_PARTNER fadetobg BG_DARK waitbgfadeout - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x1d 0xfff4 0x0 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xfff4 0xffe3 0x1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1 delay 0x10 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xc 0xffe3 0x1 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe3 0xfff4 0x0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xc, 0xffe3, 0x1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe3, 0xfff4, 0x0 delay 0x10 - launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + createvisualtask AnimTask_UproarDistortion, 0x2, 0x0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x18 0xffe8 0x1 - launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe8 0xffe8 0x0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0xffe8, 0x1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0xffe8, 0x0 waitforvisualfinish - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x3 0x0 0xc 0x1 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x3 0x3 0x0 0xc 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0x3, 0x0, 0xc, 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x3, 0x3, 0x0, 0xc, 0x1 delay 0x4 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish call UnsetPsychicBg @@ -7834,18 +7837,18 @@ Move_ICICLE_CRASH:: fadetobg BG_ICE waitbgfadein monbg ANIM_DEF_PARTNER - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xfffb 0x0 0xfffb 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xfffb, 0x0, 0xfffb, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x5 0x0 0x6 0x1 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x6, 0x1 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x13 0x0 0xa 0x01 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x13, 0x0, 0xa, 0x01 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xffe9 0x0 0xfff6 0x1 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xffe9, 0x0, 0xfff6, 0x1 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x5 0x32 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x5, 0x32, 0x1 delay 0x2 call LaunchIcicleCrashSpear call LaunchIcicleCrashSpear @@ -7855,28 +7858,28 @@ Move_ICICLE_CRASH:: waitbgfadeout end LaunchIcicleCrashSpear: - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x1c 0x0 0xa 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x1c, 0x0, 0xa, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xfff6 0x0 0xfffb 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xfff6, 0x0, 0xfffb, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xa 0x0 0x6 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x6, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x18 0x0 0xa 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x18, 0x0, 0xa, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xffe0 0x0 0xfff6 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xffe0, 0x0, 0xfff6, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 - launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x1e 0x0 0xa 0x0 + createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x1e, 0x0, 0xa, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x2 return @@ -7887,13 +7890,13 @@ Move_V_CREATE:: loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @red color loadspritegfx ANIM_TAG_ECLIPSING_ORB @defense curl animation monbg ANIM_ATK_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 @Darken - launchtemplate gVCreateRedOrbTemplate 0x2 0x4 0x0 0x11 0x0 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 @Darken + createsprite gVCreateRedOrbTemplate, ANIM_ATTACKER, 2, 0x0, 0x11, 0x0, 0x1 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gVCreateRedRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gVCreateRedRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0x9 0x1f + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0x9, 0x1f playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET call VCreateFlames call VCreateFlames @@ -7915,47 +7918,47 @@ Move_V_CREATE:: clearmonbg ANIM_ATK_PARTNER fadetobg BG_FIRE @Mr. DS Fire waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xA00 0x0 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xA00, 0x0, 0x1, 0xffff waitbgfadein playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - launchtask AnimTask_WindUpLunge 0x5 0x7 0x0 0xffe8 0x8 0x17 0xa 0x28 0xa + createvisualtask AnimTask_WindUpLunge, 0x5, 0x0, 0xffe8, 0x8, 0x17, 0xa, 0x28, 0xa delay 0x23 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x5 0x32 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x9 0x1f + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x5, 0x32, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x1f playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, 0x1, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, 0x1, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, 0x1, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x10 0x10 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, 0x1, 0x1 waitforvisualfinish - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 - launchtemplate gClawSlashSpriteTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 - launchtemplate gClawSlashSpriteTemplate 0x82, 0x3, 0xa 0xfff6 0x1 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 + createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 + createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xfff6, 0x1 waitforvisualfinish - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x4 0x0 0xc 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0x4, 0x0, 0xc, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x9 0x0 0x1f - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x1f + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x9, 0x0, 0x1f + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x9, 0x0, 0x1f delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER call UnsetPsychicBg - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x0 0xffff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x0, 0xffff waitforvisualfinish end VCreateFlames: - launchtemplate gVCreateFlameTemplate 0x82 0x5 0x0 0x1 0x16 0xFFEA 0x10 @upperright - launchtemplate gVCreateFlameTemplate 0x82 0x5 0x0 0x1 0xFFEE 0xFFEE 0x10 @upperleft + createsprite gVCreateFlameTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x16, 0xFFEA, 0x10 @upperright + createsprite gVCreateFlameTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFEE, 0xFFEE, 0x10 @upperleft delay 0x3 return @@ -7969,52 +7972,52 @@ Move_FUSION_FLARE:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SMALL_BUBBLES, 0x0, 0xD, 0xD, 0x015B @Reddish Orange monbg ANIM_TARGET setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call FusionFlareBuff delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x2 0x2 0x0 0xb 0x1F - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 - launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x8 0x1 0x0 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x2, 0x2, 0x0, 0xb, 0x1F + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0x1, 0x0 delay 0x8 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gFusionFlareRedBallUpTemplate 0x2 0x0 + createsprite gFusionFlareRedBallUpTemplate, ANIM_ATTACKER, 2 delay 0x20 - launchtemplate gFusionFlareRedBallTemplate 0x3 0x3 0x0 0xffA0 0x2F - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + createsprite gFusionFlareRedBallTemplate, ANIM_ATTACKER, 3, 0x0, 0xffA0, 0x2F + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1 delay 0x29 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x2 0x0 0xb 0x1F + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_TARGET, 0x2, 0x2, 0x0, 0xb, 0x1F delay 0x5 - launchtemplate gFusionFlareRedRingTemplate 0x3 0x6 0x1 0x1 0x1 0x1 0x1F 0x8 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 - launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x1 0x2 0x10 + createsprite gFusionFlareRedRingTemplate, ANIM_ATTACKER, 3, 0x1, 0x1, 0x1, 0x1, 0x1F, 0x8 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0 + createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x1, 0x2, 0x10 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff end FusionFlareBuff: - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return Move_FUSION_BOLT:: @@ -8024,42 +8027,42 @@ Move_FUSION_BOLT:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK, 0x0, 0xC, 0xC, 0x7960 @Blue Electricity createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_CIRCLE_OF_LIGHT, 0x0, 0xC, 0xC, 0x7960 @Blue Electricity createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRICITY, 0x0, 0xC, 0xC, 0x7960 @Blue Electricity - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 0x0, 0x0, 0xE, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0x0, 0x0, 0xE, 0x0 waitforvisualfinish - launchtemplate gVoltTackleOrbSlideSpriteTemplate 0x1 0x0 + createsprite gVoltTackleOrbSlideSpriteTemplate, ANIM_ATTACKER, 1 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER invisible ANIM_ATTACKER waitforvisualfinish delay 0x8 - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x0 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x0 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x1 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x1 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET waitforvisualfinish - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x2 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x2 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x3 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x3 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET waitforvisualfinish - launchtemplate gFusionBoltBallTemplate 0x82 0x1 0x10 + createsprite gFusionBoltBallTemplate, ANIM_TARGET, 2, 0x10 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER delay 0x8 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0xa 0x0 0x12 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0xa, 0x0, 0x12, 0x1 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x1 0x10 0x10 + createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x10, 0x10 delay 0x2 - launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x1 0xfff0 0xfff0 + createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0xfff0, 0xfff0 delay 0x8 - launchtask AnimTask_VoltTackleAttackerReappear 0x5 0x0 + createvisualtask AnimTask_VoltTackleAttackerReappear, 0x5 waitforvisualfinish - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x3 0x0 0x9 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x3, 0x0, 0x9, 0x1 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x0 0x10 0x10 + createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x10 delay 0x2 - launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x0 0xfff0 0xfff0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0xE 0x0 0x0 + createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0, 0xfff0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0xE, 0x0, 0x0 waitforvisualfinish end @@ -8067,32 +8070,32 @@ Move_FUSION_BOLT:: Move_FLYING_PRESS:: loadspritegfx ANIM_TAG_ROUND_SHADOW @fly/bounce loadspritegfx ANIM_TAG_GRAY_SMOKE @smoke - setblends 0xF + setalpha 15, 0 playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 waitforvisualfinish delay 0xF playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 + createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 delay 0x2 - launchtask AnimTask_SquishTarget 0x2 0x0 + createvisualtask AnimTask_SquishTarget, 0x2 delay 0x5 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0x8 0x8 0x1 0x0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0x8, 0x8, 0x1, 0x0 delay 0x2 - launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0xfff8 0xfff8 0x1 0x0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0xfff8, 0xfff8, 0x1, 0x0 delay 0x2 - launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0x8 0xfff8 0x1 0x0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0x8, 0xfff8, 0x1, 0x0 delay 0x2 - launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0xfff8 0x8 0x1 0x0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0xfff8, 0x8, 0x1, 0x0 delay 0x2 - launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0x8 0x8 0x1 0x0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0x8, 0x8, 0x1, 0x0 delay 0x2 - launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0xfff8 0xfff8 0x1 0x0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0xfff8, 0xfff8, 0x1, 0x0 delay 0x2 - launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0x8 0xfff8 0x1 0x0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0x8, 0xfff8, 0x1, 0x0 delay 0x2 - launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0xfff8 0x8 0x1 0x0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0xfff8, 0x8, 0x1, 0x0 waitforvisualfinish blendoff end @@ -8102,25 +8105,25 @@ Move_MAT_BLOCK:: loadspritegfx ANIM_TAG_GREEN_LIGHT_WALL @green color monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER - setblends 0x10 + setalpha 16, 0 delay 0x0 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0xfff8 0x18 - launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0x8 0x18 + createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x18 + createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0x18 delay 0x3 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0xfff8 0x8 - launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0x8 0x8 + createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x8 + createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0x8 delay 0x3 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0xfff8 0xfff8 - launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0x8 0xfff8 + createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xfff8 + createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0xfff8 delay 0x3 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0xfff8 0xffe8 - launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0x8 0xffe8 + createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xffe8 + createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0xffe8 delay 0x14 - launchtask AnimTask_ConversionAlphaBlend 0x5 0x0 + createvisualtask AnimTask_ConversionAlphaBlend, 0x5 waitforvisualfinish delay 0x1 clearmonbg ANIM_ATK_PARTNER @@ -8134,26 +8137,26 @@ Move_BELCH:: splitbgprio ANIM_TARGET setalpha 12, 8 playsewithpan SE_SUCCESS, SOUND_PAN_ATTACKER - launchtemplate gBelchBerryTemplate 0x2 0x6 0x14 0xfff8 0xfff8 0xfff8 0x14 0xffe0 + createsprite gBelchBerryTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff8, 0xfff8, 0xfff8, 0x14, 0xffe0 delay 0x13 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0xa 0x0 0x14 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0xa, 0x0, 0x14, 0x1 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, 0x1, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, 0x1, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, 0x1, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x10 0x10 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, 0x1, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xffe8 0x18 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0x18, 0x1, 0x1 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -8163,18 +8166,18 @@ Move_ROTOTILLER:: loadspritegfx ANIM_TAG_MUD_SAND loadspritegfx ANIM_TAG_DIRT_MOUND loadspritegfx ANIM_TAG_GREEN_SPARKLE - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x112C + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x112C waitforvisualfinish - launchtemplate gDirtMoundSpriteTemplate 0x1 0x3 0x0 0x0 0xb4 - launchtemplate gDirtMoundSpriteTemplate 0x1 0x3 0x0 0x1 0xb4 - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x6 0x4 0x2 0x4 + createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0x0, 0x0, 0xb4 + createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0x0, 0x1, 0xb4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x6, 0x4, 0x2, 0x4 call DigThrowDirt call DigThrowDirt - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x6 0x4 0x2 0x4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x6, 0x4, 0x2, 0x4 call DigThrowDirt call DigThrowDirt waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x112C + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x112C waitforvisualfinish end @@ -8334,36 +8337,36 @@ Move_FORESTS_CURSE: loadspritegfx ANIM_TAG_ROOTS @frenzy plant loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT @curse monbg ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 waitforvisualfinish playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x8 0x02E3 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x8, 0x02E3 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1 waitforvisualfinish playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1 waitforvisualfinish playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 - launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0 + createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1 waitforvisualfinish - launchtemplate gCurseGhostSpriteTemplate 0x82 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x2 0x0 0xe 0x1 + createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x2, 0x0, 0xe, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x8 0x0 0x02E3 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x8, 0x0, 0x02E3 delay 0x3 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_ATTACKER end @@ -8380,35 +8383,35 @@ Move_PETAL_BLIZZARD:: createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x73, 0x37, 0x6, 0x3c, 0x19 delay 0x1 createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x73, 0x3c, 0x7, 0x3c, 0x1e - launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x73 0x37 0xA 0x3c 0x1e + createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x73, 0x37, 0xA, 0x3c, 0x1e delay 0x3 - launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x64 0x32 0x4 0x32 0x1A + createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x64, 0x32, 0x4, 0x32, 0x1A delay 0x1 - launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x69 0x19 0x8 0x3c 0x14 + createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x69, 0x19, 0x8, 0x3c, 0x14 delay 0x1 - launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x73 0x28 0xA 0x30 0x1E + createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x73, 0x28, 0xA, 0x30, 0x1E delay 0x3 - launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x78 0x1E 0x6 0x2d 0x19 + createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x78, 0x1E, 0x6, 0x2d, 0x19 createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x73, 0x23, 0xA, 0x3c, 0x1e delay 0x3 - launchtemplate gPetalBlizzardTwister2Template 0x82 0x5 0x69 0x14 0x8 0x28 0x0 + createsprite gPetalBlizzardTwister2Template, ANIM_TARGET, 2, 0x69, 0x14, 0x8, 0x28, 0x0 delay 0x3 createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xff, 0xf, 0x20, 0x0 createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x6e, 0xA, 0x8, 0x20, 0x14 waitforvisualfinish - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 ANIM_TARGET 0x3 0x0 0xC 0x1 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0xC 0x1 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 ANIM_ATK_PARTNER 0x3 0x0 0xC 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, ANIM_TARGET, 0x3, 0x0, 0xC, 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0xC, 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, ANIM_ATK_PARTNER, 0x3, 0x0, 0xC, 0x1 delay 0x4 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -8453,17 +8456,17 @@ Move_FREEZE_DRY:: Move_DISARMING_VOICE:: loadspritegfx ANIM_TAG_NOISE_LINE - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x8 0x6e7d + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x6e7d waitforvisualfinish - launchtask SoundTask_PlayDoubleCry 0x2 0x2 0x0 0xff + createvisualtask SoundTask_PlayDoubleCry, 0x2, 0x0, 0xff call RoarEffect delay 0xA - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x1 0x0 0x1A 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x3 0x1 0x0 0x1A 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x1, 0x0, 0x1A, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x3, 0x1, 0x0, 0x1A, 0x1 waitforvisualfinish - launchtask SoundTask_WaitForCry 0x5 0x0 + createvisualtask SoundTask_WaitForCry, 0x5 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x8 0x0 0x6e7d + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x0, 0x6e7d waitforvisualfinish end @@ -8536,51 +8539,51 @@ Move_CRAFTY_SHIELD:: loadspritegfx ANIM_TAG_CRAFTY_SHIELD monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x5 0x4DBF - setblends 0x10 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x5, 0x4DBF + setalpha 16, 0 delay 0x0 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xffe8 0xffe8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xffe8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xfff8 0xffe8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xffe8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x8 0xffe8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0xffe8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x18 0xffe8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x18, 0xffe8 delay 0x3 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xffe8 0xfff8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xfff8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xfff8 0xfff8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xfff8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x8 0xfff8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0xfff8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x18 0xfff8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x18, 0xfff8 delay 0x3 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xffe8 0x8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xffe8, 0x8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xfff8 0x8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x8 0x8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0x8 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x18 0x8 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x18, 0x8 delay 0x3 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xffe8 0x18 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xffe8, 0x18 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xfff8 0x18 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x18 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x8 0x18 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0x18 delay 0x3 - launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x18 0x18 + createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x18, 0x18 delay 0x14 playsewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER - launchtask AnimTask_FlashAnimTagWithColor 0x2 0x7 0x2722 0x1 0x1 0x37ff 0xc 0x0 0x0 + createvisualtask AnimTask_FlashAnimTagWithColor, 0x2, 0x2722, 0x1, 0x1, 0x37ff, 0xc, 0x0, 0x0 delay 0x6 - launchtask AnimTask_ConversionAlphaBlend 0x5 0x0 + createvisualtask AnimTask_ConversionAlphaBlend, 0x5 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x5 0x0 0x4DBF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x5, 0x0, 0x4DBF waitforvisualfinish delay 0x1 clearmonbg ANIM_ATK_PARTNER @@ -8591,28 +8594,28 @@ Move_FLOWER_SHIELD:: loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_IMPACT setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x8 0x6e7d + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x6e7d waitforvisualfinish playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER - launchtemplate gPetalDanceBigFlowerSpriteTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x10 0xffe8 0x8 0x64 - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xfff0 0xffe8 0x8 0x64 + createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0xffe8, 0x8, 0x64 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xffe8, 0x8, 0x64 delay 0xf - launchtemplate gPetalDanceBigFlowerSpriteTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x20 0xffe8 0x8 0x64 - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xffe0 0xffe8 0x8 0x64 + createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe8, 0x8, 0x64 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe8, 0x8, 0x64 delay 0xf - launchtemplate gPetalDanceBigFlowerSpriteTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x18 0xffe8 0x8 0x64 - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xffe8 0xffe8 0x8 0x64 + createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0xffe8, 0x8, 0x64 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xffe8, 0x8, 0x64 delay 0x1e - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x10 0xffe8 0x0 0x64 - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xfff0 0xffe8 0x0 0x64 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0xffe8, 0x0, 0x64 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xffe8, 0x0, 0x64 delay 0x1e - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x14 0xfff0 0xe 0x50 - launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xffec 0xfff2 0x10 0x50 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff0, 0xe, 0x50 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff2, 0x10, 0x50 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x8 0x0 0x6e7d + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x0, 0x6e7d waitforvisualfinish blendoff end @@ -8634,7 +8637,7 @@ Move_GRASSY_TERRAIN:: createsprite gGrassyTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 126 createsprite gGrassyTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 168 createsprite gGrassyTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 210 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 0, 4, RGB(11, 26, 11) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 4, RGB(11, 26, 11) delay 52 setarg 7, 0xFFFF playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER @@ -8650,7 +8653,7 @@ Move_GRASSY_TERRAIN:: panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0x0 waitforvisualfinish delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(31, 24, 31) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 4, 0, RGB(31, 24, 31) waitforvisualfinish end @@ -8672,7 +8675,7 @@ Move_MISTY_TERRAIN:: createsprite gMistyTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 126 createsprite gMistyTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 168 createsprite gMistyTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 210 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 0, 7, RGB(31, 24, 31) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 7, RGB(31, 24, 31) delay 52 setarg 7, 0xFFFF playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER @@ -8688,7 +8691,7 @@ Move_MISTY_TERRAIN:: createsprite gMistyTerrainStarTemplate, ANIM_TARGET, 2, 224 waitforvisualfinish delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 7, 0, RGB(31, 24, 31) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 7, 0, RGB(31, 24, 31) waitforvisualfinish end @@ -8700,57 +8703,57 @@ Move_ELECTRIFY:: loadspritegfx ANIM_TAG_THIN_RING @ring monbg ANIM_ATTACKER loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET 0xa 0x4 - launchtemplate gElectrifyRingTemplate 0x2 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x4 - launchtemplate gElectrifyRingTemplate 0x2 0x0 + createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2 delay 0x4 - launchtemplate gElectrifyRingTemplate 0x2 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 waitforvisualfinish playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0 0x28 0x2 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 - launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0, 0x28, 0x2 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2 delay 0xA - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x0 0xB 0x039B - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x3 0x039B + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_TARGET, 0x2, 0x0, 0xB, 0x039B + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x3, 0x039B delay 0x4 clearmonbg ANIM_ATTACKER delay 0x1 monbg ANIM_DEF_PARTNER playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET - launchtemplate gElectrifyYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x4 0x0 0x6 0x1 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0 + createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x4, 0x0, 0x6, 0x1 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0 delay 0x1 - launchtemplate gElectrifyYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8 delay 0x1 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1 - launchtemplate gElectrifyYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x5, 0x1 + createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8 delay 0x1 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xf, 0x14, 0x5, 0x2 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0 delay 0x2 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x19, 0x0, 0x5, 0x1 delay 0x2 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2 delay 0x2 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x2, 0xfff8, 0x5, 0x0 delay 0x2 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0xB 0x0 0x039B - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x3 0x0 0x039B + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_TARGET, 0x2, 0xB, 0x0, 0x039B + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x3, 0x0, 0x039B waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -8771,36 +8774,36 @@ Move_PLAY_ROUGH:: waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x46 waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 0x50 waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x5a - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x0 0xffee 0x6 0x6 0x4 - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x1 0x12 0x6 0x6 0x4 - launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0xff00 0xffd6 - launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0x80 0xfff2 - launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0x1a0 0xffda - launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0xff80 0xffea + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xffee, 0x6, 0x6, 0x4 + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x1, 0x12, 0x6, 0x6, 0x4 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0xff00, 0xffd6 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0x80, 0xfff2 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0x1a0, 0xffda + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0xff80, 0xffea delay 0x0 call SubmissionHit playsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xa0 0xffe0 - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xff00 0xffd8 - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0x80 0xfff0 - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0x1a0 0xffda - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xff80 0xffea - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xfe80 0xffe1 + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xa0, 0xffe0 + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff00, 0xffd8 + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x80, 0xfff0 + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x1a0, 0xffda + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff80, 0xffea + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xfe80, 0xffe1 delay 0x0 call SubmissionHit playsewithpan SE_M_DIVE, SOUND_PAN_TARGET - launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0xff00 0xffd6 - launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0x80 0xfff2 - launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0x1a0 0xffda - launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0xff80 0xffea + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0xff00, 0xffd6 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0x80, 0xfff2 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0x1a0, 0xffda + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0xff80, 0xffea delay 0x0 playsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xa0 0xffe0 - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xff00 0xffd8 - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0x80 0xfff0 - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0x1a0 0xffda - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xff80 0xffea - launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xfe80 0xffe1 + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xa0, 0xffe0 + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff00, 0xffd8 + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x80, 0xfff0 + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x1a0, 0xffda + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff80, 0xffea + createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xfe80, 0xffe1 delay 0x0 call SubmissionHit waitforvisualfinish @@ -8815,24 +8818,24 @@ Move_FAIRY_WIND:: loadspritegfx ANIM_TAG_PINK_CLOUD monbg ANIM_DEF_PARTNER setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x8 0x6e7d + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x6e7d waitforvisualfinish playsewithpan SE_M_GUST, SOUND_PAN_TARGET - launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0x14 0x1 + createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0x14, 0x1 delay 0x5 - launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0x5 0x16 0xffee 0x1 + createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x5, 0x16, 0xffee, 0x1 delay 0x5 - launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0xfff6 0x16 0xf 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x2 0x0 0x12 0x1 + createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0xfff6, 0x16, 0xf, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x2, 0x0, 0x12, 0x1 delay 0x5 - launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0xffec 0x1 + createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0xffec, 0x1 delay 0x5 - launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0xc 0x1 + createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0xc, 0x1 delay 0x5 waitforvisualfinish stopsound playsewithpan SE_M_GUST2, SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x8 0x0 0x6e7d + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x0, 0x6e7d waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -8917,18 +8920,18 @@ Move_FAIRY_LOCK:: loadspritegfx ANIM_TAG_FAIRY_LOCK_CHAINS @Fairy Lock Chain setalpha 8, 8 monbg ANIM_ATK_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x8 0x6B1F + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x6B1F waitforvisualfinish loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 0x6, 0x4 - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x7 - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x33 - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x2 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x7 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x33 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x2 waitforvisualfinish - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x32 - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x6 - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x35 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x32 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x6 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x35 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x8 0x0 0x6B1F + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x0, 0x6B1F waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -8942,15 +8945,15 @@ Move_KINGS_SHIELD:: Move_PLAY_NICE:: loadspritegfx ANIM_TAG_RED_HEART loopsewithpan SE_M_SANDSTORM, SOUND_PAN_ATTACKER, 0xc, 0x3 - launchtask AnimTask_SwayMon 0x5 0x5 0x0 0xc 0x1000 0x4 0x0 + createvisualtask AnimTask_SwayMon, 0x5, 0x0, 0xc, 0x1000, 0x4, 0x0 delay 0xF - launchtemplate gRedHeartProjectileSpriteTemplate 0x83 0x2 0x14 0xfff8 + createsprite gRedHeartProjectileSpriteTemplate, ANIM_TARGET, 3, 0x14, 0xfff8 end Move_CONFIDE:: loadspritegfx ANIM_TAG_CONFIDE @Confide Bubble - launchtask AnimTask_Splash 0x2 0x2 ANIM_ATTACKER 0x3 - launchtemplate gConfideBubbleTemplate 0xb 0x2 0x0 0x64 + createvisualtask AnimTask_Splash, 0x2, ANIM_ATTACKER, 0x3 + createsprite gConfideBubbleTemplate, ANIM_ATTACKER, 11, 0x0, 0x64 playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER waitforvisualfinish end @@ -8960,69 +8963,69 @@ Move_DIAMOND_STORM:: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xF 0x1888 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xF, 0x1888 createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ICE_CRYSTALS, 0, 0xD, 0xD, 0x7DDE @Pink waitforvisualfinish panse SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 - launchtemplate gSwirlingSnowballSpriteTemplate 0x28 0x6 0x0 0xfff6 0x0 0xfff6 0x48 0x1 - launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0x0 0x0 0x0 0x50 0x0 0x0 0x1 + createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x48, 0x1 + createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0, 0x50, 0x0, 0x0, 0x1 delay 0x3 - launchtemplate gSwirlingSnowballSpriteTemplate 0x28 0x6 0x0 0xfff1 0x0 0xfff1 0x48 0x1 - launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xfff6 0x0 0xfff6 0x50 0x0 0x0 0x1 + createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff1, 0x0, 0xfff1, 0x48, 0x1 + createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x50, 0x0, 0x0, 0x1 delay 0x3 - launchtemplate gSwirlingSnowballSpriteTemplate 0x28 0x6 0x0 0xfffb 0x0 0xfffb 0x48 0x1 - launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xa 0x0 0xa 0x50 0x0 0x0 0x1 + createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfffb, 0x0, 0xfffb, 0x48, 0x1 + createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xa, 0x0, 0xa, 0x50, 0x0, 0x0, 0x1 delay 0x3 - launchtemplate gSwirlingSnowballSpriteTemplate 0x28 0x6 0x0 0xfff6 0x0 0xfff6 0x48 0x1 - launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x50 0x0 0x0 0x1 + createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x48, 0x1 + createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x50, 0x0, 0x0, 0x1 delay 0x3 - launchtemplate gSwirlingSnowballSpriteTemplate 0x28 0x6 0x0 0xffec 0x0 0xffec 0x48 0x1 - launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xf 0x0 0xf 0x50 0x0 0x0 0x1 + createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x48, 0x1 + createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xf, 0x0, 0xf, 0x50, 0x0, 0x0, 0x1 delay 0x3 - launchtemplate gSwirlingSnowballSpriteTemplate 0x28 0x6 0x0 0xfff1 0x0 0xfff1 0x48 0x1 - launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x50 0x0 0x0 0x1 + createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff1, 0x0, 0xfff1, 0x48, 0x1 + createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x50, 0x0, 0x0, 0x1 delay 0x3 - launchtemplate gSwirlingSnowballSpriteTemplate 0x28 0x6 0x0 0xffe7 0x0 0xffe7 0x48 0x1 - launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0x14 0x0 0x14 0x50 0x0 0x0 0x1 + createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xffe7, 0x0, 0xffe7, 0x48, 0x1 + createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0x14, 0x0, 0x14, 0x50, 0x0, 0x0, 0x1 delay 0x3 playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x78 0x46 0x5 0x46 0x1e + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x78, 0x46, 0x5, 0x46, 0x1e delay 0x1 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x37 0x6 0x3c 0x19 + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x37, 0x6, 0x3c, 0x19 delay 0x1 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x3c 0x7 0x3c 0x1e - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x37 0xa 0x3c 0x1e + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x3c, 0x7, 0x3c, 0x1e + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x37, 0xa, 0x3c, 0x1e delay 0x3 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x64 0x32 0x4 0x32 0x1a + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x64, 0x32, 0x4, 0x32, 0x1a delay 0x1 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x69 0x19 0x8 0x3c 0x14 + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x69, 0x19, 0x8, 0x3c, 0x14 delay 0x1 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x28 0xa 0x30 0x1e + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x28, 0xa, 0x30, 0x1e delay 0x3 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x78 0x1e 0x6 0x2d 0x19 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x23 0xa 0x3c 0x1e + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x78, 0x1e, 0x6, 0x2d, 0x19 + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x23, 0xa, 0x3c, 0x1e delay 0x3 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x69 0x14 0x8 0x28 0x0 + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x69, 0x14, 0x8, 0x28, 0x0 delay 0x3 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x14 0xff 0xf 0x20 0x0 - launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x6e 0xa 0x8 0x20 0x14 + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x14, 0xff, 0xf, 0x20, 0x0 + createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x6e, 0xa, 0x8, 0x20, 0x14 waitforvisualfinish @this is the buffet part - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x3 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x3 0x0 0xc 0x1 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x3 0x3 0x0 0xc 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0x3, 0x0, 0xc, 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x3, 0x3, 0x0, 0xc, 0x1 delay 0x4 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x3 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xF 0x0 0x1888 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xF, 0x0, 0x1888 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -9030,17 +9033,17 @@ Move_DIAMOND_STORM:: Move_STEAM_ERUPTION:: loadspritegfx ANIM_TAG_STEAM_ERUPTION @Steam Eruption Particle - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x7 0x043D + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x7, 0x043D delay 0x20 monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 call SteamEruptionBreath call SteamEruptionBreath - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x1 0x0 0x9 0x1f + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x1, 0x0, 0x9, 0x1f call SteamEruptionBreath delay 0x2 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x2 0x0 0x15 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x2, 0x0, 0x15, 0x1 call SteamEruptionBreath call SteamEruptionBreath call SteamEruptionBreath @@ -9057,14 +9060,14 @@ Move_STEAM_ERUPTION:: call SteamEruptionBreath call SteamEruptionBreath call SteamEruptionBreath - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x1 0x9 0x0 0x1f + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x1, 0x9, 0x0, 0x1f waitforvisualfinish clearmonbg ANIM_DEF_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x7 0x0 0x043D + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x7, 0x0, 0x043D waitforvisualfinish end SteamEruptionBreath: - launchtemplate gSteamEruptionBreathTemplate 0x82 0x5 0x0 0x5 0x0 0x5 0x14 + createsprite gSteamEruptionBreathTemplate, ANIM_TARGET, 2, 0x0, 0x5, 0x0, 0x5, 0x14 delay 0x1 return @@ -9073,7 +9076,7 @@ Move_HYPERSPACE_HOLE:: loadspritegfx ANIM_TAG_WHITE_SHADOW @Destiny Bond loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @Black Colour loadspritegfx ANIM_TAG_POISON_BUBBLE @Poison Colour - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x7FFF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x7FFF waitforvisualfinish playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER invisible ANIM_ATTACKER @@ -9086,21 +9089,21 @@ Move_HYPERSPACE_HOLE:: delay 0x1 invisible ANIM_ATTACKER waitsound - launchtask AnimTask_DestinyBondWhiteShadow 0x5 0x2 0x0 0x30 + createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30 delay 0x17 - launchtask AnimTask_IsTargetSameSide 0x2 0x0 - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 + createvisualtask AnimTask_IsTargetSameSide, 0x2 + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 delay 0x19 visible ANIM_ATTACKER invisible ANIM_ATTACKER delay 0x5 - launchtemplate gHyperspaceHoleImpactTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 call HyperspaceHoleMovement - launchtemplate gHyperspaceHoleImpactTemplate 0x82, 0x3, 0xa 0x14 0x0 + createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0 call HyperspaceHoleMovement - launchtemplate gHyperspaceHoleImpactTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0 call HyperspaceHoleMovement - launchtemplate gHyperspaceHoleImpactTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0 call HyperspaceHoleMovement waitforvisualfinish visible ANIM_ATTACKER @@ -9112,12 +9115,12 @@ Move_HYPERSPACE_HOLE:: invisible ANIM_ATTACKER delay 0x1 visible ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x7FFF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x7FFF waitforvisualfinish end HyperspaceHoleMovement: playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x3 0x0 0xf 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x3, 0x0, 0xf, 0x1 delay 0x4 return @@ -9130,16 +9133,16 @@ Move_WATER_SHURIKEN:: monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET createsoundtask SoundTask_LoopSEAdjustPanning, 0x7, 0x87, 0xffc0, SOUND_PAN_TARGET, 0x5, 0x5, 0x0, 0x5 - launchtemplate gWaterShurikenStarTemplate 0x82, 0x3, 0x0 0x0 0x27 + createsprite gWaterShurikenStarTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x27 delay 0x8 - launchtemplate gWaterShurikenRingTemplate 0x82, 0x4, 0x0 0x0 0x28 0xf + createsprite gWaterShurikenRingTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x28, 0xf delay 0x5 - launchtemplate gWaterShurikenRingTemplate 0x82, 0x4, 0x0 0x0 0x28 0xf + createsprite gWaterShurikenRingTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x28, 0xf delay 0x5 - launchtemplate gWaterShurikenRingTemplate 0x82, 0x4, 0x0 0x0 0x28 0xf + createsprite gWaterShurikenRingTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x28, 0xf delay 0xC playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET - launchtemplate gWaterShurikenImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + createsprite gWaterShurikenImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -9149,26 +9152,26 @@ Move_MYSTICAL_FIRE:: loadspritegfx ANIM_TAG_FIRE setalpha 8, 8 playse 0xb1 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0xa 0x1 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x0 0x2 0x0 0x8 0x7fff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0xa, 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x0, 0x2, 0x0, 0x8, 0x7fff waitforvisualfinish waitsound blendoff - launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0xffff 0x0 + createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0xffff, 0x0 delay 0x1 - launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x0 0x1 + createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x0, 0x1 delay 0x1 - launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0xffff 0xffff + createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0xffff, 0xffff delay 0x1 - launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x2 0x1 + createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x2, 0x1 delay 0x1 - launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x1 0xffff + createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x1, 0xffff delay 0x1 - launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0xffff 0x1 + createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0xffff, 0x1 delay 0x1 - launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x1 0xfffe + createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x1, 0xfffe delay 0x1 - launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x3 0x1 + createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x3, 0x1 playse 0x8c waitforvisualfinish call UnsetPsychicBg @@ -9180,31 +9183,31 @@ Move_SPIKY_SHIELD:: monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10 - launchtemplate gProtectSpriteTemplate 0x2 0x3 0x18 0x0 0x5a + createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0x0, 0x5a delay 0xF - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x0 0xFFE0 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0xFFE0, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x16 0xFFEA 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x16, 0xFFEA, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x1E 0x0 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x1E, 0x0, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x14 0x14 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x14, 0x14, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x0 0x1C 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0x1C, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0xFFED 0x13 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFED, 0x13, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0xFFE5 0x0 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFE5, 0x0, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0xFFEE 0xFFEE 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFEE, 0xFFEE, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x0 0xFFE7 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0xFFE7, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x11 0xFFEF 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x11, 0xFFEF, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x17 0x0 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x17, 0x0, 0x10 delay 0x2 - launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x10 0x10 0x10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x10, 0x10, 0x10 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER end @@ -9212,17 +9215,17 @@ Move_SPIKY_SHIELD:: Move_AROMATIC_MIST:: loadspritegfx ANIM_TAG_PINK_PETAL playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x8 0x6E7D - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x64 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x6E7D + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x64 delay 0x19 setpan 0x0 call SweetScentEffect - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x2 0x37 0x0 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x37, 0x0 setpan SOUND_PAN_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, (ANIM_PAL_DEF | ANIM_PAL_DEF_PARTNER), 1, 5, 5, 13, 0x56bf + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 1, 5, 5, 13, 0x56bf call SweetScentEffect waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x8 0x0 0x6E7D + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x0, 0x6E7D waitforvisualfinish end @@ -9236,37 +9239,37 @@ Move_EERIE_IMPULSE:: monbg ANIM_DEF_PARTNER waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET 0x13 delay 0x4 - launchtemplate gEerieImpulseRingTemplate 0x0 0x7 0x2d 0x0 0x0 0x0 0x0 0x0 0x1 + createsprite gEerieImpulseRingTemplate, ANIM_ATTACKER, 0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 delay 0xB - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 16, 30, 0, 40, 0 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 16, 30, 0, 40, 1 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 16, 30, 0, 40, 0 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 16, 30, 0, 40, 2 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 32, 30, 0, 40, 0 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 32, 30, 0, 40, 1 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 32, 30, 0, 40, 0 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 32, 30, 0, 40, 2 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 48, 30, 0, 40, 0 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 48, 30, 0, 40, 1 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 48, 30, 0, 40, 0 - launchtemplate gZapCannonSparkSpriteTemplate, ANIM_TARGET, 7, 10, 0, 48, 30, 0, 40, 2 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 1 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 1 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 2 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 48, 30, 0, 40, 0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 48, 30, 0, 40, 1 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 48, 30, 0, 40, 0 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 48, 30, 0, 40, 2 waitforvisualfinish playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gEerieImpulseImpactTemplate 0x2 0x6 0x0 0xfffb 0x1 0x0 0x20 0x10 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1 + createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0x1, 0x0, 0x20, 0x10 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x5, 0x1 delay 0x7 - launchtemplate gEerieImpulseImpactTemplate 0x2 0x6 0xfff1 0xa 0x1 0x0 0x20 0x10 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xa, 0x1, 0x0, 0x20, 0x10 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xf, 0x14, 0x5, 0x2 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0 delay 0x7 - launchtemplate gEerieImpulseImpactTemplate 0x2 0x6 0xfff1 0xfff1 0x1 0x0 0x20 0x10 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xfff1, 0x1, 0x0, 0x20, 0x10 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x19, 0x0, 0x5, 0x1 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2 delay 0x7 - launchtemplate gEerieImpulseImpactTemplate 0x2 0x6 0xa 0xfffb 0x1 0x0 0x20 0x10 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1 + createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0xa, 0xfffb, 0x1, 0x0, 0x20, 0x10 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x2, 0xfff8, 0x5, 0x0 + createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -9274,16 +9277,16 @@ Move_EERIE_IMPULSE:: Move_VENOM_DRENCH:: loadspritegfx ANIM_TAG_POISON_BUBBLE monbg ANIM_DEF_PARTNER - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xfffb 0x1 0xfffb 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xfffb, 0x1, 0xfffb, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x5 0x0 0x6 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x6, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x13 0x1 0xa 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x13, 0x1, 0xa, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xffe9 0x2 0xfff6 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xffe9, 0x2, 0xfff6, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 call AcidDrench @@ -9292,28 +9295,28 @@ Move_VENOM_DRENCH:: clearmonbg ANIM_DEF_PARTNER end AcidDrench: - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x1c 0x1 0xa 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x1c, 0x1, 0xa, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xfff6 0x1 0xfffb 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xfff6, 0x1, 0xfffb, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xa 0x0 0x6 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x6, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x18 0x1 0xa 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x18, 0x1, 0xa, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xffe0 0x2 0xfff6 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xffe0, 0x2, 0xfff6, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 - launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x1e 0x2 0xa 1 + createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x1e, 0x2, 0xa, 1 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 0x2 return @@ -9331,11 +9334,11 @@ Move_POWDER:: clearmonbg ANIM_DEF_PARTNER end POWDER_SPORE: - launchtemplate gPowderBlackSporeTemplate 0x2 0x5 0x0 0xffec 0x55 0x50 0x0 + createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0x0, 0xffec, 0x55, 0x50, 0x0 delay 0xc - launchtemplate gPowderBlackSporeTemplate 0x2 0x5 0x0 0xfff6 0xaa 0x50 0x0 + createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0xaa, 0x50, 0x0 delay 0xc - launchtemplate gPowderBlackSporeTemplate 0x2 0x5 0x0 0xfff1 0x0 0x50 0x0 + createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff1, 0x0, 0x50, 0x0 delay 0xc return @@ -9351,121 +9354,121 @@ Move_GEOMANCY:: choosetwoturnanim GeomancyChargeUp GeomancyUnleash GeomancyChargeUp: loadspritegfx ANIM_TAG_FOCUS_ENERGY @endure buff effect - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish playsewithpan SE_M_COSMIC_POWER, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x5f 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0x5 0x1F + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x0, 0x2, 0x5f, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0x5, 0x1F call GeomancyRingBuff - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0x5 0x2C0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0x5, 0x2C0 call GeomancyRingBuff - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0x5 0x7C60 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0x5, 0x7C60 call GeomancyRingBuff waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x8 0x0 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x5 0x0 0x7C60 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x0, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x5, 0x0, 0x7C60 waitforvisualfinish blendoff clearmonbg ANIM_ATK_PARTNER end GeomancyRingBuff: - launchtemplate gGeomancyRedCellVortexTemplate 0x2 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x0 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x0 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyGreenCellVortexTemplate 0x2 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x0 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyBlueCellVortexTemplate 0x2 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x0 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x0 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x2 - launchtemplate gGeomancyRedCellVortexTemplate 0x2 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x0 + createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x0 delay 0x2 - launchtemplate gGeomancyGreenCellVortexTemplate 0x2 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x0 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x0 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyBlueCellVortexTemplate 0x2 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce 0x0 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRedCellVortexTemplate 0x2 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x0 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x0 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x2 - launchtemplate gGeomancyGreenCellVortexTemplate 0x2 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x0 + createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x0 delay 0x2 - launchtemplate gGeomancyBlueCellVortexTemplate 0x2 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x0 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x0 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRedCellVortexTemplate 0x2 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x0 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyGreenCellVortexTemplate 0x2 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x0 + createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x0 delay 0x2 return GeomancyUnleash: loadspritegfx ANIM_TAG_FIRE_PLUME @dragon rage - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x24CF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x24CF playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 delay 0x1 - launchtemplate gGeomancyRingTemplate 0x2 0x0 + createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2 waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x10 0x4D01 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x25 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0x5 0x1F - launchtemplate gGeomancyRedCellRaiseTemplate 0x2 0x5 0x14 0x20 0xffd0 0x32 0x1 - launchtemplate gGeomancyGreenCellRaiseTemplate 0x2 0x5 0x0 0x20 0xffda 0x19 0x1 - launchtemplate gGeomancyBlueCellRaiseTemplate 0x2 0x5 0x20 0x20 0xffe4 0x28 0x1 - launchtemplate gGeomancyRedCellRaiseTemplate 0x2 0x5 0xffec 0x20 0xffd0 0x32 0x1 - launchtemplate gGeomancyGreenCellRaiseTemplate 0x2 0x5 0x14 0x20 0xffe4 0x3c 0x1 - launchtemplate gGeomancyBlueCellRaiseTemplate 0x2 0x5 0x0 0x20 0xffe4 0x1e 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x10, 0x4D01 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x0, 0x2, 0x25, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0x5, 0x1F + createsprite gGeomancyRedCellRaiseTemplate, ANIM_ATTACKER, 2, 0x14, 0x20, 0xffd0, 0x32, 0x1 + createsprite gGeomancyGreenCellRaiseTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0xffda, 0x19, 0x1 + createsprite gGeomancyBlueCellRaiseTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0xffe4, 0x28, 0x1 + createsprite gGeomancyRedCellRaiseTemplate, ANIM_ATTACKER, 2, 0xffec, 0x20, 0xffd0, 0x32, 0x1 + createsprite gGeomancyGreenCellRaiseTemplate, ANIM_ATTACKER, 2, 0x14, 0x20, 0xffe4, 0x3c, 0x1 + createsprite gGeomancyBlueCellRaiseTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0xffe4, 0x1e, 0x1 call GeomancyRageBuff call GeomancyRageBuff waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x4D01 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x5 0x0 0x1F + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x4D01 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x5, 0x0, 0x1F waitforvisualfinish blendoff clearmonbg ANIM_ATK_PARTNER end GeomancyRageBuff: - launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0x5 0x0 + createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0x5, 0x0 delay 0x1 - launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0xfff6 0xfff1 + createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0xfff6, 0xfff1 delay 0x1 - launchtemplate gGeomancyYellowRageTemplate 0x82, 0x3, 0x0 0x0 0x19 + createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x19 delay 0x1 - launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0xf 0x5 + createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0xf, 0x5 delay 0x1 - launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0xffe7 0x0 + createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0xffe7, 0x0 delay 0x1 - launchtemplate gGeomancyYellowRageTemplate 0x82, 0x3, 0x0 0x1e 0x1e + createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0x0, 0x1e, 0x1e delay 0x1 - launchtemplate gGeomancyYellowRageTemplate 0x82, 0x3, 0x0 0xffe5 0x19 + createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0x0, 0xffe5, 0x19 delay 0x1 - launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0x0 0x8 + createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0x0, 0x8 delay 0x1 return @@ -9473,47 +9476,45 @@ Move_MAGNETIC_FLUX:: loadspritegfx ANIM_TAG_THIN_RING @uproar loadspritegfx ANIM_TAG_SPARK_2 @ElectricityEffect loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color - createvisualtask AnimTask_BlendBattleAnimPal 10, (ANIM_PAL_DEF | ANIM_PAL_ATK), 2, 0, 9, 0x243B - createvisualtask AnimTask_BlendBattleAnimPal 10, (ANIM_PAL_DEF | ANIM_PAL_ATK_PARTNER), 2, 0, 9, 0x243B + createvisualtask AnimTask_BlendBattleAnimPal 10, (F_PAL_TARGET | F_PAL_ATK_SIDE), 2, 0, 9, 0x243B loopsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, 0x12, 0x3 - launchtask AnimTask_DefenseCurlDeformMon 0x5 0x0 + createvisualtask AnimTask_DefenseCurlDeformMon, 0x5 call MagneticFluxSparks1 delay 0xA call MagneticFluxSparks2 delay 0xA call MagneticFluxSparks1 delay 0xA - launchtemplate gMagneticFluxUproarTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + createsprite gMagneticFluxUproarTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 call MagneticFluxSparks2 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal 10, (ANIM_PAL_DEF | ANIM_PAL_ATK), 2, 9, 0, 0x243B - createvisualtask AnimTask_BlendBattleAnimPal 10, (ANIM_PAL_DEF | ANIM_PAL_ATK_PARTNER), 2, 9, 0, 0x243B + createvisualtask AnimTask_BlendBattleAnimPal 10, (F_PAL_TARGET | F_PAL_ATK_SIDE), 2, 9, 0, 0x243B waitforvisualfinish end MagneticFluxSparks1: - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 return MagneticFluxSparks2: - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 return Move_HAPPY_HOUR:: loadspritegfx ANIM_TAG_COIN monbg ANIM_ATTACKER loopsewithpan SE_M_PAY_DAY, SOUND_PAN_TARGET, 0x8, 10 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xfffb 0x0 0xfffb 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xfffb, 0x0, 0xfffb, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x5 0x0 0x6 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x13 0x0 0xa 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x13, 0x0, 0xa, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xffe9 0x0 0xfff6 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xffe9, 0x0, 0xfff6, 0x1 delay 0x2 call CoinShower call CoinShower @@ -9521,21 +9522,21 @@ Move_HAPPY_HOUR:: clearmonbg ANIM_ATTACKER end CoinShower: - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x1c 0x0 0xa 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x1c, 0x0, 0xa, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xfff6 0x0 0xfffb 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xfff6, 0x0, 0xfffb, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xa 0x0 0x6 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x18 0x0 0xa 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x18, 0x0, 0xa, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xffe0 0x0 0xfff6 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xffe0, 0x0, 0xfff6, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 0x1 delay 0x2 - launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x1e 0x0 0xa 0x1 + createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x1e, 0x0, 0xa, 0x1 delay 0x2 return @@ -9555,7 +9556,7 @@ Move_ELECTRIC_TERRAIN:: createsprite gElectricTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 126 createsprite gElectricTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 168 createsprite gElectricTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 210 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 0, 4, RGB(28, 28, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 4, RGB(28, 28, 0) delay 52 setarg 7, 0xFFFF playsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER @@ -9571,24 +9572,24 @@ Move_ELECTRIC_TERRAIN:: loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 0x16, 0x3 waitforvisualfinish delay 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(28, 28, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 4, 0, RGB(28, 28, 0) waitforvisualfinish end Move_DAZZLING_GLEAM:: loadspritegfx ANIM_TAG_SPARKLE_2 loadspritegfx ANIM_TAG_BLUE_STAR - launchtemplate gSimplePaletteBlendSpriteTemplate 0x2 0x5 0x1 0x2 0x0 0xd 0x7fff + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0x0, 0xd, 0x7fff playsewithpan SE_M_TWISTER, SOUND_PAN_ATTACKER @call 0x081D56B3 -> middle of GrantingStarsEffect createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 delay 8 waitforvisualfinish - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x0 0x3 0x0 0x10 0x7fff + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x0, 0x3, 0x0, 0x10, 0x7fff delay 0x4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER waitforvisualfinish - launchtemplate gSimplePaletteBlendSpriteTemplate 0x2 0x5 0x1 0x0 0xd 0x0 0x7fff + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0xd, 0x0, 0x7fff waitforvisualfinish clearmonbg 0x0 blendoff @@ -9596,7 +9597,7 @@ Move_DAZZLING_GLEAM:: Move_CELEBRATE:: loadspritegfx ANIM_TAG_ITEM_BAG - launchtemplate gCelebrateBagTemplate 0x2 0x1 0x0 + createsprite gCelebrateBagTemplate, ANIM_ATTACKER, 2, 0x0 playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 0x12 playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER @@ -9609,40 +9610,40 @@ Move_HOLD_HANDS:: loadspritegfx ANIM_TAG_MAGENTA_HEART @charm loadspritegfx ANIM_TAG_VERTICAL_HEX @red playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0xc 0x6 0x6 0x3 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0xc, 0x6, 0x6, 0x3 + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c delay 0x8 - launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c waitforvisualfinish - launchtask AnimTask_HelpingHandAttackerMovement 0x5 0x0 - launchtemplate gHelpingHandClapSpriteTemplate 0x28 0x1 0x0 - launchtemplate gHelpingHandClapSpriteTemplate 0x28 0x1 0x1 + createvisualtask AnimTask_HelpingHandAttackerMovement, 0x5 + createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0x0 + createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0x1 delay 0x13 playsewithpan SE_M_ENCORE, 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x2 0x2 0x0 0x5 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x2, 0x2, 0x0, 0x5, 0x1 delay 0xe playsewithpan SE_M_ENCORE, 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x2 0x2 0x0 0x5 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x2, 0x2, 0x0, 0x5, 0x1 delay 0x14 playsewithpan SE_M_ENCORE, 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x2 0x3 0x0 0xa 0x1 - launchtask AnimTask_BlendMonInAndOut 0x2 0x5 0x2 0x3ff 0xc 0x1 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x2, 0x3, 0x0, 0xa, 0x1 + createvisualtask AnimTask_BlendMonInAndOut, 0x2, 0x2, 0x3ff, 0xc, 0x1, 0x1 end Move_BABY_DOLL_EYES:: @@ -9651,17 +9652,17 @@ Move_BABY_DOLL_EYES:: loadspritegfx ANIM_TAG_OPENING_EYE @eye setalpha 8, 8 monbg ANIM_DEF_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0xA 0x7FFF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0xA, 0x7FFF waitforvisualfinish - launchtemplate gOpeningEyeSpriteTemplate 0x5 0x4 0x0 0x0 0x1 0x0 + createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0x0, 0x0, 0x1, 0x0 delay 0x20 playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER - launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffb 0xfffb 0xa 0x0 0x1 + createvisualtask AnimTask_ScaleMonAndRestore, 0x5, 0xfffb, 0xfffb, 0xa, 0x0, 0x1 waitforvisualfinish delay 0xa - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x1 0x0 0x9 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x3 0x1 0x0 0x9 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0xA 0x0 0x7FFF + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x1, 0x0, 0x9, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x3, 0x1, 0x0, 0x9, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0xA, 0x0, 0x7FFF waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -9672,18 +9673,18 @@ Move_NUZZLE:: loadspritegfx ANIM_TAG_ITEM_BAG loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_IMPACT - launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 - launchtemplate gMagentaHeartSpriteTemplate 0x3 0x2 0x0 0x14 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x2, 0x0 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x14 playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 0xf - launchtemplate gMagentaHeartSpriteTemplate 0x3 0x2 0xffec 0x14 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0xffec, 0x14 playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 0xf - launchtemplate gMagentaHeartSpriteTemplate 0x3 0x2 0x14 0x14 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0x14, 0x14 playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER waitforvisualfinish playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 call ElectricityEffectNoSound waitforvisualfinish end @@ -9698,17 +9699,17 @@ Move_HOLD_BACK:: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - launchtemplate gHoldBackSwipeTemplate 0x82, 0x3, 0x0 0x0 0x1 - waitforvisualfinish - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x3 0x0 0xa 0x1 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x2 - launchtemplate gHoldBackRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 - launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0xa0 0xffe0 - launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0xff00 0xffd8 - launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0x80 0xfff0 - launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0x1a0 0xffda - launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0xff80 0xffea - launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0xfe80 0xffe1 + createsprite gHoldBackSwipeTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1 + waitforvisualfinish + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x3, 0x0, 0xa, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 + createsprite gHoldBackRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 + createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xa0, 0xffe0 + createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff00, 0xffd8 + createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x80, 0xfff0 + createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x1a0, 0xffda + createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff80, 0xffea + createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xfe80, 0xffe1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -9720,8 +9721,8 @@ Move_INFESTATION:: loadspritegfx ANIM_TAG_SMALL_BUBBLES @circle particles monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_DEF, 0x2, 0x0, 0x9, 0x7320 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x4f 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x7320 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x4f, 0x1 loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 0x4F call InfestationVortex call InfestationVortex @@ -9729,22 +9730,22 @@ Move_INFESTATION:: call InfestationVortex call InfestationVortex waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x7320 + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_TARGET, 0x2, 0x9, 0x0, 0x7320 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end InfestationVortex: - launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x1 + createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x1 delay 0x1 - launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x1 + createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x1 delay 0x1 - launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x1 + createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x1 delay 0x1 - launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x1 + createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x1 delay 0x1 - launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x1 + createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x1 delay 0x1 - launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce 0x1 + createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x1 delay 0x1 return @@ -9754,7 +9755,7 @@ Move_POWER_UP_PUNCH: loadspritegfx ANIM_TAG_BREATH monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_GrowAndShrink, 2, + createvisualtask AnimTask_GrowAndShrink, 2 playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER waitforvisualfinish playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET @@ -9772,15 +9773,15 @@ Move_OBLIVION_WING:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_HYDRO_PUMP, 0x0, 0xC, 0xC, 0x289F @Pinkish Red createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0x0, 0xD, 0xD, 0x289F @Pinkish Red playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xE 0x0 @Black + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xE, 0x0 @Black waitforvisualfinish createsoundtask SoundTask_LoopSEAdjustPanning, 0x7, 0xf0, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5 call OblivionWingBeam call OblivionWingBeam - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 40 0x1 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x4 0x0 0xc 0x289F @Pinkish Red + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 40, 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_TARGET, 0x2, 0x4, 0x0, 0xc, 0x289F @Pinkish Red call OblivionWingBeam call OblivionWingBeam call OblivionWingBeam @@ -9795,13 +9796,13 @@ Move_OBLIVION_WING:: visible ANIM_ATTACKER call HealingEffect waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xE 0x0 0x0 @From black + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xE, 0x0, 0x0 @From black waitforvisualfinish end OblivionWingBeam: - launchtemplate gOblivionWingBeamTemplate 0x82, 0x6, 0, -90, 0, 20, 0x15 0x0 + createsprite gOblivionWingBeamTemplate, ANIM_TARGET, 2, 0, -90, 0, 20, 0x15, 0x0 delay 0x2 - launchtemplate gOblivionWingBeamTemplate 0x82, 0x6, 0, -90, 0, 20, 0x15 0x0 + createsprite gOblivionWingBeamTemplate, ANIM_TARGET, 2, 0, -90, 0, 20, 0x15, 0x0 delay 0x2 return @@ -9814,10 +9815,10 @@ Move_THOUSAND_ARROWS:: loadspritegfx ANIM_TAG_VERTICAL_HEX @arrow loadspritegfx ANIM_TAG_NEEDLE @sting monbg ANIM_ATTACKER - setblends 0x80e - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish - launchtemplate gThousandArrowsGreenChargeTemplate 0x2 0x1 0x0 + createsprite gThousandArrowsGreenChargeTemplate, ANIM_ATTACKER, 2, 0x0 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 0x18 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -9829,67 +9830,67 @@ Move_THOUSAND_ARROWS:: call ThousandArrowsHexes call ThousandArrowsHexes call ThousandArrowsHexes - launchtemplate gThousandArrowsGreenDischargeTemplate 0x2 0x3 0x0 0x10 0x10 + createsprite gThousandArrowsGreenDischargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x10 delay 0x2 - launchtemplate gThousandArrowsGreenDischargeTemplate 0x2 0x3 0x0 0xfff0 0xfff0 + createsprite gThousandArrowsGreenDischargeTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0, 0xfff0 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER waitforvisualfinish delay 0x30 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x32 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x32 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x5, 0xa, 0x32 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0xa, 0x32 call ThousandArrowsDown call ThousandArrowsDown call ThousandArrowsDown call ThousandArrowsDown waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0xffff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0xffff waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff end ThousandArrowsHexes: - launchtemplate gThousandArrowsGreenHexTemplate 0x82, 0x3, 0x0 0xfffc 0xfff0 + createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0x0, 0xfffc, 0xfff0 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenHexTemplate 0x82, 0x3, 0x0 0x100D 0xfff0 + createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0x0, 0x100D, 0xfff0 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenHexTemplate 0x82, 0x3, 0x0 0x4 0xfff4 + createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0x0, 0x4, 0xfff4 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenHexTemplate 0x82, 0x3, 0x0 0xfff0 0xfff0 + createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0x0, 0xfff0, 0xfff0 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 return ThousandArrowsDown: - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0xdc 0x3c + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0xdc, 0x3c playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x3c 0x64 + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x3c, 0x64 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x8c 0x37 + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x8c, 0x37 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0xb4 0x32 + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0xb4, 0x32 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x14 0x5a + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x14, 0x5a playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x5a 0x5a + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x5a, 0x5a playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0xa0 0x3c + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0xa0, 0x3c playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x1e 0x5a + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x1e, 0x5a playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x78 0x3c + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x78, 0x3c playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0xc8 0x28 + createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0xc8, 0x28 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER return @@ -9900,133 +9901,133 @@ Move_THOUSAND_WAVES:: loadspritegfx ANIM_TAG_IMPACT @pound hits monbg ANIM_ATK_PARTNER setalpha 8, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER - launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0x0 - launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0x2b - launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0x55 - launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0x80 - launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0xaa - launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0xd5 + createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0x0 + createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0x2b + createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0x55 + createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0x80 + createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0xaa + createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0xd5 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @I placed this one here, because it ruins the teleport animation loopsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x3, 0x15 call ThousandWavesRecover - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0xfff6 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0xfff6, 0xd delay 0x3 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffdd 0x8 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffdd, 0x8, 0xd delay 0x3 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffdd 0xfff6 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffdd, 0xfff6, 0xd delay 0x3 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0x8 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0x8, 0xd delay 0x3 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xf 0xffd8 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xf, 0xffd8, 0xd delay 0x3 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xfff6 0xffe0 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xffe0, 0xd delay 0x3 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x5 0x27 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x5, 0x27, 0xd delay 0x3 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x19 0xffec 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x19, 0xffec, 0xd delay 0x3 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0xffec 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0xd delay 0x3 - launchtask AnimTask_AttackerStretchAndDisappear 0x2 0x0 + createvisualtask AnimTask_AttackerStretchAndDisappear, 0x2 playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x5 0xffd8 0xd + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x5, 0xffd8, 0xd waitforvisualfinish panse SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 delay 0x4 - launchtask AnimTask_MoveHeatWaveTargets 0x5 0x0 + createvisualtask AnimTask_MoveHeatWaveTargets, 0x5 delay 0xc monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0xa 0x900 0x60 0x1 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0xa, 0x900, 0x60, 0x1 delay 0x2 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x5a 0x800 0x60 0x1 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x5a, 0x800, 0x60, 0x1 delay 0x2 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x32 0xa00 0x60 0x1 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x32, 0xa00, 0x60, 0x1 delay 0x2 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x14 0x900 0x60 0x1 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x14, 0x900, 0x60, 0x1 delay 0x2 call ThousandWavesRotatingImpact call ThousandWavesRotatingImpact waitforvisualfinish - launchtask AnimTask_ExtremeSpeedMonReappear 0x2 0x0 + createvisualtask AnimTask_ExtremeSpeedMonReappear, 0x2 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0xffff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0xffff waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER end ThousandWavesRecover: - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0x28 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x0 0x28 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x0 0xffd8 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0xffec 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0xffec, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0x14 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0xffec 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0x14 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffec 0x1e 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffec, 0x1e, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x14 0xffe2 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x14, 0xffe2, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffec 0xffe2 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffec, 0xffe2, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x14 0x1e 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x14, 0x1e, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0x0 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x0, 0x10 delay 0x2 - launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0x0 0x10 + createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0x0, 0x10 delay 0x2 return ThousandWavesRotatingImpact: - launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x1c 0x180 0x32 0x8 0x32 0x1 @1 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x46 0x7c0 0x60 0x1 + createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x1c, 0x180, 0x32, 0x8, 0x32, 0x1 @1 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x46, 0x7c0, 0x60, 0x1 delay 0x2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0x0 0x0 0x3 - launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x20 0xf0 0x28 0xb 0xffd2 0x1 @2 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x0 0xb00 0x60 0x1 + createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x3 + createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x20, 0xf0, 0x28, 0xb, 0xffd2, 0x1 @2 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x0, 0xb00, 0x60, 0x1 delay 0x2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0x5 0xfff4 0x3 - launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x21 0x1a0 0x28 0x4 0x2a 0x1 @3 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x3c 0xa00 0x60 0x1 + createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0x5, 0xfff4, 0x3 + createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x21, 0x1a0, 0x28, 0x4, 0x2a, 0x1 @3 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x3c, 0xa00, 0x60, 0x1 delay 0x2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0xfffa 0x9 0x3 - launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x1f 0x120 0x2d 0x6 0xffd6 0x1 @4 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0xa 0x900 0x60 0x1 + createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0xfffa, 0x9, 0x3 + createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, 0x1 @4 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0xa, 0x900, 0x60, 0x1 delay 0x2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0xfffa 0xfff4 0x3 - launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x1c 0x1c0 0x2d 0xb 0x2e 0x1 @5 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x5a 0x800 0x60 0x1 + createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0xfffa, 0xfff4, 0x3 + createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, 0x1 @5 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x5a, 0x800, 0x60, 0x1 delay 0x2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0x5 0x9 0x3 - launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x21 0x1d0 0x32 0xa 0xffce 0x1 @6 - launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x32 0xa00 0x60 0x1 + createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0x5, 0x9, 0x3 + createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x21, 0x1d0, 0x32, 0xa, 0xffce, 0x1 @6 + createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x32, 0xa00, 0x60, 0x1 delay 0x2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0xfffa 0x0 0x3 + createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0xfffa, 0x0, 0x3 return Move_LANDS_WRATH:: loadspritegfx ANIM_TAG_WATER_ORB @whirl motion loadspritegfx ANIM_TAG_SPARK_2 @yellow color monbg ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xE 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xE, 0x0 waitforvisualfinish call LandsWrathVortex call LandsWrathVortex @@ -10036,51 +10037,51 @@ Move_LANDS_WRATH:: fadetobg BG_FISSURE waitbgfadeout playsewithpan SE_M_EARTHQUAKE, 0x0 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x32 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x32 - launchtask AnimTask_PositionFissureBgOnBattler 0x5 0x3 0x1 0x5 0xffff + createvisualtask AnimTask_HorizontalShake, 0x5, 0x5, 0xa, 0x32 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0xa, 0x32 + createvisualtask AnimTask_PositionFissureBgOnBattler, 0x5, 0x1, 0x5, 0xffff waitbgfadein waitforvisualfinish call UnsetPsychicBg - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x0, 0x0 clearmonbg ANIM_ATTACKER end LandsWrathVortex: playsewithpan SE_M_SACRED_FIRE2 SOUND_PAN_TARGET - launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 0x0 + createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, 0x0 delay 0x2 - launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 0x0 + createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, 0x0 delay 0x2 - launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a 0x0 + createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, 0x0 delay 0x2 - launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 0x0 + createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, 0x0 delay 0x2 - launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e 0x0 + createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, 0x0 delay 0x2 - launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce 0x0 + createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, 0x0 delay 0x2 return Move_LIGHT_OF_RUIN:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge - loadspritegfx ANIM_TAG_ELECTRIC_ORBS @launchtask particles + loadspritegfx ANIM_TAG_ELECTRIC_ORBS @createvisualtask particles loadspritegfx ANIM_TAG_ORBS @beam particles loadspritegfx ANIM_TAG_ELECTRICITY @discharge loadspritegfx ANIM_TAG_PINK_PETAL @pink color loadspritegfx ANIM_TAG_EXPLOSION @explosion createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRIC_ORBS, 0, 0xC, 0xC, 0x6DDE @Pink waitforvisualfinish - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x14 0x0 0x2 + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x14, 0x0, 0x2 panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xF 0x6B1F - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xF, 0x6B1F + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_ATTACKER, 0x0, 0x4, 0x32, 0x1 createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB_RED, 16, 0, 0 call LightOfRuinBeam call LightOfRuinBeam call LightOfRuinBeam call LightOfRuinBeam call LightOfRuinBeam - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x32 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x32, 0x1 call LightOfRuinBeam call LightOfRuinBeam call LightOfRuinBeam @@ -10104,21 +10105,21 @@ Move_LIGHT_OF_RUIN:: call LightOfRuinBeam delay 0x20 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gLightOfRuinPinkDischargeTemplate 0x2 0x3 0x1 0x10 0x10 + createsprite gLightOfRuinPinkDischargeTemplate, ANIM_ATTACKER, 2, 0x1, 0x10, 0x10 delay 0x2 - launchtemplate gLightOfRuinPinkDischargeTemplate 0x2 0x3 0x1 0xfff0 0xfff0 + createsprite gLightOfRuinPinkDischargeTemplate, ANIM_ATTACKER, 2, 0x1, 0xfff0, 0xfff0 delay 0x5 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x5 0xb 0x1 - launchtemplate gLightOfRuinPinkExplosionTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x5, 0xb, 0x1 + createsprite gLightOfRuinPinkExplosionTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1 delay 0x10 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x7FFF + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x7FFF waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ALL_BATTLERS 0x1 0x0 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BATTLERS, 0x1, 0x0, 0x0, 0x0 waitforvisualfinish end LightOfRuinBeam: - launchtemplate gLightOfRuinPinkOrbsTemplate 0x82 0x0 - launchtemplate gLightOfRuinPinkOrbsTemplate 0x82 0x0 + createsprite gLightOfRuinPinkOrbsTemplate, ANIM_TARGET, 2 + createsprite gLightOfRuinPinkOrbsTemplate, ANIM_TARGET, 2 delay 0x1 return @@ -10131,63 +10132,63 @@ Move_ORIGIN_PULSE:: setalpha 8, 8 fadetobg BG_WATER waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x400 0x0 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x400, 0x0, 0x1, 0xffff waitbgfadein - launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER delay 0x10 - launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 delay 0x10 - launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 playsewithpan SE_INTRO_BLAST, SOUND_PAN_ATTACKER waitforvisualfinish - launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0x0 - launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0x2b - launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0x55 - launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0x80 - launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0xaa - launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0xd5 + createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x0 + createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x2b + createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x55 + createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x80 + createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0xaa + createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0xd5 delay 0x35 - launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 delay 0x10 - launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 waitforvisualfinish delay 0x2F - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x0 0xFF90 0x10 @up - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x5F 0xFF9D 0x10 @upper right - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x73 0x0 0x10 @right - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x4F 0x37 0x10 @lower right - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x0 0x53 0x10 @down - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFFB0 0x43 0x10 @lower left - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFF60 0x0 0x10 @left - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFFAA 0xFF94 0x10 @upper left + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xFF90, 0x10 @up + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x5F, 0xFF9D, 0x10 @upper right + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x73, 0x0, 0x10 @right + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x4F, 0x37, 0x10 @lower right + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x53, 0x10 @down + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFB0, 0x43, 0x10 @lower left + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFF60, 0x0, 0x10 @left + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFAA, 0xFF94, 0x10 @upper left delay 0x5 - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x2D 0xFF9D 0x10 @between up and upper right - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xDF 0xFF9D 0x10 @between right and upper right - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x9F 0x37 0x10 @between right and lower right - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x1F 0x37 0x10 @between lower right and down - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFFE0 0x43 0x10 @between lower left and down - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFF60 0x43 0x10 @between left and lower left - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFF2A 0xFFAA 0x10 @between left and upper left - launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFFDA 0xFF94 0x10 @between up and upper left + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x2D, 0xFF9D, 0x10 @between up and upper right + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xDF, 0xFF9D, 0x10 @between right and upper right + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x9F, 0x37, 0x10 @between right and lower right + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1F, 0x37, 0x10 @between lower right and down + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFE0, 0x43, 0x10 @between lower left and down + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFF60, 0x43, 0x10 @between left and lower left + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFF2A, 0xFFAA, 0x10 @between left and upper left + createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFDA, 0xFF94, 0x10 @between up and upper left waitforvisualfinish createvisualtaskontargets AnimTask_ShakeMon2, 5, 0, ANIM_TARGET, 2, 0, 18, 1 monbg ANIM_DEF_PARTNER - launchtemplate gOriginPulseBasicSplatTemplate 0x83 0x4 0xffb0 0xfff0 0x1 0x1 + createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0xffb0, 0xfff0, 0x1, 0x1 stopsound playsewithpan SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER delay 0x5 - launchtemplate gOriginPulseBlueImpactTemplate 0x83 0x2 0x1 0x1 + createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1 delay 0x5 - launchtemplate gOriginPulseBasicSplatTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gOriginPulseBlueImpactTemplate 0x83 0x2 0x1 0x1 + createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1 delay 0x5 - launchtemplate gOriginPulseBasicSplatTemplate 0x83 0x4 0xffc0 0x14 0x1 0x1 + createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0xffc0, 0x14, 0x1, 0x1 delay 0x5 - launchtemplate gOriginPulseBlueImpactTemplate 0x83 0x2 0x1 0x1 + createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1 delay 0x5 - launchtemplate gOriginPulseBasicSplatTemplate 0x83 0x4 0xffe0 0x5 0x1 0x1 + createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0xffe0, 0x5, 0x1, 0x1 waitsound call UnsetPsychicBg clearmonbg ANIM_DEF_PARTNER @@ -10203,51 +10204,51 @@ Move_PRECIPICE_BLADES:: setalpha 12, 8 fadetobg 0x15 waitbgfadeout - launchtask AnimTask_PositionFissureBgOnBattler 0x5 0x3 0x1 0x5 0xffff - launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x5 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x5 + createvisualtask AnimTask_PositionFissureBgOnBattler, 0x5, 0x1, 0x5, 0xffff + createvisualtask AnimTask_HorizontalShake, 0x5, 0x5, 0xa, 0x5 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0xa, 0x5 playsewithpan SE_M_EARTHQUAKE, 0x0 - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7, ANIM_TARGET, PrecipiceBladesOpponent PrecipiceBladesPlayer: - launchtemplate gPrecipiceBladesSpikeTemplate 3, 0x5, ANIM_ATTACKER, -45, 5, 145 0x0 + createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 3, ANIM_ATTACKER, -45, 5, 145, 0x0 delay 10 - launchtemplate gPrecipiceBladesSpikeTemplate 3, 0x5, ANIM_ATTACKER, 10, 7, 135 0x0 + createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 3, ANIM_ATTACKER, 10, 7, 135, 0x0 delay 10 - launchtemplate gPrecipiceBladesSpikeTemplate 4, 0x5, ANIM_ATTACKER, -30, 15, 125 0x0 + createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 4, ANIM_ATTACKER, -30, 15, 125, 0x0 delay 5 - launchtemplate gPrecipiceBladesSpikeTemplate 5, 0x5, ANIM_ATTACKER, -10, 17, 120 0x0 + createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 5, ANIM_ATTACKER, -10, 17, 120, 0x0 PrecipiceBladesContinue: delay 0x10 - launchtemplate gPrecipiceBladesPlumeTemplate 0x82, 0x3, -15, 18, ANIM_TARGET - launchtemplate gPrecipiceBladesPlumeTemplate 0x82, 0x3, -15, 18, ANIM_DEF_PARTNER + createsprite gPrecipiceBladesPlumeTemplate, ANIM_TARGET, 2, -15, 18, ANIM_TARGET + createsprite gPrecipiceBladesPlumeTemplate, ANIM_TARGET, 2, -15, 18, ANIM_DEF_PARTNER delay 0x20 - launchtemplate gPrecipiceBladesPlumeTemplate 0x82, 0x3, 15, 18, ANIM_TARGET - launchtemplate gPrecipiceBladesPlumeTemplate 0x82, 0x3, 15, 18, ANIM_DEF_PARTNER + createsprite gPrecipiceBladesPlumeTemplate, ANIM_TARGET, 2, 15, 18, ANIM_TARGET + createsprite gPrecipiceBladesPlumeTemplate, ANIM_TARGET, 2, 15, 18, ANIM_DEF_PARTNER delay 0x20 stopsound playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET - launchtemplate gPrecipiceBladesLargeSpikeTemplate 0x82, 0x5, ANIM_TARGET, 0, -25, 40, 0x0 - launchtemplate gPrecipiceBladesLargeSpikeTemplate 0x82, 0x5, ANIM_DEF_PARTNER, 0, -25, 40, 0x0 + createsprite gPrecipiceBladesLargeSpikeTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -25, 40, 0x0 + createsprite gPrecipiceBladesLargeSpikeTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, 0, -25, 40, 0x0 delay 0x6 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x82, 0x5, ANIM_TARGET, -20 0 0x6 0x1 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x82, 0x5, ANIM_DEF_PARTNER, -20 0 0x6 0x1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -20, 0, 0x6, 0x1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, -20, 0, 0x6, 0x1 delay 0x22 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x82, 0x3 ANIM_TARGET 0x0 0x6 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x82, 0x3 ANIM_DEF_PARTNER 0x0 0x6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, 0x0, 0x6 waitforvisualfinish call UnsetPsychicBg clearmonbg ANIM_DEF_PARTNER blendoff end PrecipiceBladesOpponent: - launchtemplate gPrecipiceBladesSpikeTemplate 0x43, 0x5, ANIM_ATTACKER, 35, -5, 145 0x0 + createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 67, ANIM_ATTACKER, 35, -5, 145, 0x0 delay 10 - launchtemplate gPrecipiceBladesSpikeTemplate 0x43, 0x5, ANIM_ATTACKER, -20, -7, 135 0x0 + createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 67, ANIM_ATTACKER, -20, -7, 135, 0x0 delay 10 - launchtemplate gPrecipiceBladesSpikeTemplate 0x44, 0x5, ANIM_ATTACKER, 20, -15, 125 0x0 + createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 68, ANIM_ATTACKER, 20, -15, 125, 0x0 delay 5 - launchtemplate gPrecipiceBladesSpikeTemplate 0x45, 0x5, ANIM_ATTACKER, 0, -17, 120 0x0 + createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 69, ANIM_ATTACKER, 0, -17, 120, 0x0 goto PrecipiceBladesContinue Move_DRAGON_ASCENT:: @@ -10256,34 +10257,34 @@ Move_DRAGON_ASCENT:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 11, 11, RGB(16, 31, 16) fadetobg BG_COSMIC waitbgfadeout - launchtask AnimTask_StartSlidingBg, 0x2 0x4, 0, 128, 0, -1 + createvisualtask AnimTask_StartSlidingBg, 0x2, 0, 128, 0, -1 waitbgfadein playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER invisible ANIM_ATTACKER - launchtemplate gDragonAscentFlyUpTemplate 0x2 0x7 0x0 0x0 0x400 0x24 0x15 0x1 ANIM_ATTACKER + createsprite gDragonAscentFlyUpTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x400, 0x24, 0x15, 0x1, ANIM_ATTACKER waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal, 0xa 0x5, (ANIM_PAL_ATK | ANIM_PAL_BG | ANIM_PAL_BG_4 | ANIM_PAL_BG_5), 4, 0, 14, RGB(21, 31, 27) + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_ATTACKER | F_PAL_BG | F_PAL_ANIM_1 | F_PAL_ANIM_2), 4, 0, 14, RGB(21, 31, 27) playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER waitforvisualfinish playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtask AnimTask_StartSlidingBg, 0x5 0x4, -7304, -784, 1, -1 + createvisualtask AnimTask_StartSlidingBg, 0x5, -7304, -784, 1, -1 delay 2 - launchtask AnimTask_BlendBattleAnimPal, 0xa 0x5, (ANIM_PAL_ATK | ANIM_PAL_BG | ANIM_PAL_BG_4 | ANIM_PAL_BG_5), 0, 14, 0, RGB(21, 31, 27) + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_ATTACKER | F_PAL_BG | F_PAL_ANIM_1 | F_PAL_ANIM_2), 0, 14, 0, RGB(21, 31, 27) waitforvisualfinish delay 1 monbg ANIM_DEF_PARTNER setalpha 12, 8 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER - launchtemplate gDragonAscentDrakeTemplate, 2, 0x1 5 + createsprite gDragonAscentDrakeTemplate, ANIM_ATTACKER, 2, 5 delay 1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - launchtemplate gBasicHitSplatSpriteTemplate, 0x84, 0x4, -10, 0, 1, 0 - launchtemplate gSlideMonToOffsetSpriteTemplate, 2, 0x5, 0x1, -32, 0, 0, 3 - launchtask AnimTask_ShakeMonInPlace, 0x2 0x5, ANIM_TARGET, 6, 0, 12, 1 - launchtask AnimTask_BlendBattleAnimPal, 0xa 0x5, (ANIM_PAL_ATK | ANIM_PAL_BG | ANIM_PAL_BG_4 | ANIM_PAL_BG_5), 2, 16, 0, RGB(26, 31, 0) + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0x1, -32, 0, 0, 3 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, ANIM_TARGET, 6, 0, 12, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_ATTACKER | F_PAL_BG | F_PAL_ANIM_1 | F_PAL_ANIM_2), 2, 16, 0, RGB(26, 31, 0) waitforvisualfinish delay 3 - launchtemplate gSlideMonToOriginalPosSpriteTemplate, 2, 0x3, 1, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7 waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER @@ -10295,68 +10296,68 @@ Move_HYPERSPACE_FURY:: loadspritegfx ANIM_TAG_HOOPA_RING @Hoopa Ring loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xA 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xA, 0x0 waitforvisualfinish playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER - launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0 delay 0x5 - launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0x4 + createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4 delay 0x5 - launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0x8 + createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8 delay 0x5 - launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0xc + createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc delay 0x5 - launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0x10 + createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10 delay 0x15 invisible ANIM_ATTACKER waitforvisualfinish fadetobg BG_HYPERSPACE_FURY waitbgfadeout - launchtask AnimTask_SetPsychicBackground 0x5 0x0 + createvisualtask AnimTask_SetPsychicBackground, 0x5 waitbgfadein loopsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET, 0x2, 0x10 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x20 0x1 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x0 0xffe0 0x10 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0x20, 0x1 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe0, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x16 0xffea 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xffea, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x1e 0x0 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1e, 0x0, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtask AnimTask_IsTargetSameSide 0x2 0x0 - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x14 0x14 0x10 + createvisualtask AnimTask_IsTargetSameSide, 0x2 + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x0 0x1c 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1c, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0xffed 0x13 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffed, 0x13, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0xffe5 0x0 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffe5, 0x0, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0xffee 0xffee 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffee, 0xffee, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x0 0xffe7 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe7, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x11 0xffef 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x11, 0xffef, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x17 0x0 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x17, 0x0, 0x10 call HyperspaceFuryRandomImpact delay 0x2 - launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x10 0x10 0x10 + createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0x10, 0x10 call HyperspaceFuryRandomImpact delay 0x7 - launchtask SoundTask_PlayDoubleCry 0x2 0x2 ANIM_ATTACKER 0xff + createvisualtask SoundTask_PlayDoubleCry, 0x2, ANIM_ATTACKER, 0xff visible ANIM_ATTACKER - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x0 0x3 0x20 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x0, 0x3, 0x20, 0x1 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET invisible ANIM_ATTACKER call UnsetPsychicBg @@ -10370,10 +10371,10 @@ Move_HYPERSPACE_FURY:: invisible ANIM_ATTACKER delay 0x1 visible ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x0, 0x0 end HyperspaceFuryRandomImpact: - launchtemplate gHyperspaceFuryImpactTemplate 0x83 0x2 0x1 0x1 + createsprite gHyperspaceFuryImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1 return @@@@@@@@@@@@@@@@@@@@@@@ GEN 7 @@@@@@@@@@@@@@@@@@@@@@@ @@ -10381,21 +10382,21 @@ Move_SHORE_UP:: loadspritegfx ANIM_TAG_FLYING_DIRT @sandstorm loadspritegfx ANIM_TAG_BLUE_STAR @heal2 playsewithpan SE_M_SANDSTORM, 0x0 - launchtask AnimTask_LoadSandstormBackground 0x5 0x1 0x0 + createvisualtask AnimTask_LoadSandstormBackground, 0x5, 0x0 delay 0x10 - launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0xa 0x900 0x60 0x0 + createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0xa, 0x900, 0x60, 0x0 delay 0xa - launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x5a 0x800 0x60 0x0 + createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x5a, 0x800, 0x60, 0x0 delay 0xa - launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x32 0xa00 0x60 0x0 + createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x32, 0xa00, 0x60, 0x0 delay 0xa - launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x14 0x900 0x60 0x0 + createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x14, 0x900, 0x60, 0x0 delay 0xa - launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x46 0x7c0 0x60 0x0 + createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x46, 0x7c0, 0x60, 0x0 delay 0xa - launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x0 0xb00 0x60 0x0 + createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xb00, 0x60, 0x0 delay 0xa - launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x3c 0xa00 0x60 0x0 + createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x3c, 0xa00, 0x60, 0x0 call HealingEffect waitforvisualfinish end @@ -10404,28 +10405,28 @@ Move_FIRST_IMPRESSION:: loadspritegfx ANIM_TAG_SWEAT_BEAD @astonish loadspritegfx ANIM_TAG_IMPACT @pound hit loadspritegfx ANIM_TAG_RAZOR_LEAF @green - launchtemplate gSprayWaterDropletSpriteTemplate 0x85 0x2 0x0 0x1 + createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0x0, 0x1 playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET - launchtemplate gSprayWaterDropletSpriteTemplate 0x85 0x2 0x1 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 - launchtask AnimTask_StretchTargetUp 0x3 0x0 + createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x5, 0x1 + createvisualtask AnimTask_StretchTargetUp, 0x3 waitforvisualfinish delay 0x19 - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x6 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x6 waitforvisualfinish monbg ANIM_TARGET @This is placed here on purpose (to not ruin astonishs animation) delay 0x1 - launchtemplate gFirstImpressionPoundTemplate 0x4 0x4 0xfff6 0x0 0x1 0x0 + createsprite gFirstImpressionPoundTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0 loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET 0xA 0x2 delay 0x1 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe4 0x0 0x0 0x3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe4, 0x0, 0x0, 0x3 waitforvisualfinish - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x4 0x0 0xc 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0x4, 0x0, 0xc, 0x1 waitforvisualfinish delay 0xa - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x6 delay 0x5 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x6 waitforvisualfinish clearmonbg ANIM_TARGET end @@ -10436,22 +10437,22 @@ Move_BANEFUL_BUNKER:: monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER 0x10 - launchtemplate gProtectSpriteTemplate 0x2 0x3 0x18 0x0 0x5a - launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0x0, 0x5a + createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 delay 0x4 - launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 delay 0x4 - launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0 delay 0x4 - launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0 delay 0x4 - launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0 delay 0x4 - launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0 delay 0x4 - launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0 delay 0x4 - launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER end @@ -10462,21 +10463,21 @@ Move_SPIRIT_SHACKLE:: monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 waitforvisualfinish playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER - launchtemplate gSpiritShackleArrowTemplate 0x82 0x5 0x10 0x0 0x0 0x0 0xf + createsprite gSpiritShackleArrowTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xf delay 0x8 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0xa 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0xa, 0x1 waitforvisualfinish loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 0x1c, 0x2 - launchtemplate gSpiritShackleChainTemplate 0x82 0x2 0xfff0 0xfff0 + createsprite gSpiritShackleChainTemplate, ANIM_TARGET, 2, 0xfff0, 0xfff0 delay 0x4 - launchtemplate gSpiritShackleChainTemplate 0x82 0x2 0xfff0 0x0 + createsprite gSpiritShackleChainTemplate, ANIM_TARGET, 2, 0xfff0, 0x0 delay 0x4 - launchtemplate gSpiritShackleChainTemplate 0x82 0x2 0xfff0 0x10 + createsprite gSpiritShackleChainTemplate, ANIM_TARGET, 2, 0xfff0, 0x10 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -10485,7 +10486,7 @@ Move_SPIRIT_SHACKLE:: Move_DARKEST_LARIAT:: fadetobg BG_DARK waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0x0 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x0, 0x0, 0xffff waitbgfadein loadspritegfx ANIM_TAG_IMPACT @hit loadspritegfx ANIM_TAG_POISON_BUBBLE @purple color @@ -10501,8 +10502,8 @@ Move_DARKEST_LARIAT:: waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x46 waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 0x50 waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x5a - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x0 0xffee 0x6 0x6 0x4 - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x1 0x12 0x6 0x6 0x4 + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xffee, 0x6, 0x6, 0x4 + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x1, 0x12, 0x6, 0x6, 0x4 call DarkestLariatImpact call DarkestLariatImpact call DarkestLariatImpact @@ -10512,11 +10513,11 @@ Move_DARKEST_LARIAT:: call UnsetPsychicBg end DarkestLariatImpact: - launchtemplate gDarkestLariatImpactTemplate 0x3 0x4 0x0 0xfff4 0x1 0x1 + createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0xfff4, 0x1, 0x1 delay 0x8 - launchtemplate gDarkestLariatImpactTemplate 0x3 0x4 0xfff4 0x8 0x1 0x1 + createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, 0xfff4, 0x8, 0x1, 0x1 delay 0x8 - launchtemplate gDarkestLariatImpactTemplate 0x3 0x4 0xc 0x0 0x1 0x1 + createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, 0xc, 0x0, 0x1, 0x1 delay 0x8 return @@ -10525,10 +10526,10 @@ Move_SPARKLING_ARIA:: loadspritegfx ANIM_TAG_BUBBLE @circles loadspritegfx ANIM_TAG_HYDRO_PUMP @hydro pump monbg ANIM_ATTACKER - setblends 0x80E - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xE 0x0 + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xE, 0x0 waitforvisualfinish - launchtemplate gSparklingAriaBlueChargeTemplate 0x2 0x1 0x0 + createsprite gSparklingAriaBlueChargeTemplate, ANIM_ATTACKER, 2, 0x0 call SparklingAriaCharge call SparklingAriaCharge call SparklingAriaCharge @@ -10538,77 +10539,77 @@ Move_SPARKLING_ARIA:: call SparklingAriaRain call SparklingAriaRain waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xE 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xE, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff end SparklingAriaRain: - launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0xdc 0x3c - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0xdc, 0x3c + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaBubbleRainTemplate 0x82, 0x3, 0x1 0x3c 0x64 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 0x1, 0x3c, 0x64 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0x8c 0x37 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0x8c, 0x37 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0xb4 0x32 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0xb4, 0x32 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0x14 0x5a - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0x14, 0x5a + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaBubbleRainTemplate 0x82, 0x3, 0x1 0x5a 0x5a - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 0x1, 0x5a, 0x5a + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0xa0 0x3c - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0xa0, 0x3c + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0x1e 0x5a - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0x1e, 0x5a + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0x78 0x3c - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0x78, 0x3c + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 - launchtemplate gSparklingAriaBubbleRainTemplate 0x82, 0x3, 0x1 0xc8 0x28 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 0x1, 0xc8, 0x28 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x3, 0x0, 0x6, 0x1 delay 0x2 return SparklingAriaCharge: playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0 delay 0x4 return @@ -10618,27 +10619,27 @@ Move_ICE_HAMMER:: loadspritegfx ANIM_TAG_ECLIPSING_ORB @gray color loadspritegfx ANIM_TAG_BLACK_SMOKE @smoke setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET - launchtemplate gIceHammerPunchStompTemplate 0x83, 0x3 0x0 0xffe0 0xf + createsprite gIceHammerPunchStompTemplate, ANIM_TARGET, 3, 0x0, 0xffe0, 0xf delay 0x13 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - launchtask AnimTask_SquishTarget 0x2 0x0 - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xfff4 0x68 0x0 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xfff4 0x48 0x1 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xfffa 0x38 0x1 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xfffa 0x58 0x0 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x0 0x38 0x0 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x0 0x58 0x1 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x6 0x48 0x0 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x6 0x68 0x1 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xc 0x48 0x0 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xc 0x38 0x1 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x12 0x50 0x0 0x4b - launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x12 0x48 0x1 0x4b + createvisualtask AnimTask_SquishTarget, 0x2 + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x68, 0x0, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x48, 0x1, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x38, 0x1, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x58, 0x0, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x38, 0x0, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x58, 0x1, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x48, 0x0, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x68, 0x1, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x48, 0x0, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x38, 0x1, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x50, 0x0, 0x4b + createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x48, 0x1, 0x4b call IceCrystalEffectShort - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish blendoff end @@ -10657,27 +10658,27 @@ Move_FLORAL_HEALING:: waitforvisualfinish panse SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 playsewithpan SE_M_TWISTER, 0x0 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x46 0x1 0x40 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x46, 0x1, 0x40 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3c 0x0 0x40 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3c, 0x0, 0x40 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x50 0x1 0x40 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0x1, 0x40 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3a 0x0 0x78 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3a, 0x0, 0x78 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5a 0x0 0x40 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5a, 0x0, 0x40 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x30 0x0 0x40 @2 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0x0, 0x40 @2 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5f 0x1 0x50 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5f, 0x1, 0x50 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x4b 0x1 0x40 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x4b, 0x1, 0x40 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x55 0x0 0x78 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x55, 0x0, 0x78 delay 0x2 loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 0x12, 0xa call FloralHealingSpores @@ -10685,66 +10686,66 @@ Move_FLORAL_HEALING:: call FloralHealingSpores waitforvisualfinish playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER - launchtemplate gGrantingStarsSpriteTemplate 0x10 0x7 0xfff1 0x0 0x1 0x0 0x20 0x3c 0x1 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 16, 0xfff1, 0x0, 0x1, 0x0, 0x20, 0x3c, 0x1 delay 0x8 - launchtemplate gGrantingStarsSpriteTemplate 0x10 0x7 0xc 0xfffb 0x1 0x0 0x20 0x3c 0x1 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 16, 0xc, 0xfffb, 0x1, 0x0, 0x20, 0x3c, 0x1 waitforvisualfinish clearmonbg ANIM_TARGET clearmonbg ANIM_ATTACKER end FloralHealingSpores: - launchtemplate gFloralHealingFlowerTemplate 0x2 0x5 0x0 0xffec 0x55 0x50 0x0 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x46 0x1 0x40 + createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0x0, 0xffec, 0x55, 0x50, 0x0 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x46, 0x1, 0x40 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3c 0x0 0x40 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3c, 0x0, 0x40 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x50 0x1 0x40 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0x1, 0x40 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3a 0x0 0x78 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3a, 0x0, 0x78 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5a 0x0 0x40 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5a, 0x0, 0x40 delay 0x3 - launchtemplate gFloralHealingFlowerTemplate 0x2 0x5 0x0 0xfff6 0xaa 0x50 0x0 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x30 0x0 0x40 + createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0xaa, 0x50, 0x0 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0x0, 0x40 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5f 0x1 0x50 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5f, 0x1, 0x50 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x4b 0x1 0x40 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x4b, 0x1, 0x40 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x55 0x0 0x78 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x55, 0x0, 0x78 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x46 0x1 0x40 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x46, 0x1, 0x40 delay 0x3 - launchtemplate gFloralHealingFlowerTemplate 0x2 0x5 0x0 0xfff1 0x0 0x50 0x0 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3c 0x0 0x40 + createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff1, 0x0, 0x50, 0x0 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3c, 0x0, 0x40 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x50 0x1 0x40 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0x1, 0x40 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3a 0x0 0x78 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3a, 0x0, 0x78 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78 delay 0x2 - launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5a 0x0 0x40 + createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5a, 0x0, 0x40 delay 0x2 - launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x30 0x0 0x40 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0x0, 0x40 delay 0x3 return CIRCLES_LEAVES: - launchtemplate gFloralHealingOrbsTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 0x0 + createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, 0x0 delay 0x2 - launchtemplate gFloralHealingLeavesTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 0x0 + createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, 0x0 delay 0x2 - launchtemplate gFloralHealingOrbsTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a 0x0 + createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, 0x0 delay 0x2 - launchtemplate gFloralHealingLeavesTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 0x0 + createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, 0x0 delay 0x2 - launchtemplate gFloralHealingOrbsTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e 0x0 + createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, 0x0 delay 0x2 - launchtemplate gFloralHealingLeavesTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce 0x0 + createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, 0x0 delay 0x2 return @@ -10753,18 +10754,18 @@ Move_HIGH_HORSEPOWER:: loadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST @horseshoe monbg ANIM_TARGET delay 0x2 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0x10, 0x0 setalpha 12, 8 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET - launchtemplate gHighHorsepowerHorseshoeTemplate 0x3 0x4 0x0 0x0 0x1 0x32 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x7 0x7fff + createsprite gHighHorsepowerHorseshoeTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x32 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x7, 0x7fff delay 0x32 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call SetImpactBackground - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x16 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x0 0x7fff - launchtemplate gComplexPaletteBlendSpriteTemplate 0x2 0x7 0x1f 0x3 0x1 0x0 0x8 0x0 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x16, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x0, 0x7fff + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1f, 0x3, 0x1, 0x0, 0x8, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -10782,59 +10783,59 @@ Move_STRENGTH_SAP:: loadspritegfx ANIM_TAG_SPARKLE_2 @stars monbg ANIM_DEF_PARTNER playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gStrengthSapRedSmokeTemplate 0x82, 0x4, 0x8 0x3 0x1 0x0 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x46 0x0 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x28 0x28 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xa 0xffc4 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffce 0xffd8 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffd8 0x28 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x32 0xffce 0x6 - delay 0x2 - launchtemplate gStrengthSapRedSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x32 0xffe2 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x3c 0xa 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x0 0x3c 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x0 0xffd8 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffc4 0x14 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffc4 0xffe2 0x6 - delay 0x2 - launchtemplate gStrengthSapRedSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffce 0x32 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffc4 0x14 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffd8 0xffd8 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x14 0xffc4 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x32 0xffce 0x6 - launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x23 0x28 0x6 - delay 0x2 - launchtemplate gStrengthSapRedSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 - waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x3 0x07FD + createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x3, 0x1, 0x0 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x46, 0x0, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x28, 0x28, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xa, 0xffc4, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffce, 0xffd8, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffd8, 0x28, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x32, 0xffce, 0x6 + delay 0x2 + createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x32, 0xffe2, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x3c, 0xa, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x0, 0x3c, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x0, 0xffd8, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffc4, 0x14, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffc4, 0xffe2, 0x6 + delay 0x2 + createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffce, 0x32, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffc4, 0x14, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffd8, 0xffd8, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x14, 0xffc4, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x32, 0xffce, 0x6 + createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x23, 0x28, 0x6 + delay 0x2 + createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x3, 0x07FD delay 0x5 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0x0 0x5 0x8 0x1a + createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0x0, 0x5, 0x8, 0x1a delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0xa 0xfffb 0xfff8 0x1a + createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0xa, 0xfffb, 0xfff8, 0x1a delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0xfffb 0xf 0x10 0x21 + createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0xfffb, 0xf, 0x10, 0x21 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0x0 0xfff1 0xfff0 0x24 + createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0x0, 0xfff1, 0xfff0, 0x24 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0x0 0x5 0x8 0x1a + createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0x0, 0x5, 0x8, 0x1a delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0xa 0xfffb 0xfff8 0x1a + createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0xa, 0xfffb, 0xfff8, 0x1a delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0xfff6 0x14 0x14 0x27 + createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0xfff6, 0x14, 0x14, 0x27 delay 0x4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0x5 0xffee 0xffec 0x23 + createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0x5, 0xffee, 0xffec, 0x23 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x3 0x0 0x07FD + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x3, 0x0, 0x07FD loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 0x10, 0x3 call GrantingStarsEffect waitforvisualfinish @@ -10850,32 +10851,32 @@ SolarBladeUnleash: loadspritegfx ANIM_TAG_SPARK_2 @yellow color loadspritegfx ANIM_TAG_SUNLIGHT @sun rays monbg ANIM_ATTACKER - setblends 0x30d - createvisualtask AnimTask_BlendBattleAnimPal 10, (ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS), 1, 0, 6, 0x7fff + setalpha 13, 3 + createvisualtask AnimTask_BlendBattleAnimPal 10, (F_PAL_BG | F_PAL_BATTLERS), 1, 0, 6, 0x7fff waitforvisualfinish playsewithpan SE_M_SWORDS_DANCE, SOUND_PAN_ATTACKER - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x10 0x6 0x1 0x4 - launchtemplate gSwordsDanceBladeSpriteTemplate 0x2 0x2 0x0 0x0 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x10, 0x6, 0x1, 0x4 + createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 call SolarBladeSunRays call SolarBladeSunRays call SolarBladeSunRays call SolarBladeSunRays - launchtask AnimTask_FlashAnimTagWithColor 0x2 0x7 0x2715 0x2 0x2 0x7ff2 0x10 0x0 0x0 + createvisualtask AnimTask_FlashAnimTagWithColor, 0x2, 0x2715, 0x2, 0x2, 0x7ff2, 0x10, 0x0, 0x0 waitforvisualfinish call SetSolarBeamBg playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - launchtemplate gSolarBladeImpactTemplate 0x82, 0x3, 0x0 0x0 0x1 + createsprite gSolarBladeImpactTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1 delay 0x2 - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0xC 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x2, 0x0, 0xC, 0x1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal 10, (ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS), 1, 6, 0, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal 10, (F_PAL_BG | F_PAL_BATTLERS), 1, 6, 0, 0x7fff waitforvisualfinish call UnsetPsychicBg clearmonbg ANIM_ATTACKER blendoff end SolarBladeSunRays: - launchtemplate gSunlightRaySpriteTemplate 0x28 0x0 + createsprite gSunlightRaySpriteTemplate, ANIM_ATTACKER, 40 delay 0x6 return @@ -10884,12 +10885,12 @@ Move_LEAFAGE:: loadspritegfx ANIM_TAG_IMPACT @hit monbg ANIM_DEF_PARTNER playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER - launchtemplate gRazorLeafCutterSpriteTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0x14 0x1 - launchtemplate gRazorLeafCutterSpriteTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0xffec 0x1 - launchtemplate gRazorLeafCutterSpriteTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0x0 0x1 + createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0x14, 0x1 + createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0xffec, 0x1 + createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0x0, 0x1 delay 0x14 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - launchtemplate gLeafageImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + createsprite gLeafageImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -10897,15 +10898,15 @@ Move_LEAFAGE:: Move_SPOTLIGHT:: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_TAG_HAND - launchtask AnimTask_CreateSpotlight 0x2 0x0 - launchtask AnimTask_HardwarePaletteFade 0x2 0x5 0xf8 0x3 0x0 0xa 0x0 + createvisualtask AnimTask_CreateSpotlight, 0x2 + createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0x0, 0xa, 0x0 waitforvisualfinish playsewithpan SE_CONTEST_ICON_CHANGE, SOUND_PAN_ATTACKER - launchtemplate gSpotlightSpriteTemplate 0x82 0x2 0x0 0xfff8 + createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff8 delay 0x40 - launchtask AnimTask_HardwarePaletteFade 0x2 0x5 0xf8 0x3 0xa 0x0 0x1 + createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0xa, 0x0, 0x1 waitforvisualfinish - launchtask AnimTask_RemoveSpotlight 0x2 0x0 + createvisualtask AnimTask_RemoveSpotlight, 0x2 end Move_TOXIC_THREAD:: @@ -10915,7 +10916,7 @@ Move_TOXIC_THREAD:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_WEB_THREAD, 0x0, 0xA, 0xA, 0x6038 @Purple monbg ANIM_DEF_PARTNER delay 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x9 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x9, 0x0 waitforvisualfinish loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 0x9, 0x6 call SpiderWebThread @@ -10938,16 +10939,16 @@ Move_TOXIC_THREAD:: call SpiderWebThread waitforvisualfinish playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET - launchtemplate gToxicThreadString 0x82 0x2 0x0 0xa + createsprite gToxicThreadString, ANIM_TARGET, 2, 0x0, 0xa delay 0x4 - launchtemplate gToxicThreadString 0x82 0x2 0x0 0xfffe + createsprite gToxicThreadString, ANIM_TARGET, 2, 0x0, 0xfffe delay 0x4 - launchtemplate gToxicThreadString 0x82 0x2 0x0 0x16 + createsprite gToxicThreadString, ANIM_TARGET, 2, 0x0, 0x16 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x9 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x9, 0x0, 0x0 end Move_LASER_FOCUS:: @@ -10955,14 +10956,14 @@ Move_LASER_FOCUS:: loadspritegfx ANIM_TAG_OPENING_EYE @eyes loadspritegfx ANIM_TAG_LEER @leer monbg ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish - launchtemplate gLaserFocusRedEyesTemplate 0x5 0x4 0x0 0x0 0x0 0x0 + createsprite gLaserFocusRedEyesTemplate, ANIM_ATTACKER, 5, 0x0, 0x0, 0x0, 0x0 waitforvisualfinish playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0x18 0xfff4 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0xfff4 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_ATTACKER end @@ -10970,53 +10971,53 @@ Move_LASER_FOCUS:: Move_GEAR_UP:: loadspritegfx ANIM_TAG_GEAR loadspritegfx ANIM_TAG_SPARK_2 @sparks - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_ATK 0x2 0x0 0x9 0x039B - launchtemplate gGearUpGearsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ATTACKER, 0x2, 0x0, 0x9, 0x039B + createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0xF playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - launchtemplate gGearUpGearsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0xF playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - launchtemplate gGearUpGearsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0xF playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER call GearUpSparks call GearUpSparks call GearUpSparks playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_ATK 0x2 0x9 0x0 0x039B + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ATTACKER, 0x2, 0x9, 0x0, 0x039B waitforvisualfinish end GearUpSparks: playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0xF playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0xF return @@ -11028,35 +11029,35 @@ Move_THROAT_CHOP:: splitbgprio ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET - launchtemplate gKarateChopSpriteTemplate 0x2 0x8 0xfff0 0x0 0x0 0x0 0xa 0x1 0x3 0x0 + createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0x0, 0x0, 0x0, 0xa, 0x1, 0x3, 0x0 waitforvisualfinish - launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 - launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 + createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 delay 0x3 - launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 delay 0x3 - launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 delay 0x3 - launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 delay 0x3 - launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 delay 0x3 - launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 delay 0x3 - launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 delay 0x3 - launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x4 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x4, 0x0, 0x6, 0x1 waitforvisualfinish - launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 + createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end Move_POLLEN_PUFF:: - launchtask AnimTask_IsTargetSameSide 0x5 0x0 + createvisualtask AnimTask_IsTargetSameSide, 0x5 jumpargeq 0x0, 0x1, PollenPuffAlly PollenPuffOpponent: loadspritegfx ANIM_TAG_SPARKLE_2 @stars @@ -11068,50 +11069,50 @@ PollenPuffOpponent: loadspritegfx ANIM_TAG_ORBS @hit monbg ANIM_ATTACKER setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x8 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x0 waitforvisualfinish - launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 - launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x2, 0x0 + createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER delay 0xD - launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER delay 0xD - launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER delay 0xD - launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER clearmonbg ANIM_ATTACKER waitforvisualfinish stopsound monbg ANIM_TARGET - launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0xA0 0x28 0x0 - launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x110 0x28 0x0 - launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xB0 0x28 0x0 - launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x100 0x28 0x0 - launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x90 0x28 0x0 - launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x110 0x28 0x0 - launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xB0 0x28 0x0 - launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x100 0x28 0x0 + createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0xA0, 0x28, 0x0 + createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x110, 0x28, 0x0 + createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xB0, 0x28, 0x0 + createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x100, 0x28, 0x0 + createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x90, 0x28, 0x0 + createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x110, 0x28, 0x0 + createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xB0, 0x28, 0x0 + createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x100, 0x28, 0x0 delay 0x1 playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET - launchtemplate gPollenPuffSporeTemplate 0x82 0x6 0xa 0x0 0x0 0x0 0x19 0xffe0 + createsprite gPollenPuffSporeTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x0, 0x0, 0x19, 0xffe0 waitforvisualfinish playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 - launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x0 0xFFE0 0x10 @up - launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0xFFEE 0xFFEE 0x10 @upperleft - launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x0 0x1C 0x10 @down + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 + createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0xFFE0, 0x10 @up + createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0xFFEE, 0xFFEE, 0x10 @upperleft + createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x1C, 0x10 @down delay 0x4 - launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0xFFE5 0x0 0x10 @left - launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x14 0x14 0x10 @lowerright - launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0xFFED 0x13 0x10 @lowerleft + createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0xFFE5, 0x0, 0x10 @left + createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x14, 0x14, 0x10 @lowerright + createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0xFFED, 0x13, 0x10 @lowerleft delay 0x4 - launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x1E 0x0 0x10 @right - launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x16 0xFFEA 0x10 @upperright + createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x1E, 0x0, 0x10 @right + createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x16, 0xFFEA, 0x10 @upperright waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x8 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -11124,48 +11125,48 @@ PollenPuffAlly: loadspritegfx ANIM_TAG_SPORE @ball monbg ANIM_ATTACKER setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x8 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x0 waitforvisualfinish - launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 - launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x2, 0x0 + createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER delay 0xD - launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER delay 0xD - launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER delay 0xD - launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER clearmonbg ANIM_ATTACKER waitforvisualfinish stopsound playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER monbg ANIM_TARGET - launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0xa0 0x28 0x0 - launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x120 0x28 0x0 - launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x90 0x28 0x0 - launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x110 0x28 0x0 - launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0xa0 0x28 0x0 - launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x120 0x28 0x0 - launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x90 0x28 0x0 - launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x110 0x28 0x0 + createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0xa0, 0x28, 0x0 + createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x120, 0x28, 0x0 + createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x90, 0x28, 0x0 + createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x110, 0x28, 0x0 + createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0xa0, 0x28, 0x0 + createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x120, 0x28, 0x0 + createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x90, 0x28, 0x0 + createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x110, 0x28, 0x0 delay 0x1 - launchtemplate gPollenPuffSporeTemplate 0x82 0x6 0xa 0x0 0x0 0x0 0x19 0xffe0 + createsprite gPollenPuffSporeTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x0, 0x0, 0x19, 0xffe0 waitforvisualfinish unloadspritegfx ANIM_TAG_SPARKLE_2 @stars loadspritegfx ANIM_TAG_BLUE_STAR @heal playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER - launchtemplate gPollenPuffHealTemplate 0x2 0x4 0x0 0xfffb 0x1 0x0 + createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0x1, 0x0 delay 0x7 - launchtemplate gPollenPuffHealTemplate 0x2 0x4 0xfff1 0xa 0x1 0x0 + createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xa, 0x1, 0x0 delay 0x7 - launchtemplate gPollenPuffHealTemplate 0x2 0x4 0xfff1 0xfff1 0x1 0x0 + createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xfff1, 0x1, 0x0 delay 0x7 - launchtemplate gPollenPuffHealTemplate 0x2 0x4 0xa 0xfffb 0x1 0x0 + createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0xa, 0xfffb, 0x1, 0x0 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x8 0x1 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x1, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -11176,19 +11177,19 @@ Move_ANCHOR_SHOT:: loadspritegfx ANIM_TAG_ANCHOR playsewithpan SE_FALL SOUND_PAN_TARGET monbg ANIM_TARGET - launchtemplate gAnchorShotAngledAnchorTemplate 0x2 0x3 0x0 0x0 0x35 + createsprite gAnchorShotAngledAnchorTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x35 waitforvisualfinish - launchtemplate gAnchorShotAnchorTemplate 0x3 0x3 0x0 0xffe0 0xf - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + createsprite gAnchorShotAnchorTemplate, ANIM_ATTACKER, 3, 0x0, 0xffe0, 0xf + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xf, 0x1 delay 0x25 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xf, 0x1 waitforvisualfinish loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER 0x1c 0x2 - launchtemplate gAnchorShotChainTemplate 0x82 0x2 0xfff0 0xfff0 + createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, 0xfff0, 0xfff0 delay 0x4 - launchtemplate gAnchorShotChainTemplate 0x82 0x2 0xfff0 0x0 + createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, 0xfff0, 0x0 delay 0x4 - launchtemplate gAnchorShotChainTemplate 0x82 0x2 0xfff0 0x10 + createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, 0xfff0, 0x10 waitforvisualfinish clearmonbg ANIM_TARGET end @@ -11211,7 +11212,7 @@ Move_PSYCHIC_TERRAIN:: createsprite gPsychicTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 126 createsprite gPsychicTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 168 createsprite gPsychicTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 210 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 0, 4, RGB(27, 0, 13) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 4, RGB(27, 0, 13) delay 52 setarg 7, 0xFFFF playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER @@ -11227,7 +11228,7 @@ Move_PSYCHIC_TERRAIN:: loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 0xa, 0x3 waitforvisualfinish delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(27, 0, 13) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 4, 0, RGB(27, 0, 13) waitforvisualfinish end @@ -11239,9 +11240,9 @@ Move_LUNGE:: loadspritegfx ANIM_TAG_RAZOR_LEAF @green loadspritegfx ANIM_TAG_SMALL_BUBBLES @ball monbg ANIM_ATK_PARTNER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x3 0x0 0xf0 0x0 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_ATTACKER, 0x3, 0x0, 0xf0, 0x0 loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 0xe, 0xa - launchtemplate gLungeGreenChargeTemplate 0x2 0x0 + createsprite gLungeGreenChargeTemplate, ANIM_ATTACKER, 2 delay 0x6e delay 0x3e playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER @@ -11250,34 +11251,34 @@ Move_LUNGE:: invisible ANIM_ATTACKER waitforvisualfinish playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER - launchtemplate gLungeGreenBubbleTemplate 0x82 0x6 0xa 0x0 0x0 0x0 0x19 0xffe0 + createsprite gLungeGreenBubbleTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x0, 0x0, 0x19, 0xffe0 delay 0xF monbg ANIM_DEF_PARTNER delay 0x1 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x46 0x0 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x28 0x28 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xa 0xffc4 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffce 0xffd8 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffd8 0x28 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x32 0xffce 0x6 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x5 0xb 0x1 - delay 0x2 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x32 0xffe2 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x3c 0xa 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x0 0x3c 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x0 0xffd8 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffc4 0x14 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffc4 0xffe2 0x6 - delay 0x2 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffce 0x32 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffc4 0x14 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffd8 0xffd8 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x14 0xffc4 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x32 0xffce 0x6 - launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x23 0x28 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x46, 0x0, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x28, 0x28, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xa, 0xffc4, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffce, 0xffd8, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffd8, 0x28, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x32, 0xffce, 0x6 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x5, 0xb, 0x1 + delay 0x2 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x32, 0xffe2, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x3c, 0xa, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x3c, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0xffd8, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffc4, 0x14, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffc4, 0xffe2, 0x6 + delay 0x2 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffce, 0x32, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffc4, 0x14, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffd8, 0xffd8, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x14, 0xffc4, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x32, 0xffce, 0x6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x23, 0x28, 0x6 waitforvisualfinish playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtemplate gLungeGreenImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + createsprite gLungeGreenImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 waitforvisualfinish visible ANIM_ATTACKER clearmonbg ANIM_DEF_PARTNER @@ -11287,41 +11288,41 @@ Move_FIRE_LASH:: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x4 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x8 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0xc + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x10 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x14 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x18 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x18 0x0 0x0 0x6 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x18, 0x0, 0x0, 0x6 delay 0x4 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x5 0x0 0x8 0x1 - launchtask AnimTask_BlendMonInAndOut 0x3 0x5 0x1 0x1f 0xc 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x5, 0x0, 0x8, 0x1 + createvisualtask AnimTask_BlendMonInAndOut, 0x3, 0x1, 0x1f, 0xc, 0x1, 0x1 playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET loadspritegfx ANIM_TAG_SLASH - launchtemplate gSlashSliceSpriteTemplate 0x82, 0x3, 0x1 0xfff8 0x0 + createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 0x1, 0xfff8, 0x0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET delay 0x4 - launchtemplate gSlashSliceSpriteTemplate 0x82, 0x3, 0x1 0x8 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x12 0x1 + createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x8, 0x0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x12, 0x1 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET delay 0x7 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x9 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x9 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -11335,36 +11336,36 @@ Move_POWER_TRIP:: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call PowerTripBuffUp delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x2 0x2 0x0 0xb 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x2, 0x2, 0x0, 0xb, 0x0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call PowerTripBuffUp delay 0x8 call PowerTripBuffUp waitforvisualfinish playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtemplate gPowerTripImpactTemplate 0x2 0x4 0xFFF5 0xA 0x1 0x2 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, 0xFFF5, 0xA, 0x1, 0x2 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x5 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtemplate gPowerTripImpactTemplate 0x2 0x4 0x0 0xFFF5 0x1 0x2 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0xFFF5, 0x1, 0x2 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x5 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtemplate gPowerTripImpactTemplate 0x2 0x4 0xA 0x0 0x1 0x2 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, 0xA, 0x0, 0x1, 0x2 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end PowerTripBuffUp: - launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return Move_BURN_UP:: @@ -11373,54 +11374,54 @@ Move_BURN_UP:: loadspritegfx ANIM_TAG_PINK_CLOUD @yawn loadspritegfx ANIM_TAG_SMALL_EMBER @fire monbg ANIM_DEF_PARTNER - setblends 0x120C + setalpha 12, 18 fadetobg BG_FIRE waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xA00 0x0 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xA00, 0x0, 0x1, 0xffff waitbgfadein - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x5 0x1c + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x5, 0x1c waitforvisualfinish - launchtask AnimTask_AllocBackupPalBuffer 0x5 0x0 + createvisualtask AnimTask_AllocBackupPalBuffer, 0x5 waitforvisualfinish - launchtask AnimTask_CopyPalUnfadedToBackup 0x5 0x2 0x0 0x1 + createvisualtask AnimTask_CopyPalUnfadedToBackup, 0x5, 0x0, 0x1 delay 0x1 - launchtask AnimTask_CopyPalFadedToUnfaded 0x5 0x1 0x0 + createvisualtask AnimTask_CopyPalFadedToUnfaded, 0x5, 0x0 delay 0x1 loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER 0x9 0x2 - launchtask AnimTask_CopyPalUnfadedToBackup 0x5 0x2 0x1 0x0 + createvisualtask AnimTask_CopyPalUnfadedToBackup, 0x5, 0x1, 0x0 delay 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x1 0x0 0xd 0x1c - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x2 0x0 0xf 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x1, 0x0, 0xd, 0x1c + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x2, 0x0, 0xf, 0x1 waitforvisualfinish delay 0x1E - launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 waitforvisualfinish playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtemplate gBurnUpRedYawnTemplate 0x80, 0x6 0x0 0x0 0x0 0x0 0x1e 0x0 + createsprite gBurnUpRedYawnTemplate, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0 delay 0x1 - launchtask AnimTask_CopyPalFadedToUnfaded 0x5 0x1 0x1 + createvisualtask AnimTask_CopyPalFadedToUnfaded, 0x5, 0x1 delay 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x0 0x0 0xd 0x4a52 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x3 0x0 0xf 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x0, 0x0, 0xd, 0x4a52 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x3, 0x0, 0xf, 0x1 delay 0xF - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x0 0xC 0x1C + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_TARGET, 0x2, 0x0, 0xC, 0x1C delay 0x1 - launchtask AnimTask_CopyPalUnfadedFromBackup 0x5 0x2 0x0 0x1 + createvisualtask AnimTask_CopyPalUnfadedFromBackup, 0x5, 0x0, 0x1 delay 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x5 0x0 0x1c + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x5, 0x0, 0x1c delay 0x1 - launchtask AnimTask_CopyPalUnfadedFromBackup 0x5 0x2 0x1 0x0 + createvisualtask AnimTask_CopyPalUnfadedFromBackup, 0x5, 0x1, 0x0 delay 0x1 playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x2 0x0 0xf 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x2, 0x0, 0xf, 0x1 call FireSpreadEffect waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x0 0xd 0x0 0x4a52 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x0, 0xd, 0x0, 0x4a52 delay 0x1 - launchtask AnimTask_FreeBackupPalBuffer 0x5 0x0 + createvisualtask AnimTask_FreeBackupPalBuffer, 0x5 delay 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0xC 0x0 0x1C + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_TARGET, 0x2, 0xC, 0x0, 0x1C waitforvisualfinish call UnsetPsychicBg clearmonbg ANIM_DEF_PARTNER @@ -11434,29 +11435,29 @@ Move_SPEED_SWAP:: monbg ANIM_TARGET panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0 delay 0xf - launchtemplate gSpeedSwapCircleTemplate 0x82 0x2 0xfff4 0x18 + createsprite gSpeedSwapCircleTemplate, ANIM_TARGET, 2, 0xfff4, 0x18 delay 0x5 - launchtemplate gSpeedSwapRingTemplate 0x28 0x4 0x0 0x0 0x1 0x0 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x0 0xFFE0 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x16 0xFFEA 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x1E 0x0 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x14 0x14 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x0 0x1C 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0xFFED 0x13 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0xFFE5 0x0 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0xFFEE 0xFFEE 0x10 + createsprite gSpeedSwapRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xFFE0, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xFFEA, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1E, 0x0, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1C, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFED, 0x13, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFE5, 0x0, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFEE, 0xFFEE, 0x10 waitforvisualfinish panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0 - launchtemplate gSpeedSwapOrbMissileTemplate 0x80 0x6 0x0 0x0 0x0 0x0 0x1e 0x0 - launchtemplate gSpeedSwapRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x0 0xFFE0 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x16 0xFFEA 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x1E 0x0 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x14 0x14 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x0 0x1C 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0xFFED 0x13 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0xFFE5 0x0 0x10 - launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0xFFEE 0xFFEE 0x10 + createsprite gSpeedSwapOrbMissileTemplate, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0 + createsprite gSpeedSwapRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0, 0xFFE0, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x16, 0xFFEA, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1E, 0x0, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x14, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0, 0x1C, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFED, 0x13, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFE5, 0x0, 0x10 + createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFEE, 0xFFEE, 0x10 waitforvisualfinish clearmonbg ANIM_TARGET end @@ -11467,11 +11468,11 @@ Move_SMART_STRIKE:: loadspritegfx ANIM_TAG_IMPACT @hit loadspritegfx ANIM_TAG_FLASH_CANNON_BALL @ball loadspritegfx ANIM_TAG_LOCK_ON - launchtemplate gLockOnTargetSpriteTemplate 0x28 0x0 - launchtemplate gLockOnMoveTargetSpriteTemplate 0x28 0x1 0x1 - launchtemplate gLockOnMoveTargetSpriteTemplate 0x28 0x1 0x2 - launchtemplate gLockOnMoveTargetSpriteTemplate 0x28 0x1 0x3 - launchtemplate gLockOnMoveTargetSpriteTemplate 0x28 0x1 0x4 + createsprite gLockOnTargetSpriteTemplate, ANIM_ATTACKER, 40 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 0x1 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 0x2 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 0x3 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 0x4 delay 0x78 setarg 0x7 0xffff waitforvisualfinish @@ -11479,18 +11480,18 @@ Move_SMART_STRIKE:: splitbgprio ANIM_TARGET setalpha 12, 8 call SonicBoomProjectile - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0xa 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x3, 0x0, 0xa, 0x1 loadspritegfx ANIM_TAG_FLASH_CANNON_BALL - launchtemplate gSmartStrikeImpactTemplate 0x84 0x5 0x0 0x0 0x8 0x1 0x0 + createsprite gSmartStrikeImpactTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x8, 0x1, 0x0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x0 0xffe8 0xa - launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x11 0xffef 0xa - launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x18 0x0 0xa - launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x11 0x11 0xa - launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x0 0x18 0xa - launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0xffef 0x11 0xa - launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0xffe8 0x0 0xa - launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0xffef 0xffef 0xa + createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0xffe8, 0xa + createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x11, 0xffef, 0xa + createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x18, 0x0, 0xa + createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x11, 0x11, 0xa + createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x18, 0xa + createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xffef, 0x11, 0xa + createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xffe8, 0x0, 0xa + createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xffef, 0xffef, 0xa waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -11508,21 +11509,21 @@ Move_PURIFY:: splitbgprio ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER - launchtemplate gPurifyWhiteBallTemplate 0x2 0x6 0x14 0xfff8 0xfff8 0xfff8 0x14 0xffe0 + createsprite gPurifyWhiteBallTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff8, 0xfff8, 0xfff8, 0x14, 0xffe0 delay 0x13 playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xfff4 0x68 0x0 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xfff4 0x48 0x1 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xfffa 0x38 0x1 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xfffa 0x58 0x0 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x0 0x38 0x0 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x0 0x58 0x1 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x6 0x48 0x0 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x6 0x68 0x1 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xc 0x48 0x0 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xc 0x38 0x1 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x12 0x50 0x0 0x4b - launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x12 0x48 0x1 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x68, 0x0, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x48, 0x1, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x38, 0x1, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x58, 0x0, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x38, 0x0, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x58, 0x1, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x48, 0x0, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x68, 0x1, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x48, 0x0, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x38, 0x1, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x50, 0x0, 0x4b + createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x48, 0x1, 0x4b waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -11535,50 +11536,50 @@ Move_REVELATION_DANCE:: loadspritegfx ANIM_TAG_AIR_WAVE @sonicboom loadspritegfx ANIM_TAG_THIN_RING @ring monbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xF 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xF, 0x0 waitforvisualfinish playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER - launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 - launchtemplate gRevelationDanceYellowOrbsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x10 0xffe8 0x8 0x64 - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xfff0 0xffe8 0x8 0x64 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x2, 0x0 + createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x10, 0xffe8, 0x8, 0x64 + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xffe8, 0x8, 0x64 delay 0xf - launchtemplate gRevelationDanceYellowOrbsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x20 0xffe8 0x8 0x64 - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xffe0 0xffe8 0x8 0x64 + createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe8, 0x8, 0x64 + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe8, 0x8, 0x64 delay 0xf - launchtemplate gRevelationDanceYellowOrbsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x18 0xffe8 0x8 0x64 - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xffe8 0xffe8 0x8 0x64 + createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x18, 0xffe8, 0x8, 0x64 + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xffe8, 0x8, 0x64 delay 0x1e - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x10 0xffe8 0x0 0x64 - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xfff0 0xffe8 0x0 0x64 + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x10, 0xffe8, 0x0, 0x64 + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xffe8, 0x0, 0x64 delay 0x1e - launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x14 0xfff0 0xe 0x50 - launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xffec 0xfff2 0x10 0x50 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x2, 0x0 + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff0, 0xe, 0x50 + createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff2, 0x10, 0x50 waitforvisualfinish unloadspritegfx ANIM_TAG_FLOWER @particles loadspritegfx ANIM_TAG_IMPACT @hit loadspritegfx ANIM_TAG_SMALL_EMBER @light yellow playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER - launchtemplate gRevelationDanceYellowAirWaveTemplate 0x82 0x5 0x10 0x0 0x0 0x0 0xf + createsprite gRevelationDanceYellowAirWaveTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xf waitforvisualfinish playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtemplate gRevelationDanceYellowImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x2 - launchtemplate gRevelationDanceYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 - launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0x0 0xb0 0x28 + createsprite gRevelationDanceYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 + createsprite gRevelationDanceYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8 + createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xb0, 0x28 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_ATTACKER - launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0xff40 0xf0 0x28 - launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0x0 0xff60 0x28 + createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff40, 0xf0, 0x28 + createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xff60, 0x28 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_ATTACKER - launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0xff40 0xff90 0x28 - launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0xa0 0x30 0x28 - launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0xff20 0xffe0 0x28 - launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0x70 0xff80 0x28 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff40, 0xff90, 0x28 + createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xa0, 0x30, 0x28 + createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff20, 0xffe0, 0x28 + createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x70, 0xff80, 0x28 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xF 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xF, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET end @@ -11594,109 +11595,109 @@ Move_CORE_ENFORCER:: setalpha 12, 8 fadetobg BG_COSMIC waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xFC00 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xFC00, 0x1, 0xffff waitbgfadein loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER 0xd 0xA - launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 - launchtemplate gCoreEnforcerBlueRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 + createsprite gCoreEnforcerBlueRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 waitforvisualfinish - launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 waitforvisualfinish - launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 - launchtemplate gCoreEnforcerYellowRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 + createsprite gCoreEnforcerYellowRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 waitforvisualfinish - launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 waitforvisualfinish - launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 - launchtemplate gCoreEnforcerGreenRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 + createsprite gCoreEnforcerGreenRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 waitforvisualfinish - launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 waitforvisualfinish unloadspritegfx ANIM_TAG_SPARK_2 @yellow color unloadspritegfx ANIM_TAG_LEAF @green color @@ -11714,87 +11715,87 @@ Move_CORE_ENFORCER:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SNORE_Z, 0, 0xA, 0xA, 0x0688 @Green delay 0x10 monbg ANIM_TARGET - launchtask AnimTask_CreateSmallSolarBeamOrbs 0x5 0x0 + createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 0x5 panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 - launchtask AnimTask_ShakeMon2 0x5 0x5 ANIM_TARGET 0x2 0x0 0x41 0x1 - launchtask AnimTask_ShakeMon2 0x5 0x5 ANIM_DEF_PARTNER 0x2 0x0 0x41 0x1 - launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x0 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff5 0xffe2 0x1 0x3 + createvisualtask AnimTask_ShakeMon2, 0x5, ANIM_TARGET, 0x2, 0x0, 0x41, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x5, ANIM_DEF_PARTNER, 0x2, 0x0, 0x41, 0x1 + createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x0 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff5, 0xffe2, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfffa 0xffe2 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfffa, 0xffe2, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xffff 0xffe2 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xffff, 0xffe2, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x5 0xffe2 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x5, 0xffe2, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xA 0xffe2 0x1 0x3 + createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x1 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xA, 0xffe2, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xF 0xffe2 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xF, 0xffe2, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x14 0xffe2 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x14, 0xffe2, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xF 0xffe7 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xF, 0xffe7, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x2 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xC 0xffea 0x1 0x3 + createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x2 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xC, 0xffea, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x9 0xffed 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x9, 0xffed, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x6 0xfff0 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x6, 0xfff0, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x3 0xfff3 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x3, 0xfff3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x3 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x0 0xfff6 0x1 0x3 + createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x0, 0xfff6, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfffc 0xfff9 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfffc, 0xfff9, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff9 0xfffc 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff9, 0xfffc, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff6 0xffff 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff6, 0xffff, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x4 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff3 0x3 0x1 0x3 + createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x4 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff3, 0x3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff8 0x3 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff8, 0x3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfffd 0x3 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfffd, 0x3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x2 0x3 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x2, 0x3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x5 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x7 0x3 0x1 0x3 + createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x5 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x7, 0x3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xC 0x3 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xC, 0x3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x11 0x3 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x11, 0x3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x16 0x3 0x1 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x16, 0x3, 0x1, 0x3 delay 0x1 - launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x6 + createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x6 delay 0x7 - launchtemplate gCoreEnforcerSnoreTemplate 0x2 0x2 0x0 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0x1e 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_DEF_PARTNER 0x2 0x0 0x1e 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_ATK_PARTNER 0x2 0x0 0x1e 0x1 + createsprite gCoreEnforcerSnoreTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x2, 0x0, 0x1e, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_DEF_PARTNER, 0x2, 0x0, 0x1e, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_ATK_PARTNER, 0x2, 0x0, 0x1e, 0x1 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0xffe8 0x18 ANIM_TARGET 0x1 + createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0xffe8, 0x18, ANIM_TARGET, 0x1 waitforvisualfinish call UnsetPsychicBg clearmonbg ANIM_TARGET @@ -11806,18 +11807,18 @@ Move_TROP_KICK:: loadspritegfx ANIM_TAG_LEAF @leaves loadspritegfx ANIM_TAG_FLOWER @flowers monbg ANIM_DEF_PARTNER - launchtemplate gTropKickGreenFootTemplate 0x2 0x8 0xfff0 0x8 0x0 0x0 0xa 0x1 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x4 0x0 0x6 0x1 + createsprite gTropKickGreenFootTemplate, ANIM_ATTACKER, 2, 0xfff0, 0x8, 0x0, 0x0, 0xa, 0x1, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x4, 0x0, 0x6, 0x1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 0xA playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER - launchtemplate gTropKickLeavesTemplate, ANIM_TARGET, 5, 0, 10, 192, 176, 40 - launchtemplate gTropKickLeavesTemplate, ANIM_TARGET, 5, 0, 10, -192, 240, 40 - launchtemplate gTropKickFlowerTemplate, ANIM_TARGET, 5, 0, 10, 192, -160, 40 - launchtemplate gTropKickFlowerTemplate, ANIM_TARGET, 5, 0, 10, -192, -112, 40 - launchtemplate gTropKickFlowerTemplate, ANIM_TARGET, 5, 0, 10, 160, 48, 40 - launchtemplate gTropKickLeavesTemplate, ANIM_TARGET, 5, 0, 10, -224, -32, 40 - launchtemplate gTropKickLeavesTemplate, ANIM_TARGET, 5, 0, 10, 112, -128, 40 + createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40 + createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40 + createsprite gTropKickFlowerTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40 + createsprite gTropKickFlowerTemplate, ANIM_TARGET, 1, 0, 10, -192, -112, 40 + createsprite gTropKickFlowerTemplate, ANIM_TARGET, 1, 0, 10, 160, 48, 40 + createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40 + createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -11826,27 +11827,27 @@ Move_INSTRUCT:: loadspritegfx ANIM_TAG_FINGER @finger loadspritegfx ANIM_TAG_SPOTLIGHT @spotlight setalpha 12, 8 - launchtemplate gMetronomeFingerSpriteTemplate 0xc 0x1 0x0 + createsprite gMetronomeFingerSpriteTemplate, ANIM_ATTACKER, 12, 0x0 delay 0x18 loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 0x16, 0x3 waitforvisualfinish - launchtask AnimTask_HardwarePaletteFade 0x2 0x5 0xf8 0x3 0x0 0xa 0x0 + createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0x0, 0xa, 0x0 waitforvisualfinish - launchtemplate gSpotlightSpriteTemplate 0x82 0x2 0x0 0xfff8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x8 0x7DB9 + createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x8, 0x7DB9 delay 0x4 monbg ANIM_TARGET - launchtask AnimTask_BlendMonInAndOut 0x5 0x5 0x0 0x37b 0xc 0x1 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x29 0x1 + createvisualtask AnimTask_BlendMonInAndOut, 0x5, 0x0, 0x37b, 0xc, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x29, 0x1 playsewithpan SE_M_BIND, SOUND_PAN_TARGET delay 0x1A - launchtask AnimTask_BlendMonInAndOut 0x5 0x5 0x0 0x37b 0xc 0x1 0x1 + createvisualtask AnimTask_BlendMonInAndOut, 0x5, 0x0, 0x37b, 0xc, 0x1, 0x1 playsewithpan SE_M_BIND, SOUND_PAN_TARGET delay 0x1A - launchtask AnimTask_BlendMonInAndOut 0x5 0x5 0x0 0x37b 0xc 0x1 0x1 + createvisualtask AnimTask_BlendMonInAndOut, 0x5, 0x0, 0x37b, 0xc, 0x1, 0x1 playsewithpan SE_M_BIND, SOUND_PAN_TARGET delay 0x1D - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x8 0x0 0x7DB9 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x8, 0x0, 0x7DB9 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -11856,29 +11857,29 @@ General_BeakBlastSetUp: loadspritegfx ANIM_TAG_SMALL_EMBER @Fire playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER delay 0x3 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x2 0x2 0x0 0xb 0x1f - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x2, 0x2, 0x0, 0xb, 0x1f + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0 waitforvisualfinish end Move_BEAK_BLAST:: loadspritegfx ANIM_TAG_IMPACT - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_ATK 0x2 0x0 0x9 0x1F + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ATTACKER, 0x2, 0x0, 0x9, 0x1F waitforvisualfinish - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x0 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x0 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 0x2 - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x1 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x1 delay 0x2 loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET 0x4 0x8 - launchtask AnimTask_DrillPeckHitSplats 0x5 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x12 0x1 + createvisualtask AnimTask_DrillPeckHitSplats, 0x5 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x12, 0x1 waitforvisualfinish - launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x2 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x2 waitforvisualfinish - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x6 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_ATK 0x2 0x9 0x0 0x1F + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ATTACKER, 0x2, 0x9, 0x0, 0x1F waitforvisualfinish end @@ -11887,27 +11888,27 @@ Move_CLANGING_SCALES:: loadspritegfx ANIM_TAG_POISON_BUBBLE @purple color monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x2002 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x2002 createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_METAL_SOUND_WAVES, 0, 10, 10, 0x642D waitforvisualfinish - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x2 0x0 0x8 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x2, 0x0, 0x8, 0x1 call ClangingScalesMetalSound call ClangingScalesMetalSound call ClangingScalesMetalSound call ClangingScalesMetalSound delay 0x5 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x0 0x3 0xf 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xf, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x0, 0x3, 0xf, 0x1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x2002 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x2002 waitforvisualfinish end ClangingScalesMetalSound: panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 - launchtemplate gClangingScalesPurpleMetalSoundTemplate 0x82 0x7 0x10 0x0 0x0 0x0 0x1e 0x0 ANIM_TARGET - launchtemplate gClangingScalesPurpleMetalSoundTemplate 0x82 0x7 0x10 0x0 0x0 0x0 0x1e 0x0 ANIM_DEF_PARTNER + createsprite gClangingScalesPurpleMetalSoundTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0x1e, 0x0, ANIM_TARGET + createsprite gClangingScalesPurpleMetalSoundTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0x1e, 0x0, ANIM_DEF_PARTNER delay 0x2 return @@ -11917,15 +11918,15 @@ Move_DRAGON_HAMMER:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0, 12, 12, 0x7D7F @Pinkish purple fadetobg BG_COSMIC waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0, -500, 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, -500, 0x0, 0xffff waitbgfadein - setblends 0xF - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x1a 0x0 0x0 0x5 + setalpha 15, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1a, 0x0, 0x0, 0x5 delay 0x6 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 + createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 delay 0x2 - launchtask AnimTask_SquishTarget 0x2 0x0 + createvisualtask AnimTask_SquishTarget, 0x2 delay 0x5 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, 8, 1, 0 @@ -11944,7 +11945,7 @@ Move_DRAGON_HAMMER:: delay 2 createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 0 delay 51 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5 waitforvisualfinish call UnsetPsychicBg blendoff @@ -11958,27 +11959,27 @@ Move_BRUTAL_SWING:: fadetobg BG_DARK waitbgfadeout playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x6 0x1 0x0 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0 waitforvisualfinish delay 0xb - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x1a 0x0 0x0 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1a, 0x0, 0x0, 0x5 delay 0x6 - launchtemplate gBrutalSwingBasicImpactTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x1 + createsprite gBrutalSwingBasicImpactTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x15 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x0 0x3 0x15 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATK_PARTNER 0x0 0x3 0x15 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0x15, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x0, 0x3, 0x15, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_ATK_PARTNER, 0x0, 0x3, 0x15, 0x1 delay 0x4 - launchtemplate gBrutalSwingRandomImpactTemplate 0x83 0x2 0x1 0x1 + createsprite gBrutalSwingRandomImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gBrutalSwingRandomImpactTemplate 0x83 0x2 0x1 0x1 + createsprite gBrutalSwingRandomImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gBrutalSwingBasicImpactTemplate 0x83 0x4 0x20 0x14 0x1 0x1 + createsprite gBrutalSwingBasicImpactTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitsound - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x6 waitforvisualfinish restorebg blendoff @@ -11989,19 +11990,19 @@ Move_AURORA_VEIL:: loadspritegfx ANIM_TAG_GUARD_RING fadetobg BG_AURORA waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x400 0x0 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x400, 0x0, 0x0, 0xffff waitbgfadein monbg ANIM_ATK_PARTNER setalpha 8, 8 playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER - launchtemplate gAuroraVeilRingTemplate 0x2 0x0 + createsprite gAuroraVeilRingTemplate, ANIM_ATTACKER, 2 delay 0x4 - launchtemplate gAuroraVeilRingTemplate 0x2 0x0 + createsprite gAuroraVeilRingTemplate, ANIM_ATTACKER, 2 delay 0x4 - launchtemplate gAuroraVeilRingTemplate 0x2 0x0 + createsprite gAuroraVeilRingTemplate, ANIM_ATTACKER, 2 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendColorCycle 0x2 0x6 0xa 0x0 0x2 0x0 0xa 0x7fff + createvisualtask AnimTask_BlendColorCycle, 0x2, 0xa, 0x0, 0x2, 0x0, 0xa, 0x7fff waitforvisualfinish call UnsetPsychicBg waitforvisualfinish @@ -12018,10 +12019,10 @@ General_ShellTrapSetUp: delay 0x4 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET delay 0x15 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0xA 0x1 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xA 0x0 0x1 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xA 0xA 0x1 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xA, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xA, 0x0, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xA, 0xA, 0x1, 0x2 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -12036,168 +12037,168 @@ ShellTrapUnleash: monbg ANIM_TARGET waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10 delay 0x6 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x4 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x8 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0xc - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x10 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x14 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x18 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 - launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 delay 0x5 waitforvisualfinish call ShellTrapFireLaunch1 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x0 0x0 0x0 0x38 0x4 0x4 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0, 0x38, 0x4, 0x4, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xfff6 0x0 0xfff6 0x38 0x4 0x4 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x38, 0x4, 0x4, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xa 0x0 0xa 0x38 0xfffc 0x3 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xa, 0x0, 0xa, 0x38, 0xfffc, 0x3, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0xfffc 0x5 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0xfffc, 0x5, 0x1 delay 0x3 call ShellTrapFireLaunch2 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x3 waitforvisualfinish clearmonbg ANIM_TARGET end ShellTrapFireLaunch1: - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x0 0x0 0x0 0x38 0x4 0x4 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0, 0x38, 0x4, 0x4, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xfff6 0x0 0xfff6 0x38 0x4 0x4 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x38, 0x4, 0x4, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xa 0x0 0xa 0x38 0xfffc 0x3 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xa, 0x0, 0xa, 0x38, 0xfffc, 0x3, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0xfffc 0x5 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0xfffc, 0x5, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xf 0x0 0xf 0x38 0x4 0x4 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xf, 0x0, 0xf, 0x38, 0x4, 0x4, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0x4 0x4 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0x4, 0x4, 0x1 delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x14 0x0 0x14 0x38 0x4 0x4 0x1 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x14, 0x0, 0x14, 0x38, 0x4, 0x4, 0x1 delay 0x3 return ShellTrapFireLaunch2: - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x0 0x0 0x0 0x38 0x4 0x4 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0, 0x38, 0x4, 0x4, 0x1 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xfff6 0x0 0xfff6 0x38 0x4 0x4 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x38, 0x4, 0x4, 0x1 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xa 0x0 0xa 0x38 0xfffc 0x3 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xa, 0x0, 0xa, 0x38, 0xfffc, 0x3, 0x1 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0xfffc 0x5 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0xfffc, 0x5, 0x1 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xf 0x0 0xf 0x38 0x4 0x4 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xf, 0x0, 0xf, 0x38, 0x4, 0x4, 0x1 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0x4 0x4 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0x4, 0x4, 0x1 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x3 - launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x14 0x0 0x14 0x38 0x4 0x4 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x14, 0x0, 0x14, 0x38, 0x4, 0x4, 0x1 + createvisualtaskontargets AnimTask_ShakeMon, 0x2, 0, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 0x3 return @@ -12209,15 +12210,15 @@ Move_FLEUR_CANNON:: loadspritegfx ANIM_TAG_PINK_HEART @pink color setalpha 12, 8 monbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xF 0x7440 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xF, 0x7440 waitforvisualfinish panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_ATTACKER, 0x0, 0x4, 0x32, 0x1 createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB_RED, 16, 0, 0 call FleurCannonBeam call FleurCannonBeam call FleurCannonBeam - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x32 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x32, 0x1 call FleurCannonBeam call FleurCannonBeam call FleurCannonBeam @@ -12237,23 +12238,23 @@ Move_FLEUR_CANNON:: call FleurCannonBeam call FleurCannonBeam delay 0x20 - launchtemplate gFleurCannonDischargeTemplate 0x2 0x3 0x1 0x10 0x10 + createsprite gFleurCannonDischargeTemplate, ANIM_ATTACKER, 2, 0x1, 0x10, 0x10 delay 0x2 - launchtemplate gFleurCannonDischargeTemplate 0x2 0x3 0x1 0xfff0 0xfff0 + createsprite gFleurCannonDischargeTemplate, ANIM_ATTACKER, 2, 0x1, 0xfff0, 0xfff0 delay 0x5 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x5 0xb 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x5, 0xb, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x7440 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x7440 waitforvisualfinish clearmonbg ANIM_TARGET blendoff end FleurCannonBeam: - launchtemplate gFleurCannonOrbTemplate 0x82 0x0 - launchtemplate gFleurCannonOrbTemplate 0x82 0x0 + createsprite gFleurCannonOrbTemplate, ANIM_TARGET, 2 + createsprite gFleurCannonOrbTemplate, ANIM_TARGET, 2 delay 0x1 - launchtemplate gFleurCannonOrbTemplate 0x82 0x0 - launchtemplate gFleurCannonOrbTemplate 0x82 0x0 + createsprite gFleurCannonOrbTemplate, ANIM_TARGET, 2 + createsprite gFleurCannonOrbTemplate, ANIM_TARGET, 2 delay 0x1 return @@ -12268,18 +12269,18 @@ Move_PSYCHIC_FANGS:: choosetwoturnanim PsychicFangsRegular PsychicFangsDestroyWall PsychicFangsRegular: playsewithpan SE_M_BITE, SOUND_PAN_TARGET - launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0xffe0 0xffe0 0x1 0x333 0x333 0xa - launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0x20 0x20 0x5 0xfccd 0xfccd 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x1, 0x333, 0x333, 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x5, 0xfccd, 0xfccd, 0xa delay 0xa - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff8 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x7 0x5 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x7, 0x5, 0x2 delay 0x10 playsewithpan SE_M_BITE, SOUND_PAN_TARGET - launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0x20 0xffe0 0x7 0xfccd 0x333 0xa - launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0xffe0 0x20 0x3 0x333 0xfccd 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe0, 0x7, 0xfccd, 0x333, 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x20, 0x3, 0x333, 0xfccd, 0xa delay 0xa - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x8 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x8 0x4 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x8, 0x4, 0x2 PsychicFangsEnd: playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET waitforvisualfinish @@ -12288,25 +12289,25 @@ PsychicFangsEnd: call UnsetPsychicBg end PsychicFangsDestroyWall: - launchtemplate gBrickBreakWallSpriteTemplate 0x3 0x5 0x1 0x0 0x0 0x21 0xa + createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, 0x1, 0x0, 0x0, 0x21, 0xa playsewithpan SE_M_BITE, SOUND_PAN_TARGET - launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0xffe0 0xffe0 0x1 0x333 0x333 0xa - launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0x20 0x20 0x5 0xfccd 0xfccd 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x1, 0x333, 0x333, 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x5, 0xfccd, 0xfccd, 0xa delay 0xa - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff8 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x7 0x5 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x7, 0x5, 0x2 delay 0x10 playsewithpan SE_M_BITE, SOUND_PAN_TARGET - launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0x20 0xffe0 0x7 0xfccd 0x333 0xa - launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0xffe0 0x20 0x3 0x333 0xfccd 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe0, 0x7, 0xfccd, 0x333, 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x20, 0x3, 0x333, 0xfccd, 0xa delay 0xa - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x8 0x0 0x1 0x1 - launchtemplate gBrickBreakWallShardSpriteTemplate 0x2 0x4 0x1 0x0 0xfff8 0xfff4 - launchtemplate gBrickBreakWallShardSpriteTemplate 0x2 0x4 0x1 0x1 0x8 0xfff4 - launchtemplate gBrickBreakWallShardSpriteTemplate 0x2 0x4 0x1 0x2 0xfff8 0xc - launchtemplate gBrickBreakWallShardSpriteTemplate 0x2 0x4 0x1 0x3 0x8 0xc + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x1 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0xfff8, 0xfff4 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x8, 0xfff4 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0xfff8, 0xc + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3, 0x8, 0xc playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x8 0x4 0x2 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x8, 0x4, 0x2 delay 0x10 goto PsychicFangsEnd @@ -12316,35 +12317,35 @@ Move_STOMPING_TANTRUM:: loadspritegfx ANIM_TAG_IMPACT @pound hit loadspritegfx ANIM_TAG_SMALL_EMBER @hit color monbg ANIM_TARGET - launchtask AnimTask_Splash 0x2 0x2 ANIM_ATTACKER 0x3 + createvisualtask AnimTask_Splash, 0x2, ANIM_ATTACKER, 0x3 delay 0x5 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x5 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x5 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x0 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x1 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x2 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x3 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x5, 0xa, 0x5 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0xa, 0x5 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x1 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x2 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x3 call StompingTantrumImpact playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x25 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x0 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x1 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x2 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x3 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x1 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x2 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x3 call StompingTantrumImpact playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x25 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x0 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x1 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x2 - launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x3 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x1 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x2 + createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x3 call StompingTantrumImpact playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET end StompingTantrumImpact: - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x1 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x1 return Move_SHADOW_BONE:: @@ -12356,15 +12357,15 @@ Move_SHADOW_BONE:: splitbgprio ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET - launchtemplate gSpinningBoneSpriteTemplate 0x2 0x5 0xffd6 0xffe7 0x0 0x0 0xf + createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, 0xffd6, 0xffe7, 0x0, 0x0, 0xf delay 0xc - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x5 0x5 0x1 - launchtemplate gComplexPaletteBlendSpriteTemplate 0x2 0x7 0x7 0x5 0x1 0x0 0xa 0x0 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x5, 0x5, 0x1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x7, 0x5, 0x1, 0x0, 0xa, 0x0, 0x0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - launchtask AnimTask_NightmareClone 0x2 0x0 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x28 0x1 + createvisualtask AnimTask_NightmareClone, 0x2 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x3, 0x0, 0x28, 0x1 playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish restorebg @@ -12378,18 +12379,18 @@ Move_ACCELEROCK:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_ATK_PARTNER setalpha 12, 8 - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x18 0x6 0x1 0x5 - launchtask AnimTask_TraceMonBlended 0x2 0x4 0x0 0x4 0x7 0x3 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x18, 0x6, 0x1, 0x5 + createvisualtask AnimTask_TraceMonBlended, 0x2, 0x0, 0x4, 0x7, 0x3 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 0x4 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x5 0x0 0x6 0x1 - launchtemplate gBasicHitSplatSpriteTemplate 0x84, 0x4, 0x0 0x0 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x5, 0x0, 0x6, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x5 0x1 0x3 0x0 0x5 0x1 - launchtemplate gRockFragmentSpriteTemplate 0x82 0x6 0x5 0x0 0xffec 0x18 0xe 0x1 - launchtemplate gRockFragmentSpriteTemplate 0x82 0x6 0x0 0x5 0x14 0xffe8 0xe 0x2 - launchtemplate gRockFragmentSpriteTemplate 0x82 0x6 0xfffb 0x0 0xffec 0xffe8 0xe 0x2 - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x5 0x1 0x3 0x0 0x5 0x1 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3, 0x0, 0x5, 0x1 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0xffec, 0x18, 0xe, 0x1 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x5, 0x14, 0xffe8, 0xe, 0x2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0x0, 0xffec, 0xffe8, 0xe, 0x2 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3, 0x0, 0x5, 0x1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -12403,10 +12404,10 @@ Move_LIQUIDATION:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 delay 0x6 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x3, 0x0, 0x6, 0x1 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET waitforvisualfinish call RisingWaterHitEffect @@ -12426,10 +12427,10 @@ Move_PRISMATIC_LASER:: loadspritegfx ANIM_TAG_GREEN_SPIKE @needle arm animation loadspritegfx ANIM_TAG_NEEDLE @sting monbg ANIM_ATTACKER - setblends 0x80E - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 playsewithpan SE_ELEVATOR, SOUND_PAN_ATTACKER - launchtemplate gPrismaticLaserChargeTemplate 0x2 0x1 0x0 + createsprite gPrismaticLaserChargeTemplate, ANIM_ATTACKER, 2, 0x0 call PrismaticLaserInwardSpikes playsewithpan SE_ELEVATOR, SOUND_PAN_ATTACKER call PrismaticLaserInwardSpikes @@ -12454,87 +12455,87 @@ Move_PRISMATIC_LASER:: unloadspritegfx ANIM_TAG_ICE_CHUNK unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT delay 0x1E - launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x32 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x32 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x5, 0xa, 0x32 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0xa, 0x32 playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER call PrismaticLaserRain call PrismaticLaserRain call PrismaticLaserRain call PrismaticLaserRain waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff end PrismaticLaserOutwardSpikes: - launchtemplate gPrismaticLaserRedOutwardTemplate 0x82 0x5 0x0 0x1 0x0 0xFF90 0x10 @up - launchtemplate gPrismaticLaserGreenOutwardTemplate 0x82 0x5 0x0 0x1 0x5F 0xFF9D 0x10 @upper right - launchtemplate gPrismaticLaserYellowOutwardTemplate 0x82 0x5 0x0 0x1 0x73 0x0 0x10 @right - launchtemplate gPrismaticLaserVioletOutwardTemplate 0x82 0x5 0x0 0x1 0x4F 0x37 0x10 @lower right - launchtemplate gPrismaticLaserRedOutwardTemplate 0x82 0x5 0x0 0x1 0x0 0x53 0x10 @down - launchtemplate gPrismaticLaserGreenOutwardTemplate 0x82 0x5 0x0 0x1 0xFFB0 0x43 0x10 @lower left - launchtemplate gPrismaticLaserYellowOutwardTemplate 0x82 0x5 0x0 0x1 0xFF60 0x0 0x10 @left - launchtemplate gPrismaticLaserVioletOutwardTemplate 0x82 0x5 0x0 0x1 0xFFAA 0xFF94 0x10 @upper left + createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0xFF90, 0x10 @up + createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x5F, 0xFF9D, 0x10 @upper right + createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x73, 0x0, 0x10 @right + createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x4F, 0x37, 0x10 @lower right + createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0x53, 0x10 @down + createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFB0, 0x43, 0x10 @lower left + createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFF60, 0x0, 0x10 @left + createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFAA, 0xFF94, 0x10 @upper left playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER return PrismaticLaserOutwardSpikes2: - launchtemplate gPrismaticLaserVioletOutwardTemplate 0x82 0x5 0x0 0x1 0xFFE0 0x43 0x10 @between lower left and down - launchtemplate gPrismaticLaserYellowOutwardTemplate 0x82 0x5 0x0 0x1 0x1F 0x37 0x10 @between lower right and down - launchtemplate gPrismaticLaserYellowOutwardTemplate 0x82 0x5 0x0 0x1 0xFFDA 0xFF94 0x10 @between up and upper left - launchtemplate gPrismaticLaserRedOutwardTemplate 0x82 0x5 0x0 0x1 0xFF60 0x43 0x10 @between left and lower left - launchtemplate gPrismaticLaserGreenOutwardTemplate 0x82 0x5 0x0 0x1 0xFF2A 0xFFAA 0x10 @between left and upper left - launchtemplate gPrismaticLaserVioletOutwardTemplate 0x82 0x5 0x0 0x1 0x2D 0xFF9D 0x10 @between up and upper right - launchtemplate gPrismaticLaserRedOutwardTemplate 0x82 0x5 0x0 0x1 0xDF 0xFF9D 0x10 @between right and upper right - launchtemplate gPrismaticLaserGreenOutwardTemplate 0x82 0x5 0x0 0x1 0x9F 0x37 0x10 @between right and lower right + createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFE0, 0x43, 0x10 @between lower left and down + createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x1F, 0x37, 0x10 @between lower right and down + createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFDA, 0xFF94, 0x10 @between up and upper left + createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFF60, 0x43, 0x10 @between left and lower left + createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFF2A, 0xFFAA, 0x10 @between left and upper left + createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x2D, 0xFF9D, 0x10 @between up and upper right + createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xDF, 0xFF9D, 0x10 @between right and upper right + createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x9F, 0x37, 0x10 @between right and lower right playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER return PrismaticLaserInwardSpikes: - launchtemplate gPrismaticLaserRedInwardTemplate 0x82 0x5 0x0 0x0 0x0 0xFF90 0x10 @up - launchtemplate gPrismaticLaserVioletInwardTemplate 0x82 0x5 0x0 0x0 0xFFE0 0x43 0x10 @between lower left and down + createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0, 0xFF90, 0x10 @up + createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFE0, 0x43, 0x10 @between lower left and down delay 0x1 - launchtemplate gPrismaticLaserGreenInwardTemplate 0x82 0x5 0x0 0x0 0x5F 0xFF9D 0x10 @upper right - launchtemplate gPrismaticLaserYellowInwardTemplate 0x82 0x5 0x0 0x0 0x1F 0x37 0x10 @between lower right and down - launchtemplate gPrismaticLaserYellowInwardTemplate 0x82 0x5 0x0 0x0 0xFFDA 0xFF94 0x10 @between up and upper left + createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x5F, 0xFF9D, 0x10 @upper right + createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1F, 0x37, 0x10 @between lower right and down + createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFDA, 0xFF94, 0x10 @between up and upper left delay 0x1 - launchtemplate gPrismaticLaserYellowInwardTemplate 0x82 0x5 0x0 0x0 0x73 0x0 0x10 @right - launchtemplate gPrismaticLaserRedInwardTemplate 0x82 0x5 0x0 0x0 0xFF60 0x43 0x10 @between left and lower left + createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x73, 0x0, 0x10 @right + createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFF60, 0x43, 0x10 @between left and lower left delay 0x1 - launchtemplate gPrismaticLaserVioletInwardTemplate 0x82 0x5 0x0 0x0 0x4F 0x37 0x10 @lower right - launchtemplate gPrismaticLaserGreenInwardTemplate 0x82 0x5 0x0 0x0 0xFF2A 0xFFAA 0x10 @between left and upper left + createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x4F, 0x37, 0x10 @lower right + createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFF2A, 0xFFAA, 0x10 @between left and upper left delay 0x1 - launchtemplate gPrismaticLaserRedInwardTemplate 0x82 0x5 0x0 0x0 0x0 0x53 0x10 @down - launchtemplate gPrismaticLaserVioletInwardTemplate 0x82 0x5 0x0 0x0 0x2D 0xFF9D 0x10 @between up and upper right + createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0, 0x53, 0x10 @down + createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x2D, 0xFF9D, 0x10 @between up and upper right delay 0x1 - launchtemplate gPrismaticLaserGreenInwardTemplate 0x82 0x5 0x0 0x0 0xFFB0 0x43 0x10 @lower left - launchtemplate gPrismaticLaserRedInwardTemplate 0x82 0x5 0x0 0x0 0xDF 0xFF9D 0x10 @between right and upper right + createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFB0, 0x43, 0x10 @lower left + createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xDF, 0xFF9D, 0x10 @between right and upper right delay 0x1 - launchtemplate gPrismaticLaserYellowInwardTemplate 0x82 0x5 0x0 0x0 0xFF60 0x0 0x10 @left - launchtemplate gPrismaticLaserGreenInwardTemplate 0x82 0x5 0x0 0x0 0x9F 0x37 0x10 @between right and lower right + createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFF60, 0x0, 0x10 @left + createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x9F, 0x37, 0x10 @between right and lower right delay 0x1 - launchtemplate gPrismaticLaserVioletInwardTemplate 0x82 0x5 0x0 0x0 0xFFAA 0xFF94 0x10 @upper left + createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFAA, 0xFF94, 0x10 @upper left delay 0x1 return PrismaticLaserRain: - launchtemplate gPrismaticLaserYellowRainTemplate 0x82, 0x4, 35, 0x3c, 4, ANIM_TARGET + createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 35, 0x3c, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserGreenRainTemplate 0x82, 0x4, -30, 0x44, 4, ANIM_TARGET + createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -30, 0x44, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserRedRainTemplate 0x82, 0x4, 27, 0x37, 4, ANIM_TARGET + createsprite gPrismaticLaserRedRainTemplate, ANIM_TARGET, 2, 27, 0x37, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserVioletRainTemplate 0x82, 0x4, -20, 0x32, 4, ANIM_TARGET + createsprite gPrismaticLaserVioletRainTemplate, ANIM_TARGET, 2, -20, 0x32, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserYellowRainTemplate 0x82, 0x4, 33, 0x3a, 4, ANIM_TARGET + createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 33, 0x3a, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserGreenRainTemplate 0x82, 0x4, -12, 0x3a, 4, ANIM_TARGET + createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -12, 0x3a, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserRedRainTemplate 0x82, 0x4, 19, 0x3c, 4, ANIM_TARGET + createsprite gPrismaticLaserRedRainTemplate, ANIM_TARGET, 2, 19, 0x3c, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserVioletRainTemplate 0x82, 0x4, -38, 0x3a, 4, ANIM_TARGET + createsprite gPrismaticLaserVioletRainTemplate, ANIM_TARGET, 2, -38, 0x3a, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserYellowRainTemplate 0x82, 0x4, 5, 0x3c, 4, ANIM_TARGET + createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 5, 0x3c, 4, ANIM_TARGET delay 0x2 - launchtemplate gPrismaticLaserGreenRainTemplate 0x82, 0x4, -23, 0x28, 4, ANIM_TARGET + createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -23, 0x28, 4, ANIM_TARGET return Move_SPECTRAL_THIEF:: @@ -12550,36 +12551,36 @@ SpectralThiefUnleash: waitbgfadein delay 0x5 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0x8 0x8 0x0 0x0 + createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x0, 0x0 invisible 0x0 delay 0x2 - launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x0 0x0 + createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x0, 0x0 delay 0x2 - launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x0 0x0 + createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x0, 0x0 delay 0x2 - launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x0 0x0 + createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x0, 0x0 delay 0x2 - launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0x8 0x8 0x0 0x0 + createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x0, 0x0 delay 0x2 - launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x0 0x0 + createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x0, 0x0 delay 0x2 - launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x0 0x0 + createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x0, 0x0 delay 0x2 - launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x0 0x0 + createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x0, 0x0 waitforvisualfinish playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_DestinyBondWhiteShadow 0x5 0x2 0x0 0x30 + createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30 delay 0x30 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x0 0x2 0x0 0x18 0x1 - launchtask AnimTask_BlendBattleAnimPalExclude 0x2 0x5 0x6 0x1 0x0 0xc 0x77bd + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x0, 0x2, 0x0, 0x18, 0x1 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 0x2, 0x6, 0x1, 0x0, 0xc, 0x77bd delay 0x18 - launchtask AnimTask_BlendBattleAnimPalExclude 0x2 0x5 0x6 0x1 0xc 0x0 0x77bd + createvisualtask AnimTask_BlendBattleAnimPalExclude, 0x2, 0x6, 0x1, 0xc, 0x0, 0x77bd waitforvisualfinish - setblends 0x1000 + setalpha 0, 16 delay 0x1 monbg_static ANIM_TARGET - launchtask AnimTask_MoveTargetMementoShadow 0x5 0x0 + createvisualtask AnimTask_MoveTargetMementoShadow, 0x5 playsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET waitforvisualfinish clearmonbg_static ANIM_TARGET @@ -12589,33 +12590,33 @@ SpectralThiefUnleash: setalpha 12, 8 monbg ANIM_TARGET delay 0x1 - launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x4 - launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0xa 0x14 0x0 + createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x4 - launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x4 - launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x4 - launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0xfff1 0xf 0x0 + createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x4 - launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0x0 0x0 0x0 + createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x4 - launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0x14 0x2 0x0 + createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0x14, 0x2, 0x0 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 waitforvisualfinish visible 0x0 delay 0x2 @@ -12628,18 +12629,18 @@ SpectralThiefSteal: loadspritegfx ANIM_TAG_HANDS_AND_FEET @black color loadspritegfx ANIM_TAG_ORBS @mimic loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy - setblends 0x50b + setalpha 11, 5 splitbgprio_all panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0 delay 0xf - launchtemplate gSpectralThiefBlackOrbsTemplate 0x82 0x2 0xfff4 0x18 + createsprite gSpectralThiefBlackOrbsTemplate, ANIM_TARGET, 2, 0xfff4, 0x18 delay 0xB setarg 0x7 0xffff waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call SpectralThiefBuffUp delay 0x8 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call SpectralThiefBuffUp delay 0x8 call SpectralThiefBuffUp @@ -12647,15 +12648,15 @@ SpectralThiefSteal: blendoff end SpectralThiefBuffUp: - launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return Move_SUNSTEEL_STRIKE:: @@ -12666,13 +12667,13 @@ Move_SUNSTEEL_STRIKE:: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET - launchtemplate gSunsteelStrikeBlackFlyBallTemplate 0x2 0x4 0x0 0x0 0xd 0x150 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0x1 0x1A + createsprite gSunsteelStrikeBlackFlyBallTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0x1, 0x1A delay 0x18 - launchtemplate gSunsteelStrikeRocksTemplate 0x2 0x2 0x0 0x0 @The rock particles mess up the fly animation - launchtemplate gSunsteelStrikeRocksTemplate 0x2 0x2 0x0 0x1 - launchtemplate gSunsteelStrikeRocksTemplate 0x2 0x2 0x0 0x2 - launchtemplate gSunsteelStrikeRocksTemplate 0x2 0x2 0x0 0x3 + createsprite gSunsteelStrikeRocksTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 @The rock particles mess up the fly animation + createsprite gSunsteelStrikeRocksTemplate, ANIM_ATTACKER, 2, 0x0, 0x1 + createsprite gSunsteelStrikeRocksTemplate, ANIM_ATTACKER, 2, 0x0, 0x2 + createsprite gSunsteelStrikeRocksTemplate, ANIM_ATTACKER, 2, 0x0, 0x3 waitforvisualfinish unloadspritegfx ANIM_TAG_ROUND_SHADOW @fly unloadspritegfx ANIM_TAG_AIR_WAVE_2 @black color @@ -12681,7 +12682,7 @@ Move_SUNSTEEL_STRIKE:: loadspritegfx ANIM_TAG_SMALL_RED_EYE @red color loadspritegfx ANIM_TAG_IMPACT @hit playsewithpan SE_ORB, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, (ANIM_PAL_BG | ANIM_PAL_ATK), 3, 0, 15, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATTACKER), 3, 0, 15, 0 waitforvisualfinish call SunsteelStrikeBeam call SunsteelStrikeBeam @@ -12695,10 +12696,10 @@ Move_SUNSTEEL_STRIKE:: call SunsteelStrikeBeam stopsound playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - launchtemplate gSunsteelStrikeSuperpowerTemplate 0x82 0x1 0x14 + createsprite gSunsteelStrikeSuperpowerTemplate, ANIM_TARGET, 2, 0x14 delay 0x14 - launchtemplate gSunsteelStrikeRedImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x0 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x6 0x0 0x8 0x1 + createsprite gSunsteelStrikeRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x6, 0x0, 0x8, 0x1 waitforvisualfinish unloadspritegfx ANIM_TAG_METEOR @superpower unloadspritegfx ANIM_TAG_GOLD_RING @beam @@ -12710,15 +12711,15 @@ Move_SUNSTEEL_STRIKE:: playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET waitforvisualfinish visible ANIM_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, (ANIM_PAL_BG | ANIM_PAL_ATK), 3, 15, 0, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATTACKER), 3, 15, 0, 0 waitforvisualfinish blendoff clearmonbg ANIM_TARGET end SunsteelStrikeBeam: - launchtemplate gSunsteelStrikeYellowBeamTemplate 0x82 0x1 0x14 + createsprite gSunsteelStrikeYellowBeamTemplate, ANIM_TARGET, 2, 0x14 delay 0x1 - launchtemplate gSunsteelStrikeRedBeamTemplate 0x82 0x1 0x14 + createsprite gSunsteelStrikeRedBeamTemplate, ANIM_TARGET, 2, 0x14 delay 0x1 return @@ -12730,30 +12731,30 @@ Move_MOONGEIST_BEAM:: loadspritegfx ANIM_TAG_WATER_GUN @water gun colour loadspritegfx ANIM_TAG_ASSURANCE_HAND @purple colour setalpha 8, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRIC_ORBS, 0, 15, 15, 0x7FFF @White createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_CIRCLE_OF_LIGHT, 0, 15, 15, 0x7FFC @Light Blue waitforvisualfinish playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET - launchtemplate gMoonSpriteTemplate 0x80 0x2 0x20 0x15 - launchtask AnimTask_AlphaFadeIn 0x3 0x5 0x0 0x10 0x10 0x0 0x1 + createsprite gMoonSpriteTemplate, ANIM_TARGET, 0, 0x20, 0x15 + createvisualtask AnimTask_AlphaFadeIn, 0x3, 0x0, 0x10, 0x10, 0x0, 0x1 call MoongeistBeamCharge call MoongeistBeamCharge call MoongeistBeamCharge call MoongeistBeamCharge - launchtemplate gGrowingChargeOrbSpriteTemplate 0x2 0x1 0x0 @;Charge circle + createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x0 @;Charge circle call MoongeistBeamCharge delay 0x20 createsoundtask SoundTask_LoopSEAdjustPanning, 0x7, 0xCC, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_ATTACKER, 0x0, 0x4, 0x32, 0x1 createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB_RED, 16, 0, 0 call MoongeistBeamOrbs call MoongeistBeamOrbs call MoongeistBeamOrbs call MoongeistBeamOrbs call MoongeistBeamOrbs - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x32 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0xb 0x6739 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x32, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0xb, 0x6739 call MoongeistBeamOrbs call MoongeistBeamOrbs call MoongeistBeamOrbs @@ -12783,23 +12784,23 @@ Move_MOONGEIST_BEAM:: call MoongeistBeamOrbs call MoongeistBeamOrbs call MoongeistBeamOrbs - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0xb 0x0 0x6739 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0xb, 0x0, 0x6739 delay 0x1A stopsound - launchtask AnimTask_MoonlightEndFade 0x2 0x0 + createvisualtask AnimTask_MoonlightEndFade, 0x2 end MoongeistBeamCharge: - launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, 40, 0, 0, 0, 30, 10 @From right - launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, -40, 0, 0, 0, 30, -10 @From left - launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, -25, -40, 0, 0, 30, -20 @From top left - launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, 25, -40, 0, 0, 30, 20 @From top right - launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, 25, 20, 0, 0, 30, 20 @From bottom right - launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, -25, 40, 0, 0, 30, -20 @From bottom left + createsprite gMoongeistBeamChargeTemplate, ANIM_ATTACKER, 0, 40, 0, 0, 0, 30, 10 @From right + createsprite gMoongeistBeamChargeTemplate, ANIM_ATTACKER, 0, -40, 0, 0, 0, 30, -10 @From left + createsprite gMoongeistBeamChargeTemplate, ANIM_ATTACKER, 0, -25, -40, 0, 0, 30, -20 @From top left + createsprite gMoongeistBeamChargeTemplate, ANIM_ATTACKER, 0, 25, -40, 0, 0, 30, 20 @From top right + createsprite gMoongeistBeamChargeTemplate, ANIM_ATTACKER, 0, 25, 20, 0, 0, 30, 20 @From bottom right + createsprite gMoongeistBeamChargeTemplate, ANIM_ATTACKER, 0, -25, 40, 0, 0, 30, -20 @From bottom left delay 0x5 return MoongeistBeamOrbs: - launchtemplate gMoongeistBeamBlueOrbsTemplate 0x82 0x0 - launchtemplate gMoongeistBeamPurpleOrbsTemplate 0x82 0x0 + createsprite gMoongeistBeamBlueOrbsTemplate, ANIM_TARGET, 2 + createsprite gMoongeistBeamPurpleOrbsTemplate, ANIM_TARGET, 2 delay 0x1 return @@ -12807,24 +12808,24 @@ Move_TEARFUL_LOOK:: loadspritegfx ANIM_TAG_SMALL_BUBBLES @tears loadspritegfx ANIM_TAG_OPENING_EYE @eye monbg ANIM_DEF_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x5 0x7DE0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x5, 0x7DE0 waitforvisualfinish playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET - launchtemplate gOpeningEyeSpriteTemplate 0x5 0x4 0x0 0x0 0x1 0x0 + createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0x0, 0x0, 0x1, 0x0 delay 0x35 loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 0xC, 0x2 delay 0x8 - launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x0 - launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x1 - launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x2 - launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x3 + createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0 + createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1 + createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2 + createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3 delay 0x8 - launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x0 - launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x1 - launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x2 - launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x3 + createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0 + createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1 + createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2 + createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x5 0x0 0x7DE0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x5, 0x0, 0x7DE0 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -12837,30 +12838,30 @@ Move_ZING_ZAP:: loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color monbg ANIM_TARGET call ZingZapSparks1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x4 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x4, 0x0, 0x6, 0x1 delay 0xA call ZingZapSparks2 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x4 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x4, 0x0, 0x6, 0x1 delay 0xA call ZingZapSparks1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x4 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x4, 0x0, 0x6, 0x1 delay 0xA call ZingZapSparks2 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x4 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x4, 0x0, 0x6, 0x1 delay 0xA - launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x18 0x6 0x1 0x5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x18, 0x6, 0x1, 0x5 delay 0x4 call ZingZapSparks1 invisible 0x0 - launchtemplate gZingZapYellowBallTemplate 0x82, 0x3, 0x0 0x0 0xF + createsprite gZingZapYellowBallTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xF delay 0xA call ZingZapSparks2 delay 0x5 stopsound playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER waitforvisualfinish - launchtemplate gZingZapRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x4 0x0 0x6 0x1 + createsprite gZingZapRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x4, 0x0, 0x6, 0x1 call ElectricityEffect visible 0x0 waitforvisualfinish @@ -12868,17 +12869,17 @@ Move_ZING_ZAP:: end ZingZapSparks1: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 return ZingZapSparks2: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 return Move_NATURES_MADNESS:: @@ -12891,72 +12892,72 @@ Move_NATURES_MADNESS:: loadspritegfx ANIM_TAG_TEAL_ALERT @charge particles loadspritegfx ANIM_TAG_ECLIPSING_ORB @blue green monbg ANIM_ATTACKER - setblends 0x80E + setalpha 14, 8 delay 0x1 loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 0x10, 0x3 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xa 0xa 0x19 0x0 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0 delay 0x4 - launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0 delay 0x4 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x14 0xa 0x19 0x0 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0 delay 0x4 - launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0 delay 0x4 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0 delay 0x4 - launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x19 0x14 0x19 0x0 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0 delay 0x4 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0 delay 0x4 - launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xc 0x0 0x19 0x0 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0 clearmonbg ANIM_ATTACKER delay 0x1 monbg ANIM_TARGET waitforvisualfinish - launchtemplate gNaturesMadnessGrayRingTemplate 0x28 0x4 0x0 0x0 0x1 0x0 + createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0 playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER delay 0xe - launchtemplate gNaturesMadnessGrayRingTemplate 0x28 0x4 0x0 0x0 0x1 0x0 + createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0 playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER delay 0xe - launchtemplate gNaturesMadnessGrayRingTemplate 0x28 0x4 0x0 0x0 0x1 0x0 + createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0 playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER waitforvisualfinish playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xa 0xa 0x19 0x1 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xfff1 0x0 0x19 0x1 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x14 0xa 0x19 0x1 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x0 0xfff6 0x19 0x1 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xfff6 0xf 0x19 0x1 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x19 0x14 0x19 0x1 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xffec 0x14 0x19 0x1 - launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xc 0x0 0x19 0x1 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xa 0xa 0x19 0x1 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xfff1 0x0 0x19 0x1 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x14 0xa 0x19 0x1 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x0 0xfff6 0x19 0x1 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xfff6 0xf 0x19 0x1 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x19 0x14 0x19 0x1 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xffec 0x14 0x19 0x1 - launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xc 0x0 0x19 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x1 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x1 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x1 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x1 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x1 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x1 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x1 + createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x1 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x1 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x1 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x1 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x1 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x1 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x1 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x1 + createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x5 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 delay 0x5 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0003, 0x0000, 0x0006, 0x0001 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -12966,37 +12967,37 @@ Move_MULTI_ATTACK:: loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy loadspritegfx ANIM_TAG_CUT @cut monbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call MultiAttackBuff delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x2 0x2 0x0 0xb 0x7fff - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x2, 0x2, 0x0, 0xb, 0x7fff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call MultiAttackBuff delay 0x8 call MultiAttackBuff waitforvisualfinish delay 0xF playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - launchtemplate gCuttingSliceSpriteTemplate 0x2 0x3 0x28 0xffe0 0x0 - launchtemplate gCuttingSliceSpriteTemplate 0x2 0x3 0x28 0xffd0 0x0 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0xffe0, 0x0 + createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0xffd0, 0x0 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xf, 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET end MultiAttackBuff: - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return Move_MIND_BLOWN:: @@ -13007,18 +13008,18 @@ Move_MIND_BLOWN:: loadspritegfx ANIM_TAG_IMPACT @hit monbg ANIM_TARGET setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xC 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 waitforvisualfinish playsewithpan SE_FALL, SOUND_PAN_TARGET - launchtemplate gMindBlownHeadTemplate 0x82, 0x3, 0x0 0x0 0x25 + createsprite gMindBlownHeadTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x25 waitforvisualfinish - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0xf 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_DEF_PARTNER 0x2 0x0 0xf 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_ATK_PARTNER 0x2 0x0 0xf 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x2, 0x0, 0xf, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_DEF_PARTNER, 0x2, 0x0, 0xf, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_ATK_PARTNER, 0x2, 0x0, 0xf, 0x1 delay 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMindBlownBlueImpactTemplate 0x83 0x2 0x1 0x0 - launchtemplate gMindBlownPinkImpactTemplate 0x83 0x2 0x1 0x0 + createsprite gMindBlownBlueImpactTemplate, ANIM_TARGET, 3, 0x1, 0x0 + createsprite gMindBlownPinkImpactTemplate, ANIM_TARGET, 3, 0x1, 0x0 call MindBlownBlueOrbs delay 0x1 call MindBlownPinkOrbs @@ -13030,30 +13031,30 @@ Move_MIND_BLOWN:: call MindBlownBlueOrbs delay 0x1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish blendoff clearmonbg ANIM_TARGET end MindBlownBlueOrbs: - launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x0 0xFF90 0x8 @up - launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x5F 0xFF9D 0x8 @upper right - launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x73 0x0 0x8 @right - launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x4F 0x37 0x8 @lower right - launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x0 0x53 0x8 @down - launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0xFFB0 0x43 0x8 @lower left - launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0xFF60 0x0 0x8 @left - launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0xFFAA 0xFF94 0x8 @upper left + createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0xFF90, 0x8 @up + createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x5F, 0xFF9D, 0x8 @upper right + createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x73, 0x0, 0x8 @right + createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x4F, 0x37, 0x8 @lower right + createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x53, 0x8 @down + createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFFB0, 0x43, 0x8 @lower left + createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFF60, 0x0, 0x8 @left + createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFFAA, 0xFF94, 0x8 @upper left return MindBlownPinkOrbs: - launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0x2D 0xFF9D 0x8 @between up and upper right - launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xDF 0xFF9D 0x8 @between right and upper right - launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0x9F 0x37 0x8 @between right and lower right - launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0x1F 0x37 0x8 @between lower right and down - launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xFFE0 0x43 0x8 @between lower left and down - launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xFF60 0x43 0x8 @between left and lower left - launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xFF2A 0xFFAA 0x8 @between left and upper left - launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xFFDA 0xFF94 0x8 @between up and upper left + createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x2D, 0xFF9D, 0x8 @between up and upper right + createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xDF, 0xFF9D, 0x8 @between right and upper right + createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x9F, 0x37, 0x8 @between right and lower right + createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x1F, 0x37, 0x8 @between lower right and down + createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFFE0, 0x43, 0x8 @between lower left and down + createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFF60, 0x43, 0x8 @between left and lower left + createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFF2A, 0xFFAA, 0x8 @between left and upper left + createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFFDA, 0xFF94, 0x8 @between up and upper left return Move_PLASMA_FISTS:: @@ -13065,10 +13066,10 @@ Move_PLASMA_FISTS:: loadspritegfx ANIM_TAG_LIGHTNING @thunder punch monbg ANIM_ATTACKER setalpha 12, 8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0 waitforvisualfinish - launchtemplate gPlasmaFistsChargeTemplate 0x2 0x1 0x0 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x3 0x5c 0x1 + createsprite gPlasmaFistsChargeTemplate, ANIM_ATTACKER, 2, 0x0 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_ATTACKER, 0x0, 0x3, 0x5c, 0x1 call PlasmaFistSpark1 delay 0xA call PlasmaFistSpark2 @@ -13094,51 +13095,51 @@ Move_PLASMA_FISTS:: call PlasmaFistSpark2 waitforvisualfinish clearmonbg ANIM_ATTACKER - launchtask AnimTask_ShockWaveProgressingBolt 0x5 0x0 + createvisualtask AnimTask_ShockWaveProgressingBolt, 0x5 waitforvisualfinish monbg ANIM_TARGET call PlasmaFistsImpact waitforvisualfinish call PlasmaFistsImpact waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff end PlasmaFistSpark1: playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x0 0x2 0x0 0xb 0x5bff - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x0, 0x2, 0x0, 0xb, 0x5bff + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 return PlasmaFistSpark2: playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 return PlasmaFistsImpact: playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtemplate gFistFootSpriteTemplate 0x84 0x5 0x0 0x0 0x8 0x1 0x0 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x8, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 delay 0x1 - launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 + createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x0 0xffd0 + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xffd0 delay 0x1 - launchtemplate gLightningSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gLightningSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x1 - launchtemplate gLightningSpriteTemplate 0x2 0x2 0x0 0x10 + createsprite gLightningSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10 delay 0x1 playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET - launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 + createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 delay 0x2 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 - launchtemplate gBasicHitSplatSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xf, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 return Move_PHOTON_GEYSER:: @@ -13150,10 +13151,10 @@ Move_PHOTON_GEYSER:: loadspritegfx ANIM_TAG_ORBS @recover monbg ANIM_ATTACKER setalpha 12, 8 - launchtemplate gPhotonGeyserChargeTemplate 0x2 0x1 0x0 + createsprite gPhotonGeyserChargeTemplate, ANIM_ATTACKER, 2, 0x0 call PhotonGeyserSparks1 - launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0xffd8 0xffd8 0x10 - launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0x0 0x28 0x10 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10 delay 0xA call PhotonGeyserSparks2 delay 0xA @@ -13162,8 +13163,8 @@ Move_PHOTON_GEYSER:: call PhotonGeyserSparks2 delay 0xA call PhotonGeyserSparks1 - launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0x0 0xffd8 0x10 - launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0x28 0x14 0x10 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10 delay 0xA call PhotonGeyserSparks2 delay 0xA @@ -13172,8 +13173,8 @@ Move_PHOTON_GEYSER:: call PhotonGeyserSparks2 delay 0xA call PhotonGeyserSparks1 - launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0xffd8 0x0 0x10 - launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0x28 0x0 0x10 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x0, 0x10 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0x0, 0x10 delay 0xA call PhotonGeyserSparks2 delay 0xA @@ -13181,7 +13182,7 @@ Move_PHOTON_GEYSER:: delay 0xA call PhotonGeyserSparks2 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xF 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xF, 0x0 clearmonbg ANIM_ATTACKER playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER unloadspritegfx ANIM_TAG_ORBS @recover @@ -13189,66 +13190,66 @@ Move_PHOTON_GEYSER:: loadspritegfx ANIM_TAG_YELLOW_BALL @confuse ray (for zap cannon) loadspritegfx ANIM_TAG_BLACK_BALL_2 @zap cannon loadspritegfx ANIM_TAG_AIR_WAVE_2 @white/gray color - launchtemplate gPhotonGeyserWhiteRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 - launchtemplate gPhotonGeyserZapBallTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 - launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 - launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 - launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 - launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 - launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 - launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 - launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + createsprite gPhotonGeyserWhiteRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8 + createsprite gPhotonGeyserZapBallTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0 + createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 + createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1 + createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0 + createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2 + createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0 + createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1 + createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0 + createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2 waitforvisualfinish monbg ANIM_TARGET - launchtemplate gPhotonGeyserYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + createsprite gPhotonGeyserYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x5, 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER unloadspritegfx ANIM_TAG_YELLOW_BALL @confuse ray (for zap cannon) unloadspritegfx ANIM_TAG_BLACK_BALL_2 @zap cannon unloadspritegfx ANIM_TAG_AIR_WAVE_2 @white/gray color @Shoot beam to the sky loadspritegfx ANIM_TAG_STRAIGHT_BEAM - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x6 0x0 0x10 0x43FF @Light yellow - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x4 0x0 0x60 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x6, 0x0, 0x10, 0x43FF @Light yellow + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x4, 0x0, 0x60, 0x1 panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 call PhotonGeyserBeam waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x1 0x10 0x0 0x43FF @Light yellow - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xF 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x1, 0x10, 0x0, 0x43FF @Light yellow + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xF, 0x0, 0x0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff end PhotonGeyserSparks1: playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gThinRingShrinkingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 return PhotonGeyserSparks2: playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 return PhotonGeyserBeam: - launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, 19, ANIM_TARGET, 180, 2, 6 + createsprite gPhotonGeyserBeam, ANIM_TARGET, 3, 0, 19, ANIM_TARGET, 180, 2, 6 delay 0x1 - launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, 3, ANIM_TARGET, 180, 2, 5 + createsprite gPhotonGeyserBeam, ANIM_TARGET, 3, 0, 3, ANIM_TARGET, 180, 2, 5 delay 0x1 - launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -13, ANIM_TARGET, 180, 2, 4 + createsprite gPhotonGeyserBeam, ANIM_TARGET, 3, 0, -13, ANIM_TARGET, 180, 2, 4 delay 0x1 - launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -29, ANIM_TARGET, 180, 2, 3 + createsprite gPhotonGeyserBeam, ANIM_TARGET, 3, 0, -29, ANIM_TARGET, 180, 2, 3 delay 0x1 - launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -45, ANIM_TARGET, 180, 2, 2 + createsprite gPhotonGeyserBeam, ANIM_TARGET, 3, 0, -45, ANIM_TARGET, 180, 2, 2 delay 0x1 - launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -61, ANIM_TARGET, 180, 2, 1 + createsprite gPhotonGeyserBeam, ANIM_TARGET, 3, 0, -61, ANIM_TARGET, 180, 2, 1 delay 0x1 - launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -77, ANIM_TARGET, 180, 2, 0 + createsprite gPhotonGeyserBeam, ANIM_TARGET, 3, 0, -77, ANIM_TARGET, 180, 2, 0 return Move_ZIPPY_ZAP:: @@ -13294,28 +13295,28 @@ Move_DOUBLE_IRON_BASH:: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 0x1c, 0x2 - launchtask AnimTask_MetallicShine 0x5 0x3 0x0 0x0 0x0 + createvisualtask AnimTask_MetallicShine, 0x5, 0x0, 0x0, 0x0 waitforvisualfinish monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET setalpha 12, 8 loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 0x14, 0x2 - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x0 0xc 0x4 0x1 0x4 - launchtask AnimTask_AnimateGustTornadoPalette 0x5 0x2 0x1 0x46 - launchtemplate gGustToTargetSpriteTemplate 0x2 0x5 0xffe7 0x0 0x0 0x0 0x0 @wing attack - launchtemplate gGustToTargetSpriteTemplate 0x2 0x5 0x19 0x0 0x0 0x0 0x0 @wing attack + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xc, 0x4, 0x1, 0x4 + createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46 + createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 0xffe7, 0x0, 0x0, 0x0, 0x0 @wing attack + createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 0x19, 0x0, 0x0, 0x0, 0x0 @wing attack delay 0x18 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x18 0x0 0x0 0x9 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x18, 0x0, 0x0, 0x9 delay 0x11 - launchtemplate gBasicHitSplatSpriteTemplate 0x84, 0x4, 0x0 0x0 0x1 0x1 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe0 0x0 0x0 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x1, 0x1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe0, 0x0, 0x0, 0x3 waitforvisualfinish playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0xb + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0xb waitforvisualfinish delay 0x3 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x7 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x7 clearmonbg ANIM_DEF_PARTNER blendoff end @@ -13327,18 +13328,18 @@ Move_DYNAMAX_CANNON:: Move_SNIPE_SHOT:: loadspritegfx ANIM_TAG_IMPACT_2 loadspritegfx ANIM_TAG_LEER - launchtask AnimTask_BlendBattleAnimPal 10 5 ANIM_PAL_BG 0 0 16, 0 @;Black + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 16, 0 @;Black waitforvisualfinish - launchtemplate gLeerSpriteTemplate 0x82, 2 0x18 -12 + createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 0x18, -12 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish delay 0x20 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - launchtemplate gSnipeShotBallTemplate 0x82, 3, 0 0 16, + createsprite gSnipeShotBallTemplate, ANIM_TARGET, 2, 0, 0, 16 waitforvisualfinish - launchtask AnimTask_ShakeMon2 2 5 1 4 0 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 8, 1 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 10 5 ANIM_PAL_BG 0 16, 0 0 @;Black + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 16, 0, 0 @;Black waitforvisualfinish end @@ -13347,16 +13348,16 @@ Move_JAW_LOCK:: loadspritegfx ANIM_TAG_IMPACT createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SHARP_TEETH, 0, 10, 10, 0x0B1D @Light orange monbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x7 0x0 @Black + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x7, 0x0 @Black waitforvisualfinish playsewithpan SE_M_BITE, SOUND_PAN_TARGET - launchtemplate gJawLockTeethTemplate 0x2 0x7 0xffe0 0xffe0 0x1 0x333 0x333 0xa 15 - launchtemplate gJawLockTeethTemplate 0x2 0x7 0x20 0x20 0x5 0xfccd 0xfccd 0xa 15 + createsprite gJawLockTeethTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x1, 0x333, 0x333, 0xa, 15 + createsprite gJawLockTeethTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x5, 0xfccd, 0xfccd, 0xa, 15 delay 0xa - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff8 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x7 0xA 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x7, 0xA, 0x2 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x7 0x0 0x0 @;Black + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x7, 0x0, 0x0 @;Black waitforvisualfinish clearmonbg ANIM_TARGET delay 0x1 @@ -13368,9 +13369,9 @@ Move_STUFF_CHEEKS:: loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 playsewithpan SE_M_METRONOME, 0xc0 - launchtemplate gFloatingBerryTemplate 1 0x1 0x0 + createsprite gFloatingBerryTemplate, ANIM_ATTACKER, 1, 0x0 delay 0x45 - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 0x1 BERRYEAT_ON_PLAYER BerryEatingOpponent: call BiteOpponent @@ -13385,27 +13386,27 @@ BERRYEAT_ON_PLAYER: delay 0xA POST_BERRY_EAT: playsewithpan SE_SHINY, 0xc0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x2 0x3 0x7 0x0 0x67f1 - launchtemplate gThinRingExpandingSpriteTemplate 3 0x4 0x0 0x0 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x2, 0x3, 0x7, 0x0, 0x67f1 + createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 waitforvisualfinish end BitePlayer: playsewithpan SE_M_BITE, 0x3f - launchtemplate gSharpTeethSpriteTemplate 2 0x6 0x27 0xffD0 0x0 0x0 0x333 0xa - launchtemplate gSharpTeethSpriteTemplate 2 0x6 0x27 0x10 0x4 0x0 0xfccd 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x27, 0xffD0, 0x0, 0x0, 0x333, 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x27, 0x10, 0x4, 0x0, 0xfccd, 0xa return BiteOpponent: playsewithpan SE_M_BITE, 0x3f - launchtemplate gSharpTeethSpriteTemplate 2 0x6 0xffDF 0xffD0 0x0 0x0 0x333 0xa - launchtemplate gSharpTeethSpriteTemplate 2 0x6 0xffDF 0x10 0x4 0x0 0xfccd 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffDF, 0xffD0, 0x0, 0x0, 0x333, 0xa + createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffDF, 0x10, 0x4, 0x0, 0xfccd, 0xa return Move_NO_RETREAT:: loadspritegfx ANIM_TAG_SMALL_EMBER loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER 0x7 0x12 - launchtemplate gNoRetreatFlameTemplate 2, 0x5 ANIM_ATTACKER, 20, 10, 0xA0, 0 - launchtemplate gNoRetreatFlameTemplate 2, 0x5 ANIM_ATTACKER, -20, 10, 0xA0, 0 - launchtask AnimTask_TeeterDanceMovement 0x5 0x0 + createsprite gNoRetreatFlameTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 10, 0xA0, 0 + createsprite gNoRetreatFlameTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -20, 10, 0xA0, 0 + createvisualtask AnimTask_TeeterDanceMovement, 0x5 waitforvisualfinish end @@ -13413,21 +13414,21 @@ Move_TAR_SHOT:: loadspritegfx ANIM_TAG_POISON_BUBBLE createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_POISON_BUBBLE, 0, 15, 15, 0 @Black monbg ANIM_TARGET - launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0x0 0x0 + createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0x0, 0x0 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 0x5 - launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0xffe8 0x0 + createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0xffe8, 0x0 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 0xf - launchtask AnimTask_ShakeMon2 0x5 0x5 ANIM_TARGET 0x2 0x0 0xa 0x1 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x2 0x0 0x10 0x0 @;Black - launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xffe6 0xffe8 0x0 0xf 0x37 + createvisualtask AnimTask_ShakeMon2, 0x5, ANIM_TARGET, 0x2, 0x0, 0xa, 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_TARGET, 0x2, 0x2, 0x0, 0x10, 0x0 @;Black + createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xffe6, 0xffe8, 0x0, 0xf, 0x37 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 0xa - launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xf 0xffe5 0x0 0xC 0x32 + createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xf, 0xffe5, 0x0, 0xC, 0x32 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 0xa - launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xfff1 0xffef 0x0 0xa 0x2d + createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xfff1, 0xffef, 0x0, 0xa, 0x2d playsewithpan SE_M_BUBBLE SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -13437,27 +13438,27 @@ Move_MAGIC_POWDER:: loadspritegfx ANIM_TAG_POISON_POWDER loadspritegfx ANIM_TAG_WATER_GUN loopsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER 0xE 0x8 - launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xffe2 0xffea 0x75 0x50 0x5 0x1 - launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xa 0xffea 0x75 0x50 0xfffb 0x1 - launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xffe7 0xffea 0x75 0x70 0x5 0x3 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0xffe2, 0xffea, 0x75, 0x50, 0x5, 0x1 + createsprite gMagicPowderBluePowderTemplate, ANIM_TARGET, 2, 0xa, 0xffea, 0x75, 0x50, 0xfffb, 0x1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0xffe7, 0xffea, 0x75, 0x70, 0x5, 0x3 delay 0xf - launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xfffb 0xffea 0x75 0x50 0xfffb 0x1 - launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0x5 0xffea 0x75 0x60 0x5 0x1 - launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0x0 0xffea 0x75 0x45 0xfffb 0x1 - launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xfff1 0xffea 0x75 0x70 0x5 0x2 + createsprite gMagicPowderBluePowderTemplate, ANIM_TARGET, 2, 0xfffb, 0xffea, 0x75, 0x50, 0xfffb, 0x1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0x5, 0xffea, 0x75, 0x60, 0x5, 0x1 + createsprite gMagicPowderBluePowderTemplate, ANIM_TARGET, 2, 0x0, 0xffea, 0x75, 0x45, 0xfffb, 0x1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xffea, 0x75, 0x70, 0x5, 0x2 delay 0x1e - launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xfff1 0xffea 0x75 0x70 0x5 0x2 - launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xf 0xffea 0x75 0x50 0xfffb 0x1 - launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xfff6 0xffea 0x75 0x60 0x7 0x2 - launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xfffb 0xffea 0x75 0x5a 0xfff8 0x0 + createsprite gMagicPowderBluePowderTemplate, ANIM_TARGET, 2, 0xfff1, 0xffea, 0x75, 0x70, 0x5, 0x2 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0xf, 0xffea, 0x75, 0x50, 0xfffb, 0x1 + createsprite gMagicPowderBluePowderTemplate, ANIM_TARGET, 2, 0xfff6, 0xffea, 0x75, 0x60, 0x7, 0x2 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xffea, 0x75, 0x5a, 0xfff8, 0x0 delay 0x14 - launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xfff6 0xffea 0x75 0x50 0xfffb 0x1 - launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0x0 0xffea 0x75 0x59 0x5 0x2 - launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0x14 0xffea 0x75 0x70 0xfff8 0x2 - launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0x5 0xffea 0x75 0x50 0x5 0x1 + createsprite gMagicPowderBluePowderTemplate, ANIM_TARGET, 2, 0xfff6, 0xffea, 0x75, 0x50, 0xfffb, 0x1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xffea, 0x75, 0x59, 0x5, 0x2 + createsprite gMagicPowderBluePowderTemplate, ANIM_TARGET, 2, 0x14, 0xffea, 0x75, 0x70, 0xfff8, 0x2 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0x5, 0xffea, 0x75, 0x50, 0x5, 0x1 waitforvisualfinish playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET - launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffa 0xfffa 0xf 0x1 0x1 + createvisualtask AnimTask_ScaleMonAndRestore, 0x5, 0xfffa, 0xfffa, 0xf, 0x1, 0x1 waitforvisualfinish end @@ -13465,11 +13466,11 @@ Move_DRAGON_DARTS:: loadspritegfx ANIM_TAG_DREEPY loadspritegfx ANIM_TAG_EXPLOSION playsewithpan SE_FALL, SOUND_PAN_ATTACKER - launchtemplate gDreepyMissileTemplate 0x82, 0x3, 0x0 0x0 0x19 + createsprite gDreepyMissileTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x19 delay 0x19 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x10 0x1 - launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0x0 0x0 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x10, 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 waitforvisualfinish end @@ -13491,16 +13492,16 @@ Move_OCTOLOCK:: loadspritegfx ANIM_TAG_TENDRILS createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_TENDRILS, 0, 12, 12, 0x3D98 @Pinkish Red loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET 0x6 0x4 - launchtemplate gConstrictBindingSpriteTemplate 0x84, 0x4, 0x0 0x10 0x0 0x2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x10, 0x0, 0x2 delay 0x7 - launchtemplate gConstrictBindingSpriteTemplate 0x83 0x4 0x0 0x0 0x0 0x2 - launchtemplate gConstrictBindingSpriteTemplate 0x82, 0x4, 0x0 0x8 0x1 0x2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x0, 0x2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x8, 0x1, 0x2 delay 0x7 - launchtemplate gConstrictBindingSpriteTemplate 0x83 0x4 0x0 0xfff8 0x1 0x2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfff8, 0x1, 0x2 delay 0x8 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x3, 0x0, 0x6, 0x1 delay 0x14 - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x2 0x0 0x8 0x1f + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_TARGET, 0x2, 0x2, 0x0, 0x8, 0x1f playsewithpan SE_M_BIND, SOUND_PAN_TARGET setarg 0x7 0xffff waitforvisualfinish @@ -13515,16 +13516,16 @@ Move_BOLT_BEAK:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_HORN_HIT, 0, 12, 12, 0x079D @Yellow call BoltBeakSparks waitforvisualfinish - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x0 0x0 0x5bff + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x3, 0xffe1, 0x1, 0x0, 0x0, 0x5bff createsprite gHorizontalLungeSpriteTemplate, 0x2, 0x2, 0x4, 0x4 delay 0x4 createsprite gHornHitSpriteTemplate, 0x84, 0x3, 0x8, 0x8, 0xa waitforvisualfinish createsprite gFlashingHitSplatSpriteTemplate, 0x83, 0x4, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x3, 0x0, 0x6, 0x1 waitforvisualfinish - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x4 0xffe1 0x2 0x0 0x6 0x5bff + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x4, 0xffe1, 0x2, 0x0, 0x6, 0x5bff call ElectricityEffect waitforvisualfinish end @@ -13535,18 +13536,18 @@ BoltBeakSparks: createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 createsprite gSparkElectricitySpriteTemplate, 0x0, 0x7, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x0 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x0 0x0 0x5bff + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x3, 0xffe1, 0x1, 0x0, 0x0, 0x5bff delay 0xa - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x5 0x5 0x5bff + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x3, 0xffe1, 0x1, 0x5, 0x5, 0x5bff playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 createsprite gSparkElectricitySpriteTemplate, 0x0, 0x7, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x0 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x0 0x0 0x76E1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x3, 0xffe1, 0x1, 0x0, 0x0, 0x76E1 delay 0x14 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x4 0x4 0x76E1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x3, 0xffe1, 0x1, 0x4, 0x4, 0x76E1 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricityFlashingSpriteTemplate, 0x4, 0x8, 0x0, 0x0, 0x20, 0xc, 0x0, 0x14, 0x0, 0x0 createsprite gBoltBeakBlueFlashingSparkTemplate, 0x4, 0x8, 0x0, 0x0, 0x20, 0xc, 0x40, 0x14, 0x1, 0x0 @@ -13564,53 +13565,53 @@ Move_FISHIOUS_REND:: loadspritegfx ANIM_TAG_SMALL_BUBBLES createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SHARP_TEETH, 0, 10, 10, 0x726A @Blue Teeth playsewithpan SE_M_WATERFALL, SOUND_PAN_TARGET - launchtemplate gFishiousRendTeethTemplate, 0x80, 0x2, 50, 4 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x4 0x0 0xC 0x2 + createsprite gFishiousRendTeethTemplate, ANIM_TARGET, 0, 50, 4 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x4, 0x0, 0xC, 0x2 call FishousRendBubbles waitforvisualfinish end FishousRendBubbles: - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xF 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xF 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xF, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xF, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xA 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xA 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xA, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xA, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x5 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x5 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x5, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x5, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x0 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x0 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfffb 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfffb 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfffb, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfffb, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff6 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff6 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff1 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff1 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff1, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff1, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xffec 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xffec 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xffec, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xffec, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff1 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff1 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff1, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff1, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff6 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff6 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfffb 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfffb 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfffb, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfffb, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x0 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x0 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x5 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x5 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x5, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x5, 0x0 delay 0x2 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xA 0x0 - launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xA 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xA, 0x0 + createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xA, 0x0 return Move_COURT_CHANGE:: @@ -13622,7 +13623,7 @@ Move_CLANGOROUS_SOUL:: loadspritegfx ANIM_TAG_POISON_BUBBLE @purple loadspritegfx ANIM_TAG_AIR_WAVE_2 @white/grey loadspritegfx ANIM_TAG_SPARKLE_2 @stars - launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x2, 0x0 call ClangorousSoulStarBuffEffect call ClangorousSoulStarBuffEffect call ClangorousSoulStarBuffEffect @@ -13635,21 +13636,21 @@ Move_CLANGOROUS_SOUL:: waitforvisualfinish loadspritegfx ANIM_TAG_THIN_RING @ring playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - launchtemplate gClangorousSoulRedRingTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gClangorousSoulRedRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 waitforvisualfinish end ClangorousSoulStarBuffEffect: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtemplate gClangorousSoulBlueBuffTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gClangorousSoulBlueBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gClangorousSoulPurpleBuffTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 - launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xfff1 0x0 0x0 0x0 0x20 0x3c + createsprite gClangorousSoulPurpleBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c delay 0x4 - launchtemplate gClangorousSoulWhiteBuffTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gClangorousSoulWhiteBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xc 0xfffb 0x0 0x0 0x20 0x3c + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c return Move_BODY_PRESS:: @@ -13657,15 +13658,15 @@ Move_BODY_PRESS:: loadspritegfx ANIM_TAG_GRAY_SMOKE @smoke createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0, 0xD, 0xD, 0x1E5D @Orange playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x6 0x1 0x0 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0 delay 0x7 - launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 @Fly up + createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 @Fly up waitforvisualfinish delay 0x2F - launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 @Bounce down + createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 @Bounce down delay 0x2 playsewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER - launchtask AnimTask_SquishTarget 0x2 0x0 + createvisualtask AnimTask_SquishTarget, 0x2 waitforvisualfinish end @@ -13682,51 +13683,51 @@ Move_DRUM_BEATING:: splitbgprio ANIM_TARGET setalpha 12, 8 call BellyDrumRight - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x0 0x0 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0 playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 0xf call BellyDrumLeft - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x1 0x1 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x1, 0x0 playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 0xf call BellyDrumRight - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x3 0x3 0x80 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x3, 0x3, 0x80 playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 0x7 call BellyDrumLeft - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x2 0x0 0x80 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0x0, 0x80 playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 0x7 call BellyDrumRight - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x1 0x1 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0x1, 0x0 playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 0x7 call BellyDrumLeft - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x0 0x3 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x3, 0x0 playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER - launchtemplate gFrenzyPlantRootSpriteTemplate 0x2 0x6 0x55 0x10 0x6 0x0 0x3 0x50 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 0x55, 0x10, 0x6, 0x0, 0x3, 0x50 playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 0x5 - launchtemplate gFrenzyPlantRootSpriteTemplate 0x2 0x6 0x55 0xfff0 0xfffa 0x0 0x2 0x4b + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 0x55, 0xfff0, 0xfffa, 0x0, 0x2, 0x4b playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 0x5 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff6 0xfff6 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xfff6, 0x1, 0x3 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x3 0x5 ANIM_TARGET 0x8 0x0 0x14 0x1 + createvisualtask AnimTask_ShakeMon, 0x3, ANIM_TARGET, 0x8, 0x0, 0x14, 0x1 delay 0x3 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xa 0x8 0x1 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xa, 0x8, 0x1, 0x3 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 0x3 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xa 0xfffd 0x1 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xa, 0xfffd, 0x1, 0x2 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 0x3 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfffd 0x1 0x1 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfffd, 0x1, 0x1, 0x2 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff6 0x1 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff6, 0x1, 0x1, 0x1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0xa 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xa, 0x1, 0x1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -13740,27 +13741,27 @@ Move_PYRO_BALL:: loadspritegfx ANIM_TAG_FLAT_ROCK loadspritegfx ANIM_TAG_SMALL_EMBER playsewithpan SE_LEDGE, SOUND_PAN_ATTACKER @;Hop - launchtemplate gPyroBallRockTemplate, 2, 0x3, 0, 0, 0 + createsprite gPyroBallRockTemplate, ANIM_ATTACKER, 2, 0, 0, 0 delay 0x19 playsewithpan SE_LEDGE, SOUND_PAN_ATTACKER @;Hop delay 0x19 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x3 0x0 0x7 0x043D - launchtemplate gPyroBallBurningRockTemplate, 2, 0x3, 0, 0, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x3, 0x0, 0x7, 0x043D + createsprite gPyroBallBurningRockTemplate, ANIM_ATTACKER, 2, 0, 0, 0 delay 0x19 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET delay 0x19 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET - launchtemplate gPyroBallFlamesUpTemplate, 2, 0x3, 0, 0, 1 + createsprite gPyroBallFlamesUpTemplate, ANIM_ATTACKER, 2, 0, 0, 1 delay 0x19 playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET - launchtemplate gPyroBallEmberBallTemplate, 2, 0x6, 0, 10, 0, 5, 20, -20 + createsprite gPyroBallEmberBallTemplate, ANIM_ATTACKER, 2, 0, 10, 0, 5, 20, -20 waitforvisualfinish - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x2 0x0 0xc 0x1f - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_TARGET, 0x2, 0x2, 0x0, 0xc, 0x1f + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0xf, 0x1 call FireSpreadEffect delay 0x20 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x7 0x0 0x043D + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x7, 0x0, 0x043D waitforvisualfinish end @@ -13780,39 +13781,39 @@ Move_AURA_WHEEL:: setalpha 12, 8 monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET - launchtemplate gAuraWheelBlueElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x0 + createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gAuraWheelRedElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x4 + createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gAuraWheelBlueElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x8 + createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gAuraWheelRedElectricityTemplate 3, 0x4 0x0 0x0 0x38 0xc + createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gAuraWheelBlueElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x10 + createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gAuraWheelRedElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x14 + createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gAuraWheelBlueElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x18 + createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 2, 0x5 0x0 0x18 0x0 0x0 0x6 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0x0, 0x0, 0x6 delay 0x4 playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x17 0x1 - launchtemplate gBasicHitSplatSpriteTemplate 0x4 0x4 0xfff6 0x0 0x1 0x0 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x5, 0x0, 0x17, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0 createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK_2, 2, 12, 0, 0x76E1 @Revert blue Electricity - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84, 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84, 0x8 0x0 0x0 0x30 0x2c 0x40 0x28 0x1 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84, 0x8 0x0 0x0 0x30 0x2c 0x80 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84, 0x8 0x0 0x0 0x30 0x2c 0xc0 0x28 0x2 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x80, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0xc0, 0x28, 0x2, 0x8003 delay 0x7 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 2, 0x3 0x0 0x0 0x9 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x9 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -13825,22 +13826,22 @@ Move_BREAKING_SWIPE:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK_2, 0, 12, 12, 0x001F @Red monbg ANIM_TARGET setalpha 12, 8 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x1 - launchtemplate gBreakingSwipeCenteredElectricity 0x82, 0x4, 0x5 0x0 0x5 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x1 + createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x15 0x1 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x0 0x3 0x15 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x3, 0x15, 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_DEF_PARTNER, 0x0, 0x3, 0x15, 0x1 delay 0x4 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x1 - launchtemplate gBreakingSwipeCenteredElectricity 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x1 + createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x1 - launchtemplate gBreakingSwipeCenteredElectricity 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x1 + createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x1 - launchtemplate gBreakingSwipeCenteredElectricity 0x82, 0x4, 0xffec 0xf 0x5 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x1 + createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitsound waitforvisualfinish @@ -13852,10 +13853,10 @@ Move_BRANCH_POKE:: loadspritegfx ANIM_TAG_BRANCH loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER - launchtemplate gBranchPokeBranchTemplate, 0x82, 0x3 0x0 0x0 0x25 + createsprite gBranchPokeBranchTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x25 waitforvisualfinish - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x6 0x1 - launchtemplate gFlashingHitSplatSpriteTemplate, 0x83, 0x4 0x0 0x0 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x5, 0x0, 0x6, 0x1 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET waitforvisualfinish end @@ -13877,13 +13878,13 @@ Move_OVERDRIVE:: end OverdriveRings: playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET - launchtemplate gSimplePaletteBlendSpriteTemplate 0x2 0x5 0x1f 0x3 0x8 0x0 0x3ff - launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffb 0xfffb 0x5 0x0 0x0 - launchtemplate gHyperVoiceRingSpriteTemplate 0x0 0x7 0x2d 0x0 0x0 0x0 0x0 0x0 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x1 0x0 0x6 0x1 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x3 0x1 0x0 0x6 0x1 - launchtask AnimTask_ShakeBattleTerrain 0x2 0x4 0x1 0x0 0x6 0x1 - launchtask SoundTask_WaitForCry 0x5 0x0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1f, 0x3, 0x8, 0x0, 0x3ff + createvisualtask AnimTask_ScaleMonAndRestore, 0x5, 0xfffb, 0xfffb, 0x5, 0x0, 0x0 + createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x1, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x3, 0x1, 0x0, 0x6, 0x1 + createvisualtask AnimTask_ShakeBattleTerrain, 0x2, 0x1, 0x0, 0x6, 0x1 + createvisualtask SoundTask_WaitForCry, 0x5 return Move_APPLE_ACID:: @@ -13891,32 +13892,32 @@ Move_APPLE_ACID:: loadspritegfx ANIM_TAG_POISON_BUBBLE createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_POISON_BUBBLE, 0, 12, 12, 0x061D @Orange playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER - launchtemplate gAppleAcidFloatingAppleTemplate 0xc 0x1 0x0 + createsprite gAppleAcidFloatingAppleTemplate, ANIM_ATTACKER, 12, 0x0 delay 0x30 monbg ANIM_TARGET - launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0x0 0x0 + createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0x0, 0x0 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 0x5 - launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0x18 0x0 + createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0x18, 0x0 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 0x5 - launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0xffe8 0x0 + createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0xffe8, 0x0 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 0xf - launchtask AnimTask_ShakeMon2 0x5 0x5 ANIM_TARGET 0x2 0x0 0xa 0x1 - launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0x0 0xffea 0x0 0xf 0x37 + createvisualtask AnimTask_ShakeMon2, 0x5, ANIM_TARGET, 0x2, 0x0, 0xa, 0x1 + createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0x0, 0xffea, 0x0, 0xf, 0x37 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 0xa - launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xffe6 0xffe8 0x0 0xf 0x37 + createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xffe6, 0xffe8, 0x0, 0xf, 0x37 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 0xa - launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xf 0xffe5 0x0 0xf 0x32 + createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xf, 0xffe5, 0x0, 0xf, 0x32 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 0xa - launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xfff1 0xffef 0x0 0xa 0x2d + createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xfff1, 0xffef, 0x0, 0xa, 0x2d playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 0xa - launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0x1b 0xffea 0x0 0xf 0x32 + createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0x1b, 0xffea, 0x0, 0xf, 0x32 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -13926,48 +13927,48 @@ Move_GRAV_APPLE:: loadspritegfx ANIM_TAG_APPLE fadetobg BG_IN_AIR waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xf800 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xf800, 0x0, 0xffff waitbgfadein call SmallAppleShower call SmallAppleShower - launchtemplate gGravAppleLargeApple, 0x82, 0x4, 0x0, 0x3c, 4, ANIM_TARGET + createsprite gGravAppleLargeApple, ANIM_TARGET, 2, 0x0, 0x3c, 4, ANIM_TARGET delay 0x7 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0 0x15 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 0x15, 0x0, 0x4 delay 0x30 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 waitforvisualfinish call UnsetPsychicBg end SmallAppleShower: - launchtemplate gGravAppleSmallApple, 0x82, 0x4, 35, 0x3c, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 35, 0x3c, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, -30, 0x44, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -30, 0x44, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, 27, 0x37, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 27, 0x37, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, -20, 0x32, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -20, 0x32, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, 33, 0x3a, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 33, 0x3a, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, -12, 0x3a, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -12, 0x3a, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, 19, 0x3c, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 19, 0x3c, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, -38, 0x3a, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -38, 0x3a, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, 5, 0x3c, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 5, 0x3c, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 - launchtemplate gGravAppleSmallApple, 0x82, 0x4, -23, 0x28, 4, ANIM_TARGET + createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -23, 0x28, 4, ANIM_TARGET playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x2 return @@ -13986,7 +13987,7 @@ Move_STRANGE_STEAM:: call StrangeSteamCloud call StrangeSteamCloud call StrangeSteamCloud - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0x2A 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x2, 0x0, 0x2A, 0x1 call StrangeSteamCloud call StrangeSteamCloud call StrangeSteamCloud @@ -14012,23 +14013,23 @@ Move_LIFE_DEW:: loadspritegfx ANIM_TAG_WATER_DROPLET loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_ATK_PARTNER - launchtemplate gLifeDewDropletTemplate, 2, 0x3, 0, 0, ANIM_ATTACKER - launchtemplate gLifeDewDropletTemplate, 2, 0x3, 0, 0, ANIM_ATK_PARTNER + createsprite gLifeDewDropletTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_ATTACKER + createsprite gLifeDewDropletTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_ATK_PARTNER delay 0x15 playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER waitforvisualfinish playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER - launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, 0, -5, ANIM_ATTACKER, FALSE - launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, 0, -5, ANIM_ATK_PARTNER, FALSE + createsprite gLifeDewSpecialOrbsTemplate, ANIM_ATTACKER, 2, 0, -5, ANIM_ATTACKER, FALSE + createsprite gLifeDewSpecialOrbsTemplate, ANIM_ATTACKER, 2, 0, -5, ANIM_ATK_PARTNER, FALSE delay 0x7 - launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, -15, 10, ANIM_ATTACKER, FALSE - launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, -15, 10, ANIM_ATK_PARTNER, FALSE + createsprite gLifeDewSpecialOrbsTemplate, ANIM_ATTACKER, 2, -15, 10, ANIM_ATTACKER, FALSE + createsprite gLifeDewSpecialOrbsTemplate, ANIM_ATTACKER, 2, -15, 10, ANIM_ATK_PARTNER, FALSE delay 0x7 - launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, -15, -15, ANIM_ATTACKER, FALSE - launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, -15, -15, ANIM_ATK_PARTNER, FALSE + createsprite gLifeDewSpecialOrbsTemplate, ANIM_ATTACKER, 2, -15, -15, ANIM_ATTACKER, FALSE + createsprite gLifeDewSpecialOrbsTemplate, ANIM_ATTACKER, 2, -15, -15, ANIM_ATK_PARTNER, FALSE delay 0x7 - launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, 10, -5, ANIM_ATTACKER, FALSE - launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, 10, -5, ANIM_ATK_PARTNER, FALSE + createsprite gLifeDewSpecialOrbsTemplate, ANIM_ATTACKER, 2, 10, -5, ANIM_ATTACKER, FALSE + createsprite gLifeDewSpecialOrbsTemplate, ANIM_ATTACKER, 2, 10, -5, ANIM_ATK_PARTNER, FALSE delay 0x7 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -14040,16 +14041,16 @@ Move_OBSTRUCT:: loadspritegfx ANIM_TAG_OBSTRUCT_CROSS createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_NOISE_LINE, 0, 10, 10, 0 @Black createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_PROTECT, 0, 10, 10, 0 @Black - launchtask SoundTask_PlayDoubleCry 0x2 0x2 ANIM_ATTACKER 0xff + createvisualtask SoundTask_PlayDoubleCry, 0x2, ANIM_ATTACKER, 0xff call RoarEffect waitforvisualfinish delay 0x10 monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10 - launchtemplate gProtectSpriteTemplate, 2, 0x3 0x18 0x0 0x5a @;Protect + createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0x0, 0x5a @;Protect waitforvisualfinish - launchtemplate gObstructCrossTemplate, 2, 0x4 0x0 0x0 0x1 0x24 + createsprite gObstructCrossTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x24 playsewithpan SE_M_LEER, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -14063,38 +14064,38 @@ Move_METEOR_ASSAULT:: loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_EXPLOSION createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRIC_ORBS, 0, 12, 12, 0x0B1D @Light orange - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_ATK, 1, 0, 9, 0x0B1D @Light orange - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x30 0x0 0x4 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, 0x0B1D @Light orange + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x30, 0x0, 0x4 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER waitforvisualfinish invisible ANIM_ATTACKER - launchtemplate gGrowingSuperpowerTemplate, 0x83, 0x1 0x0 + createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 0xF - createvisualtask AnimTask_BlendBattleAnimPal, 10, (ANIM_PAL_ATK | ANIM_PAL_BG), 1, 0x10, 0x10, 0x7FFF @Screen flash white - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x5 0x20 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATTACKER), 1, 0x10, 0x10, 0x7FFF @Screen flash white + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x0, 0x5, 0x20, 0x1 call BasicExplosion call BasicExplosion waitforvisualfinish visible ANIM_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, (ANIM_PAL_ATK | ANIM_PAL_BG), 1, 0x10, 0, 0x7FFF @Screen revert from white + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATTACKER), 1, 0x10, 0, 0x7FFF @Screen revert from white waitforvisualfinish end BasicExplosion: playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0x0 0x0 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 delay 0x3 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0x18 0xffe8 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, 0x1, 0x1 delay 0x3 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0xfff0 0x10 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, 0x1, 0x1 delay 0x3 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0xffe8 0xfff4 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, 0x1, 0x1 delay 0x3 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0x10 0x10 0x1 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, 0x1, 0x1 return Move_ETERNA_BEAM:: @@ -14107,7 +14108,7 @@ Move_STEEL_BEAM:: delay 48 loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_GUST - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x14 0x0 0x2 + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x14, 0x0, 0x2 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 20 loadspritegfx ANIM_TAG_STEEL_BEAM @@ -14173,7 +14174,7 @@ Move_METEOR_BEAM:: end @to do: Move_SHELL_SIDE_ARM:: - launchtask AnimTask_ShellSideArm 0x5 0x0 + createvisualtask AnimTask_ShellSideArm, 0x5 jumpargeq 0x0, TRUE, Move_SHELL_SIDE_ARM_PHYSICAL jumpargeq 0x0, FALSE, Move_SHELL_SIDE_ARM_SPECIAL Move_SHELL_SIDE_ARM_PHYSICAL: @ Modified Body Slam, placeholder @@ -14208,13 +14209,13 @@ Move_SHELL_SIDE_ARM_SPECIAL: @ Modified Snipe Shot, placeholder createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT_2, 0, 6, 6, RGB_MAGENTA createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_LEER, 0, 6, 6, RGB_MAGENTA playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x82, 2 0x18 -12 + createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 0x18, -12 waitforvisualfinish delay 0x20 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - launchtemplate gSnipeShotBallTemplate 0x82, 3, 0 0 24, + createsprite gSnipeShotBallTemplate, ANIM_TARGET, 2, 0, 0, 24 waitforvisualfinish - launchtask AnimTask_ShakeMon2 2 5 1 4 0 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 8, 1 waitforvisualfinish end @@ -14232,7 +14233,7 @@ Move_TERRAIN_PULSE:: monbg ANIM_TARGET setalpha 12, 8 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK - launchtask AnimTask_TerrainPulse 0x5 0x0 + createvisualtask AnimTask_TerrainPulse, 0x5 jumpargeq 0x0, TYPE_ELECTRIC, TerrainPulseElectric jumpargeq 0x0, TYPE_GRASS, TerrainPulseGrass jumpargeq 0x0, TYPE_FAIRY, TerrainPulseFairy @@ -14336,19 +14337,19 @@ Move_POLTERGEIST:: createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, RGB_BLACK playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER delay 0x1 - launchtask AnimTask_DestinyBondWhiteShadow 0x5 0x2 0x0 0x24 + createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x24 delay 0x30 playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET createvisualtask AnimTask_PoltergeistItem, 2 waitforvisualfinish setalpha 12, 8 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x5 0x5 0x1 - launchtemplate gComplexPaletteBlendSpriteTemplate 0x2 0x7 0x7 0x5 0x1 0x0 0xa 0x0 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x5, 0x5, 0x1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x7, 0x5, 0x1, 0x0, 0xa, 0x0, 0x0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - launchtask AnimTask_NightmareClone 0x2 0x0 - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x28 0x1 + createvisualtask AnimTask_NightmareClone, 0x2 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x3, 0x0, 0x28, 0x1 playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish restorebg @@ -14367,7 +14368,7 @@ Move_SCORCHING_SANDS:: Move_JUNGLE_HEALING:: goto Move_AROMATHERAPY - + Move_SILK_TRAP:: loadspritegfx ANIM_TAG_PROTECT loadspritegfx ANIM_TAG_SPIDER_WEB @@ -14376,11 +14377,23 @@ Move_SILK_TRAP:: createsprite gSpiderWebSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, FALSE waitforvisualfinish createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_PROTECT, 0, 10, 10, RGB_LIME_GREEN - monbg ANIM_ATK_PARTNER - waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10 + monbg ANIM_ATK_PARTNER + waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10 createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90 waitforvisualfinish - clearmonbg ANIM_ATK_PARTNER + clearmonbg ANIM_ATK_PARTNER + end + +@ Also used by Snow weather. Currently identical with Move_HAIL +Move_SNOWSCAPE:: + loadspritegfx ANIM_TAG_HAIL + loadspritegfx ANIM_TAG_ICE_CRYSTALS + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK + waitforvisualfinish + createvisualtask AnimTask_Hail, 5 + loopsewithpan SE_M_HAIL, 0, 8, 10 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK end Move_WICKED_BLOW:: @@ -14446,7 +14459,6 @@ Move_ELECTRO_DRIFT:: Move_SHED_TAIL:: Move_CHILLY_RECEPTION:: Move_TIDY_UP:: -Move_SNOWSCAPE:: Move_POUNCE:: Move_TRAILBLAZE:: Move_CHILLING_WATER:: @@ -14464,6 +14476,8 @@ Move_WICKED_TORQUE:: Move_NOXIOUS_TORQUE:: Move_COMBAT_TORQUE:: Move_MAGICAL_TORQUE:: +Move_PSYBLADE:: +Move_HYDRO_STEAM:: end @to do @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ @@ -15993,25 +16007,25 @@ Move_SPARK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) delay 10 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) delay 20 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 7, 7, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 7, 7, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 @@ -16023,7 +16037,7 @@ Move_SPARK: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET @@ -16973,7 +16987,7 @@ SkyAttackSetUp: jumpretfalse SkyAttackSetUpAgainstOpponent goto SkyAttackSetUpAgainstPartner SkyAttackSetUpAgainstOpponent: - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 1, 0, 12, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER), 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK @@ -16983,7 +16997,7 @@ SkyAttackSetUpAgainstOpponent: delay 20 createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_PARTNER | F_PAL_DEF_PARTNER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATK_PARTNER | F_PAL_DEF_PARTNER), 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -18205,7 +18219,7 @@ Move_AROMATHERAPY: createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_ANIM_1, 3, 10, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, (F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_ANIM_1), 3, 10, 0, RGB(13, 31, 12) createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 waitforvisualfinish end @@ -19312,14 +19326,14 @@ Move_DRAGON_RAGE: Move_RAIN_DANCE: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 delay 120 delay 30 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 4, 0, RGB_BLACK waitforvisualfinish end @@ -20752,7 +20766,7 @@ Move_SUNNY_DAY: loadspritegfx ANIM_TAG_SUNLIGHT monbg ANIM_ATK_PARTNER setalpha 13, 3 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 0, 6, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 1, 0, 6, RGB_WHITE waitforvisualfinish panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 call SunnyDayLightRay @@ -20760,7 +20774,7 @@ Move_SUNNY_DAY: call SunnyDayLightRay call SunnyDayLightRay waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 6, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 1, 6, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -20976,9 +20990,9 @@ Move_HAZE: playsewithpan SE_M_HAZE, 0 createvisualtask AnimTask_HazeScrollingFog, 5 delay 30 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS, 2, 0, 16, RGB_BLACK delay 90 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 1, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS, 1, 16, 0, RGB_BLACK end Move_FIRE_PUNCH: @@ -21799,7 +21813,7 @@ Move_FAKE_OUT: Move_SCARY_FACE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, (F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER), 3, 0, 16, RGB_BLACK playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitforvisualfinish delay 10 @@ -21811,7 +21825,7 @@ Move_SCARY_FACE: waitforvisualfinish createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, (F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER), 3, 16, 0, RGB_BLACK waitforvisualfinish end @@ -22137,7 +22151,7 @@ Move_ENCORE: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_TAG_HAND createvisualtask AnimTask_CreateSpotlight, 2 - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 0, 10, FALSE + createvisualtask AnimTask_HardwarePaletteFade, 2, (BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN), 3, 0, 10, FALSE waitforvisualfinish createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8 createsprite gClappingHandSpriteTemplate, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9 @@ -22148,7 +22162,7 @@ Move_ENCORE: createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, ANIM_TARGET waitforvisualfinish - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 10, 0, TRUE + createvisualtask AnimTask_HardwarePaletteFade, 2, (BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN), 3, 10, 0, TRUE waitforvisualfinish createvisualtask AnimTask_RemoveSpotlight, 2 end @@ -22313,7 +22327,7 @@ Move_TRANSFORM: monbg ANIM_ATTACKER playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 - createvisualtask AnimTask_TransformMon, 2, 0, 0 + createvisualtask AnimTask_TransformMon, 2, 0, 0, 1 waitforvisualfinish clearmonbg ANIM_ATTACKER end @@ -22323,7 +22337,7 @@ Move_MORNING_SUN: loadspritegfx ANIM_TAG_BLUE_STAR createvisualtask AnimTask_MorningSunLightBeam, 5 delay 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 8, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 8, 0, 12, RGB_WHITE delay 14 call MorningSunStar call MorningSunStar @@ -22340,7 +22354,7 @@ Move_MORNING_SUN: call MorningSunStar call MorningSunStar call MorningSunStar - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 3, 12, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 3, 12, 0, RGB_WHITE waitforvisualfinish waitsound call HealingEffect @@ -22443,7 +22457,7 @@ Move_FLATTER: loadspritegfx ANIM_TAG_CONFETTI createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET createvisualtask AnimTask_CreateSpotlight, 2 - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 0, 10, FALSE + createvisualtask AnimTask_HardwarePaletteFade, 2, (BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN), 3, 0, 10, FALSE waitforvisualfinish createsprite gFlatterSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8, 80 delay 0 @@ -22474,7 +22488,7 @@ Move_FLATTER: delay 5 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 10, 0, TRUE + createvisualtask AnimTask_HardwarePaletteFade, 2, (BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN), 3, 10, 0, TRUE waitforvisualfinish createvisualtask AnimTask_RemoveSpotlight, 2 end @@ -23920,6 +23934,7 @@ Move_WEATHER_BALL: jumpreteq ANIM_WEATHER_RAIN, WeatherBallWater jumpreteq ANIM_WEATHER_SANDSTORM, WeatherBallSandstorm jumpreteq ANIM_WEATHER_HAIL, WeatherBallIce + jumpreteq ANIM_WEATHER_SNOW, WeatherBallIce WeatherBallNormal: loadspritegfx ANIM_TAG_IMPACT createsprite gWeatherBallNormalDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 @@ -24402,7 +24417,7 @@ WeatherFormChangeContinue: monbg ANIM_ATTACKER playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 - createvisualtask AnimTask_TransformMon, 2, 1, 0 + createvisualtask AnimTask_TransformMon, 2, 1, 0, 0 waitforvisualfinish clearmonbg ANIM_ATTACKER end @@ -24459,6 +24474,7 @@ General_TurnTrap: jumpargeq 0, TRAP_ANIM_MAGMA_STORM, Status_MagmaStorm jumpargeq 0, TRAP_ANIM_INFESTATION, Status_Infestation jumpargeq 0, TRAP_ANIM_SNAP_TRAP, Status_Snap_Trap + jumpargeq 0, TRAP_ANIM_THUNDER_CAGE, Status_Thunder_Cage goto Status_BindWrap Status_BindWrap: loadspritegfx ANIM_TAG_TENDRILS @@ -24545,6 +24561,10 @@ Status_Clamp: waitforvisualfinish end +Status_Thunder_Cage: + @ TODO + goto Move_THUNDER_CAGE + Status_Snap_Trap: @ placeholder goto Move_BITE @@ -24566,13 +24586,13 @@ Status_Infestation: loadspritegfx ANIM_TAG_SMALL_BUBBLES @circle particles monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET - createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_DEF, 0x2, 0x0, 0x9, 0x7320 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 30 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x7320 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 30, 0x1 loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 30 call InfestationVortex call InfestationVortex waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x7320 + createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_TARGET, 0x2, 0x9, 0x0, 0x7320 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -24651,13 +24671,13 @@ General_HangedOn: General_Rain: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 delay 50 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 4, 0, RGB_BLACK waitforvisualfinish end @@ -24670,6 +24690,9 @@ General_Sandstorm: General_Hail: goto Move_HAIL +General_Snow: + goto Move_SNOWSCAPE + General_LeechSeedDrain: createvisualtask AnimTask_GetBattlersFromArg, 5 delay 0 @@ -24820,14 +24843,14 @@ General_WishHeal: General_IllusionOff: monbg ANIM_TARGET - createvisualtask AnimTask_TransformMon, 2, 0, 1 + createvisualtask AnimTask_TransformMon, 2, 0, 1, 0 waitforvisualfinish clearmonbg ANIM_TARGET end General_FormChange: monbg ANIM_ATTACKER - createvisualtask AnimTask_TransformMon, 2, 0, 1 + createvisualtask AnimTask_TransformMon, 2, 0, 1, 0 waitforvisualfinish clearmonbg ANIM_ATTACKER end @@ -24856,10 +24879,11 @@ General_MegaEvolution: delay 20 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA waitforvisualfinish - createvisualtask AnimTask_TransformMon, 2, 0, 1 + createvisualtask AnimTask_TransformMon, 2, 0, 1, 0 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14 waitforvisualfinish + createvisualtask SoundTask_PlayNormalCry, 0 createsprite gMegaSymbolSpriteTemplate ANIM_ATTACKER, 2 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -24897,16 +24921,16 @@ General_ZMoveActivate: loadspritegfx ANIM_TAG_SWEAT_BEAD @blue color loadspritegfx ANIM_TAG_PAW_PRINT @yellow color monbg ANIM_ATTACKER - setblends 0x80c + setalpha 12, 8 fadetobg BG_ZMOVE_ACTIVATE waitbgfadein - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0x0 0x0 0xFFFF + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x0, 0x0, 0xFFFF playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendColorCycle, 0x2, 0x6, ANIM_PAL_ATK, 0x0, 0x6, 0x0, 0xb, 0x76BC + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x0, 0x6, 0x0, 0xb, 0x76BC call ZMoveBuffEffect call ZMoveBuffEffect call ZMoveBuffEffect - launchtemplate gZMoveSymbolSpriteTemplate 0x29 0x4 0x0 0x0 0x0 0x0 + createsprite gZMoveSymbolSpriteTemplate, ANIM_ATTACKER, 41, 0x0, 0x0, 0x0, 0x0 call ZMoveBuffEffect call ZMoveBuffEffect waitforvisualfinish @@ -24915,13 +24939,13 @@ General_ZMoveActivate: clearmonbg ANIM_ATTACKER end ZMoveBuffEffect: - launchtemplate gBlueZMoveEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gBlueZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x3 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 @Red Buff + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 @Red Buff delay 0x3 - launchtemplate gGreenZMoveEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gGreenZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x3 - launchtemplate gYellowZMoveEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gYellowZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x3 return @@ -24931,9 +24955,9 @@ General_TotemFlare:: loadspritegfx ANIM_TAG_SWEAT_BEAD @blue color loadspritegfx ANIM_TAG_PAW_PRINT @yellow color monbg ANIM_ATTACKER - setblends 0x80c + setalpha 12, 8 playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x0 0x6 0x0 0xb 0x1f + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x0, 0x6, 0x0, 0xb, 0x1f call RainbowEndureEffect call RainbowEndureEffect call RainbowEndureEffect @@ -24945,13 +24969,13 @@ General_TotemFlare:: end RainbowEndureEffect: - launchtemplate gBlueEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gBlueEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x3 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 @Red Buff + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 @Red Buff delay 0x3 - launchtemplate gGreenEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gGreenEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x3 - launchtemplate gYellowEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gYellowEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x3 return @@ -24981,7 +25005,7 @@ General_StrongWinds:: end General_PrimalReversion:: - launchtask AnimTask_PrimalReversion 0x5 0x0 + createvisualtask AnimTask_PrimalReversion, 0x5 jumpargeq 0x0, ITEM_RED_ORB, General_PrimalReversion_Omega jumpargeq 0x0, ITEM_BLUE_ORB, General_PrimalReversion_Alpha General_PrimalReversion_Alpha: @@ -25001,10 +25025,11 @@ General_PrimalReversion_Alpha: delay 20 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA waitforvisualfinish - createvisualtask AnimTask_TransformMon, 2, 0, 1 + createvisualtask AnimTask_TransformMon, 2, 0, 1, 0 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14 waitforvisualfinish + createvisualtask SoundTask_PlayNormalCry, 0 createsprite gAlphaSymbolSpriteTemplate ANIM_ATTACKER, 2 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -25027,10 +25052,11 @@ General_PrimalReversion_Omega: delay 20 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA waitforvisualfinish - createvisualtask AnimTask_TransformMon, 2, 0, 1 + createvisualtask AnimTask_TransformMon, 2, 0, 1, 0 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14 waitforvisualfinish + createvisualtask SoundTask_PlayNormalCry, 0 createsprite gOmegaSymbolSpriteTemplate ANIM_ATTACKER, 2 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -25042,7 +25068,7 @@ General_AffectionHangedOn:: loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 12, 3 createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER delay 15 - launchtask AnimTask_AffectionHangedOn 0x5 0x0 + createvisualtask AnimTask_AffectionHangedOn, 0x5 jumpargeq 0x0, FRIENDSHIP_100_TO_149, General_AffectionHangedOn_3Hearts jumpargeq 0x0, FRIENDSHIP_150_TO_199, General_AffectionHangedOn_4Hearts jumpargeq 0x0, FRIENDSHIP_200_TO_254, General_AffectionHangedOn_5Hearts @@ -25159,75 +25185,75 @@ Move_BREAKNECK_BLITZ:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_FLAT_ROCK - launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0x5 0x20 @ shake screen - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0x5 0x20 @ shake banks + createvisualtask AnimTask_HorizontalShake, 0x5, 0x5, 0x5, 0x20 @ shake screen + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0x5, 0x20 @ shake banks playsewithpan SE_M_EARTHQUAKE, 0x0 monbg ANIM_ATTACKER splitbgprio ANIM_ATTACKER delay 0x1 - launchtask AnimTask_BlendPalInAndOutByTag, 0x5, 0x5, ANIM_TAG_HOLLOW_ORB, 0x4c00, 0xe, 0x0, 0x3 - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0x0 - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0x2b - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0x55 - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0x80 - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0xaa - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0xd5 + createvisualtask AnimTask_BlendPalInAndOutByTag, 0x5, ANIM_TAG_HOLLOW_ORB, 0x4c00, 0xe, 0x0, 0x3 + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x0 + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x2b + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x55 + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x80 + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0xaa + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0xd5 delay 0xf - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0x0 - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0x2b - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0x55 - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0x80 - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0xaa - launchtemplate gBreakneckBlitzDanceSpriteTemplate 0x2 0x1 0xd5 + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x0 + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x2b + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x55 + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x80 + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0xaa + createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0xd5 waitforvisualfinish clearmonbg ANIM_ATTACKER - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish fadetobg BG_DRILL waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xf700 0x300 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf700, 0x300, 0x1, 0xffff waitbgfadein - setblends 0x80c + setalpha 12, 8 delay 0x10 - launchtask AnimTask_WindUpLunge 0x5 0x7 0x0 0xffe8 0x8 0x17 0xa 0x28 0xa + createvisualtask AnimTask_WindUpLunge, 0x5, 0x0, 0xffe8, 0x8, 0x17, 0xa, 0x28, 0xa delay 0x23 invisible ANIM_ATTACKER - launchtemplate gGrowingSuperpowerTemplate 0x83 0x1 0x0 + createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 0x8 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gBreakneckBlitzHitSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x1 @ 0, 0 + createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 @ 0, 0 delay 0x1 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gBreakneckBlitzHitSpriteTemplate 0x83 0x4 0xa 0xfff6 0x1 0x1 @ +10, -10 + createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0xa, 0xfff6, 0x1, 0x1 @ +10, -10 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 0x1 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gBreakneckBlitzHitSpriteTemplate 0x83 0x4 0xf 0xfff1 0x1 0x1 @ +15, -15 + createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0xf, 0xfff1, 0x1, 0x1 @ +15, -15 delay 0x1 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gBreakneckBlitzHitSpriteTemplate 0x83 0x4 0x14 0xffec 0x1 0x1 @ +20, -20 + createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0x14, 0xffec, 0x1, 0x1 @ +20, -20 delay 0x1 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gBreakneckBlitzHitSpriteTemplate 0x83 0x4 0x19 0xffe7 0x1 0x1 @ +25, -25 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe6 0x10 0x1 0x4 + createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0x19, 0xffe7, 0x1, 0x1 @ +25, -25 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0x10, 0x1, 0x4 waitforvisualfinish - launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x8 0xfe00 0x1 0x0 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x0 0x4 0x0 0xc 0x1 - launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x4 0x0 0xc 0x1 + createvisualtask AnimTask_RotateMonSpriteToSide, 0x2, 0x8, 0xfe00, 0x1, 0x0 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x0, 0x4, 0x0, 0xc, 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x2, 0x1, 0x4, 0x0, 0xc, 0x1 waitforvisualfinish delay 0x4 - launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x8 0xfe00 0x1 0x1 + createvisualtask AnimTask_RotateMonSpriteToSide, 0x2, 0x8, 0xfe00, 0x1, 0x1 delay 0xa delay 0x19 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x6 delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5 waitforvisualfinish delay 0x10 blendoff clearmonbg ANIM_DEF_PARTNER - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish call UnsetPsychicBg end @@ -25239,85 +25265,85 @@ Move_ALL_OUT_PUMMELING: loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_FLAT_ROCK loadspritegfx ANIM_TAG_FOCUS_ENERGY - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish call EndureEffect loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER 0x9 0x2 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x1f - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x1f + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call EndureEffect waitforvisualfinish fadetobg BG_ROCK_WRECKER waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x800 0x0 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x800, 0x0, 0x0, 0xffff waitbgfadein - setblends 0x80c + setalpha 12, 8 monbg ANIM_DEF_PARTNER - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x2 SOUND_PAN_TARGET 0x1 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xffd0 0x18 0x0 0x0 0xa 0x1 ANIM_FOOT_1 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x2, SOUND_PAN_TARGET, 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x18, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_1, 0x1 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xfffa 0x12 0x0 0x0 0xa 0x1 ANIM_CHOP 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xfffa, 0x12, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xffc0 0x10 0x0 0x0 0xa 0x1 ANIM_FIST_1 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x10, 0x0, 0x0, 0xa, 0x1, ANIM_FIST_1, 0x1 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xffd0 0x15 0x0 0x0 0xa 0x1 ANIM_FOOT_2 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x15, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_2, 0x1 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xffd0 0x14 0x0 0x0 0xa 0x1 ANIM_FIST_1 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x14, 0x0, 0x0, 0xa, 0x1, ANIM_FIST_1, 0x1 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xffe0 0x17 0x0 0x0 0xa 0x1 ANIM_CHOP 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x17, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xffc0 0x11 0x0 0x0 0xa 0x1 ANIM_FOOT_1 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x11, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_1, 0x1 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xffb0 0x10 0x0 0x0 0xa 0x1 ANIM_FOOT_2 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffb0, 0x10, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_2, 0x1 delay 0x2 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 - launchtemplate gAllOutPummelingOnslaughtSpriteTemplate 0x2 0x8 0xffa0 0x15 0x0 0x0 0xa 0x1 ANIM_CHOP 0x1 + createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x15, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1 delay 0x2 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 0x10 - launchtask AnimTask_WindUpLunge 0x5 0x7 0x0 0xffe8 0x8 0x17 0xa 0x28 0xa + createvisualtask AnimTask_WindUpLunge, 0x5, 0x0, 0xffe8, 0x8, 0x17, 0xa, 0x28, 0xa delay 0x23 invisible ANIM_ATTACKER - launchtemplate gGrowingSuperpowerTemplate 0x83 0x1 0x0 + createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 0xc playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffd0 0x0 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffd0, 0x0, 0x0, 0x4 waitforvisualfinish delay 0x30 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x7 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x7 delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5 waitforvisualfinish delay 0x10 blendoff clearmonbg ANIM_DEF_PARTNER - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish call UnsetPsychicBg end @@ -25329,13 +25355,13 @@ Move_SUPERSONIC_SKYSTRIKE: loadspritegfx ANIM_TAG_FOCUS_ENERGY @ focus energy loadspritegfx ANIM_TAG_BIRD @ sky attack bird loadspritegfx ANIM_TAG_IMPACT @ hit - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish monbg ANIM_DEF_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x1 0x8 0x0 0x0 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x0 0x2 0x10 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x1, 0x8, 0x0, 0x0 + createvisualtask AnimTask_HorizontalShake, 0x5, 0x0, 0x2, 0x10 playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x1 0xf 0x0 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x1, 0xf, 0x0, 0x7fff clearmonbg ANIM_DEF_PARTNER call EndureEffect delay 0x8 @@ -25343,14 +25369,14 @@ Move_SUPERSONIC_SKYSTRIKE: delay 0x20 delay 0xA playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 delay 0x2 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0xc 0x4 0xfff0 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0x10 0x4 0xfff6 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xe 0x4 0xffee 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xc 0x4 0xfff0 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 delay 0x30 - launchtask AnimTask_DoomDesireLightBeam 0x5 0x0 + createvisualtask AnimTask_DoomDesireLightBeam, 0x5 delay 0x9 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER delay 0x9 @@ -25360,37 +25386,37 @@ Move_SUPERSONIC_SKYSTRIKE: delay 0x19 fadetobg BG_SKY waitbgfadeout - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 0x1 SupersonicSkystrikeOnPlayer SupersonicSkystrikeOnOpponent: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xf800 0x800 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf800, 0x800, 0x0, 0xffff goto FinishSupersonicSkystrike SupersonicSkystrikeOnPlayer: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x800 0xf800 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x800, 0xf800, 0x0, 0xffff FinishSupersonicSkystrike: waitbgfadein waitforvisualfinish monbg ANIM_DEF_PARTNER - setblends 0x80c + setalpha 12, 8 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER - launchtemplate gSupersonicSkystrikeFlySpriteTemplate 0x2 0x1 0x14 + createsprite gSupersonicSkystrikeFlySpriteTemplate, ANIM_ATTACKER, 2, 0x14 delay 0x10 - launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xff00 0x15 0x0 0x4 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x0 0xc 0xffe8 0xfff0 0x18 @ 12, -48, -16, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x0 0x10 0xffda 0xfff6 0x18 @ 16, -16, -10, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x1 0xe 0xffec 0xffee 0x18 @ 14, -52, -18, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x1 0xc 0xffdc 0xfff0 0x18 @ 12, -32, -16, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x0 0xc 0xffd0 0xfff0 0x18 @ 12, -24, -16, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x0 0x10 0xfff0 0xfff6 0x18 @ 16, -38, -10, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x1 0xe 0xffcc 0xffee 0x18 @ 14, -20, -18, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x1 0xc 0xffe0 0xfff0 0x18 @ 12, -36, -16, 24 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 @ 12, -48, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x10, 0xffda, 0xfff6, 0x18 @ 16, -16, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xe, 0xffec, 0xffee, 0x18 @ 14, -52, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 @ 12, -32, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xc, 0xffd0, 0xfff0, 0x18 @ 12, -24, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x10, 0xfff0, 0xfff6, 0x18 @ 16, -38, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xe, 0xffcc, 0xffee, 0x18 @ 14, -20, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xc, 0xffe0, 0xfff0, 0x18 @ 12, -36, -16, 24 delay 0x30 clearmonbg ANIM_DEF_PARTNER blendoff - launchtask AnimTask_AllBanksVisible 0xA 0x0 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 + createvisualtask AnimTask_AllBanksVisible, 0xA + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 call UnsetPsychicBg waitforvisualfinish end @@ -25402,82 +25428,82 @@ Move_ACID_DOWNPOUR: loadspritegfx ANIM_TAG_POISON_BUBBLE @ poison bubbles fadetobg BG_POISON waitbgfadeout - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 0x1 AcidDownpourOnPlayer AcidDownpourOnOpponent: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xff10 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xff10, 0x1, 0xffff goto FinishAcidDownpour AcidDownpourOnPlayer: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xf0 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xf0, 0x1, 0xffff FinishAcidDownpour: waitbgfadein - setblends 0x80c + setalpha 12, 8 monbg ANIM_ATTACKER loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 0xd, 0x6 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x32 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x0, 0x2, 0x32, 0x1 call AcidDownpourFlareOnAttacker call AcidDownpourFlareOnAttacker call AcidDownpourFlareOnAttacker delay 0x5 clearmonbg ANIM_ATTACKER - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish blendoff delay 0x20 loopsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET, 0xd, 0x3 - launchtemplate gAcidDownpourReversalSpriteTemplate 0x2 0x2 0x1a 0x0 - launchtemplate gAcidDownpourReversalSpriteTemplate 0x2 0x2 0x1a 0x2a - launchtemplate gAcidDownpourReversalSpriteTemplate 0x2 0x2 0x1a 0x54 - launchtemplate gAcidDownpourReversalSpriteTemplate 0x2 0x2 0x1a 0x7e - launchtemplate gAcidDownpourReversalSpriteTemplate 0x2 0x2 0x1a 0xa8 - launchtemplate gAcidDownpourReversalSpriteTemplate 0x2 0x2 0x1a 0xd2 + createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x0 + createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x2a + createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x54 + createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x7e + createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0xa8 + createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0xd2 delay 0x20 panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 - launchtask AnimTask_CreateSurfWave 0x2 0x1 ANIM_SURF_PAL_SLUDGE_WAVE - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x0 0x7 0xd87c - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x2 0x32 0x1 + createvisualtask AnimTask_CreateSurfWave, 0x2, ANIM_SURF_PAL_SLUDGE_WAVE + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x0, 0x7, 0xd87c + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x2, 0x32, 0x1 call AcidDownpourFlare call AcidDownpourFlare delay 0x15 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xfd00 0x15 0x0 0x2a + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfd00, 0x15, 0x0, 0x2a delay 0x2c - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x7 0x0 0xd87c + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x7, 0x0, 0xd87c invisible ANIM_TARGET waitforvisualfinish - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 restorebg waitbgfadeout setarg 0x7 0xffff - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitbgfadein waitforvisualfinish end AcidDownpourFlare: - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_TARGET + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_TARGET delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_TARGET + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_TARGET delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_TARGET + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_TARGET delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_TARGET + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_TARGET delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_TARGET + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_TARGET delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_TARGET + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_TARGET delay 0x2 return AcidDownpourFlareOnAttacker: - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gAcidDownpourAuraSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x2 return @@ -25487,36 +25513,36 @@ Move_TECTONIC_RAGE: loadspritegfx ANIM_TAG_MUD_SAND @ rollout small rocks loadspritegfx ANIM_TAG_ROCKS @ rollout loadspritegfx ANIM_TAG_IMPACT @ hit - launchtemplate gDirtMoundSpriteTemplate 0x1 0x3 0x0 0x0 0xb4 - launchtemplate gDirtMoundSpriteTemplate 0x1 0x3 0x0 0x1 0xb4 + createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0x0, 0x0, 0xb4 + createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0x0, 0x1, 0xb4 monbg_static ANIM_ATTACKER delay 0x1 - launchtask AnimTask_DigDownMovement 0x2 0x1 0x0 + createvisualtask AnimTask_DigDownMovement, 0x2, 0x0 delay 0x6 call DigThrowDirt call DigThrowDirt call DigThrowDirt call DigThrowDirt - launchtask AnimTask_TectonicRageRollout 0x2 0x0 + createvisualtask AnimTask_TectonicRageRollout, 0x2 call DigThrowDirt - setblends 0x80c + setalpha 12, 8 delay 0x20 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER monbg ANIM_TARGET - launchtemplate gBasicHitSplatSpriteTemplate 0x4 0x4 0x0 0x0 0x1 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x1, 0x2 delay 0x1 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xff00 0x15 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 delay 0xa waitforvisualfinish clearmonbg ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish invisible ANIM_TARGET delay 0x5 invisible ANIM_ATTACKER waitforvisualfinish delay 0xa - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 fadetobg BG_TECTONIC_RAGE @ brown/yellow sky uppercut unloadspritegfx ANIM_TAG_DIRT_MOUND @ dig unloadspritegfx ANIM_TAG_MUD_SAND @ rollout small rocks @@ -25527,73 +25553,73 @@ Move_TECTONIC_RAGE: loadspritegfx ANIM_TAG_EXPLOSION_2 @ explosion waitbgfadeout visible ANIM_TARGET - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xf800 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xf800, 0x0, 0xffff waitbgfadein playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound delay 0x1e - launchtemplate gEruptionFallingRockSpriteTemplate 0x28 0x5 0xc8 0xffe0 0x0 0x64 0x0 - launchtemplate gEruptionFallingRockSpriteTemplate 0x28 0x5 0x1e 0xffe0 0x10 0x5a 0x1 - launchtemplate gEruptionFallingRockSpriteTemplate 0x28 0x5 0x96 0xffe0 0x20 0x3c 0x2 - launchtemplate gEruptionFallingRockSpriteTemplate 0x28 0x5 0x5a 0xffe0 0x30 0x50 0x3 - launchtemplate gEruptionFallingRockSpriteTemplate 0x28 0x5 0x6e 0xffe0 0x40 0x32 0x0 - launchtemplate gEruptionFallingRockSpriteTemplate 0x28 0x5 0x3c 0xffe0 0x50 0x46 0x1 + createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0xc8, 0xffe0, 0x0, 0x64, 0x0 + createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x1e, 0xffe0, 0x10, 0x5a, 0x1 + createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x96, 0xffe0, 0x20, 0x3c, 0x2 + createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x5a, 0xffe0, 0x30, 0x50, 0x3 + createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x6e, 0xffe0, 0x40, 0x32, 0x0 + createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x3c, 0xffe0, 0x50, 0x46, 0x1 delay 0x16 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0x8 0x3c - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0x8 0x3c + createvisualtask AnimTask_HorizontalShake, 0x5, 0x5, 0x8, 0x3c + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0x8, 0x3c loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 0x10, 0xc delay 0x30 call TectonicRageExplosion playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0xffe0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0xffec 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x42 0x6 0x0 0xfff0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x42 0x6 0x14 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x42 0x6 0x20 0x0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x42 0x6 0x14 0xa 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0x0 0x10 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0xffec 0xa 0x18 0x0 0x0 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0 call TectonicRageExplosion playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0xffc0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x6 0x6 0xffd8 0xffec 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x46 0x6 0x0 0xffe0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x46 0x6 0x28 0xffec 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x42 0x6 0x40 0x0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x42 0x6 0x28 0x14 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0x0 0x20 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0xffd8 0x14 0x18 0x0 0x0 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffd8, 0xffec, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffe0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x28, 0xffec, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x28, 0x14, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x18, 0x0, 0x0, 0x0 call TectonicRageExplosion playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0xffa0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x6 0x6 0xffc4 0xffe2 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x46 0x6 0x0 0xffd0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x46 0x6 0x3c 0xffe2 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x42 0x6 0x60 0x0 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x42 0x6 0x3c 0x1e 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0x0 0x30 0x18 0x0 0x0 0x0 - launchtemplate gTectonicRageBlastBurnSpriteTemplate 0x2 0x6 0xffc4 0x1e 0x18 0x0 0x0 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffc4, 0xffe2, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffd0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x3c, 0xffe2, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x60, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x3c, 0x1e, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x30, 0x18, 0x0, 0x0, 0x0 + createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc4, 0x1e, 0x18, 0x0, 0x0, 0x0 call TectonicRageExplosion waitforvisualfinish call UnsetPsychicBg waitbgfadein - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end TectonicRageExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gTectonicRageExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gTectonicRageExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gTectonicRageExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gTectonicRageExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gTectonicRageExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return @@ -25605,27 +25631,27 @@ Move_CONTINENTAL_CRUSH:: loadspritegfx ANIM_TAG_FOCUS_ENERGY @ focus energy loadspritegfx ANIM_TAG_IMPACT @ hit loadspritegfx ANIM_TAG_REALLY_BIG_ROCK - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call ContinentalCrashBuffEffect delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x2dd3 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x2dd3 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call ContinentalCrashBuffEffect delay 0x8 call ContinentalCrashBuffEffect delay 0x4 delay 0xA playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 delay 0x2 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0xc 0x4 0xfff0 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0x10 0x4 0xfff6 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xe 0x4 0xffee 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xc 0x4 0xfff0 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 delay 0x30 - launchtask AnimTask_GetTimeOfDay 0x2 0x0 + createvisualtask AnimTask_GetTimeOfDay, 0x2 jumpargeq 0x0 0x0 ContinentalCrushDay jumpargeq 0x0 0x2 ContinentalCrushAfternoon ContinentalCrushNight: @@ -25643,15 +25669,15 @@ FinishContinentalCrush: delay 0x5 visible ANIM_ATTACKER delay 0x4 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x2dd3 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x2dd3 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call ContinentalCrushStockpileRocks playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call ContinentalCrushStockpileRocks - launchtemplate gContinentalCrushGrowingRockSpriteTemplate 0x2 0x1 0x0 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x2dd3 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createsprite gContinentalCrushGrowingRockSpriteTemplate, ANIM_ATTACKER, 2, 0x0 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x2dd3 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call ContinentalCrushStockpileRocks playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER @@ -25661,87 +25687,87 @@ FinishContinentalCrush: fadetobg BG_IN_AIR waitbgfadeout visible ANIM_TARGET - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xf800 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xf800, 0x0, 0xffff waitbgfadein loopsewithpan SE_FALL, SOUND_PAN_ATTACKER, 0x20, 0x4 @;Falling sound delay 0x1e - launchtemplate gContinentalCrushEruptionSpriteTemplate 0x28 0x5 0xc8 0xffe0 0x0 0x64 0x0 - launchtemplate gContinentalCrushEruptionSpriteTemplate 0x28 0x5 0x1e 0xffe0 0x10 0x5a 0x1 - launchtemplate gContinentalCrushEruptionSpriteTemplate 0x28 0x5 0x96 0xffe0 0x20 0x3c 0x2 - launchtemplate gContinentalCrushEruptionSpriteTemplate 0x28 0x5 0x5a 0xffe0 0x30 0x50 0x3 - launchtemplate gContinentalCrushEruptionSpriteTemplate 0x28 0x5 0x6e 0xffe0 0x40 0x32 0x0 - launchtemplate gContinentalCrushEruptionSpriteTemplate 0x28 0x5 0x3c 0xffe0 0x50 0x46 0x1 + createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0xc8, 0xffe0, 0x0, 0x64, 0x0 + createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x1e, 0xffe0, 0x10, 0x5a, 0x1 + createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x96, 0xffe0, 0x20, 0x3c, 0x2 + createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x5a, 0xffe0, 0x30, 0x50, 0x3 + createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x6e, 0xffe0, 0x40, 0x32, 0x0 + createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x3c, 0xffe0, 0x50, 0x46, 0x1 delay 0x16 - launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0x8 0x1c - launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0x8 0x1c + createvisualtask AnimTask_HorizontalShake, 0x5, 0x5, 0x8, 0x1c + createvisualtask AnimTask_HorizontalShake, 0x5, 0x4, 0x8, 0x1c unloadspritegfx ANIM_TAG_ROUND_SHADOW @ fly unloadspritegfx ANIM_TAG_MUD_SAND @ dig unloadspritegfx ANIM_TAG_FOCUS_ENERGY @ focus energy unloadspritegfx ANIM_TAG_IMPACT @ hit loadspritegfx ANIM_TAG_REALLY_BIG_ROCK delay 0x30 - launchtemplate gContinentalCrushBigRockStompSpriteTemplate, 0x82, 0x4, 0, 0x3c, 3, ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x0 0x7 0x0000 + createsprite gContinentalCrushBigRockStompSpriteTemplate, ANIM_TARGET, 2, 0, 0x3c, 3, ANIM_TARGET + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x0, 0x7, 0x0000 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xff00 0x15 0x0 0x4 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x0 0xc 0xffe8 0xfff0 0x18 @ 12, -48, -16, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x0 0x10 0xffda 0xfff6 0x18 @ 16, -16, -10, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x1 0xe 0xffec 0xffee 0x18 @ 14, -52, -18, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x1 0xc 0xffdc 0xfff0 0x18 @ 12, -32, -16, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x0 0xc 0xffd0 0xfff0 0x18 @ 12, -24, -16, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x0 0x10 0xfff0 0xfff6 0x18 @ 16, -38, -10, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x1 0xe 0xffcc 0xffee 0x18 @ 14, -20, -18, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x1 0xc 0xffe0 0xfff0 0x18 @ 12, -36, -16, 24 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 @ 12, -48, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10, 0xffda, 0xfff6, 0x18 @ 16, -16, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xe, 0xffec, 0xffee, 0x18 @ 14, -52, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 @ 12, -32, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xc, 0xffd0, 0xfff0, 0x18 @ 12, -24, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10, 0xfff0, 0xfff6, 0x18 @ 16, -38, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xe, 0xffcc, 0xffee, 0x18 @ 14, -20, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xc, 0xffe0, 0xfff0, 0x18 @ 12, -36, -16, 24 delay 0x5 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x7 0x0 0x0000 @undo pal change on tgt + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x7, 0x0, 0x0000 @undo pal change on tgt delay 0x10 waitforvisualfinish - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 waitforvisualfinish restorebg waitbgfadeout setarg 0x7 0xffff - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitbgfadein delay 0x4 waitforvisualfinish end ContinentalCrashBuffEffect: - launchtemplate gContinentalCrushFocusEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gContinentalCrushFocusEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gContinentalCrushFocusEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gContinentalCrushFocusEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gContinentalCrushFocusEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return ContinentalCrushStockpileRocks: - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x0 0xffc0 0x20 @ 0,-32 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x0, 0xffc0, 0x20 @ 0,-32 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x2c 0xffd4 0x20 @ +44,-44 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x2c, 0xffd4, 0x20 @ +44,-44 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x3c 0x0 0x20 @ +60,0 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x3c, 0x0, 0x20 @ +60,0 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x28 0x28 0x20 @ +40,+40 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x28, 0x28, 0x20 @ +40,+40 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x0 0x38 0x20 @ +0,+56 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x0, 0x38, 0x20 @ +0,+56 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0xffda 0x26 0x20 @ -38,+38 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0xffda, 0x26, 0x20 @ -38,+38 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0xffca 0x0 0x20 @ -54, +0 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0xffca, 0x0, 0x20 @ -54, +0 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0xffdc 0xffdc 0x20 @ -36, -36 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0xffdc, 0xffdc, 0x20 @ -36, -36 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x0 0xffce 0x20 @ 0, -50 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x0, 0xffce, 0x20 @ 0, -50 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x22 0xffde 0x20 @ +34, -34 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x22, 0xffde, 0x20 @ +34, -34 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x2e 0x0 0x20 @ +46, +0 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x2e, 0x0, 0x20 @ +46, +0 delay 0x2 - launchtemplate gContinentalCrushNeedleArmSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x0 0x20 0x20 0x20 @ +32, +32 + createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x20, 0x20, 0x20 @ +32, +32 delay 0x2 return @@ -25752,12 +25778,12 @@ Move_SAVAGE_SPIN_OUT:: loadspritegfx ANIM_TAG_STRING @string shot loadspritegfx ANIM_TAG_SPIDER_WEB @spider web loadspritegfx ANIM_TAG_MUD_SAND @rocks - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish monbg ANIM_ATTACKER - setblends 0x80c - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x4 0x0 - launchtemplate gSavageSpinOutGreenChargeSpriteTemplate 0x2 0x1 0x0 + setalpha 12, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x4, 0x0 + createsprite gSavageSpinOutGreenChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 delay 0x19 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 0x14 @@ -25765,17 +25791,17 @@ Move_SAVAGE_SPIN_OUT:: delay 0xf playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x4 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x4, 0x0, 0x0 clearmonbg ANIM_ATTACKER - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT call gSavageSpinOutStringBlastSpriteTemplateSHOT - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x5 0x0 0x32 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x5, 0x0, 0x32, 0x1 call gSavageSpinOutStringBlastSpriteTemplateSHOT call gSavageSpinOutStringBlastSpriteTemplateSHOT call gSavageSpinOutStringBlastSpriteTemplateSHOT - launchtemplate gSpiderWebSpriteTemplate 0x82 0x0 @ spider web + createsprite gSpiderWebSpriteTemplate, ANIM_TARGET, 2 @ spider web call gSavageSpinOutStringBlastSpriteTemplateSHOT delay 0xe blendoff @@ -25787,18 +25813,18 @@ Move_SAVAGE_SPIN_OUT:: delay 0x1 invisible ANIM_TARGET delay 0x0 - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 delay 0x0 jumpargeq 0x7 ANIM_TARGET SavageSpinOutOnPlayer SavageSpinOutOnOpponent: - launchtemplate gSavageSpinOutCacoonSpriteTemplate 0x82 0x6 0x0 ANIM_TARGET 0x2 0x0 0x0 0x80 + createsprite gSavageSpinOutCacoonSpriteTemplate, ANIM_TARGET, 2, 0x0, ANIM_TARGET, 0x2, 0x0, 0x0, 0x80 goto FinishSavageSpinOut SavageSpinOutOnPlayer: - launchtemplate gSavageSpinOutCacoonSpriteTemplate 0x3 0x6 0x0 ANIM_TARGET 0x2 0x0 0x0 0x80 + createsprite gSavageSpinOutCacoonSpriteTemplate, ANIM_ATTACKER, 3, 0x0, ANIM_TARGET, 0x2, 0x0, 0x0, 0x80 FinishSavageSpinOut: fadetobg BG_IN_AIR waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0x1000 0x0 0xffff @+0x1000 + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x1000, 0x0, 0xffff @+0x1000 waitbgfadein delay 0x10 call SlowSavageSpinOutBackgroundSpeed @@ -25824,7 +25850,7 @@ FinishSavageSpinOut: delay 0xc call UnsetPsychicBg setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles - no idea why though - something to do with the background scrolling - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 @ user fly on screen on enemy side + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 @ user fly on screen on enemy side playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 0x1E unloadspritegfx ANIM_TAG_MUD_SAND @@ -25832,69 +25858,69 @@ FinishSavageSpinOut: loadspritegfx ANIM_TAG_CUT @cut loadspritegfx ANIM_TAG_EXPLOSION_2 @explosion loadspritegfx ANIM_TAG_AIR_WAVE_2 @white/gray - launchtask AnimTask_ShakeMonInPlace 0x82 0x5 ANIM_TARGET 0x4 0x0 0xc 0x1 - launchtask AnimTask_ShakeMonInPlace 0x82 0x5 ANIM_TARGET 0x4 0x0 0xc 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x82, ANIM_TARGET, 0x4, 0x0, 0xc, 0x1 + createvisualtask AnimTask_ShakeMonInPlace, 0x82, ANIM_TARGET, 0x4, 0x0, 0xc, 0x1 createsprite gSavageSpinOutGreenCutSpriteTemplate, ANIM_TARGET, 2, 0x28, 0xffe0, 0x0 createsprite gSavageSpinOutGreenCutSpriteTemplate, ANIM_TARGET, 2, 0x28, 0xffd0, 0x0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET delay 0xc playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSavageSpinOutWhiteExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSavageSpinOutWhiteExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 - launchtemplate gSpiderWebSpriteTemplate 0x82 0x0 @ spider web + createsprite gSpiderWebSpriteTemplate, ANIM_TARGET, 2 @ spider web playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSavageSpinOutWhiteExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSavageSpinOutWhiteExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSavageSpinOutWhiteExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 waitforvisualfinish - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end gSavageSpinOutStringBlastSpriteTemplateSHOT: playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - launchtemplate gSavageSpinOutStringBlastSpriteTemplate 0x82 0x7 0xe 0xfff4 0x0 0xfff4 0xf 0x0 0x0 - launchtemplate gSavageSpinOutStringBlastSpriteTemplate 0x82 0x7 0x1a 0x8 0xc 0x8 0xf 0x0 0x0 + createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0xe, 0xfff4, 0x0, 0xfff4, 0xf, 0x0, 0x0 + createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0x1a, 0x8, 0xc, 0x8, 0xf, 0x0, 0x0 delay 0x3 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - launchtemplate gSavageSpinOutStringBlastSpriteTemplate 0x82 0x7 0xe 0xfff4 0x0 0xfff4 0xf 0x1 0x0 - launchtemplate gSavageSpinOutStringBlastSpriteTemplate 0x82 0x7 0x1a 0x8 0xc 0x8 0xf 0x1 0x0 + createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0xe, 0xfff4, 0x0, 0xfff4, 0xf, 0x1, 0x0 + createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0x1a, 0x8, 0xc, 0x8, 0xf, 0x1, 0x0 delay 0x3 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - launchtemplate gSavageSpinOutStringBlastSpriteTemplate 0x82 0x7 0xe 0xfff4 0x0 0xfff4 0xf 0x2 0x0 - launchtemplate gSavageSpinOutStringBlastSpriteTemplate 0x82 0x7 0x1a 0x8 0xc 0x8 0xf 0x2 0x0 + createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0xe, 0xfff4, 0x0, 0xfff4, 0xf, 0x2, 0x0 + createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0x1a, 0x8, 0xc, 0x8, 0xf, 0x2, 0x0 delay 0x3 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - launchtemplate gSavageSpinOutStringBlastSpriteTemplate 0x82 0x7 0xe 0xfff4 0x0 0xfff4 0xf 0x3 0x0 - launchtemplate gSavageSpinOutStringBlastSpriteTemplate 0x82 0x7 0x1a 0x8 0xc 0x8 0xf 0x3 0x0 + createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0xe, 0xfff4, 0x0, 0xfff4, 0xf, 0x3, 0x0 + createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0x1a, 0x8, 0xc, 0x8, 0xf, 0x3, 0x0 delay 0x3 return SavageSpinOutCrash_1: createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff8, 0x1, 0x1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x0 0xc 0xffe8 0xfff0 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x0 0x10 0xffda 0xfff6 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x1 0xe 0xffec 0xffee 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x1 0xc 0xffdc 0xfff0 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0xffda, 0xfff6, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xe, 0xffec, 0xffee, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 return SavageSpinOutCrash_2: createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xfff8, 0x1, 0x1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x0 0xc 0xffd0 0xfff0 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x0 0x10 0xfff0 0xfff6 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x1 0xe 0xffcc 0xffee 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x1 0xc 0xffe0 0xfff0 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xc, 0xffd0, 0xfff0, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0xfff0, 0xfff6, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xe, 0xffcc, 0xffee, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xc, 0xffe0, 0xfff0, 0x18 return SlowSavageSpinOutBackgroundSpeed: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xfd56 0x0 0xffff @-0x2aa + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xfd56, 0x0, 0xffff @-0x2aa delay 0x1 return @@ -25906,13 +25932,13 @@ Move_NEVER_ENDING_NIGHTMARE:: loadspritegfx ANIM_TAG_FIRE_PLUME @blast burn loadspritegfx ANIM_TAG_POISON_BUBBLE @purple loadspritegfx ANIM_TAG_VERTICAL_HEX @hex - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call NeverendingNightmareBuffEffect delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x40c0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x40c0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call NeverendingNightmareBuffEffect delay 0x8 call NeverendingNightmareBuffEffect @@ -25933,100 +25959,100 @@ Move_NEVER_ENDING_NIGHTMARE:: waitforvisualfinish fadetobg BG_NEVERENDING_NIGHTMARE waitbgfadein - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x4 0x78 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x4, 0x78, 0x1 playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET call NeverendingNightmareHands call NeverendingNightmareHands delay 0xa - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x0 0x10 0x40c0 @ fade to purple + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x0, 0x10, 0x40c0 @ fade to purple playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET loadspritegfx ANIM_TAG_EXPLOSION_2 unloadspritegfx ANIM_TAG_THIN_RING - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_VERTICAL_HEX, 0x2, 0xA, 0xA, 0x580A @;Purple + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_VERTICAL_HEX, 0x2, 0xA, 0xA, 0x580A @;Purple call NeverendingNightmareGeyser playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_TARGET - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0xffe0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0xffec 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x42 0x6 0x0 0xfff0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x42 0x6 0x14 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x42 0x6 0x20 0x0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x42 0x6 0x14 0xa 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0x0 0x10 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0xffec 0xa 0x18 0x0 0x0 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET call NeverendingNightmareGeyser playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0xffc0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x6 0x6 0xffd8 0xffec 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x46 0x6 0x0 0xffe0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x46 0x6 0x28 0xffec 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x42 0x6 0x40 0x0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x42 0x6 0x28 0x14 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0x0 0x20 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0xffd8 0x14 0x18 0x0 0x0 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffd8, 0xffec, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffe0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x28, 0xffec, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x28, 0x14, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x18, 0x0, 0x0, 0x0 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET call NeverendingNightmareGeyser playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0xffa0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x6 0x6 0xffc4 0xffe2 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x46 0x6 0x0 0xffd0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x46 0x6 0x3c 0xffe2 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x42 0x6 0x60 0x0 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x42 0x6 0x3c 0x1e 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0x0 0x30 0x18 0x0 0x0 0x0 - launchtemplate gNeverEndingNightmareBlastBurnSpriteTemplate 0x2 0x6 0xffc4 0x1e 0x18 0x0 0x0 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffc4, 0xffe2, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffd0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x3c, 0xffe2, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x60, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x3c, 0x1e, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x30, 0x18, 0x0, 0x0, 0x0 + createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc4, 0x1e, 0x18, 0x0, 0x0, 0x0 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET call NeverendingNightmareGeyser - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x10 0x0 0x40c0 @ fade to normal + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x10, 0x0, 0x40c0 @ fade to normal waitforvisualfinish restorebg waitbgfadeout - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end NeverendingNightmareBuffEffect: - launchtemplate gNeverEndingNightmareFocusEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gNeverEndingNightmareFocusEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gNeverEndingNightmareFocusEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gNeverEndingNightmareFocusEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gNeverEndingNightmareFocusEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return NeverendingNightmareTargetRings: - launchtemplate gNeverEndingNightmareRingTargetSpriteTemplate 0x83 0x4 0x0 0x0 0x100 0x0 + createsprite gNeverEndingNightmareRingTargetSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0 delay 0x8 return NeverendingNightmareAttackerRings: - launchtemplate gNeverEndingNightmareRingAttackerSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gNeverEndingNightmareRingAttackerSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 delay 0xe return NeverendingNightmareHands: - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x0 0xffc0 0x20 @ 0,-32 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x0, 0xffc0, 0x20 @ 0,-32 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x2c 0xffd4 0x20 @ +44,-44 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x2c, 0xffd4, 0x20 @ +44,-44 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x3c 0x0 0x20 @ +60,0 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x3c, 0x0, 0x20 @ +60,0 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x28 0x28 0x20 @ +40,+40 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x28, 0x28, 0x20 @ +40,+40 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x0 0x38 0x20 @ +0,+56 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x0, 0x38, 0x20 @ +0,+56 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0xffda 0x26 0x20 @ -38,+38 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xffda, 0x26, 0x20 @ -38,+38 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0xffca 0x0 0x20 @ -54, +0 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xffca, 0x0, 0x20 @ -54, +0 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0xffdc 0xffdc 0x20 @ -36, -36 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xffdc, 0xffdc, 0x20 @ -36, -36 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x0 0xffce 0x20 @ 0, -50 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x0, 0xffce, 0x20 @ 0, -50 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x22 0xffde 0x20 @ +34, -34 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x22, 0xffde, 0x20 @ +34, -34 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x2e 0x0 0x20 @ +46, +0 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x2e, 0x0, 0x20 @ +46, +0 delay 0x2 - launchtemplate gNeverEndingNightmareHandSpriteTemplate 0x82 0x5 ANIM_TARGET 0x0 0x20 0x20 0x20 @ +32, +32 + createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x20, 0x20, 0x20 @ +32, +32 delay 0x2 return NeverendingNightmareGeyser: @@ -26091,13 +26117,13 @@ Move_CORKSCREW_CRASH:: loadspritegfx ANIM_TAG_MUD_SAND @rock monbg ANIM_ATTACKER invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0xb 0x6318 @fade atker to gray - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_SPIKES, 0x0, 0xC, 0xC, 0x6318 @;Gray + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0xb, 0x6318 @fade atker to gray + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_SPIKES, 0x0, 0xC, 0xC, 0x6318 @;Gray playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x4f 0x1 - launchtemplate gCorkscrewCrashChargeSpriteTemplate 0x2 0x1 0x0 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x0, 0x2, 0x4f, 0x1 + createsprite gCorkscrewCrashChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 call CorkscrewCrashMetalFlare call CorkscrewCrashMetalFlare call CorkscrewCrashMetalFlare @@ -26105,50 +26131,50 @@ Move_CORKSCREW_CRASH:: call CorkscrewCrashMetalFlare waitforvisualfinish clearmonbg ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x0 0xb 0x0 0x6318 @fade atker back + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x0, 0xb, 0x0, 0x6318 @fade atker back waitforvisualfinish stopsound invisible ANIM_ATTACKER - launchtemplate gCorkscrewCrashCorkscrewFlyUpSpriteTemplate 0x2 0x7 0x0 0x0 0x4e0 0x24 0x15 0x1 ANIM_ATTACKER + createsprite gCorkscrewCrashCorkscrewFlyUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x4e0, 0x24, 0x15, 0x1, ANIM_ATTACKER playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER fadetobg BG_HIGHSPEED_OPPONENT waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xf700 0x0 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf700, 0x0, 0x1, 0xffff waitbgfadein - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET CorkscrewCrashOnPlayer CorkscrewCrashOnOpponent: - launchtemplate gCorkscrewCrashRightUpSpriteTemplate 0x32 0x5 0xfff0 0x88 0x100 0x38 0x15 + createsprite gCorkscrewCrashRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x88, 0x100, 0x38, 0x15 waitforvisualfinish delay 0xa - launchtemplate gCorkscrewCrashLeftUpSpriteTemplate 0x32 0x5 0x0120 0x38 0xfff0 0x38 0x15 + createsprite gCorkscrewCrashLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x38, 0xfff0, 0x38, 0x15 waitforvisualfinish visible ANIM_TARGET delay 0x5 goto FinishCorkscrewCrash CorkscrewCrashOnPlayer: - launchtemplate gCorkscrewCrashLeftDownSpriteTemplate 0x32 0x5 0x0120 0x08 0xfff0 0x0f 0x15 + createsprite gCorkscrewCrashLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x08, 0xfff0, 0x0f, 0x15 waitforvisualfinish delay 0xa - launchtemplate gCorkscrewCrashRightDownSpriteTemplate 0x32 0x5 0xfff0 0x38 0x100 0x38 0x15 + createsprite gCorkscrewCrashRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x38, 0x100, 0x38, 0x15 waitforvisualfinish visible ANIM_TARGET delay 0x5 FinishCorkscrewCrash: - launchtemplate gCorkscrewCrashStrikeSpriteTemplate 0x82 0x1 0x14 + createsprite gCorkscrewCrashStrikeSpriteTemplate, ANIM_TARGET, 2, 0x14 loadspritegfx ANIM_TAG_IMPACT @hit delay 0x10 stopsound playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x0 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xff00 0xf 0x0 0x4 @ shove target down a bit + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0xf, 0x0, 0x4 @ shove target down a bit waitforvisualfinish - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET - launchtemplate gCorkscrewCrashCorkscrewFlyDownSpriteTemplate 0x83 0x3 0x0 0xffc0 0x0f + createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xffc0, 0x0f delay 0xf - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x2 0x30 - launchtemplate gCorkscrewCrashCorkscrewFlyDownSpriteTemplate 0x83 0x3 0x0 0xfffe 0x03 + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x2, 0x30 + createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfffe, 0x03 call CorkscrewCrashSpinningWind call CorkscrewCrashSprayRocks delay 0x6 @@ -26158,7 +26184,7 @@ FinishCorkscrewCrash: delay 0x6 call CorkscrewCrashSprayRocks delay 0x0 - launchtemplate gCorkscrewCrashCorkscrewFlyDownSpriteTemplate 0x83 0x3 0x0 0xfffe 0x03 + createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfffe, 0x03 delay 0x6 call CorkscrewCrashSprayRocks delay 0x6 @@ -26166,72 +26192,72 @@ FinishCorkscrewCrash: delay 0x6 call CorkscrewCrashSprayRocks delay 0x1 - launchtemplate gCorkscrewCrashCorkscrewFlyDownSpriteTemplate 0x83 0x3 0x0 0xfffe 0x03 + createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfffe, 0x03 delay 0x4 call CorkscrewCrashSprayRocks delay 0x6 call CorkscrewCrashSprayRocks delay 0x6 call CorkscrewCrashSprayRocks - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS | ANIM_PAL_BG, 0x2, 0x0, 0x10, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x2, 0x0, 0x10, 0x7fff waitforvisualfinish delay 0x10 call ResetFromWhiteScreen waitforvisualfinish end CorkscrewCrashSpinningWind: - launchtemplate gWhirlwindLineSpriteTemplate 0x3 0x5 0x0 0xfff8 0x1 0x2c 0x0 - launchtemplate gWhirlwindLineSpriteTemplate 0x3 0x5 0x0 0x0 0x1 0x3c 0x1 - launchtemplate gWhirlwindLineSpriteTemplate 0x3 0x5 0x0 0x8 0x1 0x3c 0x2 - launchtemplate gWhirlwindLineSpriteTemplate 0x3 0x5 0x0 0x10 0x1 0x3c 0x3 - launchtemplate gWhirlwindLineSpriteTemplate 0x3 0x5 0x0 0x18 0x1 0x3c 0x4 - launchtemplate gWhirlwindLineSpriteTemplate 0x3 0x5 0x0 0x20 0x1 0x3c 0x0 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0xfff8, 0x1, 0x2c, 0x0 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x3c, 0x1 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x8, 0x1, 0x3c, 0x2 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x10, 0x1, 0x3c, 0x3 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x18, 0x1, 0x3c, 0x4 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x20, 0x1, 0x3c, 0x0 return CorkscrewCrashMetalFlare: - launchtemplate gCorkscrewCrashMetalBitSpriteTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gCorkscrewCrashMetalBitSpriteTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gCorkscrewCrashMetalBitSpriteTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gCorkscrewCrashMetalBitSpriteTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gCorkscrewCrashMetalBitSpriteTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gCorkscrewCrashMetalBitSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x2 return CorkscrewCrashSprayRocks: playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x0 0xc 0xffe8 0xfff0 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x0 0x10 0xffda 0xfff6 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x1 0xe 0xffec 0xffee 0x18 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 0x1 0x1 0xc 0xffdc 0xfff0 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0xffda, 0xfff6, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xe, 0xffec, 0xffee, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 return Move_INFERNO_OVERDRIVE:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge loadspritegfx ANIM_TAG_SMALL_EMBER @fire - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_CIRCLE_OF_LIGHT, 0x0, 0xA, 0xA, 0x1F - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_CIRCLE_OF_LIGHT, 0x0, 0xA, 0xA, 0x1F + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish fadetobg BG_INFERNO_OVERDRIVE waitbgfadeout - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET InfernoOverdriveOnPlayer InfernoOverdriveOnOpponent: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xfb00 0x0 0x0 0xFFFF + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xfb00, 0x0, 0x0, 0xFFFF goto FinishInfernoOverdrive InfernoOverdriveOnPlayer: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0500 0x0 0x0 0xFFFF + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0500, 0x0, 0x0, 0xFFFF FinishInfernoOverdrive: waitbgfadein monbg ANIM_ATTACKER - setblends 0x80c + setalpha 12, 8 loopsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER, 0x13, 0x8 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x4f 0x1 - launchtemplate gInfernoOverdriveChargeSpriteTemplate 0x2 0x1 0x0 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x0, 0x2, 0x4f, 0x1 + createsprite gInfernoOverdriveChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 call InfernoOverdriveFireSpin call InfernoOverdriveFireSpin call InfernoOverdriveFireSpin @@ -26246,17 +26272,17 @@ FinishInfernoOverdrive: loadspritegfx ANIM_TAG_METEOR @superpower loadspritegfx ANIM_TAG_VERTICAL_HEX @red color clearmonbg ANIM_ATTACKER - launchtemplate gInfernoOverdriveSuperpowerSpriteTemplate 0x83 0x1 0x0 @ super power shot + createsprite gInfernoOverdriveSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0 @ super power shot playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER delay 0x10 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x8 0x0 0x10 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x8, 0x0, 0x10, 0x1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x2 0x4f 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_TARGET, 0x0, 0x2, 0x4f, 0x1 call InfernoOverdriveExplosion delay 0x6 call InfernoOverdriveExplosion - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS | ANIM_PAL_BG, 0x1, 0x0, 0x10, 0x001b @ red bg pal + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x1, 0x0, 0x10, 0x001b @ red bg pal delay 0x6 call InfernoOverdriveExplosion waitforvisualfinish @@ -26264,59 +26290,59 @@ FinishInfernoOverdrive: blendoff end InfernoOverdriveFireSpin: - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x2 return InfernoOverdriveExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gInfernoOverdriveExplosionSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 return @@ -26327,28 +26353,28 @@ Move_HYDRO_VORTEX:: loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy loadspritegfx ANIM_TAG_METEOR @superpower loadspritegfx ANIM_TAG_WATER_ORB @whirlpool - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_CreateSurfWave 0x2 0x1 0x0 + createvisualtask AnimTask_CreateSurfWave, 0x2, 0x0 delay 0x18 panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 waitforvisualfinish loadspritegfx ANIM_TAG_ROUND_SHADOW playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER - launchtemplate gDiveBallSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gDiveBallSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 waitforvisualfinish playsewithpan SE_M_DIVE, SOUND_PAN_ATTACKER - launchtemplate gDiveWaterSplashSpriteTemplate 0x3 0x1 0x0 + createsprite gDiveWaterSplashSpriteTemplate, ANIM_ATTACKER, 3, 0x0 call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xfd00 0x15 0x0 0x1a + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfd00, 0x15, 0x0, 0x1a delay 0x1a invisible ANIM_TARGET waitforvisualfinish - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x7 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x7 delay 0x5 fadetobg BG_WATER_PULSE waitbgfadeout @@ -26359,77 +26385,77 @@ Move_HYDRO_VORTEX:: call HydroVortexBubbles loadspritegfx ANIM_TAG_FOCUS_ENERGY playsewithpan SE_M_WATERFALL, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x5da0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x5da0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 waitforvisualfinish unloadspritegfx ANIM_TAG_SPLASH unloadspritegfx ANIM_TAG_SWEAT_BEAD loadspritegfx ANIM_TAG_IMPACT - launchtemplate gHydroVortexSuperpowerSpriteTemplate 0x83 0x1 0x0 + createsprite gHydroVortexSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER invisible ANIM_ATTACKER delay 0x10 - launchtemplate gHydroVortexImpactSpriteTemplate 0x83 0x4 0xa 0xfff8 0x1 0x1 + createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, 0xa, 0xfff8, 0x1, 0x1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x0 0x10 0x5da0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x0, 0x10, 0x5da0 loadspritegfx ANIM_TAG_GUST - launchtask AnimTask_HorizontalShake 0x5 0x3 0x1 0x8 0x3c + createvisualtask AnimTask_HorizontalShake, 0x5, 0x1, 0x8, 0x3c call HydroVortexWhirlpoolHurricane call HydroVortexWhirlpoolHurricane call HydroVortexWhirlpoolHurricane call HydroVortexWhirlpoolHurricane waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x10 0x0 0x5da0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x10, 0x0, 0x5da0 waitforvisualfinish restorebg waitbgfadeout - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end HydroVortexBubbles: - launchtemplate gSmallBubblePairSpriteTemplate 0x2 0x4 0xa 0xa 0x14 ANIM_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x14, ANIM_ATTACKER createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xa, 0x14, ANIM_TARGET delay 0x4 - launchtemplate gSmallBubblePairSpriteTemplate 0x2 0x4 0x14 0xffec 0x14 ANIM_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0x14, 0xffec, 0x14, ANIM_ATTACKER createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xffec, 0x14, ANIM_TARGET delay 0x4 - launchtemplate gSmallBubblePairSpriteTemplate 0x2 0x4 0xfff1 0xf 0x14 ANIM_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xf, 0x14, ANIM_ATTACKER createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0xfff1, 0xf, 0x14, ANIM_TARGET delay 0x4 - launchtemplate gSmallBubblePairSpriteTemplate 0x2 0x4 0x0 0x0 0x14 ANIM_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, ANIM_ATTACKER createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0x0, 0x0, 0x14, ANIM_TARGET delay 0x4 - launchtemplate gSmallBubblePairSpriteTemplate 0x2 0x4 0xfff6 0xffec 0x14 ANIM_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xffec, 0x14, ANIM_ATTACKER createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0xfff6, 0xffec, 0x14, ANIM_TARGET delay 0x4 - launchtemplate gSmallBubblePairSpriteTemplate 0x2 0x4 0x10 0xfff8 0x14 ANIM_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0xfff8, 0x14, ANIM_ATTACKER createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0x10, 0xfff8, 0x14, ANIM_TARGET delay 0x4 - launchtemplate gSmallBubblePairSpriteTemplate 0x2 0x4 0x5 0x8 0x14 ANIM_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0x5, 0x8, 0x14, ANIM_ATTACKER createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0x5, 0x8, 0x14, ANIM_TARGET delay 0x4 - launchtemplate gSmallBubblePairSpriteTemplate 0x2 0x4 0xfff0 0x0 0x14 ANIM_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0x0, 0x14, ANIM_ATTACKER createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0xfff0, 0x0, 0x14, ANIM_TARGET return HydroVortexWhirlpoolHurricane: playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET - launchtemplate gHydroVortexHurricaneSpriteTemplate 0x82 0x2 0x0 0xfff0 - launchtemplate gHydroVortexImpactSpriteTemplate 0x83 0x4 0xfff6 0xfff8 0x1 0x1 - launchtask AnimTask_AnimateGustTornadoPalette 0x5 0x2 0x1 0x46 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 0x1 + createsprite gHydroVortexHurricaneSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff0 + createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, 0xfff6, 0xfff8, 0x1, 0x1 + createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, 0x1 delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 0x1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, 0x1 delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a 0x1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, 0x1 delay 0x2 - launchtemplate gHydroVortexImpactSpriteTemplate 0x83 0x4 0xa 0xfff8 0x1 0x1 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 0x1 + createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, 0xa, 0xfff8, 0x1, 0x1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, 0x1 delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e 0x1 - launchtemplate gHydroVortexHurricaneSpriteTemplate 0x82 0x2 0x0 0xfff0 - launchtask AnimTask_AnimateGustTornadoPalette 0x5 0x2 0x1 0x46 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, 0x1 + createsprite gHydroVortexHurricaneSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff0 + createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46 delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce 0x1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, 0x1 delay 0x2 return @@ -26441,33 +26467,33 @@ Move_BLOOM_DOOM:: loadspritegfx ANIM_TAG_GUST @hurricane loadspritegfx ANIM_TAG_VERTICAL_HEX @hex diamond monbg ANIM_ATTACKER - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - setblends 0x80c - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x4 0x0 + setalpha 12, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x4, 0x0 loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 0x9, 0x3 - launchtemplate gBloomDoomGreenChargeSpriteTemplate 0x2 0x1 0x0 + createsprite gBloomDoomGreenChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 delay 0x3C blendoff - launchtemplate gBloomDoomPetalSpinSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0 playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gBloomDoomPetalSpinSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x4 + createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4 delay 0x2 - launchtemplate gBloomDoomPetalSpinSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x8 + createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8 playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gBloomDoomPetalSpinSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0xc + createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc delay 0x2 - launchtemplate gBloomDoomPetalSpinSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x10 + createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10 playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gBloomDoomPetalSpinSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x14 + createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14 delay 0x2 - launchtemplate gBloomDoomPetalSpinSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x18 + createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18 playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x4 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x4, 0x0, 0x0 waitforvisualfinish unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT call BloomDoomHurricane @@ -26498,19 +26524,19 @@ Move_BLOOM_DOOM:: waitbgfadein loadspritegfx ANIM_TAG_ORBS delay 0x5 - launchtemplate gAromatherapySmallFlowerSpriteTemplate 0x0 0x7 0x18 0x10 0x0 0x2 0x2 0x0 0x0 - launchtemplate gAromatherapySmallFlowerSpriteTemplate 0x42 0x7 0x40 0x18 0x0 0x3 0x1 0x1 0x0 - launchtemplate gAromatherapyBigFlowerSpriteTemplate 0x0 0x7 0x10 0x18 0x0 0x2 0x1 0x0 0x0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x18, 0x10, 0x0, 0x2, 0x2, 0x0, 0x0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x18, 0x0, 0x3, 0x1, 0x1, 0x0 + createsprite gAromatherapyBigFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x10, 0x18, 0x0, 0x2, 0x1, 0x0, 0x0 delay 0x5 - launchsoundtask SoundTask_LoopSEAdjustPanning, 0x7, 0xf0, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5 - launchtask AnimTask_ShakeMon 0x2 0x5 0x0 0x0 0x4 0x32 0x1 @ shake attacker + createsoundtask SoundTask_LoopSEAdjustPanning, 0xf0, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5 + createvisualtask AnimTask_ShakeMon, 0x2, 0x0, 0x0, 0x4, 0x32, 0x1 @ shake attacker call BloomDoomHyperBeam call BloomDoomHyperBeam call BloomDoomHyperBeam call BloomDoomHyperBeam call BloomDoomHyperBeam - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x72 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x0 0xb 0x33ed + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x72, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x0, 0xb, 0x33ed call BloomDoomHyperBeam call BloomDoomHyperBeam call BloomDoomHyperBeam @@ -26522,9 +26548,9 @@ Move_BLOOM_DOOM:: call BloomDoomHyperBeam call BloomDoomHyperBeam call BloomDoomHyperBeam - launchtemplate gAromatherapySmallFlowerSpriteTemplate 0x42 0x7 0x30 0xc 0x0 0x4 0x3 0x1 0x0 - launchtemplate gAromatherapySmallFlowerSpriteTemplate 0x0 0x7 0x64 0x10 0x0 0x3 0x2 0x0 0x0 - launchtemplate gAromatherapySmallFlowerSpriteTemplate 0x0 0x7 0x4a 0x18 0xb4 0x3 0x2 0x0 0x0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 0x30, 0xc, 0x0, 0x4, 0x3, 0x1, 0x0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x10, 0x0, 0x3, 0x2, 0x0, 0x0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x4a, 0x18, 0xb4, 0x3, 0x2, 0x0, 0x0 call BloomDoomHyperBeam call BloomDoomHyperBeam call BloomDoomHyperBeam @@ -26535,18 +26561,18 @@ Move_BLOOM_DOOM:: call BloomDoomHyperBeam call BloomDoomHyperBeam call BloomDoomHyperBeam - launchtemplate gAromatherapySmallFlowerSpriteTemplate 0x42 0x7 0x50 0x1e 0x0 0x4 0x1 0x1 0x0 - launchtemplate gAromatherapySmallFlowerSpriteTemplate 0x0 0x7 0x80 0xc 0x0 0x3 0x3 0x0 0x0 - launchtemplate gAromatherapyBigFlowerSpriteTemplate 0x0 0x7 0x5a 0x10 0x0 0x2 0x1 0x0 0x0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 0x50, 0x1e, 0x0, 0x4, 0x1, 0x1, 0x0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x80, 0xc, 0x0, 0x3, 0x3, 0x0, 0x0 + createsprite gAromatherapyBigFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x5a, 0x10, 0x0, 0x2, 0x1, 0x0, 0x0 delay 0x5 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0xb 0x0 0x33ed + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0xb, 0x0, 0x33ed loadspritegfx ANIM_TAG_EXPLOSION @explosion call BloomDoomPetalBlast - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_DEF, 0x1, 0x0, 0x10, 0x33ed + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x1, 0x0, 0x10, 0x33ed call BloomDoomPetalBlast - launchtask AnimTask_IsTargetPartner 0x5 0x0 + createvisualtask AnimTask_IsTargetPartner, 0x5 jumpargeq 0x0 0x1 BloomDoomFadeScreenTargetPartner - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL - ANIM_PAL_DEF, 0x1, 0x0, 0x10, 0x33ed @ green bg pal + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ALL_BUT_DEF), 0x1, 0x0, 0x10, 0x33ed @ green bg pal BloomDoomEnding: call BloomDoomPetalBlast waitforvisualfinish @@ -26554,76 +26580,76 @@ BloomDoomEnding: call ResetFromGreenScreen end BloomDoomFadeScreenTargetPartner: - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ATK | ANIM_PAL_OPPONENT1 | ANIM_PAL_OPPONENT2, 0x1, 0x0, 0x10, 0x33ed @ green bg pal + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ALL_BUT_ATK_PARTNER), 0x1, 0x0, 0x10, 0x33ed @ green bg pal goto BloomDoomEnding BloomDoomHurricane: - launchtemplate gBloomDoomHurricaneSpriteTemplate 0x2 0x2 0x0 0xfff0 - launchtask AnimTask_AnimateGustTornadoPalette 0x5 0x2 0x1 0x46 + createsprite gBloomDoomHurricaneSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 + createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46 return BloomDoomFlowerGeyser: - launchtemplate gBloomDoomFlowerGeyserSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0xfffc 0x10 @ -4, -0x10 + createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xfffc, 0x10 @ -4, -0x10 delay 0x0 - launchtemplate gBloomDoomFlowerGeyserSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x100D 0x10 @ + createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x100D, 0x10 delay 0x0 - launchtemplate gBloomDoomFlowerGeyserSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x4 0x10 + createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x4, 0x10 delay 0x0 - launchtemplate gBloomDoomFlowerGeyserSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0xfff0 0x10 + createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xfff0, 0x10 delay 0x0 return BloomDoomHyperBeam: - launchtemplate gBloomDoomGreenBeamSpriteTemplate 0x82 0x0 - launchtemplate gBloomDoomGreenBeamSpriteTemplate 0x82 0x0 + createsprite gBloomDoomGreenBeamSpriteTemplate, ANIM_TARGET, 2 + createsprite gBloomDoomGreenBeamSpriteTemplate, ANIM_TARGET, 2 delay 0x1 return BloomDoomPetalBlast: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBloomDoomExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x0 0xffe0 0x10 + createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe0, 0x10 delay 0x2 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x16 0xffea 0x10 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xffea, 0x10 delay 0x2 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x1e 0x0 0x10 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1e, 0x0, 0x10 delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBloomDoomExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x14 0x14 0x10 + createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10 delay 0x2 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x0 0x1c 0x10 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1c, 0x10 delay 0x2 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0xffed 0x13 0x10 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffed, 0x13, 0x10 delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBloomDoomExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0xffe5 0x0 0x10 + createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffe5, 0x0, 0x10 delay 0x2 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0xffee 0xffee 0x10 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffee, 0xffee, 0x10 delay 0x2 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x0 0xffe7 0x10 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe7, 0x10 delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBloomDoomExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x11 0xffef 0x10 + createsprite gBloomDoomExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x11, 0xffef, 0x10 delay 0x2 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x17 0x0 0x10 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x17, 0x0, 0x10 delay 0x2 - launchtemplate gBloomDoomPetalStarSpriteTemplate 0x82 0x5 0x1 0x0 0x10 0x10 0x10 + createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0x10, 0x10 delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBloomDoomExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gBloomDoomExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x2 return ResetFromGreenScreen: - launchtask AnimTask_AllBanksInvisible 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisible, 0xA waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS, 0x2, 0x0, 0x0, 0x33ED @Everything from green + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BATTLERS, 0x2, 0x0, 0x0, 0x33ED @Everything from green restorebg waitbgfadeout setarg 0x7 0xffff - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitbgfadein waitforvisualfinish delay 0x5 - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG, 0x1, 0x0, 0x0, 0x33ED + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x0, 0x33ED waitforvisualfinish return @@ -26636,118 +26662,118 @@ Move_GIGAVOLT_HAVOC:: loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_GRAY_SMOKE loadspritegfx ANIM_TAG_THIN_RING - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x6 0x0 0x10 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x6, 0x0, 0x10, 0x0000 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gGigavoltHavocChargingSpearSpriteTemplate 0x2 0x1 ANIM_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + createsprite gGigavoltHavocChargingSpearSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0xa playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x0 delay 0x5 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0x20 0x14 0x0 0x0 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0x60 0x14 0x1 0x0 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0xa0 0x14 0x0 0x0 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0xe0 0x14 0x2 0x0 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x20, 0x14, 0x0, 0x0 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x60, 0x14, 0x1, 0x0 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0xa0, 0x14, 0x0, 0x0 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0xe0, 0x14, 0x2, 0x0 delay 0x5 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER monbg ANIM_ATTACKER playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER -@ launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x3c 0x2 0xc @charge particles to user -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x10 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x10 0x2c 0x60 0x28 0x1 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x10 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x10 0x2c 0xe0 0x28 0x2 0x3 +@ createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x3c, 0x2, 0xc @charge particles to user +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x10, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x10, 0x2c, 0x60, 0x28, 0x1, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x10, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x10, 0x2c, 0xe0, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x12 0x2c 0x0 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x12 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x12 0x2c 0x80 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x12 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x12, 0x2c, 0x0, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x12, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x12, 0x2c, 0x80, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x12, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x14 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x14 0x2c 0x40 0x28 0x1 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x14 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x82 0x8 0x0 0x0 0x14 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x2c, 0x40, 0x28, 0x1, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 waitforvisualfinish playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET - launchtemplate gGigavoltHavocLaunchSpearSpriteTemplate 0x83 0x1 0x0 - launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x0 0x10 0x10 + createsprite gGigavoltHavocLaunchSpearSpriteTemplate, ANIM_TARGET, 3, 0x0 + createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x10 delay 0x2 - launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x0 0xfff0 0xfff0 + createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0, 0xfff0 delay 0xe clearmonbg ANIM_ATTACKER - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x8 0x1c @shake target + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x8, 0x1c @shake target unloadspritegfx ANIM_TAG_HAVOC_SPEAR loadspritegfx ANIM_TAG_SHOCK_3 @thunderbolt - launchtemplate gThunderboltOrbSpriteTemplate 0x83 0x4 0x2c 0x0 0x0 0x3 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x0 0x0 0xc 0x5bff -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x20 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x20 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x20 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x20 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x10 0x2c 0x20 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x10 0x2c 0x60 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x10 0x2c 0xa0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x10 0x2c 0xe0 0x28 0x2 0x8003 + createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 0x2c, 0x0, 0x0, 0x3 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x0, 0x0, 0xc, 0x5bff +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x20, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x20, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x20, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x20, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x10, 0x2c, 0x20, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x10, 0x2c, 0x60, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x10, 0x2c, 0xa0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x10, 0x2c, 0xe0, 0x28, 0x2, 0x8003 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 0x19 loadspritegfx ANIM_TAG_VERTICAL_HEX @@ -26773,11 +26799,11 @@ Move_GIGAVOLT_HAVOC:: @ call HavocSpearSparkTarget call HavocSpearGeyser playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_DEF, 0x2, 0xc, 0x0, 0x5bff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0xc, 0x0, 0x5bff waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG, 0x1, 0x10, 0x0, 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x0, 0x0000 waitforvisualfinish - launchtask AnimTask_AllBanksVisible 0xa 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xa waitforvisualfinish end HavocSpearGeyser: @@ -26791,14 +26817,14 @@ HavocSpearGeyser: delay 1 return HavocSpearSparkTarget: -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc 0x0 0x14 0x0 0x8000 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0x0 0x14 0x0 0x8000 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc 0x40 0x14 0x1 0x8000 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0x40 0x14 0x1 0x8000 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc 0x80 0x14 0x0 0x8000 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0x80 0x14 0x0 0x8000 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x8000 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x8000 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x20, 0xc, 0x0, 0x14, 0x0, 0x8000 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x0, 0x14, 0x0, 0x8000 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x20, 0xc, 0x40, 0x14, 0x1, 0x8000 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x40, 0x14, 0x1, 0x8000 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x20, 0xc, 0x80, 0x14, 0x0, 0x8000 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x80, 0x14, 0x0, 0x8000 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x20, 0xc, SOUND_PAN_ATTACKER, 0x14, 0x2, 0x8000 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, SOUND_PAN_ATTACKER, 0x14, 0x2, 0x8000 return @@ -26809,46 +26835,46 @@ Move_SHATTERED_PSYCHE:: loadspritegfx ANIM_TAG_THIN_RING @ring loadspritegfx ANIM_TAG_PINK_PETAL @pink loadspritegfx ANIM_TAG_TORN_METAL @brick break shatter - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPalExclude 0x5 0x5 0x0 0x0 0x0 0x10 0x0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 0x5, 0x0, 0x0, 0x0, 0x10, 0x0 waitforvisualfinish - launchtask AnimTask_SetAllNonAttackersInvisiblity 0x5 0x1 0x1 + createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 0x5, 0x1 waitforvisualfinish - launchtemplate gShatteredPsychePinkChargeSpriteTemplate 0x2 0x1 0x0 - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsychePinkChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 0xc - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 delay 0xc - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 0xc - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 delay 0xc - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 0xc - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 delay 0xc - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 0xc - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 delay 0xc - launchtemplate gShatteredPsycheRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 0x4 fadetobg BG_SHATTERED_PSYCHE delay 0x4 - launchtask AnimTask_BlendBattleAnimPalExclude 0x5 0x5 0x0 0x0 0x10 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 0x5, 0x0, 0x0, 0x10, 0x0, 0x0 delay 0x7 playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0xf 0x1 - launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffc 0xfffc 0xf 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x3, 0x0, 0xf, 0x1 + createvisualtask AnimTask_ScaleMonAndRestore, 0x5, 0xfffc, 0xfffc, 0xf, 0x1, 0x1 waitforvisualfinish ShatteredPsycheCheckBattler: - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET ShatteredPsycheOnPlayer ShatteredPsycheOnOpponent: call ShatteredPsycheFlingOpponent @@ -26863,102 +26889,102 @@ ShatteredPsycheFinish: delay 0x8 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET restorebg - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0xf 0x1 - launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffc 0xfffc 0xf 0x1 0x1 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0xf, 0x1 + createvisualtask AnimTask_ScaleMonAndRestore, 0x5, 0xfffc, 0xfffc, 0xf, 0x1, 0x1 createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x0 @ -8, -12 createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x0 createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x2, 0x0, 0x0 createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x3, 0x0, 0x0 waitbgfadeout - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end ShatteredPsycheFlingOpponent: - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe6 0x10 0x1 0x4 @ -26, +16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0x10, 0x1, 0x4 @ -26, +16 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0x1a 0xfff0 0x1 0x1 @ 26, -16 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, -16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x1a 0xfff0 0x1 0x4 @ -26,-16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1a, 0xfff0, 0x1, 0x4 @ -26,-16 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0xffe6 0x10 0x1 0x1 @ 26, 16 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0x10, 0x1, 0x1 @ 26, 16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x0 0x20 0x1 0x4 @ 0,32 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x20, 0x1, 0x4 @ 0,32 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0x0 0xffe0 0x1 0x1 @ 0, -32 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xffe0, 0x1, 0x1 @ 0, -32 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x0 0xffe0 0x1 0x4 @ 0,-32 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xffe0, 0x1, 0x4 @ 0,-32 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0x0 0x20 0x1 0x1 @ 0, 32 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x20, 0x1, 0x1 @ 0, 32 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x1a 0x10 0x1 0x4 @ 26,16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1a, 0x10, 0x1, 0x4 @ 26,16 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0xffe6 0xfff0 0x1 0x1 @ -26, -16 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0xfff0, 0x1, 0x1 @ -26, -16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe6 0xffe0 0x1 0x4 @ 26,-16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0xffe0, 0x1, 0x4 @ 26,-16 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0x1a 0x10 0x1 0x1 @ 0, 32 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0x10, 0x1, 0x1 @ 0, 32 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe6 0x10 0x1 0x4 @ -26, +16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0x10, 0x1, 0x4 @ -26, +16 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0x1a 0xfff0 0x1 0x1 @ 26, -16 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, -16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x1a 0xfff0 0x1 0x4 @ -26,-16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1a, 0xfff0, 0x1, 0x4 @ -26,-16 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0xffe6 0x10 0x1 0x1 @ 26, 16 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0x10, 0x1, 0x1 @ 26, 16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish return ShatteredPsycheFlingPlayer: - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe6 0x10 0x1 0x4 @ -26,-16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0x10, 0x1, 0x4 @ -26,-16 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0x1a 0xfff0 0x1 0x1 @ 26, 16 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, 16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x20 0x0 0x1 0x4 @ 32,0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x20, 0x0, 0x1, 0x4 @ 32,0 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0xffe0 0x0 0x1 0x1 @ + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0x0, 0x1, 0x1 @ playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe0 0x0 0x1 0x4 @ -32,0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe0, 0x0, 0x1, 0x4 @ -32,0 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0x20 0x0 0x1 0x1 @ 32, 0 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x0, 0x1, 0x1 @ 32, 0 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xa 0x20 0x1 0x4 @ 10, -32 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xa, 0x20, 0x1, 0x4 @ 10, -32 waitforvisualfinish - launchtemplate gShatteredPsycheReflectHitSpriteTemplate 0x83 0x4 0xfff6 0x5 0x1 0x1 @ 10, -32 + createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xfff6, 0x5, 0x1, 0x1 @ 10, -32 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5 waitforvisualfinish return @@ -26967,64 +26993,64 @@ Move_SUBZERO_SLAMMER:: loadspritegfx ANIM_TAG_ICE_CRYSTALS @ice loadspritegfx ANIM_TAG_ICE_CUBE @glacier loadspritegfx ANIM_TAG_EXPLOSION_2 @explosion - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_EXPLOSION_2, 0x0, 0xC, 0xC, 0x6A23 - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_EXPLOSION_2, 0x0, 0xC, 0xC, 0x6A23 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish fadetobg BG_ICE waitbgfadeout - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET SubzeroSlammerOnPlayer SubzeroSlammerOnOpponent: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xfd00 0x0 0x0 0xFFFF + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xfd00, 0x0, 0x0, 0xFFFF goto SubzeroSlammerFinish SubzeroSlammerOnPlayer: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0300 0x0 0x0 0xFFFF + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0300, 0x0, 0x0, 0xFFFF SubzeroSlammerFinish: waitbgfadein monbg ANIM_ATK_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x0 0x0 0xb 0x7e80 - launchtemplate gSubzeroSlammerIceSpinSpriteTemplate 0x83 0x4 0x0 0x0 0x38 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x0, 0x0, 0xb, 0x7e80 + createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x0 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSpinSpriteTemplate 0x83 0x4 0x0 0x0 0x38 0x4 + createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x4 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSpinSpriteTemplate 0x83 0x4 0x0 0x0 0x38 0x8 + createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x8 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSpinSpriteTemplate 0x83 0x4 0x0 0x0 0x38 0xc + createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0xc playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSpinSpriteTemplate 0x83 0x4 0x0 0x0 0x38 0x10 + createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x10 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSpinSpriteTemplate 0x83 0x4 0x0 0x0 0x38 0x14 + createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x14 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSpinSpriteTemplate 0x83 0x4 0x0 0x0 0x38 0x18 + createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x18 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER delay 0x20 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x0 0xb 0x0 0x7e80 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x0, 0xb, 0x0, 0x7e80 delay 0x20 - launchtask AnimTask_FrozenIceCubeAttacker 0x2 0x0 + createvisualtask AnimTask_FrozenIceCubeAttacker, 0x2 waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 0x11 waitforvisualfinish call SubzeroSlammerIceSwirl - launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x2 0x2 0x0 0xb 0x7e80 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, F_PAL_ATTACKER, 0x2, 0x2, 0x0, 0xb, 0x7e80 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call SubzeroSlammerIceSwirl call SubzeroSlammerIceSwirl delay 0xa clearmonbg ANIM_ATK_PARTNER - launchsoundtask SoundTask_LoopSEAdjustPanning 0x7 0xb0 0xffc0 SOUND_PAN_TARGET 0x4 0x4 0x0 0xa - launchtemplate gIceBeamOuterCrystalSpriteTemplate 0x2 0x5 0x14 0xc 0x0 0xc 0x14 - launchtemplate gIceBeamOuterCrystalSpriteTemplate 0x2 0x5 0x14 0xfff4 0x0 0xfff4 0x14 + createsoundtask SoundTask_LoopSEAdjustPanning, 0xb0, 0xffc0, SOUND_PAN_TARGET, 0x4, 0x4, 0x0, 0xa + createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 0x14, 0xc, 0x0, 0xc, 0x14 + createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff4, 0x0, 0xfff4, 0x14 delay 0x1 call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x4 0x0 0x7 0x7e80 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x2 0x0 0x19 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x4, 0x0, 0x7, 0x7e80 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x2, 0x0, 0x19, 0x1 call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals @@ -27040,7 +27066,7 @@ SubzeroSlammerFinish: call IceCrystalEffectShort delay 0x5 monbg ANIM_DEF_PARTNER - launchtask AnimTask_FrozenIceCube 0x82 0x0 + createvisualtask AnimTask_FrozenIceCube, 0x82 playsewithpan SE_M_HAIL, SOUND_PAN_TARGET waitforvisualfinish loadspritegfx ANIM_TAG_TORN_METAL @@ -27050,66 +27076,66 @@ SubzeroSlammerFinish: createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x0 createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x2, 0x0, 0x0 createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x3, 0x0, 0x0 - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x8 0x1c + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x8, 0x1c call SubzeroSlammerExplosion call SubzeroSlammerExplosion clearmonbg ANIM_DEF_PARTNER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x5 0x7 0x0 0x7e80 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x5, 0x7, 0x0, 0x7e80 waitforvisualfinish restorebg waitbgfadeout setarg 0x7 0xffff - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitbgfadein waitforvisualfinish end SubzeroSlammerExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSubzeroSlammerExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 delay 0x3 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xa 0x14 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0 delay 0x3 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSubzeroSlammerExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0 delay 0x3 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0 delay 0x3 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSubzeroSlammerExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xfff1 0xf 0x0 + createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0 delay 0x3 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x0 0x0 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0 delay 0x3 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSubzeroSlammerExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0x14 0x2 0x0 + createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0x14, 0x2, 0x0 delay 0x3 - launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 delay 0x3 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gSubzeroSlammerExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0 delay 0x3 - launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xfff1 0xf 0x0 + createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0 delay 0x3 return SubzeroSlammerIceSwirl: playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER - launchtemplate gSubzeroSlammerIceSwirlSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER + createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSwirlSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER - launchtemplate gSubzeroSlammerIceSwirlSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSwirlSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER - launchtemplate gSubzeroSlammerIceSwirlSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gSubzeroSlammerIceSwirlSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x2 return @@ -27122,215 +27148,215 @@ Move_DEVASTATING_DRAKE:: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call DevastatingDrakeBuffEffect delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x40c0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x40c0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call DevastatingDrakeBuffEffect delay 0x8 call DevastatingDrakeBuffEffect waitforvisualfinish unloadspritegfx ANIM_TAG_FOCUS_ENERGY playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeShockwaveSpriteTemplate 0x2 0x0 + createsprite gDevastatingDrakeShockwaveSpriteTemplate, ANIM_ATTACKER, 2 delay 0x2a unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATTACKER playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeDrakeUpSpriteTemplate 0x2 0x7 0x0 0x0 0x4e0 0x24 0x15 0x1 ANIM_ATTACKER + createsprite gDevastatingDrakeDrakeUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x4e0, 0x24, 0x15, 0x1, ANIM_ATTACKER clearmonbg ANIM_ATTACKER fadetobg BG_SKY invisible ANIM_ATTACKER invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0x1000 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x1000, 0x0, 0xffff waitbgfadein - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET DevastatingDrakeOnPlayer DevastatingDrakeOnOpponent: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeRightSpriteTemplate 0x32 0x5 0xfff0 0x88 0x100 0x38 0x15 @left to right + createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x88, 0x100, 0x38, 0x15 @left to right waitforvisualfinish delay 0xa playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeLeftSpriteTemplate 0x32 0x5 0x0120 0x38 0xfff0 0x38 0x15 @right to left + createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x38, 0xfff0, 0x38, 0x15 @right to left waitforvisualfinish delay 0xa playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeRightSpriteTemplate 0x32 0x5 0xfff0 0x08 0x100 0x0f 0x15 @left to right + createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x08, 0x100, 0x0f, 0x15 @left to right goto DevastatingDrakeFinish DevastatingDrakeOnPlayer: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeLeftSpriteTemplate 0x32 0x5 0x0120 0x08 0xfff0 0x0f 0x15 @right to left + createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x08, 0xfff0, 0x0f, 0x15 @right to left waitforvisualfinish delay 0xa playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeRightSpriteTemplate 0x32 0x5 0xfff0 0x38 0x100 0x38 0x15 @left to right + createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x38, 0x100, 0x38, 0x15 @left to right waitforvisualfinish delay 0xa playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeLeftSpriteTemplate 0x32 0x5 0x0120 0x78 0xfff0 0x58 0x15 @right to left + createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x78, 0xfff0, 0x58, 0x15 @right to left DevastatingDrakeFinish: call UnsetPsychicBg waitforvisualfinish visible ANIM_TARGET delay 0xa playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeStrikeSpriteTemplate 0x82 0x1 0x14 + createsprite gDevastatingDrakeStrikeSpriteTemplate, ANIM_TARGET, 2, 0x14 delay 0x10 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER loadspritegfx ANIM_TAG_EXPLOSION - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_EXPLOSION, 0x0, 0xC, 0xC, 0x502B - launchtask AnimTask_HorizontalShake 0x5 0x3 0x1 0x5 0x35 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x10 0x40c0 @ fade to purple + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_EXPLOSION, 0x0, 0xC, 0xC, 0x502B + createvisualtask AnimTask_HorizontalShake, 0x5, 0x1, 0x5, 0x35 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x10, 0x40c0 @ fade to purple call DevastatingDrakeExplosion delay 0x6 - launchtask AnimTask_IsTargetPartner 0x5 0x0 + createvisualtask AnimTask_IsTargetPartner, 0x5 jumpargeq 0x0 0x1 DevastatingDrakeFadeTargetPartner - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL - ANIM_PAL_DEF, 0x6, 0x0, 0x10, 0x40c0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ALL_BUT_DEF), 0x6, 0x0, 0x10, 0x40c0 call DevastatingDrakeExplosion waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL - ANIM_PAL_DEF, 0x0, 0x10, 0x0, 0x40c0 @ fade all but target back + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ALL_BUT_DEF), 0x0, 0x10, 0x0, 0x40c0 @ fade all but target back DevastatingDrakeUniversalEnding: loadspritegfx ANIM_TAG_FIRE_PLUME loadspritegfx ANIM_TAG_VERTICAL_HEX loadspritegfx ANIM_TAG_EXPLOSION_2 @explosion unloadspritegfx ANIM_TAG_PURPLE_DRAKE - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_FIRE_PLUME, 0x0, 0xC, 0xC, 0x502B - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_VERTICAL_HEX, 0x0, 0xC, 0xC, 0x502B - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_EXPLOSION_2, 0x0, 0xC, 0xC, 0x502B - launchtask AnimTask_HorizontalShake 0x5 0x3 0x1 0x5 0x20 + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_FIRE_PLUME, 0x0, 0xC, 0xC, 0x502B + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_VERTICAL_HEX, 0x0, 0xC, 0xC, 0x502B + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_EXPLOSION_2, 0x0, 0xC, 0xC, 0x502B + createvisualtask AnimTask_HorizontalShake, 0x5, 0x1, 0x5, 0x20 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER call DevastatingDrakeGeyser playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0xffe0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0xffec 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x42 0x6 0x0 0xfff0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x42 0x6 0x14 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x42 0x6 0x20 0x0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x42 0x6 0x14 0xa 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0x0 0x10 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0xffec 0xa 0x18 0x0 0x0 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER call DevastatingDrakeGeyser playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0xffc0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x6 0x6 0xffd8 0xffec 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x46 0x6 0x0 0xffe0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x46 0x6 0x28 0xffec 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x42 0x6 0x40 0x0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x42 0x6 0x28 0x14 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0x0 0x20 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0xffd8 0x14 0x18 0x0 0x0 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 6, 0xffd8, 0xffec, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffe0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0x28, 0xffec, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x28, 0x14, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x18, 0x0, 0x0, 0x0 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER call DevastatingDrakeGeyser playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0xffa0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x6 0x6 0xffc4 0xffe2 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x46 0x6 0x0 0xffd0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x46 0x6 0x3c 0xffe2 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x42 0x6 0x60 0x0 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x42 0x6 0x3c 0x1e 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0x0 0x30 0x18 0x0 0x0 0x0 - launchtemplate gDevastatingDrakePurpleBlastSpriteTemplate 0x2 0x6 0xffc4 0x1e 0x18 0x0 0x0 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 6, 0xffc4, 0xffe2, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffd0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0x3c, 0xffe2, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x60, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x3c, 0x1e, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x30, 0x18, 0x0, 0x0, 0x0 + createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffc4, 0x1e, 0x18, 0x0, 0x0, 0x0 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER call DevastatingDrakeGeyser delay 0x4 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x10 0x0 0x40c0 @ fade from purple + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x10, 0x0, 0x40c0 @ fade from purple waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ALL_BATTLERS 0x2 0x0 0x0 0x0 @ reset all colours + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BATTLERS, 0x2, 0x0, 0x0, 0x0 @ reset all colours waitforvisualfinish - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end DevastatingDrakeFadeTargetPartner: - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ATK | ANIM_PAL_OPPONENT1 | ANIM_PAL_OPPONENT2, 0x6, 0x0, 0x10, 0x40c0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ALL_BUT_ATK_PARTNER), 0x6, 0x0, 0x10, 0x40c0 call DevastatingDrakeExplosion waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ATK | ANIM_PAL_OPPONENT1 | ANIM_PAL_OPPONENT2, 0x0, 0x10, 0x0, 0x40c0 @ fade all but target back + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ALL_BUT_ATK_PARTNER), 0x0, 0x10, 0x0, 0x40c0 @ fade all but target back goto DevastatingDrakeUniversalEnding DevastatingDrakeBuffEffect: - launchtemplate gDevastatingDrakePurpleEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gDevastatingDrakePurpleEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gDevastatingDrakePurpleEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gDevastatingDrakePurpleEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gDevastatingDrakePurpleEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return DevastatingDrakeGeyser: - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0003 0x0005 0x1 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0xfffc 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0x0005, 0x1, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0xfff5 0xfff1 0x1 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0x100D 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xfff1, 0x1, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0008 0xfffb 0x1 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0x4 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xfffb, 0x1, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0xfffa 0x0012 0x1 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0xfff0 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0012, 0x1, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0000 0x0005 0x1 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0xfffc 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0x0005, 0x1, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0003 0xfff5 ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0x100D 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xfff5, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0xfff5 0xffe1 ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0x4 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffe1, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0008 0xffeb ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0xfff0 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffeb, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0xfffa 0x0002 ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0xfffc 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0002, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0000 0xfff5 ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0x100D 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xfff5, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0003 0xffe5 ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0x4 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xffe5, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0xfff5 0xffd1 ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0xfff0 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffd1, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0008 0xffdb ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0xfffc 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffdb, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0xfffa 0xfff2 ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0x100D 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0xfff2, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x84, 0x4, 0x0000 0xffe5 ANIM_TARGET 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0x4 0x10 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xffe5, ANIM_TARGET, 0x0 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10 delay 0x0 - launchtemplate gDevastatingDrakeHexSpriteTemplate 0x82, 0x3, ANIM_TARGET 0xfff0 0x10 + createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10 return DevastatingDrakeExplosion: - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gDevastatingDrakeExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 return @@ -27342,89 +27368,89 @@ Move_BLACK_HOLE_ECLIPSE:: loadspritegfx ANIM_TAG_ICE_CHUNK @blue loadspritegfx ANIM_TAG_BLACK_BALL_2 @black invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x0000 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x0000 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call EndureEffect delay 0x8 call EndureEffect waitforvisualfinish unloadspritegfx ANIM_TAG_FOCUS_ENERGY playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER - launchtemplate gBlackHoleEclipseShockwaveSpriteTemplate 0x2 0x0 + createsprite gBlackHoleEclipseShockwaveSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_HANDS_AND_FEET @black playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER - launchtemplate gBlackHoleEclipseHoleUserSpriteTemplate 0x2 0x4 0x0 0x0 ANIM_ATTACKER 0x0 - launchtemplate gBlackHoleEclipseBlueRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gBlackHoleEclipseHoleUserSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_ATTACKER, 0x0 + createsprite gBlackHoleEclipseBlueRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseBlackRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gBlackHoleEclipseBlackRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseBlueRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gBlackHoleEclipseBlueRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseBlackRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gBlackHoleEclipseBlackRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 delay 0x8 waitforvisualfinish stopsound - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x07 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x07, 0x0000 loadspritegfx ANIM_TAG_WISP_ORB @will o wisp invisible ANIM_ATTACKER loopsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x10, 0x5 - launchtemplate gBlackHoleEclipseWispSpriteTemplate 0x2 0x3 0x0 0x10 0x0 + createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x0 delay 0x3 - launchtemplate gBlackHoleEclipseWispSpriteTemplate 0x3 0x3 0x0 0x10 0x1 + createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x10, 0x1 delay 0x3 - launchtemplate gBlackHoleEclipseWispSpriteTemplate 0x4 0x3 0x0 0x10 0x2 + createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x10, 0x2 delay 0x3 - launchtemplate gBlackHoleEclipseWispSpriteTemplate 0x4 0x3 0x0 0x10 0x3 + createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x10, 0x3 waitforvisualfinish fadetobg BG_BLACKHOLE_ECLIPSE playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET loadspritegfx ANIM_TAG_VERTICAL_HEX @red - launchtemplate gBlackHoleEclipseRedRingSpriteTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 delay 0x4 - launchtemplate gBlackHoleEclipseRedRingSpriteTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 delay 0x4 - launchtemplate gBlackHoleEclipseRedRingSpriteTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 waitbgfadeout unloadspritegfx ANIM_TAG_WISP_ORB - launchtemplate gBlackHoleEclipseHoleSpriteTemplate 0x2 0x4 0x0 0x0 ANIM_TARGET 0x0 @ eclipse at target origin + createsprite gBlackHoleEclipseHoleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0 @ eclipse at target origin delay 0x10 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x35 0xffed 0x1 0x2 @ target down and left (instantaneously (last arg)) + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x35, 0xffed, 0x1, 0x2 @ target down and left (instantaneously (last arg)) delay 0x2 visible ANIM_TARGET loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 0xa, 0x5 - launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x50 0xfc00 ANIM_TARGET 0x0 @ spin target around (0x50 (time), -0x400 (rot speed)) - launchtemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createvisualtask AnimTask_RotateMonSpriteToSide, 0x2, 0x50, 0xfc00, ANIM_TARGET, 0x0 @ spin target around (0x50 (time), -0x400 (rot speed)) + createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x30 @ target back to origin (slowly) - launchtemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x30 @ target back to origin (slowly) + createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x15 invisible ANIM_TARGET delay 0x8 - launchtemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gBlackHoleEclipseHoleShrinkSpriteTemplate 0x2 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gBlackHoleEclipseHoleShrinkSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0 waitforvisualfinish loadspritegfx ANIM_TAG_SPARKLE_4 @detect - launchtemplate gTargetTwinkleSpriteTemplate 0xd 0x3 0x0 0x0 ANIM_TARGET @detect star + createsprite gTargetTwinkleSpriteTemplate, ANIM_ATTACKER, 13, 0x0, 0x0, ANIM_TARGET @detect star delay 0x2 unloadspritegfx ANIM_TAG_SHADOW_BALL unloadspritegfx ANIM_TAG_THIN_RING @@ -27432,12 +27458,12 @@ Move_BLACK_HOLE_ECLIPSE:: unloadspritegfx ANIM_TAG_BLACK_BALL_2 loadspritegfx ANIM_TAG_EXPLOSION_2 call BlackHoleEclipseExplosion - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS | ANIM_PAL_BG, 0x1, 0x0, 0x10, 0x7fff @ bg to white pal + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x1, 0x0, 0x10, 0x7fff @ bg to white pal call BlackHoleEclipseExplosion waitforvisualfinish delay 0x18 invisible ANIM_TARGET - launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x1 0x0 ANIM_TARGET 0x1 @ fix rotation + createvisualtask AnimTask_RotateMonSpriteToSide, 0x2, 0x1, 0x0, ANIM_TARGET, 0x1 @ fix rotation invisible ANIM_TARGET delay 0x1 waitforvisualfinish @@ -27445,33 +27471,33 @@ Move_BLACK_HOLE_ECLIPSE:: end BlackHoleEclipseExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return ResetFromWhiteScreen: - launchtask AnimTask_AllBanksInvisible 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisible, 0xA waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ALL_BATTLERS 0x2 0x0 0x0 0x7FFF @everything from white + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BATTLERS, 0x2, 0x0, 0x0, 0x7FFF @everything from white restorebg waitbgfadeout setarg 0x7 0xffff - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitbgfadein waitforvisualfinish delay 0x5 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0x0 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0x0, 0x7fff waitforvisualfinish return @@ -27480,20 +27506,20 @@ Move_TWINKLE_TACKLE:: loadspritegfx ANIM_TAG_SPARKLE_2 @star loadspritegfx ANIM_TAG_PINK_PETAL @pink loadspritegfx ANIM_TAG_THIN_RING @ring - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER call TwinkleTacklePinkStars delay 0x8 fadetobg BG_TWINKLE_TACKLE - launchtemplate gTwinkleTacklePinkRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 waitbgfadeout invisible ANIM_TARGET delay 0x1 loadspritegfx ANIM_TAG_YELLOW_STAR - launchtemplate gTwinkleTackleStarGrowSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gTwinkleTackleStarGrowSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 waitforvisualfinish - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET TwinkleTackleOnPlayer TwinkleTackleOnOpponent: call PlayerTwinkling @@ -27505,132 +27531,132 @@ TwinkleTackleFinish: delay 0x5 visible ANIM_ATTACKER visible ANIM_TARGET - launchtask AnimTask_SwayMon 0x5 0x5, 0x0 0x8 2048 1 ANIM_ATTACKER + createvisualtask AnimTask_SwayMon, 0x5, 0x0, 0x8, 2048, 1, ANIM_ATTACKER call TwinkleTackleStars waitforvisualfinish - launchtask AnimTask_SwayMon 0x5 0x5, 0x0 0x8 2048 1 ANIM_ATTACKER + createvisualtask AnimTask_SwayMon, 0x5, 0x0, 0x8, 2048, 1, ANIM_ATTACKER call TwinkleTackleStars waitforvisualfinish loadspritegfx ANIM_TAG_SPARKLE_4 @detect loadspritegfx ANIM_TAG_IMPACT @hit loadspritegfx ANIM_TAG_PAIN_SPLIT @pain-split delay 0x1 - launchtemplate gTwinkleTackleYellowImpactSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x0 + createsprite gTwinkleTackleYellowImpactSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0 call TwinkleTackleStarsTarget playsewithpan SE_M_WATERFALL, SOUND_PAN_TARGET delay 0x5 - launchtask AnimTask_TwinkleTackleLaunch 0x2 0x1 89 + createvisualtask AnimTask_TwinkleTackleLaunch, 0x2, 89 delay 89 playsewithpan SE_M_DETECT, SOUND_PAN_TARGET - launchtemplate gTwinkleTackleTwinkleSpriteTemplate 0x8d, 0x3, 0x0 0x0 ANIM_TARGET @detect star + createsprite gTwinkleTackleTwinkleSpriteTemplate, ANIM_TARGET, 13, 0x0, 0x0, ANIM_TARGET @detect star waitforvisualfinish delay 0x10 restorebg delay 0x18 - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end TwinkleTacklePinkStars: - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0xfff1 0x0 0x0 0x0 0x20 0x3c - launchtemplate gTwinkleTacklePinkRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c + createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 delay 0x8 - launchtemplate gTwinkleTacklePinkRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0xc 0xfffb 0x0 0x0 0x20 0x3c + createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c delay 0x8 - launchtemplate gTwinkleTacklePinkRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 return PlayerTwinkling: playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 @ user fly on screen on enemy side - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x12 0x0 0x0 0x0 0x20 0x1c + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 @ user fly on screen on enemy side + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x12, 0x0, 0x0, 0x0, 0x20, 0x1c delay 0x3 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x1f 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x1f, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x16 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x90 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x90, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x80 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x80, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x70 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x70, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x60 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x60, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x50 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_TARGET - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x40 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x40, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x30 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x20 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x10 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x0 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0xfff0 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0xffe0 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0xffd0 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffc0, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0xffc0 0xffc0 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffc0, 0x0, 0x0, 0x20, 0x1c return OpponentTwinkling: playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 @ user fly on screen on enemy side - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x10 0xfffb 0x0 0x0 0x20 0x1c + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 @ user fly on screen on enemy side + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x20 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x30 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x40 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x40, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x50 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x60 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x60, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x70 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x70, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x80 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x80, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x90 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x90, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0xa0 0xfffb 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xa0, 0xfffb, 0x0, 0x0, 0x20, 0x1c delay 0x5 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_TARGET - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0xa0 0x2c 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xa0, 0x2c, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x90 0x2c 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x90, 0x2c, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x80 0x2c 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x80, 0x2c, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x70 0x2c 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x70, 0x2c, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x60 0x2c 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x60, 0x2c, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x50 0x2c 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0x2c, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x40 0x2c 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x40, 0x2c, 0x0, 0x0, 0x20, 0x1c delay 0x1 - launchtemplate gTwinkleTacklePinkStarSpriteTemplate 0x2 0x6 0x30 0x2c 0x0 0x0 0x20 0x1c + createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0x2c, 0x0, 0x0, 0x20, 0x1c return TwinkleTackleStars: playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER - launchtemplate gTwinkleTackleDigStarSpriteTemplate 0x2 0x6 0x0 0x0 0xc 0x4 0xfff0 0x12 - launchtemplate gTwinkleTackleDigStarSpriteTemplate 0x2 0x6 0x0 0x0 0x10 0x4 0xfff6 0x12 - launchtemplate gTwinkleTackleDigStarSpriteTemplate 0x2 0x6 0x0 0x1 0xe 0x4 0xffee 0x12 - launchtemplate gTwinkleTackleDigStarSpriteTemplate 0x2 0x6 0x0 0x1 0xc 0x4 0xfff0 0x12 + createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 + createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 + createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 + createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 return TwinkleTackleStarsTarget: - launchtemplate gTwinkleTackleImpactStarsSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0xa0 0xffe0 - launchtemplate gTwinkleTackleImpactStarsSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0xff00 0xffd8 - launchtemplate gTwinkleTackleImpactStarsSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0x80 0xfff0 - launchtemplate gTwinkleTackleImpactStarsSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0x1a0 0xffda - launchtemplate gTwinkleTackleImpactStarsSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0xff80 0xffea - launchtemplate gTwinkleTackleImpactStarsSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0xfe80 0xffe1 + createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xa0, 0xffe0 + createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff00, 0xffd8 + createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x80, 0xfff0 + createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x1a0, 0xffda + createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff80, 0xffea + createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xfe80, 0xffe1 return @ signature z moves @@ -27638,23 +27664,23 @@ Move_CATASTROPIKA:: loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy loadspritegfx ANIM_TAG_ROUND_SHADOW @fly invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x5bff - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x5bff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call EndureEffect delay 0x8 call EndureEffect delay 0x8 playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 waitforvisualfinish unloadspritegfx ANIM_TAG_FOCUS_ENERGY unloadspritegfx ANIM_TAG_ROUND_SHADOW - launchtask AnimTask_GetTimeOfDay 0x2 0x0 + createvisualtask AnimTask_GetTimeOfDay, 0x2 jumpargeq 0x0 0x0 CatastropikaDaytime jumpargeq 0x0 0x2 CatastropikaAfternoon CatastropikaNight: @@ -27672,78 +27698,78 @@ CatastropikaFinish: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge loadspritegfx ANIM_TAG_SPARK_2 @spark playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x3c 0x2 0xc @charge particles to user - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x10 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x10 0x2c 0x60 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x10 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x10 0x2c 0xe0 0x28 0x2 0x3 + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x3c, 0x2, 0xc @charge particles to user + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0x60, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0xe0, 0x28, 0x2, 0x3 @ delay 0x14 @ playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x12 0x2c 0x0 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x12 0x2c 0x40 0x28 0x1 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x12 0x2c 0x80 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x12 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x12, 0x2c, 0x0, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x12, 0x2c, 0x40, 0x28, 0x1, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x12, 0x2c, 0x80, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x12, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 @ delay 0x14 @ playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x14 0x2c 0x0 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x14 0x2c 0x40 0x28 0x1 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x14 0x2c 0x80 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x14 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x0, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x40, 0x28, 0x1, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x80, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gGrowingChargeOrbSpriteTemplate 0x2 0x1 ANIM_ATTACKER @ charge - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x16 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x16 0x2c 0x60 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x16 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x16 0x2c 0xe0 0x28 0x2 0x3 + createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER @ charge + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x16, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x16, 0x2c, 0x60, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x16, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x16, 0x2c, 0xe0, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x18 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x18 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x18 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x18 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1a 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1a 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1a 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1a 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1a, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1a, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1a, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1a, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1c 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1c 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1c 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1c 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1e 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1e 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1e 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1e 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1e 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1e 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1e 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1e 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 restorebg waitbgfadeout @@ -27753,28 +27779,28 @@ CatastropikaFinish: invisible ANIM_ATTACKER visible ANIM_TARGET playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET - launchtemplate gCatastrokpikaSuperpowerSpriteTemplate 0x83 0x1 0x0 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffe0 0xfff0 0x25 0x2c 0x20 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffe0 0xfff0 0x25 0x2c 0x60 0x8 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffe0 0xfff0 0x25 0x2c 0xa0 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffe0 0xfff0 0x25 0x2c 0xe0 0x8 0x2 0x3 - delay 0x1 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffd0 0xffe4 0x25 0x2c 0x20 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffd0 0xffe4 0x25 0x2c 0x60 0x8 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffd0 0xffe4 0x25 0x2c 0xa0 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffd0 0xffe4 0x25 0x2c 0xe0 0x8 0x2 0x3 - delay 0x1 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffc0 0xffd8 0x25 0x2c 0x20 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffc0 0xffd8 0x25 0x2c 0x60 0x8 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffc0 0xffd8 0x25 0x2c 0xa0 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffc0 0xffd8 0x25 0x2c 0xe0 0x8 0x2 0x3 + createsprite gCatastrokpikaSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3 + delay 0x1 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3 + delay 0x1 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3 delay 0xd - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xff00 0x15 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 loadspritegfx ANIM_TAG_MUD_SAND - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x0 0xc 0xffe8 0xfff0 0x18 @ 12, -48, -16, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x0 0x10 0xffda 0xfff6 0x18 @ 16, -16, -10, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x1 0xe 0xffec 0xffee 0x18 @ 14, -52, -18, 24 - launchtemplate gDirtPlumeSpriteTemplate 0x82 0x6 ANIM_TARGET 0x1 0xc 0xffdc 0xfff0 0x18 @ 12, -32, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 @ 12, -48, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x10, 0xffda, 0xfff6, 0x18 @ 16, -16, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xe, 0xffec, 0xffee, 0x18 @ 14, -52, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 @ 12, -32, -16, 24 loadspritegfx ANIM_TAG_LIGHTNING @thunder call CatastropikaThundering invisible ANIM_TARGET @@ -27782,28 +27808,28 @@ CatastropikaFinish: call CatastropikaThundering call CatastropikaThundering call CatastropikaThundering - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS | ANIM_PAL_BG, 0x4, 0x0, 0x10, 0x7fff @ bg to white + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x4, 0x0, 0x10, 0x7fff @ bg to white call CatastropikaThundering waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS | ANIM_PAL_BG, 0x4, 0x10, 0x0, 0x7fff @ bg to white - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 @fix tgt position + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x4, 0x10, 0x0, 0x7fff @ bg to white + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 @fix tgt position waitforvisualfinish - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end CatastropikaThundering: playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x0 0xfff0 + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff0 delay 2 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x0 0x10 + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x10 delay 2 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x0 0xfff0 + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff0 delay 2 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x0 0x10 + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x10 delay 2 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x0 0xfff0 + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff0 delay 2 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x0 0x10 + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x10 delay 2 return @@ -27815,106 +27841,106 @@ Move_10000000_VOLT_THUNDERBOLT:: loadspritegfx ANIM_TAG_SPARK_2 @sparks loadspritegfx ANIM_TAG_LIGHTNING @lightning invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect waitforvisualfinish playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate g10MillionVoltBoltYellowFlySpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0x60 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0xe0 0x28 0x2 0x3 - delay 0x2 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffe0 0x20 0x2c 0x20 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffe0 0x20 0x2c 0x60 0x28 0x1 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffe0 0x20 0x2c 0xa0 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffe0 0x20 0x2c 0xe0 0x28 0x2 0x3 - delay 0x2 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffd0 0x20 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffd0 0x20 0x2c 0x60 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffd0 0x20 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffd0 0x20 0x2c 0xe0 0x28 0x2 0x3 + createsprite g10MillionVoltBoltYellowFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3 + delay 0x2 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3 + delay 0x2 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3 waitforvisualfinish unloadspritegfx ANIM_TAG_ROUND_SHADOW unloadspritegfx ANIM_TAG_FOCUS_ENERGY fadetobg BG_THUNDER waitbgfadeout loadspritegfx ANIM_TAG_ELECTRIC_ORBS @charge - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xff00 0x0 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xff00, 0x0, 0x1, 0xffff waitbgfadein visible ANIM_ATTACKER playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x3c 0x2 0xc @charge particles to user - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x10 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x10 0x2c 0x60 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x10 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x10 0x2c 0xe0 0x28 0x2 0x3 + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x3c, 0x2, 0xc @charge particles to user + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0x60, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0xe0, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x14 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x14 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x14 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x14 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x10 playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET - launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 @thunder flash - launchtemplate gGrowingChargeOrbSpriteTemplate 0x2 0x1 ANIM_ATTACKER @ charge - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x40 0xffdc + createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 @thunder flash + createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER @ charge + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x40, 0xffdc delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x40 0xffec + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x40, 0xffec delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0x40 0xc + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0x40, 0xc delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x18 0x2c 0x0 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x18 0x2c 0x40 0x28 0x1 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x18 0x2c 0x80 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x18 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x0, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x40, 0x28, 0x1, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x80, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET - launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 @thunder flash - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xffc0 0xffdc + createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 @thunder flash + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0xffdc delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xffc0 0xffec + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0xffec delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xffc0 0xc + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0xc delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1c 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1c 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1c 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x1c 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x14 playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET - launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 @thunder flash - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xff90 0xffdc + createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 @thunder flash + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xff90, 0xffdc delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xff90 0xffec + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xff90, 0xffec delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xff90 0xc + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xff90, 0xc delay 0x14 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0x0 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0x40 0x28 0x1 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0x80 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x0, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x40, 0x28, 0x1, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x80, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 delay 0x10 playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET - launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 @thunder flash - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xffd0 0xffdc + createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 @thunder flash + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0xffdc delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xffd0 0xffec + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0xffec delay 0x1 - launchtemplate gLightningSpriteTemplate 0x82 0x2 0xffd0 0xc + createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0xc playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x2a 0x2c 0x0 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x2a 0x2c 0x40 0x28 0x1 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x2a 0x2c 0x80 0x28 0x0 0x3 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x2a 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2a, 0x2c, 0x0, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2a, 0x2c, 0x40, 0x28, 0x1, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2a, 0x2c, 0x80, 0x28, 0x0, 0x3 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2a, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3 waitforvisualfinish call UnsetPsychicBg visible ANIM_TARGET @@ -27925,16 +27951,16 @@ Move_10000000_VOLT_THUNDERBOLT:: loadspritegfx ANIM_TAG_LEAF @green loadspritegfx ANIM_TAG_POISON_BUBBLE @purple loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER, 0x5, 0xA - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 -@ launchtask AnimTask_FlashAnimTagWithColor, 0x2, 0x7, ANIM_TAG_ORBS, 0x1, 0xc, 0x1f, 0x10, 0x0, 0x0 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_ATTACKER, 0x0, 0x4, 0x32, 0x1 +@ createvisualtask AnimTask_FlashAnimTagWithColor, 0x2, ANIM_TAG_ORBS, 0x1, 0xc, 0x1f, 0x10, 0x0, 0x0 call TenMillionVoltThunderboltBeamRed call TenMillionVoltThunderboltBeamBlue - launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x4 0x0 0x32 0x1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x9 0x07FE + createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x4, 0x0, 0x32, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x07FE call TenMillionVoltThunderboltBeamPink call TenMillionVoltThunderboltBeamYellow call TenMillionVoltThunderboltBeamGreen - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x32 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x32, 0x1 call TenMillionVoltThunderboltBeamPurple call TenMillionVoltThunderboltBeamRed call TenMillionVoltThunderboltBeamBlue @@ -27955,22 +27981,22 @@ Move_10000000_VOLT_THUNDERBOLT:: @ call TenMillionVoltThunderboltBeamGreen @ call TenMillionVoltThunderboltBeamPurple playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x25 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x25 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x25 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x25 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x25, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x25, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x25, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x25, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003 @ delay 0x6 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x35 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x35 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x35 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x35 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x35, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x35, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x35, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x35, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003 @ delay 0x6 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x40 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x40 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x40 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x40 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x40, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x40, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x40, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x40, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - launchtemplate g10MillionVoltBoltShockwaveSpriteTemplate 0x82 0x0 @ charge out and in + createsprite g10MillionVoltBoltShockwaveSpriteTemplate, ANIM_TARGET, 2 @ charge out and in waitforvisualfinish unloadspritegfx ANIM_TAG_ORBS @hyper beam unloadspritegfx ANIM_TAG_VERTICAL_HEX @red @@ -27979,96 +28005,96 @@ Move_10000000_VOLT_THUNDERBOLT:: unloadspritegfx ANIM_TAG_LEAF @green unloadspritegfx ANIM_TAG_POISON_BUBBLE @purple loadspritegfx ANIM_TAG_EXPLOSION @explosion - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x2 0x2c -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x30 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x30 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x00 0x30 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x8003 + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x2, 0x2c +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x00, 0x30, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003 call TenMillionVoltThunderboltSparkGeyser -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x37 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x37 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x37 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x00 0x37 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x8003 - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x2, 0x0, 0x10, 0x7fff +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x00, 0x37, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x2, 0x0, 0x10, 0x7fff call TenMillionVoltThunderboltSparkGeyser waitforvisualfinish delay 0x10 - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x3, 0x10, 0x0, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x3, 0x10, 0x0, 0x7fff waitforvisualfinish - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end TenMillionVoltThunderboltBeamRed: - launchtemplate g10MillionVoltBoltRedBeamSpriteTemplate 0x82 0x0 - launchtemplate g10MillionVoltBoltRedBeamSpriteTemplate 0x82 0x0 + createsprite g10MillionVoltBoltRedBeamSpriteTemplate, ANIM_TARGET, 2 + createsprite g10MillionVoltBoltRedBeamSpriteTemplate, ANIM_TARGET, 2 delay 4 return TenMillionVoltThunderboltBeamBlue: - launchtemplate g10MillionVoltBoltBlueBeamSpriteTemplate 0x82 0x0 - launchtemplate g10MillionVoltBoltBlueBeamSpriteTemplate 0x82 0x0 + createsprite g10MillionVoltBoltBlueBeamSpriteTemplate, ANIM_TARGET, 2 + createsprite g10MillionVoltBoltBlueBeamSpriteTemplate, ANIM_TARGET, 2 delay 4 return TenMillionVoltThunderboltBeamPink: - launchtemplate g10MillionVoltBoltPinkBeamSpriteTemplate 0x82 0x0 - launchtemplate g10MillionVoltBoltPinkBeamSpriteTemplate 0x82 0x0 + createsprite g10MillionVoltBoltPinkBeamSpriteTemplate, ANIM_TARGET, 2 + createsprite g10MillionVoltBoltPinkBeamSpriteTemplate, ANIM_TARGET, 2 delay 4 return TenMillionVoltThunderboltBeamYellow: - launchtemplate g10MillionVoltBoltYellowBeamSpriteTemplate 0x82 0x0 - launchtemplate g10MillionVoltBoltYellowBeamSpriteTemplate 0x82 0x0 + createsprite g10MillionVoltBoltYellowBeamSpriteTemplate, ANIM_TARGET, 2 + createsprite g10MillionVoltBoltYellowBeamSpriteTemplate, ANIM_TARGET, 2 delay 4 return TenMillionVoltThunderboltBeamGreen: - launchtemplate g10MillionVoltBoltGreenBeamSpriteTemplate 0x82 0x0 - launchtemplate g10MillionVoltBoltGreenBeamSpriteTemplate 0x82 0x0 + createsprite g10MillionVoltBoltGreenBeamSpriteTemplate, ANIM_TARGET, 2 + createsprite g10MillionVoltBoltGreenBeamSpriteTemplate, ANIM_TARGET, 2 delay 4 return TenMillionVoltThunderboltBeamPurple: - launchtemplate g10MillionVoltBoltPurpleBeamSpriteTemplate 0x82 0x0 - launchtemplate g10MillionVoltBoltPurpleBeamSpriteTemplate 0x82 0x0 + createsprite g10MillionVoltBoltPurpleBeamSpriteTemplate, ANIM_TARGET, 2 + createsprite g10MillionVoltBoltPurpleBeamSpriteTemplate, ANIM_TARGET, 2 delay 4 return TenMillionVoltThunderboltSparkGeyser: playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x5 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x5 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x5 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x8003 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003 delay 0x4 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffea 0x5 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffea 0x5 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffea 0x5 0x2c 0x80 0x28 0x0 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003 delay 0x4 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x5 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x5 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x5 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x15 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x15 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x15 0x2c 0x80 0x28 0x0 0x8003 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003 delay 0x4 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x5 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x5 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x5 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x15 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x15 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x15 0x2c 0x80 0x28 0x0 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003 delay 0x4 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x8 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x8 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 return @@ -28076,27 +28102,27 @@ Move_STOKED_SPARKSURFER:: loadspritegfx ANIM_TAG_ROUND_SHADOW @fly loadspritegfx ANIM_TAG_SPARK_2 @spark invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gStokedSparksurferFlySpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0x60 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0x0 0x20 0x2c 0xe0 0x28 0x2 0x3 - delay 0x2 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffe0 0x20 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffe0 0x20 0x2c 0x60 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffe0 0x20 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffe0 0x20 0x2c 0xe0 0x28 0x2 0x3 - delay 0x2 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffd0 0x20 0x2c 0x20 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffd0 0x20 0x2c 0x60 0x28 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffd0 0x20 0x2c 0xa0 0x28 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0x0 0xffd0 0x20 0x2c 0xe0 0x28 0x2 0x3 + createsprite gStokedSparksurferFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3 + delay 0x2 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3 + delay 0x2 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3 waitforvisualfinish unloadspritegfx ANIM_TAG_ROUND_SHADOW - launchtask AnimTask_GetTimeOfDay 0x2 0x0 + createvisualtask AnimTask_GetTimeOfDay, 0x2 jumpargeq 0x0 0x0 StokedSparksurferDay jumpargeq 0x0 0x2 StokedSparksurferAfternoon StokedSparksurferNight: @@ -28113,138 +28139,138 @@ StokedSparksurferFinish: loadspritegfx ANIM_TAG_ELECTRIC_ORBS @charge loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x1c 0x2 0xc - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x3c 0x1 + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x1c, 0x2, 0xc + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x3c, 0x1 call EndureEffect delay 0x8 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x5 0x0 0x10 0x5bff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x5, 0x0, 0x10, 0x5bff call EndureEffect delay 0x8 call EndureEffect delay 0x2 loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_ELECTRICITY - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x0 0x10 0x0 0x5bff - launchtemplate gVoltTackleOrbSlideSpriteTemplate 0x1 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x0, 0x10, 0x0, 0x5bff + createsprite gVoltTackleOrbSlideSpriteTemplate, ANIM_ATTACKER, 1 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x0 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x0 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x1 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x1 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET waitforvisualfinish - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x2 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x2 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER waitforvisualfinish - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x3 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x3 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 0x1 fadetobg BG_ZMOVE_ACTIVATE waitbgfadeout visible ANIM_TARGET - launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x4 + createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x4 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET waitforvisualfinish unloadspritegfx ANIM_TAG_SPARK unloadspritegfx ANIM_TAG_FOCUS_ENERGY unloadspritegfx ANIM_TAG_ELECTRIC_ORBS unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x5 0x1c - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x30 0x2c 0x40 0x28 0x1 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x30 0x2c 0x80 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x00 0x30 0x2c 0xc0 0x28 0x2 0x8003 + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x5, 0x1c + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x80, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x00, 0x30, 0x2c, 0xc0, 0x28, 0x2, 0x8003 call StokedSparksurferSparkGeyser - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_DEF | ANIM_PAL_ATK, 0x2, 0x0, 0x10, 0x5bff - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x37 0x2c 0x0 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x37 0x2c 0x40 0x28 0x1 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x37 0x2c 0x80 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x00 0x37 0x2c 0xc0 0x28 0x2 0x8003 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_TARGET | F_PAL_ATTACKER), 0x2, 0x0, 0x10, 0x5bff + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x0, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x40, 0x28, 0x1, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x80, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x00, 0x37, 0x2c, 0xc0, 0x28, 0x2, 0x8003 call StokedSparksurferSparkGeyser - launchtask AnimTask_VoltTackleAttackerReappear 0x5 0x0 @ attacker flicker back + createvisualtask AnimTask_VoltTackleAttackerReappear, 0x5 @ attacker flicker back playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET delay 0x4 - launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x0 0x10 0x10 + createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x10 delay 0x2 - launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x0 0xfff0 0xfff0 + createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0, 0xfff0 delay 0x4 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_DEF | ANIM_PAL_ATK, 0x2, 0x10, 0x0, 0x5bff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_TARGET | F_PAL_ATTACKER), 0x2, 0x10, 0x0, 0x5bff restorebg delay 0x18 - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end StokedSparksurferSparkGeyser: playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x5 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x5 0x2c 0x40 0x28 0x1 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x5 0x2c 0x80 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003 delay 0x4 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffea 0x5 0x2c 0x0 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffea 0x5 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffea 0x5 0x2c 0x80 0x28 0x0 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003 delay 0x4 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x5 0x2c 0x0 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x5 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x5 0x2c 0x80 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x15 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x15 0x2c 0x40 0x28 0x1 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffd4 0x15 0x2c 0x80 0x28 0x0 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003 delay 0x4 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x5 0x2c 0x0 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x5 0x2c 0x40 0x28 0x1 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x5 0x2c 0x80 0x28 0x0 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x15 0x2c 0x0 0x28 0x0 0x8003 -@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x15 0x2c 0x40 0x28 0x1 0x8003 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84 0x8 0x0 0xffbe 0x15 0x2c 0x80 0x28 0x0 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003 +@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003 delay 0x1a return Move_EXTREME_EVOBOOST:: loadspritegfx ANIM_TAG_LEER @leer - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ATK | ANIM_PAL_ATK_PARTNER | ANIM_PAL_OPPONENT1 | ANIM_PAL_OPPONENT2, 0x3, 0x0, 0x10, 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x3, 0x0, 0x10, 0x0000 waitforvisualfinish - launchtask AnimTask_AllBanksInvisible 0xA 0x0 - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ATK | ANIM_PAL_ATK_PARTNER | ANIM_PAL_OPPONENT1 | ANIM_PAL_OPPONENT2, 3, 0, 0, 0 @;Remove fading on everyone + createvisualtask AnimTask_AllBanksInvisible, 0xA + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BATTLERS, 3, 0, 0, 0 @;Remove fading on everyone waitforvisualfinish playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0x18 0xfff4 - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xffe8 0xfff4 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0xfff4 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xfff4 delay 0xa playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0x28 0xfff0 - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xfff8 0xfff0 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0xfff0 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xfff0 delay 0xa playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0x8 0xfffe - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xffd8 0xfffe + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0xfffe + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xfffe delay 0xa playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0x10 0x5 - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xffe0 0x5 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x5 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x5 delay 0xa playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0x20 0xfff0 - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xfff0 0xfff0 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xfff0 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xfff0 delay 0xa playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0x5 0x0 - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xffd5 0x0 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x5, 0x0 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffd5, 0x0 delay 0xa playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0x1c 0x5 - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xffec 0x5 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x1c, 0x5 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0x5 delay 0xa playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xf 0xfff4 - launchtemplate gLeerSpriteTemplate 0x2 0x2 0xffdf 0xfff4 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xf, 0xfff4 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffdf, 0xfff4 waitforvisualfinish fadetobg BG_ZMOVE_ACTIVATE waitbgfadeout @@ -28257,90 +28283,90 @@ Move_EXTREME_EVOBOOST:: loadspritegfx ANIM_TAG_WATER_ORB @blue loadspritegfx ANIM_TAG_POISON_BUBBLE @purple loadspritegfx ANIM_TAG_LEAF @green - launchtask AnimTask_BlendParticle, 0x5, 0x5, ANIM_TAG_CIRCLE_OF_LIGHT, 0x0, 0x10, 0x10, 0x5bff + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_CIRCLE_OF_LIGHT, 0x0, 0x10, 0x10, 0x5bff waitforvisualfinish playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER - launchtemplate gExtremeEvoboostRedChargeUpSpriteTemplate 0x82 0x7 0x0 0x1c 0x510 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gExtremeEvoboostRedChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gExtremeEvoboostPinkChargeUpSpriteTemplate 0x82 0x7 0x0 0x20 0x4e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gExtremeEvoboostPinkChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gExtremeEvoboostIceChargeUpSpriteTemplate 0x82 0x7 0x0 0x21 0x540 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gExtremeEvoboostIceChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gExtremeEvoboostBlackChargeUpSpriteTemplate 0x82 0x7 0x0 0x1f 0x490 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gExtremeEvoboostBlackChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gExtremeEvoboostBlueChargeUpSpriteTemplate 0x82 0x7 0x0 0x1c 0x500 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gExtremeEvoboostBlueChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gExtremeEvoboostPurpleChargeUpSpriteTemplate 0x82 0x7 0x0 0x21 0x4d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gExtremeEvoboostPurpleChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x2 - launchtemplate gExtremeEvoboostYellowChargeUpSpriteTemplate 0x82 0x7 0x0 0x1c 0x510 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gExtremeEvoboostYellowChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gExtremeEvoboostGreenChargeUpSpriteTemplate 0x82 0x7 0x0 0x20 0x4e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gExtremeEvoboostGreenChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x2 waitforvisualfinish visible ANIM_ATTACKER loopsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x15, 0xd call ExtremeEvoboostColorCircle - launchtask AnimTask_StockpileDeformMon 0x5 0x0 @stockpile movement + createvisualtask AnimTask_StockpileDeformMon, 0x5 @stockpile movement call ExtremeEvoboostColorCharge call ExtremeEvoboostColorCharge call ExtremeEvoboostColorCharge waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER delay 0x5 - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ATK | ANIM_PAL_BG, 0x0, 0x0, 0x10, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ATTACKER), 0x0, 0x0, 0x10, 0x7fff delay 0x18 call ResetFromWhiteScreen end ExtremeEvoboostColorCircle: - launchtemplate gExtremeEvoboostRedChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostRedChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostPinkChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostPinkChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostIceChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostIceChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostBlackChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostBlackChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostBlueChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostBlueChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostPurpleChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostPurpleChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostYellowChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostYellowChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostGreenChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostGreenChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 return ExtremeEvoboostColorCharge: - launchtemplate gExtremeEvoboostRedChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostRedChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostRedStockpileSpriteTemplate 0x2 0x3 0x37 0x37 0xd + createsprite gExtremeEvoboostRedStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x37, 0x37, 0xd delay 0x2 - launchtemplate gExtremeEvoboostPinkChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostPinkChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostPinkStockpileSpriteTemplate 0x2 0x3 0xffc9 0xffc9 0xd + createsprite gExtremeEvoboostPinkStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0xffc9, 0xffc9, 0xd delay 0x2 - launchtemplate gExtremeEvoboostIceChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostIceChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostIceStockpileSpriteTemplate 0x2 0x3 0x0 0x37 0xd + createsprite gExtremeEvoboostIceStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x37, 0xd delay 0x2 - launchtemplate gExtremeEvoboostBlackChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostBlackChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostBlackStockpileSpriteTemplate 0x2 0x3 0x0 0xffc9 0xd + createsprite gExtremeEvoboostBlackStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffc9, 0xd delay 0x2 - launchtemplate gExtremeEvoboostBlueChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostBlueChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostBlueStockpileSpriteTemplate 0x2 0x3 0x37 0xffde 0xd + createsprite gExtremeEvoboostBlueStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x37, 0xffde, 0xd delay 0x2 - launchtemplate gExtremeEvoboostPurpleChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostPurpleChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostPurpleStockpileSpriteTemplate 0x2 0x3 0x37 0x22 0xd + createsprite gExtremeEvoboostPurpleStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x37, 0x22, 0xd delay 0x2 - launchtemplate gExtremeEvoboostYellowChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostYellowChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostYellowStockpileSpriteTemplate 0x2 0x3 0xffc9 0xffde 0xd + createsprite gExtremeEvoboostYellowStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0xffc9, 0xffde, 0xd delay 0x2 - launchtemplate gExtremeEvoboostGreenChargeCircleSpriteTemplate 0x2 0x2 0x0 0xfff0 + createsprite gExtremeEvoboostGreenChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0 delay 0x2 - launchtemplate gExtremeEvoboostGreenStockpileSpriteTemplate 0x2 0x3 0xffc9 0x22 0xd + createsprite gExtremeEvoboostGreenStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0xffc9, 0x22, 0xd delay 0x2 return @@ -28351,22 +28377,22 @@ Move_PULVERIZING_PANCAKE:: loadspritegfx ANIM_TAG_MUD_SAND @dig loadspritegfx ANIM_TAG_IMPACT @hit loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @black colour - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET PulverizingPancakeOnPlayer PulverizingPancakeOnOpponent: - launchtemplate gPulverizingPancakeRedDetectSpriteTemplate 0xd 0x2 0x14 0xffec + createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, 0x14, 0xffec goto PulverizingPancakeFinish PulverizingPancakeOnPlayer: - launchtemplate gPulverizingPancakeRedDetectSpriteTemplate 0xd 0x2 0xa 0xfff2 - launchtemplate gPulverizingPancakeRedDetectSpriteTemplate 0xd 0x2 0xfff6 0xfff2 + createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, 0xa, 0xfff2 + createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, 0xfff6, 0xfff2 PulverizingPancakeFinish: playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish fadetobg BG_SOLAR_BEAM_OPPONENT waitbgfadeout - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x32 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x0, 0x2, 0x32, 0x1 call PulverizingPancakeDiggingRun call PulverizingPancakeDiggingRun call PulverizingPancakeDiggingRun @@ -28378,27 +28404,27 @@ PulverizingPancakeFinish: call PulverizingPancakeDiggingRun loadspritegfx ANIM_TAG_ROUND_SHADOW @fly playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET - launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 delay 0x2 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0xc 0x4 0xfff0 0x22 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0x10 0x4 0xfff6 0x22 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xe 0x4 0xffee 0x22 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xc 0x4 0xfff0 0x22 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x22 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x22 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x22 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x22 unloadspritegfx ANIM_TAG_SPARKLE_4 unloadspritegfx ANIM_TAG_VERTICAL_HEX fadetobg BG_IN_AIR waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0x1000 0x0 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x1000, 0x0, 0xffff waitbgfadein loadspritegfx ANIM_TAG_WHITE_SHADOW - launchtask AnimTask_PulverizingPancakeWhiteShadow 0x5 0x2 0x33 0x33 @first arg is duration, last arg is move speed + createvisualtask AnimTask_PulverizingPancakeWhiteShadow, 0x5, 0x33, 0x33 @first arg is duration, last arg is move speed delay 0x10 call PulverizingPancakeSlowBackground call PulverizingPancakeSlowBackground call PulverizingPancakeSlowBackground call PulverizingPancakeSlowBackground call PulverizingPancakeSlowBackground - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x2 0x0 0xb 0x0000 @ target darkens + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x0, 0xb, 0x0000 @ target darkens call PulverizingPancakeSlowBackground @0 call PulverizingPancakeSlowBackground call PulverizingPancakeSlowBackground @@ -28411,50 +28437,50 @@ PulverizingPancakeFinish: loadspritegfx ANIM_TAG_THIN_RING @ring unloadspritegfx ANIM_TAG_MUD_SAND @dig loadspritegfx ANIM_TAG_ELECTRIC_ORBS @yellow - launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 + createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 delay 0x7 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gBasicHitSplatSpriteTemplate 0x82, 0x4, 0x0 0x0 0x1 0x0 @big hit marker + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x0 @big hit marker delay 0x0 - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x4 0x2c - launchtemplate gPulverizingPancakeYellowRingSpriteTemplate 0x83 0x4 0x0 0x0 0x100 0x0 + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x4, 0x2c + createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0 delay 0x5 loadspritegfx ANIM_TAG_EXPLOSION @explosion call PulverizingPancakeExplosion - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x2, 0x0, 0x10, 0x7fff @ everything goes white + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x2, 0x0, 0x10, 0x7fff @ everything goes white call PulverizingPancakeExplosion waitforvisualfinish call ResetFromWhiteScreen end PulverizingPancakeDiggingRun: - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0xc 0x4 0xfff0 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0x10 0x4 0xfff6 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xe 0x4 0xffee 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xc 0x4 0xfff0 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x5 return PulverizingPancakeSlowBackground: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xfd56 0x0 0xffff @-0x2aa + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xfd56, 0x0, 0xffff @-0x2aa delay 0x1 return PulverizingPancakeExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gPulverizingPancakeExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gPulverizingPancakeYellowRingSpriteTemplate 0x83 0x4 0x0 0x0 0x100 0x0 - launchtemplate gPulverizingPancakeExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0 + createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gPulverizingPancakeExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gPulverizingPancakeExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gPulverizingPancakeYellowRingSpriteTemplate 0x83 0x4 0x0 0x0 0x100 0x0 - launchtemplate gPulverizingPancakeExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0 + createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return @@ -28463,24 +28489,24 @@ Move_GENESIS_SUPERNOVA:: loadspritegfx ANIM_TAG_BLUE_ORB @reversal loadspritegfx ANIM_TAG_POISON_BUBBLE @poison bubble loadspritegfx ANIM_TAG_POISON_JAB @purple - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish call SetPsychicBackground loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET GenesisSupernovaOnPlayer GenesisSupernovaOnOpponent: call GenesisSupernovaBuffEffectPlayer_1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0xb 0xd87c - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x70 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0xb, 0xd87c + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x70, 0x1 call GenesisSupernovaBuffEffectPlayer_2 call GenesisSupernovaBuffEffectPlayer_1 goto GenesisSupernovaFinish GenesisSupernovaOnPlayer: call GenesisSupernovaBuffOpponent_1 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0x0 0xb 0xd87c - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x70 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0xb, 0xd87c + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x70, 0x1 call GenesisSupernovaBuffOpponent_2 call GenesisSupernovaBuffOpponent_1 GenesisSupernovaFinish: @@ -28492,8 +28518,8 @@ GenesisSupernovaFinish: unloadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge monbg ANIM_ATTACKER - setblends 0x80c - launchtemplate gGenesisSupernovaChargeSpriteTemplate 0x2 0x1 0x0 @charge + setalpha 12, 8 + createsprite gGenesisSupernovaChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 @charge call GenesisSupernovaFlare @delay 12 per call GenesisSupernovaFlare call GenesisSupernovaFlare @@ -28504,21 +28530,21 @@ GenesisSupernovaFinish: loadspritegfx ANIM_TAG_WISP_ORB @will-o-wisp loadspritegfx ANIM_TAG_METEOR @superpower loadspritegfx ANIM_TAG_SPARKLE_2 @sparkles - launchtemplate gGenesisSupernovaSuperpowerSpriteTemplate 0x83 0x1 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x0 0xb 0x0 0xd87c + createsprite gGenesisSupernovaSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x0, 0xb, 0x0, 0xd87c playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendParticle, 0x2, 0x5, ANIM_TAG_SPARKLE_2, 0x0, 0x0, 0xc, 0x7fff + createvisualtask AnimTask_BlendParticle, 0x2, ANIM_TAG_SPARKLE_2, 0x0, 0x0, 0xc, 0x7fff delay 0x8 invisible ANIM_TARGET loadspritegfx ANIM_TAG_EXPLOSION @explosion unloadspritegfx ANIM_TAG_METEOR @superpower call GenesisSupernovaBubbleExplosion call GenesisSupernovaBubbleExplosion - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x3, 0x0, 0x10, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x3, 0x0, 0x10, 0x7fff call GenesisSupernovaBubbleExplosion waitforvisualfinish delay 0x10 - launchtask AnimTask_BlendParticle, 0x2, 0x5, ANIM_TAG_SPARKLE_2, 0x0, 0xc, 0x0, 0x7fff + createvisualtask AnimTask_BlendParticle, 0x2, ANIM_TAG_SPARKLE_2, 0x0, 0xc, 0x0, 0x7fff clearmonbg ANIM_ATTACKER blendoff delay 0x0 @@ -28526,123 +28552,123 @@ GenesisSupernovaFinish: waitforvisualfinish end GenesisSupernovaBubbleExplosion: - launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xfff1 0x0 ANIM_TARGET 0x0 0x20 0x3c - launchtemplate gGenesisSupernovaBubbleSpriteTemplate 0x82, 0x3, 0xa 0xa 0x0 - launchtemplate gGenesisSupernovaExplosionSpriteTemplate 0x3 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, ANIM_TARGET, 0x0, 0x20, 0x3c + createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xa, 0x0 + createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER delay 0x6 - launchtemplate gGenesisSupernovaBubbleSpriteTemplate 0x82, 0x3, 0x14 0xffec 0x0 - launchtemplate gGenesisSupernovaExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xffec, 0x0 + createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER delay 0x6 - launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xc 0xfffb ANIM_TARGET 0x0 0x20 0x3c - launchtemplate gGenesisSupernovaBubbleSpriteTemplate 0x82, 0x3, 0xffec 0xf 0x0 - launchtemplate gGenesisSupernovaExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, ANIM_TARGET, 0x0, 0x20, 0x3c + createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x0 + createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER delay 0x6 - launchtemplate gGenesisSupernovaBubbleSpriteTemplate 0x82, 0x3, 0x0 0x0 0x0 - launchtemplate gGenesisSupernovaExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0 + createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER delay 0x6 - launchtemplate gGenesisSupernovaBubbleSpriteTemplate 0x82, 0x3, 0xffec 0xffec 0x0 - launchtemplate gGenesisSupernovaExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xffec, 0x0 + createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER delay 0x6 - launchtemplate gGenesisSupernovaBubbleSpriteTemplate 0x82, 0x3, 0x10 0xfff8 0x0 - launchtemplate gGenesisSupernovaExplosionSpriteTemplate 0x3 0x4 0xffe0 0xffe8 ANIM_TARGET 0x1 + createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0x10, 0xfff8, 0x0 + createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe0, 0xffe8, ANIM_TARGET, 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER return GenesisSupernovaBuffEffectPlayer_1: - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x24 0x80 0x24 0x30 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x24, 0x80, 0x24, 0x30, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x10 0x80 0x10 0x35 0x30 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x10, 0x80, 0x10, 0x35, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x45 0x80 0x45 0x3a 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x45, 0x80, 0x45, 0x3a, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x60 0x80 0x60 0x30 0x30 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x60, 0x80, 0x60, 0x30, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x30 0x80 0x30 0x3c 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x30, 0x80, 0x30, 0x3c, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x55 0x80 0x55 0x33 0x30 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x55, 0x80, 0x55, 0x33, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return GenesisSupernovaBuffEffectPlayer_2: - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x29 0x80 0x29 0x31 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x29, 0x80, 0x29, 0x31, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x73 0x80 0x73 0x32 0x30 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x73, 0x80, 0x73, 0x32, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x4a 0x80 0x4a 0x3c 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x4a, 0x80, 0x4a, 0x3c, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x64 0x80 0x64 0x33 0x30 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x64, 0x80, 0x64, 0x33, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x2c 0x80 0x2c 0x3d 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x2c, 0x80, 0x2c, 0x3d, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaOrbRiseSpriteTemplate 0x32 0x5 0x6c 0x80 0x6c 0x30 0x30 + createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x6c, 0x80, 0x6c, 0x30, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return GenesisSupernovaReversalWave: - launchtemplate gGenesisSupernovaReversalSpriteTemplate 0x2 0x2 0x1a 0x0 - launchtemplate gGenesisSupernovaReversalSpriteTemplate 0x2 0x2 0x1a 0x2a - launchtemplate gGenesisSupernovaReversalSpriteTemplate 0x2 0x2 0x1a 0x54 - launchtemplate gGenesisSupernovaReversalSpriteTemplate 0x2 0x2 0x1a 0x7e + createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x0 + createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x2a + createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x54 + createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x7e return GenesisSupernovaFlare: - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x2 return GenesisSupernovaBuffOpponent_1: - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0x94 0x40 0x94 0x0 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0x94, 0x40, 0x94, 0x0, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0x80 0x40 0x80 0x0 0x30 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0x80, 0x40, 0x80, 0x0, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0xb5 0x40 0xb5 0x0 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xb5, 0x40, 0xb5, 0x0, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0xd0 0x40 0xd0 0x0 0x30 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xd0, 0x40, 0xd0, 0x0, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0xa0 0x40 0xa0 0x0 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xa0, 0x40, 0xa0, 0x0, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0xc5 0x40 0xc5 0x0 0x30 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xc5, 0x40, 0xc5, 0x0, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return GenesisSupernovaBuffOpponent_2: - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0x99 0x40 0x99 0x0 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0x99, 0x40, 0x99, 0x0, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0xe3 0x40 0xe3 0x0 0x30 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xe3, 0x40, 0xe3, 0x0, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0xba 0x40 0xba 0x0 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xba, 0x40, 0xba, 0x0, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0xd4 0x40 0xd4 0x0 0x30 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xd4, 0x40, 0xd4, 0x0, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0x9c 0x40 0x9c 0x0 0x30 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0x9c, 0x40, 0x9c, 0x0, 0x30 delay 0x2 - launchtemplate gGenesisSupernovaSpinUpSpriteTemplate 0x32 0x5 0xdc 0x40 0xdc 0x0 0x30 + createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xdc, 0x40, 0xdc, 0x0, 0x30 delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return @@ -28651,305 +28677,305 @@ Move_SINISTER_ARROW_RAID:: loadspritegfx ANIM_TAG_SPIRIT_ARROW @arrow loadspritegfx ANIM_TAG_LEAF @green invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidFlyUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gArrowRaidFlyUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 waitforvisualfinish unloadspritegfx ANIM_TAG_ROUND_SHADOW - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x10 0x388C @ bg to purple + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x388C @ bg to purple waitforvisualfinish visible ANIM_ATTACKER playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowUpSpriteTemplate 0x2 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gArrowRaidArrowUpSpriteTemplate 0x2 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gArrowRaidArrowUpSpriteTemplate 0x2 0x7 0x0 0x21 0x240 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gArrowRaidArrowUpSpriteTemplate 0x2 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gArrowRaidArrowUpSpriteTemplate 0x2 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gArrowRaidArrowUpSpriteTemplate 0x2 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x2 waitforvisualfinish invisible ANIM_ATTACKER loadspritegfx ANIM_TAG_BIRD @sky attack loadspritegfx ANIM_TAG_EXPLOSION_2 @explosion loadspritegfx ANIM_TAG_POISON_BUBBLE @purple - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET SinisterArrowRaidOnPlayer SinisterArrowRaidOnOpponent: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidFlyRightSpriteTemplate 0x32 0x5 0xfff0 0x88 0x100 0x38 0x15 @left to right + createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x88, 0x100, 0x38, 0x15 @left to right delay 0x5 - launchtemplate gArrowRaidRightUpSpriteTemplate 0x32 0x5 0xfff0 0x8a 0x100 0x3a 0x15 @left to right + createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x8a, 0x100, 0x3a, 0x15 @left to right delay 0x1 - launchtemplate gArrowRaidRightUpSpriteTemplate 0x32 0x5 0xfff0 0x8c 0x100 0x3c 0x15 + createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x8c, 0x100, 0x3c, 0x15 delay 0x1 - launchtemplate gArrowRaidRightUpSpriteTemplate 0x32 0x5 0xfff0 0x86 0x100 0x36 0x15 + createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x86, 0x100, 0x36, 0x15 delay 0x1 - launchtemplate gArrowRaidRightUpSpriteTemplate 0x32 0x5 0xfff0 0x84 0x100 0x34 0x15 + createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x84, 0x100, 0x34, 0x15 delay 0x1 - launchtemplate gArrowRaidRightUpSpriteTemplate 0x32 0x5 0xfff0 0x88 0x100 0x38 0x15 + createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x88, 0x100, 0x38, 0x15 waitforvisualfinish delay 0xa playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER @[x0] [y0] [xf] [yf] - launchtemplate gArrowRaidFlyLeftSpriteTemplate 0x32 0x5 0x0120 0x38 0xfff0 0x38 0x15 @right to left + createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x38, 0xfff0, 0x38, 0x15 @right to left delay 0x5 - launchtemplate gArrowRaidLeftUpSpriteTemplate 0x32 0x5 0x0120 0x36 0xfff0 0x36 0x15 + createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x36, 0xfff0, 0x36, 0x15 delay 0x1 - launchtemplate gArrowRaidLeftUpSpriteTemplate 0x32 0x5 0x0120 0x3a 0xfff0 0x3a 0x15 + createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x3a, 0xfff0, 0x3a, 0x15 delay 0x1 - launchtemplate gArrowRaidLeftUpSpriteTemplate 0x32 0x5 0x0120 0x37 0xfff0 0x37 0x15 + createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x37, 0xfff0, 0x37, 0x15 delay 0x1 - launchtemplate gArrowRaidLeftUpSpriteTemplate 0x32 0x5 0x0120 0x3c 0xfff0 0x3c 0x15 + createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x3c, 0xfff0, 0x3c, 0x15 delay 0x1 - launchtemplate gArrowRaidLeftUpSpriteTemplate 0x32 0x5 0x0120 0x38 0xfff0 0x38 0x15 + createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x38, 0xfff0, 0x38, 0x15 waitforvisualfinish delay 0xa playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidFlyRightSpriteTemplate 0x32 0x5 0xfff0 0x08 0x100 0x0f 0x15 @left to right + createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x08, 0x100, 0x0f, 0x15 @left to right delay 0x5 - launchtemplate gArrowRaidRightDownSpriteTemplate 0x32 0x5 0xfff0 0x0a 0x100 0x11 0x15 + createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x0a, 0x100, 0x11, 0x15 delay 0x1 - launchtemplate gArrowRaidRightDownSpriteTemplate 0x32 0x5 0xfff0 0x0c 0x100 0x13 0x15 + createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x0c, 0x100, 0x13, 0x15 delay 0x1 - launchtemplate gArrowRaidRightDownSpriteTemplate 0x32 0x5 0xfff0 0x06 0x100 0xd 0x15 + createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x06, 0x100, 0xd, 0x15 delay 0x1 - launchtemplate gArrowRaidRightDownSpriteTemplate 0x32 0x5 0xfff0 0x04 0x100 0xb 0x15 + createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x04, 0x100, 0xb, 0x15 delay 0x1 - launchtemplate gArrowRaidRightDownSpriteTemplate 0x32 0x5 0xfff0 0x08 0x100 0xf 0x15 + createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x08, 0x100, 0xf, 0x15 waitforvisualfinish call SinisterArrowRaidFlyStrike - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x3 0x4b - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x4 0x0 0x10 0x40c0 @ defender to purple + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x3, 0x4b + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x4, 0x0, 0x10, 0x40c0 @ defender to purple call SinisterArrowRaidStrikeOpponent call SinisterArrowRaidOpponentExplosion playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 call SinisterArrowRaidFinalExplosion goto SinisterArrowRaidFinish @on player SinisterArrowRaidOnPlayer: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidFlyLeftSpriteTemplate 0x32 0x5 0x0120 0x08 0xfff0 0x0f 0x15 @right to left + createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x08, 0xfff0, 0x0f, 0x15 @right to left delay 0x5 - launchtemplate gArrowRaidFaceUpLeftSpriteTemplate 0x32 0x5 0x0120 0x0a 0xfff0 0x11 0x15 + createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x0a, 0xfff0, 0x11, 0x15 delay 0x1 - launchtemplate gArrowRaidFaceUpLeftSpriteTemplate 0x32 0x5 0x0120 0x0c 0xfff0 0x13 0x15 + createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x0c, 0xfff0, 0x13, 0x15 delay 0x1 - launchtemplate gArrowRaidFaceUpLeftSpriteTemplate 0x32 0x5 0x0120 0x06 0xfff0 0xd 0x15 + createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x06, 0xfff0, 0xd, 0x15 delay 0x1 - launchtemplate gArrowRaidFaceUpLeftSpriteTemplate 0x32 0x5 0x0120 0x04 0xfff0 0xb 0x15 + createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x04, 0xfff0, 0xb, 0x15 delay 0x1 - launchtemplate gArrowRaidFaceUpLeftSpriteTemplate 0x32 0x5 0x0120 0x08 0xfff0 0xf 0x15 + createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x08, 0xfff0, 0xf, 0x15 waitforvisualfinish delay 0xa playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidFlyRightSpriteTemplate 0x32 0x5 0xfff0 0x38 0x100 0x38 0x15 @left to right + createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x38, 0x100, 0x38, 0x15 @left to right delay 0x5 - launchtemplate gArrowRaidRightSpriteTemplate 0x32 0x5 0xfff0 0x36 0x100 0x36 0x15 + createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x36, 0x100, 0x36, 0x15 delay 0x1 - launchtemplate gArrowRaidRightSpriteTemplate 0x32 0x5 0xfff0 0x3a 0x100 0x3a 0x15 + createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x3a, 0x100, 0x3a, 0x15 delay 0x1 - launchtemplate gArrowRaidRightSpriteTemplate 0x32 0x5 0xfff0 0x37 0x100 0x37 0x15 + createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x37, 0x100, 0x37, 0x15 delay 0x1 - launchtemplate gArrowRaidRightSpriteTemplate 0x32 0x5 0xfff0 0x3c 0x100 0x3c 0x15 + createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x3c, 0x100, 0x3c, 0x15 delay 0x1 - launchtemplate gArrowRaidRightSpriteTemplate 0x32 0x5 0xfff0 0x38 0x100 0x38 0x15 + createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x38, 0x100, 0x38, 0x15 waitforvisualfinish delay 0xa playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidFlyLeftSpriteTemplate 0x32 0x5 0x0120 0x78 0xfff0 0x58 0x15 @right to left + createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x78, 0xfff0, 0x58, 0x15 @right to left delay 0x5 - launchtemplate gArrowRaidLeftDownSpriteTemplate 0x32 0x5 0x100 0x8a 0xfff0 0x3a 0x15 + createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x8a, 0xfff0, 0x3a, 0x15 delay 0x1 - launchtemplate gArrowRaidLeftDownSpriteTemplate 0x32 0x5 0x100 0x8c 0xfff0 0x3c 0x15 + createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x8c, 0xfff0, 0x3c, 0x15 delay 0x1 - launchtemplate gArrowRaidLeftDownSpriteTemplate 0x32 0x5 0x100 0x86 0xfff0 0x36 0x15 + createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x86, 0xfff0, 0x36, 0x15 delay 0x1 - launchtemplate gArrowRaidLeftDownSpriteTemplate 0x32 0x5 0x100 0x84 0xfff0 0x34 0x15 + createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x84, 0xfff0, 0x34, 0x15 delay 0x1 - launchtemplate gArrowRaidLeftDownSpriteTemplate 0x32 0x5 0x100 0x88 0xfff0 0x38 0x15 + createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x88, 0xfff0, 0x38, 0x15 waitforvisualfinish call SinisterArrowRaidFlyStrike - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x3 0x4b - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x4 0x0 0x10 0x40c0 @ defender to purple + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x3, 0x4b + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x4, 0x0, 0x10, 0x40c0 @ defender to purple call SinisterArrowRaidArrowsStrikePlayer call SinisterArrowRaidPlayerExplosion playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 call SinisterArrowRaidFinalExplosion @ finish SinisterArrowRaidFinish: - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x4 0x10 0x0 0x40c0 @ return tgt to normal + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x4, 0x10, 0x0, 0x40c0 @ return tgt to normal waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x10 0x00 0x388C @ bg to nrml + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x10, 0x00, 0x388C @ bg to nrml delay 0x5 - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end SinisterArrowRaidFlyStrike: visible ANIM_TARGET delay 0xa playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidFlyStrikeSpriteTemplate 0x82 0x1 0x14 + createsprite gArrowRaidFlyStrikeSpriteTemplate, ANIM_TARGET, 2, 0x14 waitforvisualfinish delay 0x5 return SinisterArrowRaidStrikeOpponent: - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x85 0xfff0 0xa5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x95 0xfff0 0xb5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x95, 0xfff0, 0xb5, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x75 0xfff0 0x95 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x75, 0xfff0, 0x95, 0x40, 0x4 delay 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xa5 0xfff0 0xc5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xa5, 0xfff0, 0xc5, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x6f 0xfff0 0x8f 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x6f, 0xfff0, 0x8f, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x7b 0xfff0 0x9b 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x7b, 0xfff0, 0x9b, 0x40, 0x4 delay 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x85 0xfff0 0xa5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xa2 0xfff0 0xc2 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xa2, 0xfff0, 0xc2, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x82 0xfff0 0xa2 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x82, 0xfff0, 0xa2, 0x40, 0x4 delay 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x87 0xfff0 0xa7 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x87, 0xfff0, 0xa7, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x72 0xfff0 0x92 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x72, 0xfff0, 0x92, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x85 0xfff0 0xa5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4 delay 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x8b 0xfff0 0xab 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x8b, 0xfff0, 0xab, 0x40, 0x4 delay 0x1 return SinisterArrowRaidOpponentExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0x0 0x0 ANIM_TARGET 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x85 0xfff0 0xa5 0x40 0x4 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x95 0xfff0 0xb5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x95, 0xfff0, 0xb5, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x75 0xfff0 0x95 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x75, 0xfff0, 0x95, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xa5 0xfff0 0xc5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xa5, 0xfff0, 0xc5, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x6f 0xfff0 0x8f 0x40 0x4 - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x6f, 0xfff0, 0x8f, 0x40, 0x4 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x7b 0xfff0 0x9b 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x7b, 0xfff0, 0x9b, 0x40, 0x4 delay 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x85 0xfff0 0xa5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xa2 0xfff0 0xc2 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xa2, 0xfff0, 0xc2, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x82 0xfff0 0xa2 0x40 0x4 - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x82, 0xfff0, 0xa2, 0x40, 0x4 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x87 0xfff0 0xa7 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x87, 0xfff0, 0xa7, 0x40, 0x4 delay 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x72 0xfff0 0x92 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x72, 0xfff0, 0x92, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x85 0xfff0 0xa5 0x40 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x8b 0xfff0 0xab 0x40 0x4 - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x8b, 0xfff0, 0xab, 0x40, 0x4 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x1 return SinisterArrowRaidArrowsStrikePlayer: - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff5 0xfff0 0x45 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x5 0xfff0 0x55 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x5, 0xfff0, 0x55, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xffe5 0xfff0 0x35 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffe5, 0xfff0, 0x35, 0x90, 0x4 delay 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x15 0xfff0 0x65 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x15, 0xfff0, 0x65, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xffdf 0xfff0 0x2f 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffdf, 0xfff0, 0x2f, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xffeb 0xfff0 0x3b 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffeb, 0xfff0, 0x3b, 0x90, 0x4 delay 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff5 0xfff0 0x45 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x12 0xfff0 0x62 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x12, 0xfff0, 0x62, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff2 0xfff0 0x42 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff2, 0xfff0, 0x42, 0x90, 0x4 delay 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff7 0xfff0 0x47 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff7, 0xfff0, 0x47, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xffe2 0xfff0 0x32 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffe2, 0xfff0, 0x32, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff5 0xfff0 0x45 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4 delay 0x1 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfffb 0xfff0 0x4b 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xfff0, 0x4b, 0x90, 0x4 delay 0x1 return SinisterArrowRaidPlayerExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff5 0xfff0 0x45 0x90 0x4 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x5 0xfff0 0x55 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x5, 0xfff0, 0x55, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xffe5 0xfff0 0x35 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffe5, 0xfff0, 0x35, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x15 0xfff0 0x65 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x15, 0xfff0, 0x65, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xffdf 0xfff0 0x2f 0x90 0x4 - launchtemplate gArrowRaidExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffdf, 0xfff0, 0x2f, 0x90, 0x4 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xffeb 0xfff0 0x3b 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffeb, 0xfff0, 0x3b, 0x90, 0x4 delay 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff5 0xfff0 0x45 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0x12 0xfff0 0x62 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x12, 0xfff0, 0x62, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff2 0xfff0 0x42 0x90 0x4 - launchtemplate gArrowRaidExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff2, 0xfff0, 0x42, 0x90, 0x4 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff7 0xfff0 0x47 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff7, 0xfff0, 0x47, 0x90, 0x4 delay 0x1 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xffe2 0xfff0 0x32 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffe2, 0xfff0, 0x32, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfff5 0xfff0 0x45 0x90 0x4 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4 delay 0x1 - launchtemplate gArrowRaidArrowOnslaughtSpriteTemplate 0x82 0x5 0xfffb 0xfff0 0x4b 0x90 0x4 - launchtemplate gArrowRaidExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xfff0, 0x4b, 0x90, 0x4 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x1 return SinisterArrowRaidFinalExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gArrowRaidExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return @@ -28963,18 +28989,18 @@ Move_MALICIOUS_MOONSAULT:: loadspritegfx ANIM_TAG_EXPLOSION_2 @explosion fadetobg BG_MALICIOUS_MOONSAULT waitbgfadeout - setblends 0x80c + setalpha 12, 8 playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER - launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x6 0x1 0x0 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0 delay 0x1 - launchtemplate gFirePlumeSpriteTemplate 0x2 0x6 0xffe0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gFirePlumeSpriteTemplate 0x42 0x6 0xffec 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gFirePlumeSpriteTemplate 0x42 0x6 0x0 0xfff0 0x18 0x0 0x0 0x0 - launchtemplate gFirePlumeSpriteTemplate 0x42 0x6 0x14 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gFirePlumeSpriteTemplate 0x42 0x6 0x20 0x0 0x18 0x0 0x0 0x0 - launchtemplate gFirePlumeSpriteTemplate 0x42 0x6 0x14 0xa 0x18 0x0 0x0 0x0 - launchtemplate gFirePlumeSpriteTemplate 0x2 0x6 0x0 0x10 0x18 0x0 0x0 0x0 - launchtemplate gFirePlumeSpriteTemplate 0x2 0x6 0xffec 0xa 0x18 0x0 0x0 0x0 + createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0 + createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0 + createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0 + createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0 waitforvisualfinish delay 0x0 monbg ANIM_ATTACKER @@ -28982,280 +29008,280 @@ Move_MALICIOUS_MOONSAULT:: call MaliciousMoonsaultFireSpin call MaliciousMoonsaultFireSpin clearmonbg ANIM_ATTACKER - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gMaliciousMoonsaultRedFlySpriteTemplate 0x82, 0x4, 0x0 0x0 0xd 0x150 + createsprite gMaliciousMoonsaultRedFlySpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x150 call MaliciousMoonsaultFireSpin - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x5 0x0 0xa 0x0000 @ target darkens + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x5, 0x0, 0xa, 0x0000 @ target darkens delay 0x1a playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - launchtemplate gMaliciousMoonsaultRedBounceSpriteTemplate 0x83 0x0 + createsprite gMaliciousMoonsaultRedBounceSpriteTemplate, ANIM_TARGET, 3 delay 0x7 - launchtemplate gMaliciousMoonsaultRedImpactSpriteTemplate 0x82, 0x4, 0x0 0x0 0x1 0x0 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xff00 0x15 0x0 0x4 + createsprite gMaliciousMoonsaultRedImpactSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 call MaliciousMoonsaultExplosion delay 0x6 call MaliciousMoonsaultExplosion - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x1, 0x0, 0x10, 0x001b @ fade all to red + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x1, 0x0, 0x10, 0x001b @ fade all to red delay 0x6 call MaliciousMoonsaultExplosion - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 waitforvisualfinish call ResetFromRedScreen blendoff end MaliciousMoonsaultFireSpin: - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2c 0x510 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2f 0x490 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x30 0x4e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x30, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2c 0x500 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x31 0x540 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x31 0x4d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2f 0x490 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2c 0x510 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2c 0x500 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x30 0x4e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x30, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x31 0x4d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x31 0x540 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x1 return MaliciousMoonsaultExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMaliciousMoonsaultExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMaliciousMoonsaultExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMaliciousMoonsaultExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMaliciousMoonsaultExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMaliciousMoonsaultExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gMaliciousMoonsaultFireblastSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 return Move_OCEANIC_OPERETTA:: - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish loadspritegfx ANIM_TAG_SPOTLIGHT - launchtask AnimTask_CreateSpotlight 0x2 0x0 - launchtask AnimTask_HardwarePaletteFade 0x2 0x5 0xf8 0x3 0x0 0xa 0x0 + createvisualtask AnimTask_CreateSpotlight, 0x2 + createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0x0, 0xa, 0x0 waitforvisualfinish - launchtemplate gOceanOperaSpotlightSpriteTemplate 0x82, 0x3, 0x0 0xfff8 0x50 @spotlight + createsprite gOceanOperaSpotlightSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff8, 0x50 @spotlight loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy loadspritegfx ANIM_TAG_WATER_ORB @blue playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call OceanicOperettaBuffEffect delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x7fff - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x7fff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call OceanicOperettaBuffEffect delay 0x8 call OceanicOperettaBuffEffect waitforvisualfinish unloadspritegfx ANIM_TAG_FOCUS_ENERGY unloadspritegfx ANIM_TAG_SPOTLIGHT - launchtask AnimTask_HardwarePaletteFade 0x2 0x5 0xf8 0x3 0xa 0x0 0x1 + createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0xa, 0x0, 0x1 waitforvisualfinish - launchtask AnimTask_RemoveSpotlight 0x2 0x0 + createvisualtask AnimTask_RemoveSpotlight, 0x2 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x6 0x5da0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x6, 0x5da0 loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_THIN_RING invisible ANIM_ATTACKER - launchtemplate gOceanOperaBlueChargeSpriteTemplate 0x2 0x1 0x0 @charge + createsprite gOceanOperaBlueChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 @charge delay 0x2 - launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x50 0x1 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createvisualtask AnimTask_ShakeMon, 0x5, ANIM_ATTACKER, 0x0, 0x2, 0x50, 0x1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 playsewithpan SE_M_GRASSWHISTLE, SOUND_PAN_ATTACKER - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x2 - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x2 - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gOceanOperaBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gWhirlpoolSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x1a visible ANIM_TARGET loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 0x14, 0x5 - launchtemplate gOceanOperaMovingOrbsSpriteTemplate 0x32 0x6 0x0 0x0 0x0 0x0 0x60 0x0 @mist ball + createsprite gOceanOperaMovingOrbsSpriteTemplate, ANIM_ATTACKER, 50, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0 @mist ball delay 0x5c visible ANIM_ATTACKER delay 0x0 loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 0x14, 0x1 - launchtemplate gOceanOperaBlueOrbsSpriteTemplate 0x32 0x6 0x0 ANIM_TARGET 0x0 0x0 0x0 0x35 + createsprite gOceanOperaBlueOrbsSpriteTemplate, ANIM_ATTACKER, 50, 0x0, ANIM_TARGET, 0x0, 0x0, 0x0, 0x35 delay 0x5 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER - launchtemplate gOceanOperaExpandingRingSpriteTemplate 0x2 0x4 0x0 0x0 0x0 0x0 + createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0 delay 0x4 - launchtemplate gOceanOperaExpandingRingSpriteTemplate 0x2 0x4 0x0 0x0 0x0 0x0 + createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0 delay 0x4 - launchtemplate gOceanOperaExpandingRingSpriteTemplate 0x2 0x4 0x0 0x0 0x0 0x0 + createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0 delay 0x4 - launchtemplate gOceanOperaExpandingRingSpriteTemplate 0x2 0x4 0x0 0x0 0x0 0x0 + createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0 delay 0x4 - launchtemplate gOceanOperaExpandingRingSpriteTemplate 0x2 0x4 0x0 0x0 0x0 0x0 + createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0 delay 0x10 loadspritegfx ANIM_TAG_EXPLOSION @explosion loadspritegfx ANIM_TAG_SPARKLE_2 @sparkle loadspritegfx ANIM_TAG_RAIN_DROPS @rain - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x8 0x40 + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x8, 0x40 call OceanicOperettaExplosion - launchtask AnimTask_BlendBattleAnimPal 0x2 0x5 ANIM_PAL_DEF 0x2 0x0 0xb 0x5da0 - launchtask AnimTask_CreateRaindrops 0x2 0x3 0x0 0x3 0x78 + createvisualtask AnimTask_BlendBattleAnimPal, 0x2, F_PAL_TARGET, 0x2, 0x0, 0xb, 0x5da0 + createvisualtask AnimTask_CreateRaindrops, 0x2, 0x0, 0x3, 0x78 call OceanicOperettaExplosion call OceanicOperettaExplosion playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - launchtask AnimTask_CreateRaindrops 0x2 0x3 0x0 0x3 0x78 + createvisualtask AnimTask_CreateRaindrops, 0x2, 0x0, 0x3, 0x78 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0x2 0x5 ANIM_PAL_DEF 0x2 0xb 0x0 0x5da0 + createvisualtask AnimTask_BlendBattleAnimPal, 0x2, F_PAL_TARGET, 0x2, 0xb, 0x0, 0x5da0 waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x6 0x0 0x5da0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x6, 0x0, 0x5da0 waitforvisualfinish - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end OceanicOperettaBuffEffect: - launchtemplate gOceanOperaBlueFlareSpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gOceanOperaBlueFlareSpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gOceanOperaBlueFlareSpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gOceanOperaBlueFlareSpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gOceanOperaBlueFlareSpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return OceanicOperettaExplosion: - launchtemplate gOceanOperaSparkleSpriteTemplate 0x33 0x6 0xfff1 0x0 ANIM_TARGET 0x0 0x20 0x3c + createsprite gOceanOperaSparkleSpriteTemplate, ANIM_ATTACKER, 51, 0xfff1, 0x0, ANIM_TARGET, 0x0, 0x20, 0x3c playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gOceanOperaExplosionSpriteTemplate 0x33 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gOceanOperaExplosionSpriteTemplate 0x33 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gOceanOperaExplosionSpriteTemplate 0x33 0x4 0xfff0 0x10 ANIM_TARGET 0x1 - launchtemplate gOceanOperaSparkleSpriteTemplate 0x33 0x6 0xc 0xfffb ANIM_TARGET 0x0 0x20 0x3c + createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0xfff0, 0x10, ANIM_TARGET, 0x1 + createsprite gOceanOperaSparkleSpriteTemplate, ANIM_ATTACKER, 51, 0xc, 0xfffb, ANIM_TARGET, 0x0, 0x20, 0x3c delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gOceanOperaExplosionSpriteTemplate 0x33 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gOceanOperaExplosionSpriteTemplate 0x33 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return @@ -29263,20 +29289,20 @@ OceanicOperettaExplosion: Move_SPLINTERED_STORMSHARDS:: loadspritegfx ANIM_TAG_ROCKS @rock loadspritegfx ANIM_TAG_ICICLE_SPEAR @spear - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_GetLycanrocForm 0x2 0x0 + createvisualtask AnimTask_GetLycanrocForm, 0x2 jumpargeq 0x0 0x1 SplinteredStormshardsNightForme SplinteredStormshardsDayForme: - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xc 0x5bff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xc, 0x5bff goto SplinteredStormshardsFinishFade SplinteredStormshardsNightForme: - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xc 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xc, 0x0000 SplinteredStormshardsFinishFade: waitforvisualfinish - setblends 0x80c + setalpha 12, 8 playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET SplinteredStormshardsByOpponent SplinteredStormshardsByPlayer: loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 0x10, 0xc @@ -29285,14 +29311,14 @@ SplinteredStormshardsByPlayer: loadspritegfx ANIM_TAG_ROUND_SHADOW @fly invisible ANIM_TARGET playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsFlySpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 call SplinteredStormshardsPlayer_Rising1 call SplinteredStormshardsPlayer_Rising2 visible ANIM_ATTACKER delay 0x1 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x60 0x80 0x60 0x30 0x30 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x5bff - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x60, 0x80, 0x60, 0x30, 0x30 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x5bff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 delay 0x2 call SplinteredStormshardsPlayer_Rising2 call SplinteredStormshardsPlayer_Rising1 @@ -29304,59 +29330,59 @@ SplinteredStormshardsByPlayer: loadspritegfx ANIM_TAG_METEOR @superpower loadspritegfx ANIM_TAG_EXPLOSION @explosion playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 @lunge forward + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 @lunge forward delay 0x2 invisible ANIM_ATTACKER - launchtemplate gGrowingSuperpowerTemplate 0x83 0x1 0x0 @superpower - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x4 0x60 0x1 @shake target up and down - launchtemplate gSplinteredShardsSplinterOpponentSteepSpriteTemplate 0x2 0x8 0xffd0 0x18 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 @superpower + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x4, 0x60, 0x1 @shake target up and down + createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x18, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x4 - launchtemplate gSplinteredShardsSplinterOpponentShallowSpriteTemplate 0x2 0x8 0xffd0 0x1 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x1, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x4 call SplinteredStormshardsExplosionOpponent call SplinteredStormshardsExplosionOpponent SplinteredStormshardsEnd: - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x4, 0x0, 0x10, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x4, 0x0, 0x10, 0x7fff call SplinteredStormshardsBrownExplode waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x4, 0x10, 0x0, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x4, 0x10, 0x0, 0x7fff waitforvisualfinish - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish waitforvisualfinish end SplinteredStormshardsExplosionOpponent: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterOpponentSteepSpriteTemplate 0x82 0x8 0xffd0 0x20 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x20, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterOpponentShallowSpriteTemplate 0x82 0x8 0xffd0 0x0 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x0, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterOpponentShallowSpriteTemplate 0x82 0x8 0xffd0 0xfff8 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0xfff8, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterOpponentSteepSpriteTemplate 0x82 0x8 0xffd0 0x20 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x20, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterOpponentShallowSpriteTemplate 0x82 0x8 0xffd0 0x0 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x0, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 @@ -29367,14 +29393,14 @@ SplinteredStormshardsByOpponent: delay 0x2 loadspritegfx ANIM_TAG_ROUND_SHADOW @fly invisible ANIM_TARGET - launchtemplate gSplinteredShardsFlySpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 call SplinteredStormshardsOpponent_Rising1 call SplinteredStormshardsOpponent_Rising2 visible ANIM_ATTACKER delay 0x1 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xd0 0x40 0xd0 0x0 0x30 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x5bff - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xd0, 0x40, 0xd0, 0x0, 0x30 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x5bff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 delay 0x2 call SplinteredStormshardsOpponent_Rising2 call SplinteredStormshardsOpponent_Rising1 @@ -29387,16 +29413,16 @@ SplinteredStormshardsByOpponent: loadspritegfx ANIM_TAG_METEOR @superpower loadspritegfx ANIM_TAG_EXPLOSION @explosion playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 @lunge forward + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 @lunge forward delay 0x2 invisible ANIM_ATTACKER - launchtemplate gGrowingSuperpowerTemplate 0x83 0x1 0x0 @superpower - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x4 0x60 0x1 @shake target up and down - launchtemplate gSplinteredShardsSplinterPlayerShallowSpriteTemplate 0x82 0x8 0xffd0 0x18 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 @superpower + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x4, 0x60, 0x1 @shake target up and down + createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x18, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x4 - launchtemplate gSplinteredShardsSplinterPlayerSteepSpriteTemplate 0x82 0x8 0xffd0 0x30 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x30, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 delay 0x4 call SplinteredStormshardsExplosionOnPlayer @@ -29404,117 +29430,117 @@ SplinteredStormshardsByOpponent: goto SplinteredStormshardsEnd SplinteredStormshardsExplosionOnPlayer: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterPlayerShallowSpriteTemplate 0x82 0x8 0xffd0 0x20 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x20, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterPlayerSteepSpriteTemplate 0x82 0x8 0xffd0 0x35 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x35, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterPlayerShallowSpriteTemplate 0x82 0x8 0xffd0 0x1c 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x1c, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterPlayerShallowSpriteTemplate 0x82 0x8 0xffd0 0x16 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x16, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 - launchtemplate gSplinteredShardsSplinterPlayerSteepSpriteTemplate 0x82 0x8 0xffd0 0x2d 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 + createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x2d, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 0x2 return SplinteredStormshardsBrownExplode: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSplinteredShardsExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return SplinteredStormshardsPlayer_Rising1: - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x24 0x80 0x24 0x30 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x24, 0x80, 0x24, 0x30, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x10 0x80 0x10 0x35 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x10, 0x80, 0x10, 0x35, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x45 0x80 0x45 0x3a 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x45, 0x80, 0x45, 0x3a, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x60 0x80 0x60 0x30 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x60, 0x80, 0x60, 0x30, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x30 0x80 0x30 0x3c 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x30, 0x80, 0x30, 0x3c, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x55 0x80 0x55 0x33 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x55, 0x80, 0x55, 0x33, 0x30 delay 0x2 return SplinteredStormshardsPlayer_Rising2: - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x29 0x80 0x29 0x31 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x29, 0x80, 0x29, 0x31, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x73 0x80 0x73 0x32 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x73, 0x80, 0x73, 0x32, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x4a 0x80 0x4a 0x3c 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x4a, 0x80, 0x4a, 0x3c, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x64 0x80 0x64 0x33 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x64, 0x80, 0x64, 0x33, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x2c 0x80 0x2c 0x3d 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x2c, 0x80, 0x2c, 0x3d, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x6c 0x80 0x6c 0x30 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x6c, 0x80, 0x6c, 0x30, 0x30 delay 0x2 return SplinteredStormshardsOpponent_Rising1: - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x94 0x40 0x94 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x94, 0x40, 0x94, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x80 0x40 0x80 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x80, 0x40, 0x80, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xb5 0x40 0xb5 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xb5, 0x40, 0xb5, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xd0 0x40 0xd0 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xd0, 0x40, 0xd0, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xa0 0x40 0xa0 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xa0, 0x40, 0xa0, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xc5 0x40 0xc5 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xc5, 0x40, 0xc5, 0x0, 0x30 delay 0x2 return SplinteredStormshardsOpponent_Rising2: - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x99 0x40 0x99 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x99, 0x40, 0x99, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xe3 0x40 0xe3 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xe3, 0x40, 0xe3, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xba 0x40 0xba 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xba, 0x40, 0xba, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xd4 0x40 0xd4 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xd4, 0x40, 0xd4, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0x9c 0x40 0x9c 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x9c, 0x40, 0x9c, 0x0, 0x30 delay 0x2 - launchtemplate gSplinteredShardsRisingSpearSpriteTemplate 0x32 0x5 0xdc 0x40 0xdc 0x0 0x30 + createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xdc, 0x40, 0xdc, 0x0, 0x30 delay 0x2 return SplinteredStormshardsFixBackgroundFade: - launchtask AnimTask_GetLycanrocForm 0x2 0x0 + createvisualtask AnimTask_GetLycanrocForm, 0x2 jumpargeq 0x0 0x1 SplinteredStormshardsNightFormeReturn SplinteredStormshardsDayFormeReturn: - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xc 0x0 0x5bff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xc, 0x0, 0x5bff goto SplinteredStormshardsFinishFadeReturn SplinteredStormshardsNightFormeReturn: - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xc 0x0 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xc, 0x0, 0x0000 SplinteredStormshardsFinishFadeReturn: return @@ -29524,43 +29550,43 @@ Move_LETS_SNUGGLE_FOREVER:: loadspritegfx ANIM_TAG_MUSIC_NOTES @music note loadspritegfx ANIM_TAG_SMALL_BUBBLES @fake tears loadspritegfx ANIM_TAG_VERTICAL_HEX @red - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 - launchtemplate gSnuggleForeverHeartSpriteTemplate 0x3 0x2 0x0 0x14 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x2, 0x0 + createsprite gSnuggleForeverHeartSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x14 playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x1 0x1 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x1, 0x0 delay 0x7 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x3 0x3 0x80 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x3, 0x3, 0x80 delay 0x8 playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x2 0x0 0x80 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0x0, 0x80 delay 0x7 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x1 0x1 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0x1, 0x0 delay 0x8 playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 0x7 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x0 0x3 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x3, 0x0 delay 0x7 fadetobg BG_SNUGGLE_FOREVER waitbgfadeout invisible ANIM_ATTACKER delay 0x1 setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 delay 0x10 playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER waitforvisualfinish setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 delay 0x10 playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER waitforvisualfinish setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 delay 0x10 playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x2 0x32 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x2, 0x32, 0x1 call LetsSnuggleForeverTears delay 0x8 call LetsSnuggleForeverTears @@ -29569,22 +29595,22 @@ Move_LETS_SNUGGLE_FOREVER:: delay 0x8 call LetsSnuggleForeverTears waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x2, 0x0, 0x10, 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x2, 0x0, 0x10, 0x0000 waitforvisualfinish loadspritegfx ANIM_TAG_SPARKLE_4 @detect playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gSnuggleForeverEyesSpriteTemplate 0xd 0x2 0xa 0xfff2 - launchtemplate gSnuggleForeverEyesSpriteTemplate 0xd 0x2 0xfff6 0xfff2 + createsprite gSnuggleForeverEyesSpriteTemplate, ANIM_ATTACKER, 13, 0xa, 0xfff2 + createsprite gSnuggleForeverEyesSpriteTemplate, ANIM_ATTACKER, 13, 0xfff6, 0xfff2 delay 0x20 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x1 0x0 0x10 0x579D - launchtask AnimTask_GrowTarget 0x5 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x1, 0x0, 0x10, 0x579D + createvisualtask AnimTask_GrowTarget, 0x5 delay 0x5 loadspritegfx ANIM_TAG_IMPACT @hit loadspritegfx ANIM_TAG_PAIN_SPLIT @painsplit loadspritegfx ANIM_TAG_DUCK @duck loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 0x14, 10 - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x0 0xffee 0xa 0xa 0x4 - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x1 0x12 0xa 0xa 0x4 + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xffee, 0xa, 0xa, 0x4 + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x1, 0x12, 0xa, 0xa, 0x4 call LetsSnuggleForeverStars_1 call LetsSnuggleForeverImpacts call LetsSnuggleForeverStars_2 @@ -29593,8 +29619,8 @@ Move_LETS_SNUGGLE_FOREVER:: playsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET call LetsSnuggleForeverStars_2 call LetsSnuggleForeverImpacts - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x0 0xffee 0x6 0x6 0x4 - launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x1 0x12 0x6 0x6 0x4 + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xffee, 0x6, 0x6, 0x4 + createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x1, 0x12, 0x6, 0x6, 0x4 call LetsSnuggleForeverStars_1 delay 0x0 call LetsSnuggleForeverImpacts @@ -29603,7 +29629,7 @@ Move_LETS_SNUGGLE_FOREVER:: call LetsSnuggleForeverImpacts call LetsSnuggleForeverStars_1 delay 0x0 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ALL-ANIM_PAL_DEF 0x2 0x0 0x10 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ALL_BUT_DEF), 0x2, 0x0, 0x10, 0x7fff playsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET call LetsSnuggleForeverStars_2 delay 0x0 @@ -29615,35 +29641,35 @@ Move_LETS_SNUGGLE_FOREVER:: end LetsSnuggleForeverTears: playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET - launchtemplate gTearDropSpriteTemplate 0x82 0x2 ANIM_TARGET 0x0 - launchtemplate gTearDropSpriteTemplate 0x82 0x2 ANIM_TARGET 0x1 + createsprite gTearDropSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0 + createsprite gTearDropSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1 delay 0x8 - launchtemplate gTearDropSpriteTemplate 0x82 0x2 ANIM_TARGET 0x2 - launchtemplate gTearDropSpriteTemplate 0x82 0x2 ANIM_TARGET 0x3 + createsprite gTearDropSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x2 + createsprite gTearDropSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x3 return LetsSnuggleForeverImpacts: - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x0 0xfff4 0x1 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfff4, 0x1, 0x0 delay 0x8 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xfff4 0x8 0x1 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xfff4, 0x8, 0x1, 0x0 delay 0x8 - launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xc 0x0 0x1 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xc, 0x0, 0x1, 0x0 delay 0x8 return LetsSnuggleForeverStars_1: - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0xa0 0xffe0 - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0xff00 0xffd8 - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0x80 0xfff0 - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0x1a0 0xffda - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0xff80 0xffea - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0xfff0 0xfff8 0xfe80 0xffe1 + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xa0, 0xffe0 + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff00, 0xffd8 + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x80, 0xfff0 + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x1a0, 0xffda + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff80, 0xffea + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xfe80, 0xffe1 return LetsSnuggleForeverStars_2: - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0x10 0x8 0xa0 0xffe0 - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0x10 0x8 0xff00 0xffd8 - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0x10 0x8 0x80 0xfff0 - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0x10 0x8 0x1a0 0xffda - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0x10 0x8 0xff80 0xffea - launchtemplate gSnuggleForeverStarSpriteTemplate 0x83 0x4 0x10 0x8 0xfe80 0xffe1 + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xa0, 0xffe0 + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff00, 0xffd8 + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x80, 0xfff0 + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x1a0, 0xffda + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff80, 0xffea + createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xfe80, 0xffe1 return @@ -29655,40 +29681,40 @@ Move_CLANGOROUS_SOULBLAZE:: loadspritegfx ANIM_TAG_SPARKLE_2 @stars fadetobg BG_CLANGOROUS_SOULBLAZE waitbgfadein - launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x2, 0x0 call ClangorousSoulblazeBuffEffect call ClangorousSoulblazeBuffEffect call ClangorousSoulblazeBuffEffect waitforvisualfinish loadspritegfx ANIM_TAG_VERTICAL_HEX @red loadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST @fist - launchtemplate gClangorousSoulRedFistTemplate 0x2 0x8 0xfff0 0x0 0x0 0x0 0xa ANIM_ATTACKER ANIM_RIGHT_FIST 0x1 - launchtemplate gClangorousSoulRedFistTemplate 0x2 0x8 0x10 0x0 0x0 0x0 0xa ANIM_ATTACKER ANIM_LEFT_FIST 0x1 + createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 0xfff0, 0x0, 0x0, 0x0, 0xa, ANIM_ATTACKER, ANIM_RIGHT_FIST, 0x1 + createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0xa, ANIM_ATTACKER, ANIM_LEFT_FIST, 0x1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish loadspritegfx ANIM_TAG_THIN_RING @ring playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - launchtemplate gClangorousSoulRedRingTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gClangorousSoulRedRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 waitforvisualfinish unloadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST unloadspritegfx ANIM_TAG_SPARKLE_2 @stars loadspritegfx ANIM_TAG_ROUND_SHADOW @ fly playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gClangoorousSoulblazeWhiteFlySpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gClangoorousSoulblazeWhiteFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 delay 0x2 - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xFFE0 0x1 0xffff - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xfd00 0xa 0x0 0x2a - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_DEF_PARTNER 0xfd00 0xa 0x0 0x2a + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xFFE0, 0x1, 0xffff + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfd00, 0xa, 0x0, 0x2a + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0xfd00, 0xa, 0x0, 0x2a delay 0x20 - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0x20 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x20, 0x1, 0xffff delay 0xC - setblends 0x80c - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x4 0x0 + setalpha 12, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x4, 0x0 loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge visible ANIM_ATTACKER monbg ANIM_ATTACKER loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 0xe, 0xa - launchtemplate gClangoorousSoulblazePurpleChargeSpriteTemplate 0x2 0x1 0x0 @charge + createsprite gClangoorousSoulblazePurpleChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 @charge call ClangorousSoulblazeEnergySwirl call ClangorousSoulblazeEnergySwirl call ClangorousSoulblazeEnergySwirl @@ -29707,11 +29733,11 @@ Move_CLANGOROUS_SOULBLAZE:: delay 0x0 monbg ANIM_TARGET playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER - launchtemplate gClangoorousSoulblazePulseSpriteTemplate 0x2 0x6 0x10 0x0 0x0 0x0 0x1d 0x0 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x0 0x0 0x0 @music note + createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0 @music note delay 0x5 - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x2 0x3c - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_DEF_PARTNER 0x2 0x3c + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x2, 0x3c + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_DEF_PARTNER, 0x2, 0x3c call ClangorousSoulblazePulse_1 delay 0x5 call ClangorousSoulblazePulse_2 @@ -29720,214 +29746,214 @@ Move_CLANGOROUS_SOULBLAZE:: delay 0x5 call ClangorousSoulblazePulse_4 loadspritegfx ANIM_TAG_EXPLOSION - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET ClangorousSoulblazeOnOpponent ClangorousSoulblazeOnPlayer: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x10 0xfff0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0xfff0, ANIM_ATTACKER, 0x1 delay 0x5 call ClangorousSoulblazePulse_5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_ATTACKER, 0x1 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x20 0xffe0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x20, 0xffe0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_1 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x20 0x0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x20, 0x0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_2 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x30 0xffe0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x30, 0xffe0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_3 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x30 0xfff0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x30, 0xfff0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_4 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x35 0x0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x35, 0x0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_5 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x40 0x10 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x40, 0x10, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_1 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x40 0x0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x40, 0x0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_2 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x45 0xfff0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x45, 0xfff0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_3 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x50 0x10 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x50, 0x10, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_4 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x50 0xffe0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x50, 0xffe0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_5 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x60 0xfff0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x60, 0xfff0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_1 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x60 0xffe0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x60, 0xffe0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_2 delay 0x5 - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x4, 0x0, 0x10, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x4, 0x0, 0x10, 0x7fff playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x65 0xfff0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x65, 0xfff0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_3 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x65 0xffe0 ANIM_ATTACKER 0x1 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x65, 0xffe0, ANIM_ATTACKER, 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1 call ClangorousSoulblazePulse_4 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 call ClangorousSoulblazePulse_5 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 call ClangorousSoulblazePulse_1 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 call ClangorousSoulblazePulse_2 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1 goto FINISH_SOULBLAZE ClangorousSoulblazeOnOpponent: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x10 0x15 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x15, ANIM_ATTACKER, 0x1 delay 0x5 call ClangorousSoulblazePulse_5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x10 0x0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x0, ANIM_ATTACKER, 0x1 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x20 0x25 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x25, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_1 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x20 0x5 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x5, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_2 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x30 0x25 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x30, 0x25, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_3 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x30 0x15 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x30, 0x15, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_4 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x35 0x0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x35, 0x0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_5 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x40 0xa ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x40, 0xa, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_1 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x40 0x0 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x40, 0x0, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_2 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x45 0x10 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x45, 0x10, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_3 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x50 0x30 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x50, 0x30, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_4 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x50 0x25 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x50, 0x25, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_5 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x60 0x40 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x60, 0x40, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_1 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x60 0x45 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x60, 0x45, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_2 delay 0x5 - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS | ANIM_PAL_BG, 0x4, 0x0, 0x10, 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x4, 0x0, 0x10, 0x7fff playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x65 0x35 ANIM_ATTACKER 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x65, 0x35, ANIM_ATTACKER, 0x1 call ClangorousSoulblazePulse_3 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x65 0x40 ANIM_ATTACKER 0x1 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x65, 0x40, ANIM_ATTACKER, 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 call ClangorousSoulblazePulse_4 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 call ClangorousSoulblazePulse_5 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 call ClangorousSoulblazePulse_1 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 call ClangorousSoulblazePulse_2 delay 0x5 - launchtemplate gExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 FINISH_SOULBLAZE: waitforvisualfinish clearmonbg ANIM_TARGET delay 0x5 call ResetFromWhiteScreen blendoff - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_DEF_PARTNER 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0x0, 0x10 waitforvisualfinish end ClangorousSoulblazeEnergySwirl: - launchtemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 ANIM_ATTACKER - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x2 - launchtemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 ANIM_ATTACKER + createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 - launchtemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a ANIM_ATTACKER + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 + createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 ANIM_ATTACKER + createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 - launchtemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e ANIM_ATTACKER + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 + createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce ANIM_ATTACKER + createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER delay 0x2 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 return ClangorousSoulblazeBuffEffect: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtemplate gClangorousSoulBlueBuffTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gClangorousSoulBlueBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gClangorousSoulPurpleBuffTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 - launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xfff1 0x0 0x0 0x0 0x20 0x3c + createsprite gClangorousSoulPurpleBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c delay 0x4 - launchtemplate gClangorousSoulWhiteBuffTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gClangorousSoulWhiteBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xc 0xfffb 0x0 0x0 0x20 0x3c + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c return ClangorousSoulblazePulse_1: playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER - launchtemplate gClangoorousSoulblazePulseSpriteTemplate 0x2 0x6 0x10 0x0 0x0 0x0 0x1d 0x0 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x1 0x1 0x0 + createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x1, 0x0 return ClangorousSoulblazePulse_2: playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER - launchtemplate gClangoorousSoulblazePulseSpriteTemplate 0x2 0x6 0x10 0x0 0x0 0x0 0x1d 0x0 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x3 0x3 0x80 + createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x3, 0x3, 0x80 return ClangorousSoulblazePulse_3: playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER - launchtemplate gClangoorousSoulblazePulseSpriteTemplate 0x2 0x6 0x10 0x0 0x0 0x0 0x1d 0x0 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x2 0x0 0x80 + createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0x0, 0x80 return ClangorousSoulblazePulse_4: playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER - launchtemplate gClangoorousSoulblazePulseSpriteTemplate 0x2 0x6 0x10 0x0 0x0 0x0 0x1d 0x0 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x1 0x1 0x0 + createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0x1, 0x0 return ClangorousSoulblazePulse_5: playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER - launchtemplate gClangoorousSoulblazePulseSpriteTemplate 0x2 0x6 0x10 0x0 0x0 0x0 0x1d 0x0 - launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x0 0x3 0x0 + createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x3, 0x0 return @@ -29935,32 +29961,32 @@ Move_GUARDIAN_OF_ALOLA:: loadspritegfx ANIM_TAG_THIN_RING @ring loadspritegfx ANIM_TAG_MUD_SAND @dig loadspritegfx ANIM_TAG_SPEED_DUST @extremespeed - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtemplate gThinRingExpandingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0 playsewithpan SE_SHINY, SOUND_PAN_ATTACKER waitforvisualfinish unloadspritegfx ANIM_TAG_THIN_RING playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0xff00 0xf 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xff00, 0xf, 0x0, 0x4 call GuardianOfAlolaRocksPlayer delay 0xa - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x10 call GuardianOfAlolaRocksPlayer waitforvisualfinish delay 0xa playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0xff00 0xf 0x0 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xff00, 0xf, 0x0, 0x4 call GuardianOfAlolaRocksPlayer delay 0xa - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x10 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x10 call GuardianOfAlolaRocksPlayer waitforvisualfinish delay 0xa delay 0x10 call GuardianOfAlolaRocksPlayer - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ATK 0x2 0xC 0xC 0x277f @;Yellow - launchtask AnimTask_NightShadeClone 0x5 0x1 0x75 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0xC, 0xC, 0x277f @;Yellow + createvisualtask AnimTask_NightShadeClone, 0x5, 0x75 delay 0x10 call GuardianOfAlolaRocksPlayer delay 0x10 @@ -29968,20 +29994,20 @@ Move_GUARDIAN_OF_ALOLA:: delay 0x10 loadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST call GuardianOfAlolaRocksPlayer - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x3 0x0 0xb 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x3, 0x0, 0xb, 0x0000 delay 0x1 - launchtask AnimTask_BlendParticle, 0x2, 0x5, ANIM_TAG_HORSESHOE_SIDE_FIST, 0x0, 0xC, 0xc, 0x277f + createvisualtask AnimTask_BlendParticle, 0x2, ANIM_TAG_HORSESHOE_SIDE_FIST, 0x0, 0xC, 0xc, 0x277f fadetobg BG_FISSURE waitbgfadeout call GuardianOfAlolaRocksPlayer - launchtask AnimTask_PositionFissureBgOnBattler 0x5 0x3 0x1 0x5 0xffff + createvisualtask AnimTask_PositionFissureBgOnBattler, 0x5, 0x1, 0x5, 0xffff waitbgfadein playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET - launchtemplate gGuardianOfAlolaFistSpriteTemplate 0x83 0x3 0x0 0xffd0 0x1f + createsprite gGuardianOfAlolaFistSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xffd0, 0x1f delay 0x24 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x0 0xb 0x0 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x0, 0xb, 0x0, 0x0000 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - launchtask AnimTask_HorizontalShake 0x3 0x3 ANIM_TARGET 0xa 0x25 + createvisualtask AnimTask_HorizontalShake, 0x3, ANIM_TARGET, 0xa, 0x25 loopsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET 0x10 0x9 call GuardianOfAlolaRocksTarget call GuardianOfAlolaRockGeyser @@ -29996,7 +30022,7 @@ Move_GUARDIAN_OF_ALOLA:: call GuardianOfAlolaRockGeyser call GuardianOfAlolaRockGeyser call GuardianOfAlolaRocksTarget - launchtask AnimTask_BlendBattleAnimPal 0x2 0x5 ANIM_PAL_ALL 0x3 0x0 0x10 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0x2, (F_PAL_BG | F_PAL_BATTLERS), 0x3, 0x0, 0x10, 0x7fff call GuardianOfAlolaRockGeyser call GuardianOfAlolaRockGeyser call GuardianOfAlolaRockGeyser @@ -30006,25 +30032,25 @@ Move_GUARDIAN_OF_ALOLA:: end GuardianOfAlolaRocksPlayer: playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0xc 0x4 0xfff0 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x0 0x10 0x4 0xfff6 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xe 0x4 0xffee 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 0x0 0x1 0xc 0x4 0xfff0 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 return GuardianOfAlolaRocksTarget: - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x0 0xc 0x4 0xfff0 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x0 0x10 0x4 0xfff6 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x1 0xe 0x4 0xffee 0x12 - launchtemplate gDirtPlumeSpriteTemplate 0x2 0x6 ANIM_TARGET 0x1 0xc 0x4 0xfff0 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10, 0x4, 0xfff6, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xe, 0x4, 0xffee, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xc, 0x4, 0xfff0, 0x12 return GuardianOfAlolaRockGeyser: - launchtemplate gGuardianOfAlolaDirtGeyserSpriteTemplate 0x82, 0x3, 0 0xfffc 0x10 @ -4, -0x10 + createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0xfffc, 0x10 @ -4, -0x10 delay 0x0 - launchtemplate gGuardianOfAlolaDirtGeyserSpriteTemplate 0x82, 0x3, 0 0x100D 0x10 @ + createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0x100D, 0x10 delay 0x0 - launchtemplate gGuardianOfAlolaDirtGeyserSpriteTemplate 0x82, 0x3, 0 0x4 0x10 + createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0x4, 0x10 delay 0x0 - launchtemplate gGuardianOfAlolaDirtGeyserSpriteTemplate 0x82, 0x3, 0 0xfff0 0x10 + createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0xfff0, 0x10 delay 0x0 return @@ -30033,15 +30059,15 @@ Move_SEARING_SUNRAZE_SMASH:: loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy loadspritegfx ANIM_TAG_SPARKLE_2 @sparkles invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0xe 0x001b + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0xe, 0x001b playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call SearingSunrazeSmashFlare delay 0x8 playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x7fff - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x7fff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call SearingSunrazeSmashFlare delay 0x8 call SearingSunrazeSmashFlare @@ -30053,34 +30079,34 @@ Move_SEARING_SUNRAZE_SMASH:: loadspritegfx ANIM_TAG_SHADOW_BALL @shadow ball loadspritegfx ANIM_TAG_AIR_WAVE_2 @white/grey playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER - launchtemplate gSearingSunrazeSmashGrowWormholeSpriteTemplate 0x2 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gSearingSunrazeSmashGrowWormholeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x10 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x35 0xffed 0x1 0x2 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x35, 0xffed, 0x1, 0x2 delay 0x2 loadspritegfx ANIM_TAG_METEOR @superpower visible ANIM_TARGET - launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x50 0xfc00 ANIM_TARGET 0x0 @ spin up target + createvisualtask AnimTask_RotateMonSpriteToSide, 0x2, 0x50, 0xfc00, ANIM_TARGET, 0x0 @ spin up target call SearingSunrazeSmashRingsInward - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x30 @ target back to origin (slowly) + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x30 @ target back to origin (slowly) call SearingSunrazeSmashRingsInward delay 0xD invisible ANIM_TARGET - launchtemplate gSearingSunrazeSmashBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x6 - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 @lunge forward + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 @lunge forward playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 0x2 invisible ANIM_ATTACKER - launchtemplate gGrowingSuperpowerTemplate 0x83 0x1 0x0 @superpower - launchtemplate gSearingSunrazeSmashBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 @superpower + createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_ATTACKER fadetobg BG_COSMIC waitbgfadeout - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xf700 0x0 0x1 0xffff - launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x1 0x0 ANIM_TARGET 0x1 @ fix tgt rotation + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf700, 0x0, 0x1, 0xffff + createvisualtask AnimTask_RotateMonSpriteToSide, 0x2, 0x1, 0x0, ANIM_TARGET, 0x1 @ fix tgt rotation invisible ANIM_TARGET waitbgfadein visible ANIM_ATTACKER @@ -30088,7 +30114,7 @@ Move_SEARING_SUNRAZE_SMASH:: loadspritegfx ANIM_TAG_VERTICAL_HEX @red loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge loadspritegfx ANIM_TAG_SMALL_EMBER @fire - launchtemplate gSearingSunrazeSmashInfernoOrbSpriteTemplate 0x2 0x1 ANIM_ATTACKER + createsprite gSearingSunrazeSmashInfernoOrbSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER loopsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER, 0x13, 0x8 call SearingSunrazeSmashCharge call SearingSunrazeSmashCharge @@ -30099,8 +30125,8 @@ Move_SEARING_SUNRAZE_SMASH:: unloadspritegfx ANIM_TAG_THIN_RING @ring loadspritegfx ANIM_TAG_ROUND_SHADOW @fly playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET - launchtemplate gSearingSunrazeSmashRedFlySpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG+ANIM_PAL_ATK 0x3 0x0 0xF 0x0 + createsprite gSearingSunrazeSmashRedFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ATTACKER), 0x3, 0x0, 0xF, 0x0 waitforvisualfinish playsewithpan SE_ORB, SOUND_PAN_ATTACKER unloadspritegfx ANIM_TAG_ROUND_SHADOW @fly @@ -30122,43 +30148,43 @@ Move_SEARING_SUNRAZE_SMASH:: stopsound playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET loadspritegfx ANIM_TAG_CUT @cut - launchtemplate gSunsteelStrikeSuperpowerTemplate 0x82 0x1 0x14 + createsprite gSunsteelStrikeSuperpowerTemplate, ANIM_TARGET, 2, 0x14 SearingSunrazeSmashImpact: delay 0x8 delay 0x1 unloadspritegfx ANIM_TAG_GOLD_RING @beam - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x4 0x3c + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x4, 0x3c playsewithpan SE_M_CUT, SOUND_PAN_TARGET - launchtemplate gSearingSunrazeSmashWhiteCutSpriteTemplate 0x82, 0x3, 0x20 0xffe0 0x0 + createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x20, 0xffe0, 0x0 delay 0x2 playsewithpan SE_M_CUT, SOUND_PAN_TARGET - launchtemplate gSearingSunrazeSmashWhiteCutSpriteTemplate 0x82, 0x3, 0x20 0xffe0 0x1 + createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x20, 0xffe0, 0x1 delay 0x2 playsewithpan SE_M_CUT, SOUND_PAN_TARGET - launchtemplate gSearingSunrazeSmashWhiteCutSpriteTemplate 0x82, 0x3, 0x1c 0xffe0 0x0 + createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x1c, 0xffe0, 0x0 delay 0x2 playsewithpan SE_M_CUT, SOUND_PAN_TARGET - launchtemplate gSearingSunrazeSmashWhiteCutSpriteTemplate 0x82, 0x3, 0x1c 0xffe0 0x1 + createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x1c, 0xffe0, 0x1 delay 0x2 playsewithpan SE_M_CUT, SOUND_PAN_TARGET - launchtemplate gSearingSunrazeSmashWhiteCutSpriteTemplate 0x82, 0x3, 0x2c 0xffe0 0x0 + createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x2c, 0xffe0, 0x0 delay 0x2 playsewithpan SE_M_CUT, SOUND_PAN_TARGET - launchtemplate gSearingSunrazeSmashWhiteCutSpriteTemplate 0x82, 0x3, 0x2c 0xffe0 0x1 + createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x2c, 0xffe0, 0x1 delay 0x2 loadspritegfx ANIM_TAG_CROSS_IMPACT @x delay 0x0 unloadspritegfx ANIM_TAG_METEOR @superpower unloadspritegfx ANIM_TAG_DRAGON_ASCENT @dragon ascent 1 unloadspritegfx ANIM_TAG_DRAGON_ASCENT_FOE @dragon ascent 2 - launchtemplate gSearingSunrazeSmashCrossImpactSpriteTemplate 0x82, 0x4, 0x0 0x0 0x1 0x24 + createsprite gSearingSunrazeSmashCrossImpactSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x24 playsewithpan SE_M_LEER, SOUND_PAN_TARGET visible ANIM_ATTACKER - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ATK, 0x3, 0xF, 0x0, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ATTACKER), 0x3, 0xF, 0x0, 0x0 visible ANIM_ATTACKER playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x10 0x0000 - launchtemplate gSearingSunrazeSmashShockwaveSpriteTemplate 0x82 0x0 @ charge out and in + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x10, 0x0000 + createsprite gSearingSunrazeSmashShockwaveSpriteTemplate, ANIM_TARGET, 2 @ charge out and in delay 0x1c invisible ANIM_TARGET unloadspritegfx ANIM_TAG_CUT @cut @@ -30167,7 +30193,7 @@ SearingSunrazeSmashImpact: call SearingSunrazeSmashInferno call SearingSunrazeSmashInferno call SearingSunrazeSmashInferno - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS | ANIM_PAL_BG, 0x4, 0x0, 0x10, 0x001b @full red + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x4, 0x0, 0x10, 0x001b @full red call SearingSunrazeSmashInferno call SearingSunrazeSmashInferno call SearingSunrazeSmashInferno @@ -30176,84 +30202,84 @@ SearingSunrazeSmashImpact: call ResetFromRedScreen end SearingSunrazeSmashFlare: - launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xfff1 0x0 0x0 0x0 0x20 0x3c - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xc 0xfffb 0x0 0x0 0x20 0x3c - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return SearingSunrazeSmashRingsInward: - launchtemplate gSearingSunrazeSmashBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gSearingSunrazeSmashBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 return SearingSunrazeSmashInferno: playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x3 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x3 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xa 0x0 0xfffe - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0xfffe 0x0 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xd 0x2 0x0 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0xfffe 0x2 - launchtemplate gFireBlastCrossSpriteTemplate 0x82 0x5 0x0 0x0 0xf 0x2 0x2 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2 + createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2 delay 0x3 return SearingSunrazeSmashCharge: - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2c 0x510 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2f 0x490 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x30 0x4e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x30, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2c 0x500 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x31 0x540 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x31 0x4d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2f 0x490 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2c 0x510 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x2c 0x500 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x30 0x4e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x30, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x31 0x4d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x1 - launchtemplate gFireSpinSpriteTemplate 0x82 0x7 0x0 0x31 0x540 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x1 return ResetFromRedScreen: - launchtask AnimTask_AllBanksInvisible 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisible, 0xA waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ALL_BATTLERS 0x2 0x0 0x0 0x1B @Everything from red + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BATTLERS, 0x2, 0x0, 0x0, 0x1B @Everything from red restorebg waitbgfadeout setarg 0x7 0xffff - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitbgfadein - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0x0 0x33ED + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0x0, 0x33ED waitforvisualfinish return @@ -30265,14 +30291,14 @@ Move_MENACING_MOONRAZE_MAELSTROM:: loadspritegfx ANIM_TAG_SHADOW_BALL @shadow ball loadspritegfx ANIM_TAG_HANDS_AND_FEET @black invisible ANIM_TARGET - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0xe 0x40c0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0xe, 0x40c0 playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call MenacingMoonrazeMaelstromFlare delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xc 0x0000 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xc, 0x0000 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call MenacingMoonrazeMaelstromFlare playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER delay 0x8 @@ -30282,41 +30308,41 @@ Move_MENACING_MOONRAZE_MAELSTROM:: loadspritegfx ANIM_TAG_THIN_RING @ring loadspritegfx ANIM_TAG_AIR_WAVE_2 @white/grey playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER - launchtemplate gMoonrazeMaelstromWormholeSpriteTemplate 0x2 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gMoonrazeMaelstromWormholeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x10 - launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x35 0xffed 0x1 0x2 @ target down and left (instantaneously (last arg)) + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x35, 0xffed, 0x1, 0x2 @ target down and left (instantaneously (last arg)) delay 0x2 loadspritegfx ANIM_TAG_METEOR @superpower visible ANIM_TARGET - launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x50 0xfc00 ANIM_TARGET 0x0 @ spin up target + createvisualtask AnimTask_RotateMonSpriteToSide, 0x2, 0x50, 0xfc00, ANIM_TARGET, 0x0 @ spin up target call MenacingMoonrazeMaelstromRingsInward - launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x30 @ target back to origin (slowly) + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x30 @ target back to origin (slowly) call MenacingMoonrazeMaelstromRingsInward delay 0xD invisible ANIM_TARGET - launchtemplate gMoonrazeMaelstromBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gMoonrazeMaelstromWhiteRingSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gMoonrazeMaelstromWhiteRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x6 - launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 @lunge forward + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 @lunge forward playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER delay 0x2 invisible ANIM_ATTACKER - launchtemplate gMoonrazeMaelstromSuperpowerSpriteTemplate 0x83 0x1 0x0 @superpower - launchtemplate gMoonrazeMaelstromBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gMoonrazeMaelstromSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0 @superpower + createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_ATTACKER fadetobg BG_COSMIC waitbgfadeout - launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET MenacingMoonrazeMaelstromOnPlayer MenacingMoonrazeMaelstromOnOpponent: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0xfd00 0x200 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0xfd00, 0x200, 0x1, 0xffff goto MenacingMoonrazeMaelstromFinish MenacingMoonrazeMaelstromOnPlayer: - launchtask AnimTask_StartSlidingBg 0x5 0x4 0x200 0xfd00 0x1 0xffff + createvisualtask AnimTask_StartSlidingBg, 0x5, 0x200, 0xfd00, 0x1, 0xffff MenacingMoonrazeMaelstromFinish: - launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x1 0x0 ANIM_TARGET 0x1 @ fix tgt rotation + createvisualtask AnimTask_RotateMonSpriteToSide, 0x2, 0x1, 0x0, ANIM_TARGET, 0x1 @ fix tgt rotation invisible ANIM_TARGET waitbgfadein visible ANIM_ATTACKER @@ -30331,18 +30357,18 @@ MenacingMoonrazeMaelstromFinish: unloadspritegfx ANIM_TAG_METEOR @superpower playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call MenacingMoonrazeMaelstromChargeUp - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xc 0x0000 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xc, 0x0000 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call MenacingMoonrazeMaelstromChargeUp call MenacingMoonrazeMaelstromChargeUp - launchsoundtask SoundTask_LoopSEAdjustPanning 0x7 0xf0 0xffc0 SOUND_PAN_TARGET 0x1 0xf 0x0 0x5 + createsoundtask SoundTask_LoopSEAdjustPanning, 0xf0, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5 call MenacingMoonrazeMaelstromBeam call MenacingMoonrazeMaelstromBeam call MenacingMoonrazeMaelstromBeam call MenacingMoonrazeMaelstromBeam call MenacingMoonrazeMaelstromBeam - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x3c 0x1 - launchtask AnimTask_BlendBattleAnimPal 0x2 0x5 ANIM_PAL_DEF 0x4 0x0 0xc 0x0000 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x3c, 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 0x2, F_PAL_TARGET, 0x4, 0x0, 0xc, 0x0000 call MenacingMoonrazeMaelstromBeam call MenacingMoonrazeMaelstromBeam call MenacingMoonrazeMaelstromBeam @@ -30367,84 +30393,84 @@ MenacingMoonrazeMaelstromFinish: call MenacingMoonrazeMaelstromBeam call MenacingMoonrazeMaelstromBeam playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER - launchtemplate gMoonrazeMaelstromShockwaveSpriteTemplate 0x82 0x0 + createsprite gMoonrazeMaelstromShockwaveSpriteTemplate, ANIM_TARGET, 2 call MenacingMoonrazeMaelstromBeam waitforvisualfinish unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @shock wave unloadspritegfx ANIM_TAG_ORBS @hyper beam unloadspritegfx ANIM_TAG_HANDS_AND_FEET @black loadspritegfx ANIM_TAG_EXPLOSION_2 @explosion - launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x4c 0x1 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x4c, 0x1 call MenacingMoonrazeMaelstromExplosion call MenacingMoonrazeMaelstromExplosion - launchtask AnimTask_BlendBattleAnimPal 0x2 0x5 ANIM_PAL_ALL 0x2 0x0 0x10 0x7fff + createvisualtask AnimTask_BlendBattleAnimPal, 0x2, (F_PAL_BG | F_PAL_BATTLERS), 0x2, 0x0, 0x10, 0x7fff call MenacingMoonrazeMaelstromExplosion waitforvisualfinish call ResetFromWhiteScreen end MenacingMoonrazeMaelstromExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMoonrazeMaelstromExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMoonrazeMaelstromExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMoonrazeMaelstromExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMoonrazeMaelstromExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gMoonrazeMaelstromExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return MenacingMoonrazeMaelstromFlare: - launchtemplate gMoonrazeMaelstromBlackSparklesSpriteTemplate 0x2 0x6 0xfff1 0x0 0x0 0x0 0x20 0x3c - launchtemplate gMoonrazeMaelstromBlueBuffSpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gMoonrazeMaelstromBlackSparklesSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c + createsprite gMoonrazeMaelstromBlueBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gMoonrazeMaelstromBlueBuffSpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gMoonrazeMaelstromBlueBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gMoonrazeMaelstromBlackSparklesSpriteTemplate 0x2 0x6 0xc 0xfffb 0x0 0x0 0x20 0x3c - launchtemplate gMoonrazeMaelstromBlackBuffSpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gMoonrazeMaelstromBlackSparklesSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c + createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gMoonrazeMaelstromBlackBuffSpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gMoonrazeMaelstromBlackBuffSpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return MenacingMoonrazeMaelstromRingsInward: - launchtemplate gMoonrazeMaelstromBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gMoonrazeMaelstromWhiteRingSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gMoonrazeMaelstromWhiteRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 - launchtemplate gMoonrazeMaelstromBlueRingSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0 + createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x8 return MenacingMoonrazeMaelstromChargeUp: - launchtemplate gMoonrazeMaelstromPurpleBuffSpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 - launchtemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate 0x2 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 ANIM_ATTACKER + createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 + createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER delay 0x2 - launchtemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate 0x2 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 ANIM_ATTACKER + createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER delay 0x2 - launchtemplate gMoonrazeMaelstromPurpleBuffSpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 - launchtemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate 0x2 0x7 0x0 0x21 0x240 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 + createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate 0x2 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate 0x2 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e ANIM_ATTACKER + createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER delay 0x2 - launchtemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate 0x2 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce ANIM_ATTACKER + createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER delay 0x2 - launchtemplate gMoonrazeMaelstromPurpleBuffSpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 - launchtemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate 0x2 0x7 0x0 0x21 0x240 0x14 0x8 0x2a ANIM_ATTACKER + createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 + createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER delay 0x2 - launchtemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate 0x2 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 ANIM_ATTACKER + createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER delay 0x2 - launchtemplate gMoonrazeMaelstromPurpleBuffSpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return MenacingMoonrazeMaelstromBeam: - launchtemplate gMoonrazeMaelstromBeamSpriteTemplate 0x82 0x0 - launchtemplate gMoonrazeMaelstromBeamSpriteTemplate 0x82 0x0 + createsprite gMoonrazeMaelstromBeamSpriteTemplate, ANIM_TARGET, 2 + createsprite gMoonrazeMaelstromBeamSpriteTemplate, ANIM_TARGET, 2 delay 0x1 return @@ -30460,21 +30486,21 @@ Move_LIGHT_THAT_BURNS_THE_SKY:: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x5bff - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x5bff + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call EndureEffect delay 0x8 call EndureEffect delay 0x8 unloadspritegfx ANIM_TAG_FOCUS_ENERGY monbg ANIM_ATTACKER - setblends 0x80c - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ALL-ANIM_PAL_ATK 0x2 0x0 0xF 0x0000 + setalpha 12, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ADJACENT), 0x2, 0x0, 0xF, 0x0000 waitforvisualfinish - launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x3c 0x2 0xc @ charge particles to attacker + createvisualtask AnimTask_ElectricChargingParticles, 0x2, 0x0, 0x3c, 0x2, 0xc @ charge particles to attacker delay 0x1e loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0xe, 0xa - launchtemplate gSuperpowerOrbSpriteTemplate, 0x83, 0x1, 0x0 + createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 3, 0x0 call LightThatBurnsTheSkyGreenSparks call LightThatBurnsTheSkyGreenSparks call LightThatBurnsTheSkyGreenSparks @@ -30485,26 +30511,26 @@ Move_LIGHT_THAT_BURNS_THE_SKY:: call LightThatBurnsTheSkyGreenSparks call LightThatBurnsTheSkyGreenSparks delay 0xe - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x2 0x0 0x4 0x0000 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x4, 0x0000 clearmonbg ANIM_ATTACKER blendoff playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffe0 0xfff0 0x25 0x2c 0x20 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffe0 0xfff0 0x25 0x2c 0x60 0x8 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffe0 0xfff0 0x25 0x2c 0xa0 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffe0 0xfff0 0x25 0x2c 0xe0 0x8 0x2 0x3 - delay 0x1 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffd0 0xffe4 0x25 0x2c 0x20 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffd0 0xffe4 0x25 0x2c 0x60 0x8 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffd0 0xffe4 0x25 0x2c 0xa0 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffd0 0xffe4 0x25 0x2c 0xe0 0x8 0x2 0x3 - delay 0x1 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffc0 0xffd8 0x25 0x2c 0x20 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffc0 0xffd8 0x25 0x2c 0x60 0x8 0x1 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffc0 0xffd8 0x25 0x2c 0xa0 0x8 0x0 0x3 - launchtemplate gSparkElectricityFlashingSpriteTemplate 0x2 0x8 0xffc0 0xffd8 0x25 0x2c 0xe0 0x8 0x2 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3 + delay 0x1 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3 + delay 0x1 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3 + createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3 delay 0x6 - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x3 0x3c + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x3, 0x3c unloadspritegfx ANIM_TAG_LEAF @green unloadspritegfx ANIM_TAG_ELECTRIC_ORBS @charge loadspritegfx ANIM_TAG_FIRE_PLUME @blast burn @@ -30512,97 +30538,97 @@ Move_LIGHT_THAT_BURNS_THE_SKY:: loadspritegfx ANIM_TAG_STRAIGHT_BEAM panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 monbg ANIM_TARGET - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x6 0x0 0x10 0x43FF @;Light yellow + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x6, 0x0, 0x10, 0x43FF @;Light yellow call PhotonGeyserBeam call LightThatBurnsTheSkyGeyser call LightThatBurnsTheSkyBlast_1 call LightThatBurnsTheSkyGeyser call LightThatBurnsTheSkyBlast_2 call LightThatBurnsTheSkyGeyser - launchtask AnimTask_BlendBattleAnimPal, 0x2, 0x5, ANIM_PAL_ALL - ANIM_PAL_DEF, 0x4, 0x0, 0x10, 0x43FF + createvisualtask AnimTask_BlendBattleAnimPal, 0x2, (F_PAL_BG | F_PAL_ALL_BUT_DEF), 0x4, 0x0, 0x10, 0x43FF call LightThatBurnsTheSkyBlast_3 clearmonbg ANIM_TARGET waitforvisualfinish delay 0x10 - launchtask AnimTask_BlendBattleAnimPal 0x2 0x5 ANIM_PAL_ALL 0x0 0x10 0x0 0x43FF + createvisualtask AnimTask_BlendBattleAnimPal, 0x2, (F_PAL_BG | F_PAL_BATTLERS), 0x0, 0x10, 0x0, 0x43FF restorebg waitbgfadeout end LightThatBurnsTheSkyBlast_1: - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0xffe0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0xffec 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x42 0x6 0x0 0xfff0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x42 0x6 0x14 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x42 0x6 0x20 0x0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x42 0x6 0x14 0xa 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0x0 0x10 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0xffec 0xa 0x18 0x0 0x0 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0 return LightThatBurnsTheSkyBlast_2: - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0xffc0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x6 0x6 0xffd8 0xffec 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x46 0x6 0x0 0xffe0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x46 0x6 0x28 0xffec 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x42 0x6 0x40 0x0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x42 0x6 0x28 0x14 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0x0 0x20 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0xffd8 0x14 0x18 0x0 0x0 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffd8, 0xffec, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffe0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x28, 0xffec, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x28, 0x14, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x18, 0x0, 0x0, 0x0 return LightThatBurnsTheSkyBlast_3: - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0xffa0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x6 0x6 0xffc4 0xffe2 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x46 0x6 0x0 0xffd0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x46 0x6 0x3c 0xffe2 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x42 0x6 0x60 0x0 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x42 0x6 0x3c 0x1e 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0x0 0x30 0x18 0x0 0x0 0x0 - launchtemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate 0x2 0x6 0xffc4 0x1e 0x18 0x0 0x0 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffc4, 0xffe2, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffd0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x3c, 0xffe2, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x60, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x3c, 0x1e, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x30, 0x18, 0x0, 0x0, 0x0 + createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc4, 0x1e, 0x18, 0x0, 0x0, 0x0 return LightThatBurnsTheSkyGeyser: - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0003 0x0005 0x1 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0x0005, 0x1, 0x0 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0xfff5 0xfff1 0x1 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xfff1, 0x1, 0x0 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0008 0xfffb 0x1 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xfffb, 0x1, 0x0 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0xfffa 0x0012 0x1 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0012, 0x1, 0x0 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0000 0x0005 0x1 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0x0005, 0x1, 0x0 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0003 0xfff5 ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xfff5, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0xfff5 0xffe1 ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffe1, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0008 0xffeb ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffeb, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0xfffa 0x0002 ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0002, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0000 0xfff5 ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xfff5, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0003 0xffe5 ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xffe5, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0xfff5 0xffd1 ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffd1, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0008 0xffdb ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffdb, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0xfffa 0xfff2 ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0xfff2, ANIM_TARGET, 0x0 delay 0x0 - launchtemplate gLightThatBurnsTheSkyExplosionSpriteTemplate 0x84, 0x4, 0x0000 0xffe5 ANIM_TARGET 0x0 + createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xffe5, ANIM_TARGET, 0x0 delay 0x0 return LightThatBurnsTheSkyGreenSparks: - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x2 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x2 0x3 + createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x30, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x2, 0x3 + createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3 + createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3 + createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3 + createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x2, 0x3 delay 0x10 return @@ -30613,21 +30639,21 @@ Move_SOUL_STEALING_7_STAR_STRIKE:: loadspritegfx ANIM_TAG_WISP_FIRE @will o wisp loadspritegfx ANIM_TAG_FIRE_PLUME @blast burn loadspritegfx ANIM_TAG_HANDS_AND_FEET @fist - launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0 + createvisualtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - setblends 0x80c + setalpha 12, 8 playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET - launchtemplate gSoulStealBlastburnSpriteTemplate 0x2 0x6 0xffe0 0x0 0x18 0x0 0x0 0x0 - launchtemplate gSoulStealBlastburnSpriteTemplate 0x42 0x6 0xffec 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gSoulStealBlastburnSpriteTemplate 0x42 0x6 0x0 0xfff0 0x18 0x0 0x0 0x0 - launchtemplate gSoulStealBlastburnSpriteTemplate 0x42 0x6 0x14 0xfff6 0x18 0x0 0x0 0x0 - launchtemplate gSoulStealBlastburnSpriteTemplate 0x42 0x6 0x20 0x0 0x18 0x0 0x0 0x0 - launchtemplate gSoulStealBlastburnSpriteTemplate 0x42 0x6 0x14 0xa 0x18 0x0 0x0 0x0 - launchtemplate gSoulStealBlastburnSpriteTemplate 0x2 0x6 0x0 0x10 0x18 0x0 0x0 0x0 - launchtemplate gSoulStealBlastburnSpriteTemplate 0x2 0x6 0xffec 0xa 0x18 0x0 0x0 0x0 + createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0 + createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0 + createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0 + createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0 + createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0 + createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0 delay 0x5 playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gSoulStealBlackFlySpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + createsprite gSoulStealBlackFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 waitforvisualfinish invisible ANIM_TARGET fadetobg BG_SOULSTEALING_7STAR_STRIKE @@ -30637,8 +30663,8 @@ Move_SOUL_STEALING_7_STAR_STRIKE:: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call SoulStealingSevenStarStrikeBuffEffect delay 0x8 - launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x0 - launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + createvisualtask AnimTask_BlendColorCycle, 0x2, 0x2, 0x2, 0x2, 0x0, 0xb, 0x0 + createvisualtask AnimTask_ShakeMon2, 0x2, 0x0, 0x1, 0x0, 0x20, 0x1 call SoulStealingSevenStarStrikeBuffEffect delay 0x8 call SoulStealingSevenStarStrikeBuffEffect @@ -30647,46 +30673,46 @@ Move_SOUL_STEALING_7_STAR_STRIKE:: waitforvisualfinish unloadspritegfx ANIM_TAG_FIRE_PLUME loadspritegfx ANIM_TAG_PAIN_SPLIT @pain split - launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x4 0x25 0x1 - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x14 0x0 0x0 0xa 0x1 0x0 0x1 + createvisualtask AnimTask_ShakeMon, 0x5, 0x1, 0x0, 0x4, 0x25, 0x1 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x14, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0x0 ANIM_TARGET 0x2 0x0 0x0 0x30 + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x0, ANIM_TARGET, 0x2, 0x0, 0x0, 0x30 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x10 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x10, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0x0 ANIM_TARGET 0x12 0x0 0x0 0x2c + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x0, ANIM_TARGET, 0x12, 0x0, 0x0, 0x2c playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x4 - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x08 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x08, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0xffeb 0xfff8 0x2 0x0 0x0 0x28 + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0xffeb, 0xfff8, 0x2, 0x0, 0x0, 0x28 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x12 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x12, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0xfffb 0xfff4 0x2 0x0 0x0 0x24 + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0xfffb, 0xfff4, 0x2, 0x0, 0x0, 0x24 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x15 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x15, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0x5 0xfff8 0x2 0x0 0x0 0x20 + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x5, 0xfff8, 0x2, 0x0, 0x0, 0x20 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x0c 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x0c, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0xfff0 0x1 0x2 0x0 0x0 0x1c + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0xfff0, 0x1, 0x2, 0x0, 0x0, 0x1c playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x13 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x13, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0x0 0x1 0x2 0x0 0x0 0x18 + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x1, 0x2, 0x0, 0x0, 0x18 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x0e 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x0e, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0xfff0 0x10 0x2 0x0 0x0 0x14 - launchtemplate gSoulStealBlueFistSpriteTemplate 0x82 0x8 0xffc0 0x12 0x0 0x0 0xa 0x1 0x0 0x1 + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0xfff0, 0x10, 0x2, 0x0, 0x0, 0x14 + createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x12, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1 delay 0x4 - launchtemplate gSoulStealBlueStarSpriteTemplate 0x84 0x6 0x0 0x10 0x2 0x0 0x0 0x10 + createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x10, 0x2, 0x0, 0x0, 0x10 delay 0x4 playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER - launchtemplate gSoulStealBlackFlySpriteTemplate 0x82, 0x4, 0x0 0x0 0xd 0x150 + createsprite gSoulStealBlackFlySpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x150 delay 0x20 unloadspritegfx ANIM_TAG_PAIN_SPLIT unloadspritegfx ANIM_TAG_ROUND_SHADOW @@ -30695,18 +30721,18 @@ Move_SOUL_STEALING_7_STAR_STRIKE:: loadspritegfx ANIM_TAG_SNORE_Z @z playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles - launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 + createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 delay 0x1c - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_DEF 0x0 0x0 0x10 0x0000 - delay 0x1 - launchtemplate gSoulStealZStarSpriteTemplate 0x82, 0x4, 0x0 0x0 0x1 0x24 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 - launchtemplate gWillOWispFireSpriteTemplate 0x82 0x1 0x0 - launchtemplate gWillOWispFireSpriteTemplate 0x82 0x1 0x2a - launchtemplate gWillOWispFireSpriteTemplate 0x82 0x1 0x54 - launchtemplate gWillOWispFireSpriteTemplate 0x82 0x1 0x7e - launchtemplate gWillOWispFireSpriteTemplate 0x82 0x1 0xa8 - launchtemplate gWillOWispFireSpriteTemplate 0x82 0x1 0xd2 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x0, 0x0, 0x10, 0x0000 + delay 0x1 + createsprite gSoulStealZStarSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x24 + createvisualtask AnimTask_ShakeMon, 0x2, ANIM_TARGET, 0x3, 0x0, 0x6, 0x1 + createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x0 + createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x2a + createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x54 + createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x7e + createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0xa8 + createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0xd2 playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET call SoulStealingSevenStarStrikeBlueParalysis call SoulStealingSevenStarStrikeBlueParalysis @@ -30716,66 +30742,66 @@ Move_SOUL_STEALING_7_STAR_STRIKE:: loadspritegfx ANIM_TAG_SPARKLE_4 @ detect loadspritegfx ANIM_TAG_EXPLOSION @ explosion playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - launchtemplate gTargetTwinkleSpriteTemplate 0x8d 0x3 0x0 0x0 ANIM_TARGET @detect star + createsprite gTargetTwinkleSpriteTemplate, ANIM_TARGET, 13, 0x0, 0x0, ANIM_TARGET @detect star delay 0xa - launchtask AnimTask_HorizontalShake 0x5 0x3 ANIM_TARGET 0x8 0x20 + createvisualtask AnimTask_HorizontalShake, 0x5, ANIM_TARGET, 0x8, 0x20 call SoulStealingSevenStarStrikeExplosion call SoulStealingSevenStarStrikeExplosion - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL - ANIM_PAL_DEF, 0x2, 0x0, 0x10, 0x0 @everything to black + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ALL_BUT_DEF), 0x2, 0x0, 0x10, 0x0 @everything to black call SoulStealingSevenStarStrikeExplosion waitforvisualfinish blendoff restorebg - launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_BG | ANIM_PAL_ALL_BATTLERS, 0x2, 0x10, 0x0, 0x0 @everything from black + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS), 0x2, 0x10, 0x0, 0x0 @everything from black waitforvisualfinish - launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ALL_BATTLERS 0x2 0x0 0x0 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BATTLERS, 0x2, 0x0, 0x0, 0x0 waitforvisualfinish - launchtask AnimTask_AllBanksVisible 0xA 0x0 + createvisualtask AnimTask_AllBanksVisible, 0xA waitforvisualfinish end SoulStealingSevenStarStrikeBuffEffect: - launchtemplate gSoulStealIceBuffSpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2 delay 0x4 - launchtemplate gSoulStealIceBuffSpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 delay 0x4 - launchtemplate gSoulStealIceBuffSpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2 delay 0x4 - launchtemplate gSoulStealIceBuffSpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3 delay 0x4 - launchtemplate gSoulStealIceBuffSpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1 return SoulStealingSevenStarStrikeBlueParalysis: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET - launchtemplate gSoulStealBlueParalyzeSpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0 + createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0 delay 0x2 - launchtemplate gSoulStealBlueParalyzeSpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1 + createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x5, 0x1 delay 0x2 - launchtemplate gSoulStealBlueParalyzeSpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2 + createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xf, 0x14, 0x5, 0x2 delay 0x2 - launchtemplate gSoulStealBlueParalyzeSpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0 delay 0x2 - launchtemplate gSoulStealBlueParalyzeSpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1 + createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0x19, 0x0, 0x5, 0x1 delay 0x2 - launchtemplate gSoulStealBlueParalyzeSpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2 delay 0x2 - launchtemplate gSoulStealBlueParalyzeSpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0 + createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0x2, 0xfff8, 0x5, 0x0 delay 0x2 - launchtemplate gSoulStealBlueParalyzeSpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1 + createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1 return SoulStealingSevenStarStrikeExplosion: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSoulStealExplosionSpriteTemplate 0x83 0x4 0x0 0x0 ANIM_TARGET 0x1 + createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSoulStealExplosionSpriteTemplate 0x83 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSoulStealExplosionSpriteTemplate 0x83 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSoulStealExplosionSpriteTemplate 0x83 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1 delay 0x6 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - launchtemplate gSoulStealExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 + createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 50a32158b889..53d824e7e1db 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -286,7 +286,11 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectHealPulse @ EFFECT_HEAL_PULSE .4byte BattleScript_EffectQuash @ EFFECT_QUASH .4byte BattleScript_EffectIonDeluge @ EFFECT_ION_DELUGE +#if B_USE_FROSTBITE == TRUE + .4byte BattleScript_EffectFrostbiteHit @ EFFECT_FREEZE_DRY +#else .4byte BattleScript_EffectFreezeHit @ EFFECT_FREEZE_DRY +#endif .4byte BattleScript_EffectTopsyTurvy @ EFFECT_TOPSY_TURVY .4byte BattleScript_EffectMistyTerrain @ EFFECT_MISTY_TERRAIN .4byte BattleScript_EffectGrassyTerrain @ EFFECT_GRASSY_TERRAIN @@ -417,7 +421,54 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectVictoryDance @ EFFECT_VICTORY_DANCE .4byte BattleScript_EffectTeatime @ EFFECT_TEATIME .4byte BattleScript_EffectAttackUpUserAlly @ EFFECT_ATTACK_UP_USER_ALLY - + .4byte BattleScript_EffectShellTrap @ EFFECT_SHELL_TRAP + .4byte BattleScript_EffectHit @ EFFECT_PSYBLADE + .4byte BattleScript_EffectHit @ EFFECT_HYDRO_STEAM + .4byte BattleScript_EffectHitSetEntryHazard @ EFFECT_HIT_SET_ENTRY_HAZARD + .4byte BattleScript_EffectDireClaw @ EFFECT_DIRE_CLAW + .4byte BattleScript_EffectBarbBarrage @ EFFECT_BARB_BARRAGE + .4byte BattleScript_EffectRevivalBlessing @ EFFECT_REVIVAL_BLESSING + .4byte BattleScript_EffectFrostbiteHit @ EFFECT_FROSTBITE_HIT + .4byte BattleScript_EffectSnow @ EFFECT_SNOWSCAPE + +BattleScript_EffectRevivalBlessing:: + attackcanceler + attackstring + ppreduce + tryrevivalblessing BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNREVIVEDREADYTOFIGHT + waitmessage B_WAIT_TIME_LONG + jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_EffectRevivalBlessingSendOut + goto BattleScript_MoveEnd + +BattleScript_EffectRevivalBlessingSendOut: + switchinanim BS_SCRIPTING, FALSE + waitstate + switchineffects BS_SCRIPTING + goto BattleScript_MoveEnd + +BattleScript_StealthRockActivates:: + setstealthrock BattleScript_MoveEnd + printfromtable gDmgHazardsStringIds + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_EffectDireClaw:: + setmoveeffect MOVE_EFFECT_DIRE_CLAW + goto BattleScript_EffectHit + +BattleScript_EffectHitSetEntryHazard:: + argumenttomoveeffect + goto BattleScript_EffectHit + +BattleScript_SpikesActivates:: + trysetspikes BattleScript_MoveEnd + printfromtable gDmgHazardsStringIds + waitmessage B_WAIT_TIME_LONG + return + BattleScript_EffectAttackUpUserAlly: jumpifnoally BS_ATTACKER, BattleScript_EffectAttackUp attackcanceler @@ -460,7 +511,7 @@ BattleScript_EffectTeatime:: attackstring ppreduce jumpifteanoberry BattleScript_ButItFailed -@ at least one battler is affected +@ at least one battler is affected attackanimation waitanimation BattleScript_TeatimeLoop: @@ -531,6 +582,7 @@ BattleScript_AffectionBasedStatusHeal:: jumpifstatus BS_ATTACKER, STATUS1_PARALYSIS, BattleScript_AffectionBasedStatus_HealParalysisString jumpifstatus BS_ATTACKER, STATUS1_BURN, BattleScript_AffectionBasedStatus_HealBurnString jumpifstatus BS_ATTACKER, STATUS1_FREEZE, BattleScript_AffectionBasedStatus_HealFreezeString + jumpifstatus BS_ATTACKER, STATUS1_FROSTBITE, BattleScript_AffectionBasedStatus_HealFrostbiteString end2 BattleScript_AffectionBasedStatus_HealPoisonString: printstring STRINGID_ATTACKEREXPELLEDTHEPOISON @@ -546,6 +598,9 @@ BattleScript_AffectionBasedStatus_HealBurnString: goto BattleScript_AffectionBasedStatusHeal_Continue BattleScript_AffectionBasedStatus_HealFreezeString: printstring STRINGID_ATTACKERMELTEDTHEICE + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealFrostbiteString: + printstring STRINGID_ATTACKERHEALEDITSFROSTBITE BattleScript_AffectionBasedStatusHeal_Continue: waitmessage B_WAIT_TIME_LONG clearstatus BS_ATTACKER @@ -554,6 +609,23 @@ BattleScript_AffectionBasedStatusHeal_Continue: waitstate end2 +BattleScript_ShellTrapSetUp:: + printstring STRINGID_EMPTYSTRING3 + waitmessage 0x1 + playanimation BS_ATTACKER, B_ANIM_SHELL_TRAP_SETUP, NULL + printstring STRINGID_PREPARESHELLTRAP + waitmessage B_WAIT_TIME_LONG + end3 + +BattleScript_EffectShellTrap:: + attackcanceler + jumpifshelltrap BS_ATTACKER, BattleScript_HitFromAccCheck + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING | HITMARKER_NO_PPDEDUCT, BattleScript_MoveEnd + ppreduce + printstring STRINGID_SHELLTRAPDIDNTWORK + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + BattleScript_EffectSteelBeam:: attackcanceler attackstring @@ -617,7 +689,7 @@ BattleScript_BeakBlastSetUp:: playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL printstring STRINGID_HEATUPBEAK waitmessage B_WAIT_TIME_LONG - end2 + end3 BattleScript_BeakBlastBurn:: setbyte cMULTISTRING_CHOOSER, 0 @@ -1247,7 +1319,7 @@ BattleScript_EffectRemoveTerrain: resultmessage waitmessage B_WAIT_TIME_LONG removeterrain - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_MoveEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_TERRAINENDS_COUNT, BattleScript_MoveEnd printfromtable gTerrainEndingStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_ATTACKER, B_ANIM_RESTORE_BG @@ -1382,8 +1454,9 @@ BattleScript_EffectBurnUp: goto BattleScript_ButItFailed BattleScript_BurnUpWorks: - setmoveeffect MOVE_EFFECT_BURN_UP | MOVE_EFFECT_CERTAIN - goto BattleScript_EffectHit + setmoveeffect MOVE_EFFECT_BURN_UP | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + goto BattleScript_HitFromCritCalc BattleScript_BurnUpRemoveType:: losetype BS_ATTACKER, TYPE_FIRE @@ -1399,15 +1472,16 @@ BattleScript_EffectDoubleShock: goto BattleScript_ButItFailed BattleScript_DoubleShockWorks: - setmoveeffect MOVE_EFFECT_DOUBLE_SHOCK | MOVE_EFFECT_CERTAIN - goto BattleScript_EffectHit + setmoveeffect MOVE_EFFECT_DOUBLE_SHOCK | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + goto BattleScript_HitFromCritCalc BattleScript_DoubleShockRemoveType:: losetype BS_ATTACKER, TYPE_ELECTRIC printstring STRINGID_ATTACKERLOSTELECTRICTYPE waitmessage B_WAIT_TIME_LONG return - + BattleScript_EffectPurify: attackcanceler attackstring @@ -1507,6 +1581,7 @@ BattleScript_MoveEffectCoreEnforcer:: printstring STRINGID_PKMNSABILITYSUPPRESSED waitmessage B_WAIT_TIME_LONG trytoclearprimalweather + tryrevertweatherform printstring STRINGID_EMPTYSTRING3 waitmessage 1 BattleScript_CoreEnforcerRet: @@ -2125,9 +2200,14 @@ BattleScript_EffectHitSwitchTarget: moveendall jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted - tryhitswitchtarget BattleScript_EffectHitSwitchTargetMoveEnd -BattleScript_EffectHitSwitchTargetMoveEnd: - end + tryhitswitchtarget BattleScript_MoveEnd + forcerandomswitch BattleScript_HitSwitchTargetForceRandomSwitchFailed + goto BattleScript_MoveEnd + +BattleScript_HitSwitchTargetForceRandomSwitchFailed: + hitswitchtargetfailed + setbyte sSWITCH_CASE, B_SWITCH_NORMAL + goto BattleScript_MoveEnd BattleScript_EffectClearSmog: setmoveeffect MOVE_EFFECT_CLEAR_SMOG @@ -2562,8 +2642,7 @@ BattleScript_EffectPsychicTerrain: printfromtable gTerrainStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_ATTACKER, B_ANIM_RESTORE_BG - call BattleScript_ActivateTerrainAbilities - call BattleScript_TerrainSeedLoop + call BattleScript_ActivateTerrainEffects goto BattleScript_MoveEnd BattleScript_EffectTopsyTurvy: @@ -2651,6 +2730,7 @@ BattleScript_EffectSimpleBeam: printstring STRINGID_PKMNACQUIREDSIMPLE waitmessage B_WAIT_TIME_LONG trytoclearprimalweather + tryrevertweatherform printstring STRINGID_EMPTYSTRING3 waitmessage 1 tryendneutralizinggas BS_TARGET @@ -2694,6 +2774,8 @@ BattleScript_EffectHealingWish: instanthpdrop BS_ATTACKER setatkhptozero tryfaintmon BS_ATTACKER + storehealingwish BS_ATTACKER +.if B_HEALING_WISH_SWITCH <= GEN_4 openpartyscreen BS_ATTACKER, BattleScript_EffectHealingWishEnd switchoutabilities BS_ATTACKER waitstate @@ -2708,11 +2790,19 @@ BattleScript_EffectHealingWish: printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate + switchineffects BS_ATTACKER +.endif +BattleScript_EffectHealingWishEnd: + moveendall + end + +BattleScript_HealingWishActivates:: setbyte cMULTISTRING_CHOOSER, 0 - jumpifnotchosenmove MOVE_LUNAR_DANCE, BattleScript_EffectHealingWishNewMon + goto BattleScript_EffectHealingWishRestore +BattleScript_LunarDanceActivates:: setbyte cMULTISTRING_CHOOSER, 1 restorepp BS_ATTACKER -BattleScript_EffectHealingWishNewMon: +BattleScript_EffectHealingWishRestore: printfromtable gHealingWishStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_ATTACKER, B_ANIM_WISH_HEAL @@ -2727,10 +2817,7 @@ BattleScript_EffectHealingWishNewMon: waitstate printstring STRINGID_HEALINGWISHHEALED waitmessage B_WAIT_TIME_LONG - switchineffects BS_ATTACKER -BattleScript_EffectHealingWishEnd: - moveendall - end + return BattleScript_EffectWorrySeed: attackcanceler @@ -2743,6 +2830,7 @@ BattleScript_EffectWorrySeed: printstring STRINGID_PKMNACQUIREDABILITY waitmessage B_WAIT_TIME_LONG trytoclearprimalweather + tryrevertweatherform printstring STRINGID_EMPTYSTRING3 waitmessage 1 goto BattleScript_MoveEnd @@ -2874,6 +2962,7 @@ BattleScript_EffectGastroAcid: printstring STRINGID_PKMNSABILITYSUPPRESSED waitmessage B_WAIT_TIME_LONG trytoclearprimalweather + tryrevertweatherform printstring STRINGID_EMPTYSTRING3 waitmessage 1 tryendneutralizinggas BS_TARGET @@ -3094,7 +3183,7 @@ BattleScript_EffectHitEscape: jumpifbyte CMP_NOT_EQUAL gBattleOutcome 0, BattleScript_HitEscapeEnd jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_HitEscapeEnd jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_HitEscapeEnd - jumpifemergencyexited BS_TARGET, BattleScript_HitEscapeEnd + jumpifemergencyexited BS_TARGET, BattleScript_HitEscapeEnd openpartyscreen BS_ATTACKER, BattleScript_HitEscapeEnd switchoutabilities BS_ATTACKER waitstate @@ -3309,7 +3398,7 @@ BattleScript_AbilityProtectsDoesntAffect: call BattleScript_AbilityProtectsDoesntAffectRet orhalfword gMoveResultFlags, MOVE_RESULT_FAILED goto BattleScript_MoveEnd - + BattleScript_InsomniaProtects: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp @@ -3340,6 +3429,7 @@ BattleScript_CantMakeAsleep:: orhalfword gMoveResultFlags, MOVE_RESULT_FAILED goto BattleScript_MoveEnd +BattleScript_EffectBarbBarrage: BattleScript_EffectPoisonHit: setmoveeffect MOVE_EFFECT_POISON goto BattleScript_EffectHit @@ -3390,6 +3480,10 @@ BattleScript_EffectBurnHit:: setmoveeffect MOVE_EFFECT_BURN goto BattleScript_EffectHit +BattleScript_EffectFrostbiteHit:: + setmoveeffect MOVE_EFFECT_FROSTBITE + goto BattleScript_EffectHit + BattleScript_EffectSleepHit:: setmoveeffect MOVE_EFFECT_SLEEP goto BattleScript_EffectHit @@ -3402,26 +3496,19 @@ BattleScript_EffectParalyzeHit:: setmoveeffect MOVE_EFFECT_PARALYSIS goto BattleScript_EffectHit -BattleScript_EffectExplosion:: - attackcanceler - attackstring - ppreduce -@ Below jumps to BattleScript_DampStopsExplosion if it fails (only way it can) - tryexplosion - setatkhptozero - waitstate - jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_ExplosionDoAnimStartLoop +BattleScript_EffectExplosion_AnimDmgRet: + jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_ExplosionAnimRet call BattleScript_PreserveMissedBitDoMoveAnim - goto BattleScript_ExplosionLoop -BattleScript_ExplosionDoAnimStartLoop: + goto BattleScript_ExplosionDmgRet +BattleScript_ExplosionAnimRet: attackanimation waitanimation -BattleScript_ExplosionLoop: +BattleScript_ExplosionDmgRet: movevaluescleanup critcalc damagecalc adjustdamage - accuracycheck BattleScript_ExplosionMissed, ACC_CURR_MOVE + accuracycheck BattleScript_ExplosionMissedRet, ACC_CURR_MOVE effectivenesssound hitanimation BS_TARGET waitstate @@ -3432,17 +3519,25 @@ BattleScript_ExplosionLoop: resultmessage waitmessage B_WAIT_TIME_LONG tryfaintmon BS_TARGET - moveendto MOVEEND_NEXT_TARGET - jumpifnexttargetvalid BattleScript_ExplosionLoop - tryfaintmon BS_ATTACKER - moveendcase MOVEEND_CLEAR_BITS - end -BattleScript_ExplosionMissed: +BattleScript_ExplosionAnimEndRet_Return: + return +BattleScript_ExplosionMissedRet: effectivenesssound resultmessage waitmessage B_WAIT_TIME_LONG - moveendto MOVEEND_NEXT_TARGET - jumpifnexttargetvalid BattleScript_ExplosionLoop + goto BattleScript_ExplosionAnimEndRet_Return + +BattleScript_EffectExplosion:: + attackcanceler + attackstring + ppreduce +@ Below jumps to BattleScript_DampStopsExplosion if it fails (only way it can) + tryexplosion + waitstate +BattleScript_EffectExplosion_AnimDmgFaintAttacker: + call BattleScript_EffectExplosion_AnimDmgRet + moveendall + setatkhptozero tryfaintmon BS_ATTACKER end @@ -3450,14 +3545,28 @@ BattleScript_EffectMindBlown:: attackcanceler attackstring ppreduce - tryexplosion + jumpifbyte CMP_GREATER_THAN, sB_ANIM_TARGETS_HIT, 0, BattleScript_EffectMindBlown_NoHpLoss + jumpifabilitypresent ABILITY_DAMP, BattleScript_MindBlownDamp + jumpifmorethanhalfHP BS_ATTACKER, BattleScript_EffectMindBlown_HpDown + setbyte sMULTIHIT_EFFECT, 0 @ Note to faint the attacker + instanthpdrop BS_ATTACKER + waitstate + goto BattleScript_EffectExplosion_AnimDmgFaintAttacker +BattleScript_EffectMindBlown_NoHpLoss: + jumpifbyte CMP_EQUAL, sMULTIHIT_EFFECT, 0, BattleScript_EffectExplosion_AnimDmgFaintAttacker + goto BattleScript_EffectMindBlown_AnimDmgNoFaint +BattleScript_MindBlownDamp: + copybyte gBattlerTarget, gBattlerAbility + goto BattleScript_DampStopsExplosion +BattleScript_EffectMindBlown_HpDown: + setbyte sMULTIHIT_EFFECT, 1 @ Note to not faint the attacker dmg_1_2_attackerhp healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER waitstate - jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_ExplosionDoAnimStartLoop - call BattleScript_PreserveMissedBitDoMoveAnim - goto BattleScript_ExplosionLoop +BattleScript_EffectMindBlown_AnimDmgNoFaint: + call BattleScript_EffectExplosion_AnimDmgRet + goto BattleScript_MoveEnd BattleScript_PreserveMissedBitDoMoveAnim: bichalfword gMoveResultFlags, MOVE_RESULT_MISSED @@ -3697,7 +3806,6 @@ BattleScript_EffectRoar:: accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed -BattleScript_ForceRandomSwitch:: forcerandomswitch BattleScript_ButItFailed BattleScript_EffectMultiHit:: @@ -3881,6 +3989,9 @@ BattleScript_EffectRest:: jumpifuproarwakes BattleScript_RestCantSleep jumpifability BS_TARGET, ABILITY_INSOMNIA, BattleScript_InsomniaProtects jumpifability BS_TARGET, ABILITY_VITAL_SPIRIT, BattleScript_InsomniaProtects +.if B_LEAF_GUARD_PREVENTS_REST >= GEN_5 + jumpifleafguardprotected BS_TARGET, BattleScript_LeafGuardPreventsRest +.endif trysetrest BattleScript_AlreadyAtFullHp pause B_WAIT_TIME_SHORT printfromtable gRestUsedStringIds @@ -3902,6 +4013,12 @@ BattleScript_RestIsAlreadyAsleep:: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd +BattleScript_LeafGuardPreventsRest:: + pause B_WAIT_TIME_SHORT + printstring STRINGID_BUTITFAILED + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + BattleScript_EffectOHKO:: attackcanceler attackstring @@ -4207,7 +4324,7 @@ BattleScript_BattleScript_EffectParalyzeNoTypeCalc: resultmessage waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd - + BattleScript_VoltAbsorbHeal: copybyte gBattlerAbility, gBattlerTarget tryhealquarterhealth BS_TARGET BattleScript_MonMadeMoveUseless @ Check if max hp @@ -5086,7 +5203,7 @@ BattleScript_MoveWeatherChange:: waitanimation printfromtable gMoveWeatherChangeStringIds waitmessage B_WAIT_TIME_LONG - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities goto BattleScript_MoveEnd BattleScript_EffectSunnyDay:: @@ -5501,6 +5618,9 @@ BattleScript_EffectStockpile:: waitanimation printfromtable gStockpileUsedStringIds waitmessage B_WAIT_TIME_LONG + .if B_STOCKPILE_RAISES_DEFS < GEN_4 + goto BattleScript_EffectStockpileEnd + .endif jumpifmovehadnoeffect BattleScript_EffectStockpileEnd jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, MAX_STAT_STAGE, BattleScript_EffectStockpileDef jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, MAX_STAT_STAGE, BattleScript_EffectStockpileEnd @@ -5522,6 +5642,23 @@ BattleScript_EffectStockpileEnd: stockpile 1 goto BattleScript_MoveEnd +BattleScript_MoveEffectStockpileWoreOff:: + .if B_STOCKPILE_RAISES_DEFS >= GEN_4 + dostockpilestatchangeswearoff BS_ATTACKER, BattleScript_StockpileStatChangeDown + printstring STRINGID_STOCKPILEDEFFECTWOREOFF + waitmessage B_WAIT_TIME_SHORT + .endif + return + +BattleScript_StockpileStatChangeDown: + statbuffchange MOVE_EFFECT_AFFECTS_USER, BattleScript_StockpileStatChangeDown_Ret + setgraphicalstatchangevalues + playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_StockpileStatChangeDown_Ret: + return + BattleScript_EffectSpitUp:: attackcanceler jumpifbyte CMP_EQUAL, cMISS_TYPE, B_MSG_PROTECTED, BattleScript_SpitUpFailProtect @@ -6715,10 +6852,11 @@ BattleScript_RainContinuesOrEnds:: jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_RAIN_STOPPED, BattleScript_RainContinuesOrEndsEnd playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES BattleScript_RainContinuesOrEndsEnd:: + call BattleScript_ActivateWeatherAbilities end2 BattleScript_DamagingWeatherContinues:: - printfromtable gSandStormHailContinuesStringIds + printfromtable gSandStormHailSnowContinuesStringIds waitmessage B_WAIT_TIME_LONG playanimation_var BS_ATTACKER, sB_ANIM_ARG1 setbyte gBattleCommunication, 0 @@ -6748,36 +6886,40 @@ BattleScript_DamagingWeatherLoopIncrement:: jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamagingWeatherLoop BattleScript_DamagingWeatherContinuesEnd:: bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + call BattleScript_ActivateWeatherAbilities end2 -BattleScript_SandStormHailEnds:: - printfromtable gSandStormHailEndStringIds +BattleScript_SandStormHailSnowEnds:: + printfromtable gSandStormHailSnowEndStringIds waitmessage B_WAIT_TIME_LONG + call BattleScript_ActivateWeatherAbilities end2 BattleScript_SunlightContinues:: printstring STRINGID_SUNLIGHTSTRONG waitmessage B_WAIT_TIME_LONG playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES + call BattleScript_ActivateWeatherAbilities end2 BattleScript_SunlightFaded:: printstring STRINGID_SUNLIGHTFADED waitmessage B_WAIT_TIME_LONG + call BattleScript_ActivateWeatherAbilities end2 BattleScript_OverworldWeatherStarts:: printfromtable gWeatherStartsStringIds waitmessage B_WAIT_TIME_LONG playanimation_var BS_ATTACKER, sB_ANIM_ARG1 - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities end3 BattleScript_OverworldTerrain:: printfromtable gTerrainStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG - call BattleScript_TerrainSeedLoop + call BattleScript_ActivateTerrainEffects end3 BattleScript_SideStatusWoreOff:: @@ -6836,28 +6978,14 @@ BattleScript_MagicRoomEnds:: waitmessage B_WAIT_TIME_LONG end2 -BattleScript_ElectricTerrainEnds:: - printstring STRINGID_ELECTRICTERRAINENDS - waitmessage B_WAIT_TIME_LONG - playanimation BS_ATTACKER, B_ANIM_RESTORE_BG - end2 - -BattleScript_MistyTerrainEnds:: - printstring STRINGID_MISTYTERRAINENDS - waitmessage B_WAIT_TIME_LONG - playanimation BS_ATTACKER, B_ANIM_RESTORE_BG - end2 - -BattleScript_GrassyTerrainEnds:: - printstring STRINGID_GRASSYTERRAINENDS +BattleScript_TerrainEnds_Ret:: + printfromtable gTerrainEndingStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_ATTACKER, B_ANIM_RESTORE_BG - end2 + return -BattleScript_PsychicTerrainEnds:: - printstring STRINGID_PSYCHICTERRAINENDS - waitmessage B_WAIT_TIME_LONG - playanimation BS_ATTACKER, B_ANIM_RESTORE_BG +BattleScript_TerrainEnds:: + call BattleScript_TerrainEnds_Ret end2 BattleScript_MudSportEnds:: @@ -7052,8 +7180,10 @@ BattleScript_MistProtected:: return BattleScript_RageIsBuilding:: + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_RageIsBuildingEnd printstring STRINGID_PKMNRAGEBUILDING waitmessage B_WAIT_TIME_LONG +BattleScript_RageIsBuildingEnd: return BattleScript_MoveUsedIsDisabled:: @@ -7268,8 +7398,7 @@ BattleScript_SeedSowerActivates:: printstring STRINGID_TERRAINBECOMESGRASSY waitmessage B_WAIT_TIME_LONG playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG - call BattleScript_ActivateTerrainAbilities - call BattleScript_TerrainSeedLoop + call BattleScript_ActivateTerrainEffects return BattleScript_AngerShellActivates:: @@ -7402,6 +7531,26 @@ BattleScript_StealthRockFree:: waitmessage B_WAIT_TIME_LONG return +BattleScript_SpikesDefog:: + printstring STRINGID_SPIKESDISAPPEAREDFROMTEAM + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_ToxicSpikesDefog:: + printstring STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_StickyWebDefog:: + printstring STRINGID_STICKYWEBDISAPPEAREDFROMTEAM + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_StealthRockDefog:: + printstring STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM + waitmessage B_WAIT_TIME_LONG + return + BattleScript_MonTookFutureAttack:: printstring STRINGID_PKMNTOOKATTACK waitmessage B_WAIT_TIME_LONG @@ -7677,7 +7826,7 @@ BattleScript_GrudgeTakesPp:: printstring STRINGID_PKMNLOSTPPGRUDGE waitmessage B_WAIT_TIME_LONG return - + BattleScript_MagicCoatBounce:: attackstring ppreduce @@ -7753,35 +7902,29 @@ BattleScript_FocusPunchSetUp:: playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP printstring STRINGID_PKMNTIGHTENINGFOCUS waitmessage B_WAIT_TIME_LONG - end2 + end3 BattleScript_MegaEvolution:: + printstring STRINGID_EMPTYSTRING3 + trytrainerslidemegaevolutionmsg BS_ATTACKER printstring STRINGID_MEGAEVOREACTING +BattleScript_MegaEvolutionAfterString: waitmessage B_WAIT_TIME_LONG setbyte gIsCriticalHit, 0 handlemegaevo BS_ATTACKER, 0 - handlemegaevo BS_ATTACKER, 1 playanimation BS_ATTACKER, B_ANIM_MEGA_EVOLUTION waitanimation - handlemegaevo BS_ATTACKER, 2 + handlemegaevo BS_ATTACKER, 1 printstring STRINGID_MEGAEVOEVOLVED waitmessage B_WAIT_TIME_LONG switchinabilities BS_ATTACKER - end2 + end3 BattleScript_WishMegaEvolution:: + printstring STRINGID_EMPTYSTRING3 + trytrainerslidemegaevolutionmsg BS_ATTACKER printstring STRINGID_FERVENTWISHREACHED - waitmessage B_WAIT_TIME_LONG - setbyte gIsCriticalHit, 0 - handlemegaevo BS_ATTACKER, 0 - handlemegaevo BS_ATTACKER, 1 - playanimation BS_ATTACKER, B_ANIM_MEGA_EVOLUTION - waitanimation - handlemegaevo BS_ATTACKER, 2 - printstring STRINGID_MEGAEVOEVOLVED - waitmessage B_WAIT_TIME_LONG - switchinabilities BS_ATTACKER - end2 + goto BattleScript_MegaEvolutionAfterString BattleScript_PrimalReversion:: printstring STRINGID_EMPTYSTRING3 @@ -7830,6 +7973,7 @@ BattleScript_AttackerFormChangeEnd3:: BattleScript_AttackerFormChangeEnd3NoPopup:: call BattleScript_AttackerFormChangeNoPopup + end3 BattleScript_AttackerFormChangeMoveEffect:: waitmessage 1 @@ -7860,9 +8004,7 @@ BattleScript_CudChewActivates:: setbyte sBERRY_OVERRIDE, 0 end3 -BattleScript_TargetFormChange:: - pause 5 - call BattleScript_AbilityPopUpTarget +BattleScript_TargetFormChangeNoPopup: printstring STRINGID_EMPTYSTRING3 waitmessage 1 handleformchange BS_TARGET, 0 @@ -7872,16 +8014,22 @@ BattleScript_TargetFormChange:: handleformchange BS_TARGET, 2 return +BattleScript_TargetFormChange:: + pause 5 + call BattleScript_AbilityPopUpTarget + call BattleScript_TargetFormChangeNoPopup + return + BattleScript_TargetFormChangeWithString:: pause 5 call BattleScript_AbilityPopUpTarget - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 - handleformchange BS_TARGET, 0 - handleformchange BS_TARGET, 1 - playanimation BS_TARGET, B_ANIM_FORM_CHANGE, NULL - waitanimation - handleformchange BS_TARGET, 2 + call BattleScript_TargetFormChangeNoPopup + printstring STRINGID_PKMNTRANSFORMED + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_TargetFormChangeWithStringNoPopup:: + call BattleScript_TargetFormChangeNoPopup printstring STRINGID_PKMNTRANSFORMED waitmessage B_WAIT_TIME_LONG return @@ -7956,7 +8104,7 @@ BattleScript_AftermathDmg:: waitmessage B_WAIT_TIME_LONG tryfaintmon BS_ATTACKER return - + BattleScript_DampPreventsAftermath:: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp @@ -8015,6 +8163,11 @@ BattleScript_BurnTurnDmg:: waitmessage B_WAIT_TIME_LONG goto BattleScript_DoStatusTurnDmg +BattleScript_FrostbiteTurnDmg:: + printstring STRINGID_PKMNHURTBYFROSTBITE + waitmessage B_WAIT_TIME_LONG + goto BattleScript_DoStatusTurnDmg + BattleScript_MoveUsedIsFrozen:: printstring STRINGID_PKMNISFROZEN waitmessage B_WAIT_TIME_LONG @@ -8027,12 +8180,24 @@ BattleScript_MoveUsedUnfroze:: updatestatusicon BS_ATTACKER return +BattleScript_MoveUsedUnfrostbite:: + printfromtable gFrostbiteHealedStringIds + waitmessage B_WAIT_TIME_LONG + updatestatusicon BS_ATTACKER + return + BattleScript_DefrostedViaFireMove:: printstring STRINGID_PKMNWASDEFROSTED waitmessage B_WAIT_TIME_LONG updatestatusicon BS_TARGET return +BattleScript_FrostbiteHealedViaFireMove:: + printstring STRINGID_PKMNFROSTBITEHEALED + waitmessage B_WAIT_TIME_LONG + updatestatusicon BS_TARGET + return + BattleScript_MoveUsedIsParalyzed:: printstring STRINGID_PKMNISPARALYZED waitmessage B_WAIT_TIME_LONG @@ -8254,6 +8419,12 @@ BattleScript_MoveEffectBurn:: waitmessage B_WAIT_TIME_LONG goto BattleScript_UpdateEffectStatusIconRet +BattleScript_MoveEffectFrostbite:: + statusanimation BS_EFFECT_BATTLER + printfromtable gGotFrostbiteStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_UpdateEffectStatusIconRet + BattleScript_MoveEffectFreeze:: statusanimation BS_EFFECT_BATTLER printfromtable gGotFrozenStringIds @@ -8324,7 +8495,7 @@ BattleScript_DrizzleActivates:: printstring STRINGID_PKMNMADEITRAIN waitstate playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities end3 BattleScript_AbilityRaisesDefenderStat:: @@ -8342,17 +8513,20 @@ BattleScript_AbilityPopUpTarget: BattleScript_AbilityPopUp: .if B_ABILITY_POP_UP == TRUE showabilitypopup BS_ABILITY_BATTLER - recordability BS_ABILITY_BATTLER pause 40 .endif + recordability BS_ABILITY_BATTLER sethword sABILITY_OVERWRITE, 0 return BattleScript_SpeedBoostActivates:: + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_SpeedBoostActivatesEnd call BattleScript_AbilityPopUp + setgraphicalstatchangevalues playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 printstring STRINGID_PKMNRAISEDSPEED waitmessage B_WAIT_TIME_LONG +BattleScript_SpeedBoostActivatesEnd: end3 @ Can't compare directly to a value, have to compare to value at pointer @@ -8486,7 +8660,7 @@ BattleScript_SandstreamActivates:: printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM waitstate playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities end3 BattleScript_SandSpitActivates:: @@ -8495,7 +8669,7 @@ BattleScript_SandSpitActivates:: printstring STRINGID_ASANDSTORMKICKEDUP waitstate playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities return BattleScript_ShedSkinActivates:: @@ -8505,37 +8679,16 @@ BattleScript_ShedSkinActivates:: updatestatusicon BS_ATTACKER end3 -BattleScript_WeatherFormChanges:: - setbyte sBATTLER, 0 -BattleScript_WeatherFormChangesLoop:: - tryweatherformdatachange - activateweatherchangeabilities BS_SCRIPTING - addbyte sBATTLER, 1 - jumpifbytenotequal sBATTLER, gBattlersCount, BattleScript_WeatherFormChangesLoop - return - -BattleScript_WeatherFormChange:: - call BattleScript_DoWeatherFormChange - end3 - -BattleScript_DoWeatherFormChange:: - copybyte gBattlerAbility, sBATTLER -.if B_WEATHER_FORMS >= GEN_5 - jumpifspecies BS_SCRIPTING, SPECIES_CASTFORM, BattleScript_DoWeatherFormChange_ForecastCheck -BattleScript_DoWeatherFormChange_FlowerGiftCheck: - jumpifability BS_SCRIPTING, ABILITY_FLOWER_GIFT, BattleScript_DoWeatherFormChange_PopUp - goto BattleScript_DoWeatherFormChange_AfterPopUp -.endif -BattleScript_DoWeatherFormChange_ForecastCheck: - jumpifability BS_SCRIPTING, ABILITY_FORECAST, BattleScript_DoWeatherFormChange_PopUp - goto BattleScript_DoWeatherFormChange_AfterPopUp -BattleScript_DoWeatherFormChange_PopUp: - call BattleScript_AbilityPopUp -BattleScript_DoWeatherFormChange_AfterPopUp: - doweatherformchangeanimation - waitstate - printstring STRINGID_PKMNTRANSFORMED - waitmessage B_WAIT_TIME_LONG +BattleScript_ActivateWeatherAbilities: + savetarget + setbyte gBattlerTarget, 0 +BattleScript_ActivateWeatherAbilities_Loop: + copybyte sBATTLER, gBattlerTarget + activateweatherchangeabilities BS_TARGET +BattleScript_ActivateWeatherAbilities_Increment: + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_ActivateWeatherAbilities_Loop + restoretarget return BattleScript_TryAdrenalineOrb: @@ -8555,7 +8708,6 @@ BattleScript_TryAdrenalineOrbRet: return BattleScript_IntimidateActivates:: - jumpifnovalidtargets BattleScript_IntimidateEnd showabilitypopup BS_ATTACKER pause B_WAIT_TIME_LONG destroyabilitypopup @@ -8563,6 +8715,7 @@ BattleScript_IntimidateActivates:: BattleScript_IntimidateLoop: jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_IntimidateLoopIncrement jumpiftargetally BattleScript_IntimidateLoopIncrement + jumpifabsent BS_TARGET, BattleScript_IntimidateLoopIncrement jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement jumpifholdeffect BS_TARGET, HOLD_EFFECT_CLEAR_AMULET, BattleScript_IntimidatePrevented_Item jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_IntimidatePrevented @@ -8590,6 +8743,7 @@ BattleScript_IntimidateLoopIncrement: addbyte gBattlerTarget, 1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_IntimidateLoop BattleScript_IntimidateEnd: + copybyte sBATTLER, gBattlerAttacker destroyabilitypopup pause B_WAIT_TIME_MED end3 @@ -8629,7 +8783,7 @@ BattleScript_DroughtActivates:: printstring STRINGID_PKMNSXINTENSIFIEDSUN waitstate playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities end3 BattleScript_DesolateLandActivates:: @@ -8638,7 +8792,7 @@ BattleScript_DesolateLandActivates:: printstring STRINGID_EXTREMELYHARSHSUNLIGHT waitstate playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities end3 BattleScript_DesolateLandEvaporatesWaterTypeMoves:: @@ -8658,7 +8812,7 @@ BattleScript_PrimordialSeaActivates:: printstring STRINGID_HEAVYRAIN waitstate playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities end3 BattleScript_PrimordialSeaFizzlesOutFireTypeMoves:: @@ -8729,27 +8883,37 @@ BattleScript_MimicryActivates_End3:: waitmessage B_WAIT_TIME_SHORT end3 -BattleScript_SnowWarningActivates:: +BattleScript_SnowWarningActivatesHail:: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp printstring STRINGID_SNOWWARNINGHAIL waitstate playanimation BS_BATTLER_0, B_ANIM_HAIL_CONTINUES - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities + end3 + +BattleScript_SnowWarningActivatesSnow:: + pause B_WAIT_TIME_SHORT + call BattleScript_AbilityPopUp + printstring STRINGID_SNOWWARNINGSNOW + waitstate + playanimation BS_BATTLER_0, B_ANIM_SNOW_CONTINUES + call BattleScript_ActivateWeatherAbilities end3 -BattleScript_TerrainSeedLoop: +BattleScript_ActivateTerrainEffects: savetarget setbyte gBattlerTarget, 0 -BattleScript_TerrainSeedLoopIter: +BattleScript_ActivateTerrainSeed: copybyte sBATTLER, gBattlerTarget - doterrainseed BS_TARGET, BattleScript_TerrainSeedLoop_NextBattler + doterrainseed BS_TARGET, BattleScript_ActivateTerrainAbility removeitem BS_TARGET -BattleScript_TerrainSeedLoop_NextBattler: +BattleScript_ActivateTerrainAbility: + activateterrainchangeabilities BS_TARGET +BattleScript_ActivateTerrainEffects_Increment: addbyte gBattlerTarget, 0x1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_TerrainSeedLoopIter + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_ActivateTerrainSeed restoretarget - call BattleScript_ActivateSwitchInAbilities return BattleScript_ActivateSwitchInAbilities: @@ -8763,25 +8927,13 @@ BattleScript_ActivateSwitchInAbilities_Increment: copybyte gBattlerAttacker, sBATTLER return -BattleScript_ActivateTerrainAbilities: - copybyte sBATTLER, gBattlerAttacker - setbyte gBattlerAttacker, 0 -BattleScript_ActivateTerrainAbilities_Loop: - activateterrainchangeabilities BS_ATTACKER -BattleScript_ActivateTerrainAbilities_Increment: - addbyte gBattlerAttacker, 1 - jumpifbytenotequal gBattlerAttacker, gBattlersCount, BattleScript_ActivateTerrainAbilities_Loop - copybyte gBattlerAttacker, sBATTLER - return - BattleScript_ElectricSurgeActivates:: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp printstring STRINGID_TERRAINBECOMESELECTRIC waitmessage B_WAIT_TIME_LONG playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG - call BattleScript_ActivateTerrainAbilities - call BattleScript_TerrainSeedLoop + call BattleScript_ActivateTerrainEffects end3 BattleScript_MistySurgeActivates:: @@ -8790,8 +8942,7 @@ BattleScript_MistySurgeActivates:: printstring STRINGID_TERRAINBECOMESMISTY waitmessage B_WAIT_TIME_LONG playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG - call BattleScript_ActivateTerrainAbilities - call BattleScript_TerrainSeedLoop + call BattleScript_ActivateTerrainEffects end3 BattleScript_GrassySurgeActivates:: @@ -8800,8 +8951,7 @@ BattleScript_GrassySurgeActivates:: printstring STRINGID_TERRAINBECOMESGRASSY waitmessage B_WAIT_TIME_LONG playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG - call BattleScript_ActivateTerrainAbilities - call BattleScript_TerrainSeedLoop + call BattleScript_ActivateTerrainEffects end3 BattleScript_PsychicSurgeActivates:: @@ -8810,8 +8960,7 @@ BattleScript_PsychicSurgeActivates:: printstring STRINGID_TERRAINBECOMESPSYCHIC waitmessage B_WAIT_TIME_LONG playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG - call BattleScript_ActivateTerrainAbilities - call BattleScript_TerrainSeedLoop + call BattleScript_ActivateTerrainEffects end3 BattleScript_HurtTarget_NoString: @@ -8890,8 +9039,8 @@ BattleScript_MoveStatDrain:: setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 waitanimation -.if B_ABSORBING_ABILITY_STRING >= GEN_5 statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_MoveStatDrain_Cont +.if B_ABSORBING_ABILITY_STRING >= GEN_5 printfromtable gStatUpStringIds waitmessage B_WAIT_TIME_LONG .else @@ -9030,7 +9179,6 @@ BattleScript_GrassyTerrainLoopIncrement:: BattleScript_GrassyTerrainLoopEnd:: bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE jumpifword CMP_COMMON_BITS, gFieldStatuses, STATUS_FIELD_TERRAIN_PERMANENT, BattleScript_GrassyTerrainHealEnd - jumpifbyte CMP_EQUAL, gFieldTimers + 5, 0, BattleScript_GrassyTerrainEnds BattleScript_GrassyTerrainHealEnd: end2 @@ -9087,7 +9235,7 @@ BattleScript_WanderingSpiritActivates:: pause 20 destroyabilitypopup pause 40 - + copybyte gBattlerAbility, gBattlerAttacker setbyte sFIXED_ABILITY_POPUP, TRUE copyhword sABILITY_OVERWRITE, gLastUsedAbility showabilitypopup BS_ATTACKER @@ -9124,16 +9272,6 @@ BattleScript_BattlerAbilityStatRaiseOnSwitchIn:: waitmessage B_WAIT_TIME_LONG end3 -BattleScript_TargetAbilityStatRaiseOnMoveEnd:: - call BattleScript_AbilityPopUp - statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL - setgraphicalstatchangevalues - playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 - waitanimation - printstring STRINGID_ABILITYRAISEDSTATDRASTICALLY - waitmessage B_WAIT_TIME_LONG - return - BattleScript_ScriptingAbilityStatRaise:: copybyte gBattlerAbility, sBATTLER call BattleScript_AbilityPopUp @@ -9181,6 +9319,7 @@ BattleScript_WeakArmorActivatesEnd: return BattleScript_RaiseStatOnFaintingTarget:: + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseStatOnFaintingTarget_End copybyte gBattlerAbility, gBattlerAttacker call BattleScript_AbilityPopUp setgraphicalstatchangevalues @@ -9188,9 +9327,11 @@ BattleScript_RaiseStatOnFaintingTarget:: waitanimation printstring STRINGID_LASTABILITYRAISEDSTAT waitmessage B_WAIT_TIME_LONG +BattleScript_RaiseStatOnFaintingTarget_End: return BattleScript_AttackerAbilityStatRaise:: + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_AttackerAbilityStatRaise_End copybyte gBattlerAbility, gBattlerAttacker call BattleScript_AbilityPopUp setgraphicalstatchangevalues @@ -9198,6 +9339,7 @@ BattleScript_AttackerAbilityStatRaise:: waitanimation printstring STRINGID_ATTACKERABILITYSTATRAISE waitmessage B_WAIT_TIME_LONG +BattleScript_AttackerAbilityStatRaise_End: return BattleScript_FellStingerRaisesStat:: @@ -9251,8 +9393,8 @@ BattleScript_FriskActivates:: end3 BattleScript_ImposterActivates:: - transformdataexecution call BattleScript_AbilityPopUp + transformdataexecution playmoveanimation BS_ATTACKER, MOVE_TRANSFORM waitanimation printstring STRINGID_IMPOSTERTRANSFORM @@ -9477,6 +9619,18 @@ BattleScript_BerryCureFrzRet:: removeitem BS_SCRIPTING return +BattleScript_BerryCureFsbEnd2:: + call BattleScript_BerryCureFrzRet + end2 + +BattleScript_BerryCureFsbRet:: + playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT + printstring STRINGID_PKMNSITEMHEALEDFROSTBITE + waitmessage B_WAIT_TIME_LONG + updatestatusicon BS_SCRIPTING + removeitem BS_SCRIPTING + return + BattleScript_BerryCureSlpEnd2:: call BattleScript_BerryCureSlpRet end2 @@ -9900,29 +10054,48 @@ BattleScript_PrintPlayerForfeitedLinkBattle:: end2 BattleScript_TotemFlaredToLife:: - playanimation BS_ATTACKER, B_ANIM_TOTEM_FLARE + playanimation BS_ATTACKER, B_ANIM_TOTEM_FLARE, NULL printstring STRINGID_AURAFLAREDTOLIFE waitmessage B_WAIT_TIME_LONG - goto BattleScript_ApplyTotemVarBoost + call BattleScript_ApplyTotemVarBoost + end2 + +@ remove the mirror herb, do totem loop +BattleScript_MirrorHerbCopyStatChangeEnd2:: + call BattleScript_MirrorHerbCopyStatChange + end2 + +BattleScript_MirrorHerbCopyStatChange:: + playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL + printstring STRINGID_MIRRORHERBCOPIED + waitmessage B_WAIT_TIME_LONG + removeitem BS_SCRIPTING + call BattleScript_TotemVar_Ret + copybyte gBattlerAttacker, sSAVED_BATTLER @ restore the original attacker just to be safe + return BattleScript_TotemVar:: + call BattleScript_TotemVar_Ret + end2 + +BattleScript_TotemVar_Ret:: gettotemboost BattleScript_ApplyTotemVarBoost BattleScript_TotemVarEnd: - end2 + return BattleScript_ApplyTotemVarBoost: statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_TotemVarEnd setgraphicalstatchangevalues playanimation BS_SCRIPTING, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 -BattleScript_TotemVarPrintStatMsg: printfromtable gStatUpStringIds waitmessage B_WAIT_TIME_LONG - goto BattleScript_TotemVar @loop until stats bitfield is empty + goto BattleScript_TotemVar_Ret @loop until stats bitfield is empty + BattleScript_AnnounceAirLockCloudNine:: call BattleScript_AbilityPopUp printstring STRINGID_AIRLOCKACTIVATES waitmessage B_WAIT_TIME_LONG - call BattleScript_WeatherFormChanges + call BattleScript_ActivateWeatherAbilities end3 BattleScript_QuickClawActivation:: @@ -9992,6 +10165,8 @@ BattleScript_JabocaRowapBerryActivate_Dmg: @ z moves / effects BattleScript_ZMoveActivateDamaging:: + printstring STRINGID_EMPTYSTRING3 + trytrainerslidezmovemsg BS_ATTACKER printstring STRINGID_ZPOWERSURROUNDS playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL printstring STRINGID_ZMOVEUNLEASHED @@ -9999,6 +10174,8 @@ BattleScript_ZMoveActivateDamaging:: return BattleScript_ZMoveActivateStatus:: + printstring STRINGID_EMPTYSTRING3 + trytrainerslidezmovemsg BS_ATTACKER savetarget printstring STRINGID_ZPOWERSURROUNDS playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL @@ -10104,7 +10281,6 @@ BattleScript_EffectHitSetRemoveTerrain: setterrain BattleScript_TryFaint playanimation BS_ATTACKER, B_ANIM_RESTORE_BG printfromtable gTerrainStringIds - call BattleScript_ActivateTerrainAbilities BattleScript_TryFaint: tryfaintmon BS_TARGET goto BattleScript_MoveEnd @@ -10300,3 +10476,45 @@ BattleScript_PokemonCantUseTheMove:: printstring STRINGID_BUTPOKEMONCANTUSETHEMOVE waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd + +BattleScript_CouldntFullyProtect:: + printstring STRINGID_COULDNTFULLYPROTECT + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_BerserkGeneRet:: +BattleScript_BerserkGeneRet_Anim: + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_BerserkGeneRet_TryConfuse + setgraphicalstatchangevalues + playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, sB_ANIM_ARG1 + setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM + call BattleScript_StatUp +BattleScript_BerserkGeneRet_TryConfuse: + jumpifability BS_SCRIPTING, ABILITY_OWN_TEMPO, BattleScript_BerserkGeneRet_OwnTempoPrevents + jumpifsafeguard BattleScript_BerserkGeneRet_SafeguardProtected + setmoveeffect MOVE_EFFECT_CONFUSION + seteffectprimary + goto BattleScript_BerserkGeneRet_End +BattleScript_BerserkGeneRet_SafeguardProtected:: + pause B_WAIT_TIME_SHORT + printstring STRINGID_PKMNUSEDSAFEGUARD + waitmessage B_WAIT_TIME_LONG + goto BattleScript_BerserkGeneRet_End +BattleScript_BerserkGeneRet_OwnTempoPrevents: + pause B_WAIT_TIME_SHORT + call BattleScript_AbilityPopUp + printstring STRINGID_PKMNPREVENTSCONFUSIONWITH + waitmessage B_WAIT_TIME_LONG +BattleScript_BerserkGeneRet_End: + removeitem BS_SCRIPTING + end3 + +BattleScript_EffectSnow:: + attackcanceler + attackstring + ppreduce + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn + setsnow + goto BattleScript_MoveWeatherChange diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 9b26cbd0d7d0..0c6c133b50e4 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -3,205 +3,257 @@ #include "constants/battle_script_commands.h" #include "constants/battle_anim.h" #include "constants/battle_string_ids.h" -#include "constants/items.h" +#include "constants/moves.h" #include "constants/songs.h" #include "constants/game_stat.h" - .include "asm/macros.inc" - .include "asm/macros/battle_script.inc" - .include "constants/constants.inc" + .include "asm/macros.inc" + .include "asm/macros/battle_script.inc" + .include "constants/constants.inc" - .section script_data, "aw", %progbits + .section script_data, "aw", %progbits - .align 2 + .align 2 gBattlescriptsForUsingItem:: - .4byte BattleScript_PlayerUsesItem - .4byte BattleScript_OpponentUsesHealItem @ AI_ITEM_FULL_RESTORE - .4byte BattleScript_OpponentUsesHealItem @ AI_ITEM_HEAL_HP - .4byte BattleScript_OpponentUsesStatusCureItem @ AI_ITEM_CURE_CONDITION - .4byte BattleScript_OpponentUsesXItem @ AI_ITEM_X_STAT - .4byte BattleScript_OpponentUsesGuardSpec @ AI_ITEM_GUARD_SPEC - - .align 2 -gBattlescriptsForRunningByItem:: - .4byte BattleScript_RunByUsingItem - - .align 2 + .4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_RESTORE_HP + .4byte BattleScript_ItemCureStatus @ EFFECT_ITEM_CURE_STATUS + .4byte BattleScript_ItemHealAndCureStatus @ EFFECT_ITEM_HEAL_AND_CURE_STATUS + .4byte BattleScript_ItemIncreaseStat @ EFFECT_ITEM_INCREASE_STAT + .4byte BattleScript_ItemSetMist @ EFFECT_ITEM_SET_MIST + .4byte BattleScript_ItemSetFocusEnergy @ EFFECT_ITEM_SET_FOCUS_ENERGY + .4byte BattleScript_RunByUsingItem @ EFFECT_ITEM_ESCAPE + .4byte BattleScript_BallThrow @ EFFECT_ITEM_THROW_BALL + .4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_REVIVE + .4byte BattleScript_ItemRestorePP @ EFFECT_ITEM_RESTORE_PP + .4byte BattleScript_ItemIncreaseAllStats @ EFFECT_ITEM_INCREASE_ALL_STATS + + .align 2 gBattlescriptsForSafariActions:: - .4byte BattleScript_ActionWatchesCarefully - .4byte BattleScript_ActionGetNear - .4byte BattleScript_ActionThrowPokeblock - .4byte BattleScript_ActionWallyThrow + .4byte BattleScript_ActionWatchesCarefully + .4byte BattleScript_ActionGetNear + .4byte BattleScript_ActionThrowPokeblock + .4byte BattleScript_ActionWallyThrow + +BattleScript_ItemEnd: + end + +BattleScript_UseItemMessage: + printstring STRINGID_EMPTYSTRING3 + pause B_WAIT_TIME_MED + playse SE_USE_ITEM + getbattlerside BS_ATTACKER + copybyte cMULTISTRING_CHOOSER, gBattleCommunication + printfromtable gTrainerUsedItemStringIds + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_ItemRestoreHP:: + call BattleScript_UseItemMessage + itemrestorehp + jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler + bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + printstring STRINGID_ITEMRESTOREDSPECIESHEALTH + waitmessage B_WAIT_TIME_LONG + end + +BattleScript_ItemRestoreHP_SendOutRevivedBattler: + switchinanim BS_SCRIPTING, FALSE + waitstate + switchineffects BS_SCRIPTING + end + +BattleScript_ItemCureStatus:: + call BattleScript_UseItemMessage + itemcurestatus + updatestatusicon BS_ATTACKER + printstring STRINGID_ITEMCUREDSPECIESSTATUS + waitmessage B_WAIT_TIME_LONG + end + +BattleScript_ItemHealAndCureStatus:: + call BattleScript_UseItemMessage + itemrestorehp + itemcurestatus + printstring STRINGID_ITEMRESTOREDSPECIESHEALTH + waitmessage B_WAIT_TIME_LONG + bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + updatestatusicon BS_ATTACKER + printstring STRINGID_ITEMRESTOREDSPECIESHEALTH + waitmessage B_WAIT_TIME_LONG + end + +BattleScript_ItemIncreaseStat:: + call BattleScript_UseItemMessage + itemincreasestat + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_ItemEnd + setgraphicalstatchangevalues + playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG + end + +BattleScript_ItemSetMist:: + call BattleScript_UseItemMessage + setmist + playmoveanimation BS_ATTACKER, MOVE_MIST + waitanimation + printfromtable gMistUsedStringIds + waitmessage B_WAIT_TIME_LONG + end + +BattleScript_ItemSetFocusEnergy:: + call BattleScript_UseItemMessage + jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed + setfocusenergy + playmoveanimation BS_ATTACKER, MOVE_FOCUS_ENERGY + waitanimation + printstring STRINGID_PKMNUSEDXTOGETPUMPED + waitmessage B_WAIT_TIME_LONG + end + +BattleScript_ItemRestorePP:: + call BattleScript_UseItemMessage + itemrestorepp + printstring STRINGID_ITEMRESTOREDSPECIESPP + waitmessage B_WAIT_TIME_LONG + end + +BattleScript_ItemIncreaseAllStats:: + call BattleScript_UseItemMessage + call BattleScript_AllStatsUp + end BattleScript_BallThrow:: - jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally - printstring STRINGID_PLAYERUSEDITEM - handleballthrow + jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally + printstring STRINGID_PLAYERUSEDITEM + handleballthrow BattleScript_BallThrowByWally:: - printstring STRINGID_WALLYUSEDITEM - handleballthrow + printstring STRINGID_WALLYUSEDITEM + handleballthrow BattleScript_SafariBallThrow:: - printstring STRINGID_PLAYERUSEDITEM - updatestatusicon BS_ATTACKER - handleballthrow + printstring STRINGID_PLAYERUSEDITEM + updatestatusicon BS_ATTACKER + handleballthrow BattleScript_SuccessBallThrow:: - setbyte sMON_CAUGHT, TRUE - incrementgamestat GAME_STAT_POKEMON_CAPTURES + setbyte sMON_CAUGHT, TRUE + incrementgamestat GAME_STAT_POKEMON_CAPTURES BattleScript_PrintCaughtMonInfo:: - printstring STRINGID_GOTCHAPKMNCAUGHT - jumpifbyte CMP_NOT_EQUAL, sEXP_CATCH, TRUE, BattleScript_TryPrintCaughtMonInfo - setbyte sGIVEEXP_STATE, 0 - getexp BS_TARGET - sethword gBattle_BG2_X, 0 + printstring STRINGID_GOTCHAPKMNCAUGHTPLAYER + jumpifbyte CMP_NOT_EQUAL, sEXP_CATCH, TRUE, BattleScript_TryPrintCaughtMonInfo + setbyte sGIVEEXP_STATE, 0 + getexp BS_TARGET + sethword gBattle_BG2_X, 0 BattleScript_TryPrintCaughtMonInfo: - trysetcaughtmondexflags BattleScript_TryNicknameCaughtMon - printstring STRINGID_PKMNDATAADDEDTODEX - waitstate - setbyte gBattleCommunication, 0 - displaydexinfo + trysetcaughtmondexflags BattleScript_TryNicknameCaughtMon + printstring STRINGID_PKMNDATAADDEDTODEX + waitstate + setbyte gBattleCommunication, 0 + displaydexinfo BattleScript_TryNicknameCaughtMon:: - printstring STRINGID_GIVENICKNAMECAPTURED - waitstate - setbyte gBattleCommunication, 0 - trygivecaughtmonnick BattleScript_GiveCaughtMonEnd - givecaughtmon - printfromtable gCaughtMonStringIds - waitmessage B_WAIT_TIME_LONG - goto BattleScript_SuccessBallThrowEnd + printstring STRINGID_GIVENICKNAMECAPTURED + waitstate + setbyte gBattleCommunication, 0 + trygivecaughtmonnick BattleScript_GiveCaughtMonEnd + givecaughtmon + printfromtable gCaughtMonStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_SuccessBallThrowEnd BattleScript_GiveCaughtMonEnd:: - givecaughtmon + givecaughtmon BattleScript_SuccessBallThrowEnd:: - setbyte gBattleOutcome, B_OUTCOME_CAUGHT - finishturn + setbyte gBattleOutcome, B_OUTCOME_CAUGHT + finishturn BattleScript_WallyBallThrow:: - printstring STRINGID_GOTCHAPKMNCAUGHT2 - setbyte gBattleOutcome, B_OUTCOME_CAUGHT - finishturn + printstring STRINGID_GOTCHAPKMNCAUGHTWALLY + setbyte gBattleOutcome, B_OUTCOME_CAUGHT + finishturn BattleScript_ShakeBallThrow:: - printfromtable gBallEscapeStringIds - waitmessage B_WAIT_TIME_LONG - jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd - jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0, BattleScript_ShakeBallThrowEnd - printstring STRINGID_OUTOFSAFARIBALLS - waitmessage B_WAIT_TIME_LONG - setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS + printfromtable gBallEscapeStringIds + waitmessage B_WAIT_TIME_LONG + jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd + jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0, BattleScript_ShakeBallThrowEnd + printstring STRINGID_OUTOFSAFARIBALLS + waitmessage B_WAIT_TIME_LONG + setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS BattleScript_ShakeBallThrowEnd:: - finishaction + finishaction BattleScript_TrainerBallBlock:: - waitmessage B_WAIT_TIME_LONG - printstring STRINGID_TRAINERBLOCKEDBALL - waitmessage B_WAIT_TIME_LONG - printstring STRINGID_DONTBEATHIEF - waitmessage B_WAIT_TIME_LONG - finishaction - -BattleScript_PlayerUsesItem:: - moveendcase MOVEEND_MIRROR_MOVE - end - -BattleScript_OpponentUsesHealItem:: - printstring STRINGID_EMPTYSTRING3 - pause B_WAIT_TIME_MED - playse SE_USE_ITEM - printstring STRINGID_TRAINER1USEDITEM - waitmessage B_WAIT_TIME_LONG - bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT - useitemonopponent - orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE - healthbarupdate BS_ATTACKER - datahpupdate BS_ATTACKER - printstring STRINGID_PKMNSITEMRESTOREDHEALTH - waitmessage B_WAIT_TIME_LONG - updatestatusicon BS_ATTACKER - moveendcase MOVEEND_MIRROR_MOVE - finishaction - -BattleScript_OpponentUsesStatusCureItem:: - printstring STRINGID_EMPTYSTRING3 - pause B_WAIT_TIME_MED - playse SE_USE_ITEM - printstring STRINGID_TRAINER1USEDITEM - waitmessage B_WAIT_TIME_LONG - useitemonopponent - printfromtable gTrainerItemCuredStatusStringIds - waitmessage B_WAIT_TIME_LONG - updatestatusicon BS_ATTACKER - moveendcase MOVEEND_MIRROR_MOVE - finishaction - -BattleScript_OpponentUsesXItem:: - printstring STRINGID_EMPTYSTRING3 - pause B_WAIT_TIME_MED - playse SE_USE_ITEM - printstring STRINGID_TRAINER1USEDITEM - waitmessage B_WAIT_TIME_LONG - useitemonopponent - printfromtable gStatUpStringIds - waitmessage B_WAIT_TIME_LONG - moveendcase MOVEEND_MIRROR_MOVE - finishaction - -BattleScript_OpponentUsesGuardSpec:: - printstring STRINGID_EMPTYSTRING3 - pause B_WAIT_TIME_MED - playse SE_USE_ITEM - printstring STRINGID_TRAINER1USEDITEM - waitmessage B_WAIT_TIME_LONG - useitemonopponent - printfromtable gMistUsedStringIds - waitmessage B_WAIT_TIME_LONG - moveendcase MOVEEND_MIRROR_MOVE - finishaction + waitmessage B_WAIT_TIME_LONG + printstring STRINGID_TRAINERBLOCKEDBALL + waitmessage B_WAIT_TIME_LONG + printstring STRINGID_DONTBEATHIEF + waitmessage B_WAIT_TIME_LONG + finishaction BattleScript_RunByUsingItem:: - playse SE_FLEE - setbyte gBattleOutcome, B_OUTCOME_RAN - finishturn + playse SE_FLEE + setbyte gBattleOutcome, B_OUTCOME_RAN + finishturn BattleScript_ActionWatchesCarefully: - printstring STRINGID_PKMNWATCHINGCAREFULLY - waitmessage B_WAIT_TIME_LONG - end2 + printstring STRINGID_PKMNWATCHINGCAREFULLY + waitmessage B_WAIT_TIME_LONG + end2 BattleScript_ActionGetNear: - printfromtable gSafariGetNearStringIds - waitmessage B_WAIT_TIME_LONG - end2 + printfromtable gSafariGetNearStringIds + waitmessage B_WAIT_TIME_LONG + end2 BattleScript_ActionThrowPokeblock: - printstring STRINGID_THREWPOKEBLOCKATPKMN - waitmessage B_WAIT_TIME_LONG - playanimation BS_ATTACKER, B_ANIM_POKEBLOCK_THROW, NULL - printfromtable gSafariPokeblockResultStringIds - waitmessage B_WAIT_TIME_LONG - end2 + printstring STRINGID_THREWPOKEBLOCKATPKMN + waitmessage B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_POKEBLOCK_THROW, NULL + printfromtable gSafariPokeblockResultStringIds + waitmessage B_WAIT_TIME_LONG + end2 BattleScript_ActionWallyThrow: - printstring STRINGID_RETURNMON - waitmessage B_WAIT_TIME_LONG - returnatktoball - waitstate - trainerslidein BS_TARGET - waitstate - printstring STRINGID_YOUTHROWABALLNOWRIGHT - waitmessage B_WAIT_TIME_LONG - end2 - -BattleScript_TrainerSlideMsgRet:: - handletrainerslidemsg BS_SCRIPTING, 0 - trainerslidein 1 - handletrainerslidemsg BS_SCRIPTING, 1 - waitstate - trainerslideout 1 - handletrainerslidemsg BS_SCRIPTING, 2 - waitstate - return - -BattleScript_TrainerSlideMsgEnd2:: - call BattleScript_TrainerSlideMsgRet - end2 + printstring STRINGID_RETURNMON + waitmessage B_WAIT_TIME_LONG + returnatktoball + waitstate + trainerslidein BS_TARGET + waitstate + printstring STRINGID_YOUTHROWABALLNOWRIGHT + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_TrainerASlideMsgRet:: + handletrainerslidemsg BS_SCRIPTING, 0 + trainerslidein B_POSITION_OPPONENT_LEFT + handletrainerslidemsg BS_SCRIPTING, 1 + waitstate + trainerslideout B_POSITION_OPPONENT_LEFT + waitstate + handletrainerslidemsg BS_SCRIPTING, 2 + return + +BattleScript_TrainerASlideMsgEnd2:: + call BattleScript_TrainerASlideMsgRet + end2 + +BattleScript_TrainerBSlideMsgRet:: + handletrainerslidemsg BS_SCRIPTING, 0 + trainerslidein B_POSITION_OPPONENT_RIGHT + handletrainerslidemsg BS_SCRIPTING, 1 + waitstate + trainerslideout B_POSITION_OPPONENT_RIGHT + waitstate + handletrainerslidemsg BS_SCRIPTING, 2 + return + +BattleScript_TrainerBSlideMsgEnd2:: + call BattleScript_TrainerBSlideMsgRet + end2 diff --git a/data/maps/AbandonedShip_CaptainsOffice/scripts.inc b/data/maps/AbandonedShip_CaptainsOffice/scripts.inc index 7c59fec9676c..78fdc6434a87 100644 --- a/data/maps/AbandonedShip_CaptainsOffice/scripts.inc +++ b/data/maps/AbandonedShip_CaptainsOffice/scripts.inc @@ -7,7 +7,7 @@ AbandonedShip_CaptainsOffice_EventScript_CaptSternAide:: goto_if_set FLAG_EXCHANGED_SCANNER, AbandonedShip_CaptainsOffice_EventScript_ThisIsSSCactus checkitem ITEM_SCANNER goto_if_eq VAR_RESULT, TRUE, AbandonedShip_CaptainsOffice_EventScript_CanYouDeliverScanner - goto_if_set FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_4_SCANNER, AbandonedShip_CaptainsOffice_EventScript_ThisIsSSCactus + goto_if_set FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_2_SCANNER, AbandonedShip_CaptainsOffice_EventScript_ThisIsSSCactus msgbox AbandonedShip_CaptainsOffice_Text_NoSuccessFindingScanner, MSGBOX_DEFAULT release end diff --git a/data/maps/AbandonedShip_HiddenFloorRooms/map.json b/data/maps/AbandonedShip_HiddenFloorRooms/map.json index dce9111eb512..905c853350b5 100644 --- a/data/maps/AbandonedShip_HiddenFloorRooms/map.json +++ b/data/maps/AbandonedShip_HiddenFloorRooms/map.json @@ -38,7 +38,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "AbandonedShip_HiddenFloorRooms_EventScript_ItemScanner", - "flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_4_SCANNER" + "flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_2_SCANNER" }, { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", diff --git a/data/maps/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc index b47011d680e3..8892097dee48 100644 --- a/data/maps/MossdeepCity_Gym/scripts.inc +++ b/data/maps/MossdeepCity_Gym/scripts.inc @@ -26,26 +26,26 @@ MossdeepCity_Gym_EventScript_CheckSwitch4:: @ All the below set metatile scripts are leftover from RS and are functionally unused MossdeepCity_Gym_EventScript_SetSwitch1Metatiles:: - setmetatile 5, 5, METATILE_RS_MossdeepGym_RedArrow_Right, FALSE - setmetatile 2, 7, METATILE_RS_MossdeepGym_Switch_Down, TRUE + setmetatile 5, 5, METATILE_RSMossdeepGym_RedArrow_Right, FALSE + setmetatile 2, 7, METATILE_RSMossdeepGym_Switch_Down, TRUE goto MossdeepCity_Gym_EventScript_CheckSwitch2 end MossdeepCity_Gym_EventScript_SetSwitch2Metatiles:: - setmetatile 8, 14, METATILE_RS_MossdeepGym_RedArrow_Right, FALSE - setmetatile 8, 10, METATILE_RS_MossdeepGym_Switch_Down, TRUE + setmetatile 8, 14, METATILE_RSMossdeepGym_RedArrow_Right, FALSE + setmetatile 8, 10, METATILE_RSMossdeepGym_Switch_Down, TRUE goto MossdeepCity_Gym_EventScript_CheckSwitch3 end MossdeepCity_Gym_EventScript_SetSwitch3Metatiles:: - setmetatile 15, 17, METATILE_RS_MossdeepGym_RedArrow_Left, FALSE - setmetatile 17, 15, METATILE_RS_MossdeepGym_Switch_Down, TRUE + setmetatile 15, 17, METATILE_RSMossdeepGym_RedArrow_Left, FALSE + setmetatile 17, 15, METATILE_RSMossdeepGym_Switch_Down, TRUE goto MossdeepCity_Gym_EventScript_CheckSwitch4 end MossdeepCity_Gym_EventScript_SetSwitch4Metatiles:: - setmetatile 1, 23, METATILE_RS_MossdeepGym_RedArrow_Up, FALSE - setmetatile 5, 24, METATILE_RS_MossdeepGym_Switch_Down, TRUE + setmetatile 1, 23, METATILE_RSMossdeepGym_RedArrow_Up, FALSE + setmetatile 5, 24, METATILE_RSMossdeepGym_Switch_Down, TRUE end MossdeepCity_Gym_EventScript_TateAndLiza:: @@ -116,8 +116,8 @@ MossdeepCity_Gym_EventScript_Switch1:: setflag FLAG_MOSSDEEP_GYM_SWITCH_1 applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse waitmovement 0 - setmetatile 5, 5, METATILE_RS_MossdeepGym_RedArrow_Right, FALSE - setmetatile 2, 7, METATILE_RS_MossdeepGym_Switch_Down, TRUE + setmetatile 5, 5, METATILE_RSMossdeepGym_RedArrow_Right, FALSE + setmetatile 2, 7, METATILE_RSMossdeepGym_Switch_Down, TRUE goto MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed end @@ -131,8 +131,8 @@ MossdeepCity_Gym_EventScript_ClearSwitch1:: clearflag FLAG_MOSSDEEP_GYM_SWITCH_1 applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse waitmovement 0 - setmetatile 5, 5, METATILE_RS_MossdeepGym_RedArrow_Left, FALSE - setmetatile 2, 7, METATILE_RS_MossdeepGym_Switch_Up, TRUE + setmetatile 5, 5, METATILE_RSMossdeepGym_RedArrow_Left, FALSE + setmetatile 2, 7, METATILE_RSMossdeepGym_Switch_Up, TRUE goto MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed end @@ -142,8 +142,8 @@ MossdeepCity_Gym_EventScript_Switch2:: setflag FLAG_MOSSDEEP_GYM_SWITCH_2 applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse waitmovement 0 - setmetatile 8, 14, METATILE_RS_MossdeepGym_RedArrow_Right, FALSE - setmetatile 8, 10, METATILE_RS_MossdeepGym_Switch_Down, TRUE + setmetatile 8, 14, METATILE_RSMossdeepGym_RedArrow_Right, FALSE + setmetatile 8, 10, METATILE_RSMossdeepGym_Switch_Down, TRUE goto MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed end @@ -151,8 +151,8 @@ MossdeepCity_Gym_EventScript_ClearSwitch2:: clearflag FLAG_MOSSDEEP_GYM_SWITCH_2 applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse waitmovement 0 - setmetatile 8, 14, METATILE_RS_MossdeepGym_RedArrow_Down, FALSE - setmetatile 8, 10, METATILE_RS_MossdeepGym_Switch_Up, TRUE + setmetatile 8, 14, METATILE_RSMossdeepGym_RedArrow_Down, FALSE + setmetatile 8, 10, METATILE_RSMossdeepGym_Switch_Up, TRUE goto MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed end @@ -162,8 +162,8 @@ MossdeepCity_Gym_EventScript_Switch3:: setflag FLAG_MOSSDEEP_GYM_SWITCH_3 applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse waitmovement 0 - setmetatile 15, 17, METATILE_RS_MossdeepGym_RedArrow_Left, FALSE - setmetatile 17, 15, METATILE_RS_MossdeepGym_Switch_Down, TRUE + setmetatile 15, 17, METATILE_RSMossdeepGym_RedArrow_Left, FALSE + setmetatile 17, 15, METATILE_RSMossdeepGym_Switch_Down, TRUE goto MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed end @@ -171,8 +171,8 @@ MossdeepCity_Gym_EventScript_ClearSwitch3:: clearflag FLAG_MOSSDEEP_GYM_SWITCH_3 applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse waitmovement 0 - setmetatile 15, 17, METATILE_RS_MossdeepGym_RedArrow_Right, FALSE - setmetatile 17, 15, METATILE_RS_MossdeepGym_Switch_Up, TRUE + setmetatile 15, 17, METATILE_RSMossdeepGym_RedArrow_Right, FALSE + setmetatile 17, 15, METATILE_RSMossdeepGym_Switch_Up, TRUE goto MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed end @@ -182,8 +182,8 @@ MossdeepCity_Gym_EventScript_Switch4:: setflag FLAG_MOSSDEEP_GYM_SWITCH_4 applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse waitmovement 0 - setmetatile 1, 23, METATILE_RS_MossdeepGym_RedArrow_Up, FALSE - setmetatile 5, 24, METATILE_RS_MossdeepGym_Switch_Down, TRUE + setmetatile 1, 23, METATILE_RSMossdeepGym_RedArrow_Up, FALSE + setmetatile 5, 24, METATILE_RSMossdeepGym_Switch_Down, TRUE goto MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed end @@ -191,8 +191,8 @@ MossdeepCity_Gym_EventScript_ClearSwitch4:: clearflag FLAG_MOSSDEEP_GYM_SWITCH_4 applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse waitmovement 0 - setmetatile 1, 23, METATILE_RS_MossdeepGym_RedArrow_Right, FALSE - setmetatile 5, 24, METATILE_RS_MossdeepGym_Switch_Up, TRUE + setmetatile 1, 23, METATILE_RSMossdeepGym_RedArrow_Right, FALSE + setmetatile 5, 24, METATILE_RSMossdeepGym_Switch_Up, TRUE goto MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed end diff --git a/data/maps/PetalburgWoods/map.json b/data/maps/PetalburgWoods/map.json index 4179d819579f..2979e7e46908 100644 --- a/data/maps/PetalburgWoods/map.json +++ b/data/maps/PetalburgWoods/map.json @@ -168,7 +168,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "PetalburgWoods_EventScript_ItemParalyzeHeal", - "flag": "FLAG_ITEM_PETALBURD_WOODS_PARALYZE_HEAL" + "flag": "FLAG_ITEM_PETALBURG_WOODS_PARALYZE_HEAL" }, { "graphics_id": "OBJ_EVENT_GFX_GIRL_2", diff --git a/data/maps/Route110/map.json b/data/maps/Route110/map.json index 630b20bd3750..2b521641133a 100644 --- a/data/maps/Route110/map.json +++ b/data/maps/Route110/map.json @@ -288,7 +288,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "Route110_EventScript_ItemRareCandy", - "flag": "FLAG_ITEM_ROUTE_109_RARE_CANDY" + "flag": "FLAG_ITEM_ROUTE_110_RARE_CANDY" }, { "graphics_id": "OBJ_EVENT_GFX_CYCLING_TRIATHLETE_M", diff --git a/data/maps/Route111/scripts.inc b/data/maps/Route111/scripts.inc index f97326c54363..7335d0e1cea6 100644 --- a/data/maps/Route111/scripts.inc +++ b/data/maps/Route111/scripts.inc @@ -260,7 +260,7 @@ Route111_EventScript_SunTrigger:: Route111_EventScript_SandstormTrigger:: setweather WEATHER_SANDSTORM - fadenewbgm MUS_ROUTE111 + fadenewbgm MUS_DESERT doweather end diff --git a/data/maps/Route114/map.json b/data/maps/Route114/map.json index 10f15233c975..17c483c0fac2 100644 --- a/data/maps/Route114/map.json +++ b/data/maps/Route114/map.json @@ -503,7 +503,7 @@ "y": 30, "elevation": 3, "item": "ITEM_REVIVE", - "flag": "FLAG_HIDDEN_ITEM_ROUTE_113_REVIVE" + "flag": "FLAG_HIDDEN_ITEM_ROUTE_114_REVIVE" } ] } diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 51b7f966e4a9..f50ce5322bee 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -1,232 +1,232 @@ .align 2 gScriptCmdTable:: - .4byte ScrCmd_nop @ 0x00 - .4byte ScrCmd_nop1 @ 0x01 - .4byte ScrCmd_end @ 0x02 - .4byte ScrCmd_return @ 0x03 - .4byte ScrCmd_call @ 0x04 - .4byte ScrCmd_goto @ 0x05 - .4byte ScrCmd_goto_if @ 0x06 - .4byte ScrCmd_call_if @ 0x07 - .4byte ScrCmd_gotostd @ 0x08 - .4byte ScrCmd_callstd @ 0x09 - .4byte ScrCmd_gotostd_if @ 0x0a - .4byte ScrCmd_callstd_if @ 0x0b - .4byte ScrCmd_returnram @ 0x0c - .4byte ScrCmd_endram @ 0x0d - .4byte ScrCmd_setmysteryeventstatus @ 0x0e - .4byte ScrCmd_loadword @ 0x0f - .4byte ScrCmd_loadbyte @ 0x10 - .4byte ScrCmd_setptr @ 0x11 - .4byte ScrCmd_loadbytefromptr @ 0x12 - .4byte ScrCmd_setptrbyte @ 0x13 - .4byte ScrCmd_copylocal @ 0x14 - .4byte ScrCmd_copybyte @ 0x15 - .4byte ScrCmd_setvar @ 0x16 - .4byte ScrCmd_addvar @ 0x17 - .4byte ScrCmd_subvar @ 0x18 - .4byte ScrCmd_copyvar @ 0x19 - .4byte ScrCmd_setorcopyvar @ 0x1a - .4byte ScrCmd_compare_local_to_local @ 0x1b - .4byte ScrCmd_compare_local_to_value @ 0x1c - .4byte ScrCmd_compare_local_to_ptr @ 0x1d - .4byte ScrCmd_compare_ptr_to_local @ 0x1e - .4byte ScrCmd_compare_ptr_to_value @ 0x1f - .4byte ScrCmd_compare_ptr_to_ptr @ 0x20 - .4byte ScrCmd_compare_var_to_value @ 0x21 - .4byte ScrCmd_compare_var_to_var @ 0x22 - .4byte ScrCmd_callnative @ 0x23 - .4byte ScrCmd_gotonative @ 0x24 - .4byte ScrCmd_special @ 0x25 - .4byte ScrCmd_specialvar @ 0x26 - .4byte ScrCmd_waitstate @ 0x27 - .4byte ScrCmd_delay @ 0x28 - .4byte ScrCmd_setflag @ 0x29 - .4byte ScrCmd_clearflag @ 0x2a - .4byte ScrCmd_checkflag @ 0x2b - .4byte ScrCmd_initclock @ 0x2c - .4byte ScrCmd_dotimebasedevents @ 0x2d - .4byte ScrCmd_gettime @ 0x2e - .4byte ScrCmd_playse @ 0x2f - .4byte ScrCmd_waitse @ 0x30 - .4byte ScrCmd_playfanfare @ 0x31 - .4byte ScrCmd_waitfanfare @ 0x32 - .4byte ScrCmd_playbgm @ 0x33 - .4byte ScrCmd_savebgm @ 0x34 - .4byte ScrCmd_fadedefaultbgm @ 0x35 - .4byte ScrCmd_fadenewbgm @ 0x36 - .4byte ScrCmd_fadeoutbgm @ 0x37 - .4byte ScrCmd_fadeinbgm @ 0x38 - .4byte ScrCmd_warp @ 0x39 - .4byte ScrCmd_warpsilent @ 0x3a - .4byte ScrCmd_warpdoor @ 0x3b - .4byte ScrCmd_warphole @ 0x3c - .4byte ScrCmd_warpteleport @ 0x3d - .4byte ScrCmd_setwarp @ 0x3e - .4byte ScrCmd_setdynamicwarp @ 0x3f - .4byte ScrCmd_setdivewarp @ 0x40 - .4byte ScrCmd_setholewarp @ 0x41 - .4byte ScrCmd_getplayerxy @ 0x42 - .4byte ScrCmd_getpartysize @ 0x43 - .4byte ScrCmd_additem @ 0x44 - .4byte ScrCmd_removeitem @ 0x45 - .4byte ScrCmd_checkitemspace @ 0x46 - .4byte ScrCmd_checkitem @ 0x47 - .4byte ScrCmd_checkitemtype @ 0x48 - .4byte ScrCmd_addpcitem @ 0x49 - .4byte ScrCmd_checkpcitem @ 0x4a - .4byte ScrCmd_adddecoration @ 0x4b - .4byte ScrCmd_removedecoration @ 0x4c - .4byte ScrCmd_checkdecor @ 0x4d - .4byte ScrCmd_checkdecorspace @ 0x4e - .4byte ScrCmd_applymovement @ 0x4f - .4byte ScrCmd_applymovementat @ 0x50 - .4byte ScrCmd_waitmovement @ 0x51 - .4byte ScrCmd_waitmovementat @ 0x52 - .4byte ScrCmd_removeobject @ 0x53 - .4byte ScrCmd_removeobjectat @ 0x54 - .4byte ScrCmd_addobject @ 0x55 - .4byte ScrCmd_addobjectat @ 0x56 - .4byte ScrCmd_setobjectxy @ 0x57 - .4byte ScrCmd_showobjectat @ 0x58 - .4byte ScrCmd_hideobjectat @ 0x59 - .4byte ScrCmd_faceplayer @ 0x5a - .4byte ScrCmd_turnobject @ 0x5b - .4byte ScrCmd_trainerbattle @ 0x5c - .4byte ScrCmd_dotrainerbattle @ 0x5d - .4byte ScrCmd_gotopostbattlescript @ 0x5e - .4byte ScrCmd_gotobeatenscript @ 0x5f - .4byte ScrCmd_checktrainerflag @ 0x60 - .4byte ScrCmd_settrainerflag @ 0x61 - .4byte ScrCmd_cleartrainerflag @ 0x62 - .4byte ScrCmd_setobjectxyperm @ 0x63 - .4byte ScrCmd_copyobjectxytoperm @ 0x64 - .4byte ScrCmd_setobjectmovementtype @ 0x65 - .4byte ScrCmd_waitmessage @ 0x66 - .4byte ScrCmd_message @ 0x67 - .4byte ScrCmd_closemessage @ 0x68 - .4byte ScrCmd_lockall @ 0x69 - .4byte ScrCmd_lock @ 0x6a - .4byte ScrCmd_releaseall @ 0x6b - .4byte ScrCmd_release @ 0x6c - .4byte ScrCmd_waitbuttonpress @ 0x6d - .4byte ScrCmd_yesnobox @ 0x6e - .4byte ScrCmd_multichoice @ 0x6f - .4byte ScrCmd_multichoicedefault @ 0x70 - .4byte ScrCmd_multichoicegrid @ 0x71 - .4byte ScrCmd_drawbox @ 0x72 - .4byte ScrCmd_erasebox @ 0x73 - .4byte ScrCmd_drawboxtext @ 0x74 - .4byte ScrCmd_showmonpic @ 0x75 - .4byte ScrCmd_hidemonpic @ 0x76 - .4byte ScrCmd_showcontestpainting @ 0x77 - .4byte ScrCmd_braillemessage @ 0x78 - .4byte ScrCmd_givemon @ 0x79 - .4byte ScrCmd_giveegg @ 0x7a - .4byte ScrCmd_setmonmove @ 0x7b - .4byte ScrCmd_checkpartymove @ 0x7c - .4byte ScrCmd_bufferspeciesname @ 0x7d - .4byte ScrCmd_bufferleadmonspeciesname @ 0x7e - .4byte ScrCmd_bufferpartymonnick @ 0x7f - .4byte ScrCmd_bufferitemname @ 0x80 - .4byte ScrCmd_bufferdecorationname @ 0x81 - .4byte ScrCmd_buffermovename @ 0x82 - .4byte ScrCmd_buffernumberstring @ 0x83 - .4byte ScrCmd_bufferstdstring @ 0x84 - .4byte ScrCmd_bufferstring @ 0x85 - .4byte ScrCmd_pokemart @ 0x86 - .4byte ScrCmd_pokemartdecoration @ 0x87 - .4byte ScrCmd_pokemartdecoration2 @ 0x88 - .4byte ScrCmd_playslotmachine @ 0x89 - .4byte ScrCmd_setberrytree @ 0x8a - .4byte ScrCmd_choosecontestmon @ 0x8b - .4byte ScrCmd_startcontest @ 0x8c - .4byte ScrCmd_showcontestresults @ 0x8d - .4byte ScrCmd_contestlinktransfer @ 0x8e - .4byte ScrCmd_random @ 0x8f - .4byte ScrCmd_addmoney @ 0x90 - .4byte ScrCmd_removemoney @ 0x91 - .4byte ScrCmd_checkmoney @ 0x92 - .4byte ScrCmd_showmoneybox @ 0x93 - .4byte ScrCmd_hidemoneybox @ 0x94 - .4byte ScrCmd_updatemoneybox @ 0x95 - .4byte ScrCmd_getpokenewsactive @ 0x96 - .4byte ScrCmd_fadescreen @ 0x97 - .4byte ScrCmd_fadescreenspeed @ 0x98 - .4byte ScrCmd_setflashlevel @ 0x99 - .4byte ScrCmd_animateflash @ 0x9a - .4byte ScrCmd_messageautoscroll @ 0x9b - .4byte ScrCmd_dofieldeffect @ 0x9c - .4byte ScrCmd_setfieldeffectargument @ 0x9d - .4byte ScrCmd_waitfieldeffect @ 0x9e - .4byte ScrCmd_setrespawn @ 0x9f - .4byte ScrCmd_checkplayergender @ 0xa0 - .4byte ScrCmd_playmoncry @ 0xa1 - .4byte ScrCmd_setmetatile @ 0xa2 - .4byte ScrCmd_resetweather @ 0xa3 - .4byte ScrCmd_setweather @ 0xa4 - .4byte ScrCmd_doweather @ 0xa5 - .4byte ScrCmd_setstepcallback @ 0xa6 - .4byte ScrCmd_setmaplayoutindex @ 0xa7 - .4byte ScrCmd_setobjectsubpriority @ 0xa8 - .4byte ScrCmd_resetobjectsubpriority @ 0xa9 - .4byte ScrCmd_createvobject @ 0xaa - .4byte ScrCmd_turnvobject @ 0xab - .4byte ScrCmd_opendoor @ 0xac - .4byte ScrCmd_closedoor @ 0xad - .4byte ScrCmd_waitdooranim @ 0xae - .4byte ScrCmd_setdooropen @ 0xaf - .4byte ScrCmd_setdoorclosed @ 0xb0 - .4byte ScrCmd_addelevmenuitem @ 0xb1 - .4byte ScrCmd_showelevmenu @ 0xb2 - .4byte ScrCmd_checkcoins @ 0xb3 - .4byte ScrCmd_addcoins @ 0xb4 - .4byte ScrCmd_removecoins @ 0xb5 - .4byte ScrCmd_setwildbattle @ 0xb6 - .4byte ScrCmd_dowildbattle @ 0xb7 - .4byte ScrCmd_setvaddress @ 0xb8 - .4byte ScrCmd_vgoto @ 0xb9 - .4byte ScrCmd_vcall @ 0xba - .4byte ScrCmd_vgoto_if @ 0xbb - .4byte ScrCmd_vcall_if @ 0xbc - .4byte ScrCmd_vmessage @ 0xbd - .4byte ScrCmd_vbuffermessage @ 0xbe - .4byte ScrCmd_vbufferstring @ 0xbf - .4byte ScrCmd_showcoinsbox @ 0xc0 - .4byte ScrCmd_hidecoinsbox @ 0xc1 - .4byte ScrCmd_updatecoinsbox @ 0xc2 - .4byte ScrCmd_incrementgamestat @ 0xc3 - .4byte ScrCmd_setescapewarp @ 0xc4 - .4byte ScrCmd_waitmoncry @ 0xc5 - .4byte ScrCmd_bufferboxname @ 0xc6 - .4byte ScrCmd_nop1 @ 0xc7 - .4byte ScrCmd_nop1 @ 0xc8 - .4byte ScrCmd_nop1 @ 0xc9 - .4byte ScrCmd_nop1 @ 0xca - .4byte ScrCmd_nop1 @ 0xcb - .4byte ScrCmd_nop1 @ 0xcc - .4byte ScrCmd_setmoneventlegal @ 0xcd - .4byte ScrCmd_checkmoneventlegal @ 0xce - .4byte ScrCmd_trywondercardscript @ 0xcf - .4byte ScrCmd_nop1 @ 0xd0 - .4byte ScrCmd_warpspinenter @ 0xd1 - .4byte ScrCmd_setmonmetlocation @ 0xd2 - .4byte ScrCmd_moverotatingtileobjects @ 0xd3 - .4byte ScrCmd_turnrotatingtileobjects @ 0xd4 - .4byte ScrCmd_initrotatingtilepuzzle @ 0xd5 - .4byte ScrCmd_freerotatingtilepuzzle @ 0xd6 - .4byte ScrCmd_warpmossdeepgym @ 0xd7 - .4byte ScrCmd_selectapproachingtrainer @ 0xd8 - .4byte ScrCmd_lockfortrainer @ 0xd9 - .4byte ScrCmd_closebraillemessage @ 0xda - .4byte ScrCmd_messageinstant @ 0xdb - .4byte ScrCmd_fadescreenswapbuffers @ 0xdc - .4byte ScrCmd_buffertrainerclassname @ 0xdd - .4byte ScrCmd_buffertrainername @ 0xde - .4byte ScrCmd_pokenavcall @ 0xdf - .4byte ScrCmd_warpwhitefade @ 0xe0 - .4byte ScrCmd_buffercontestname @ 0xe1 - .4byte ScrCmd_bufferitemnameplural @ 0xe2 + .4byte ScrCmd_nop @ 0x00 + .4byte ScrCmd_nop1 @ 0x01 + .4byte ScrCmd_end @ 0x02 + .4byte ScrCmd_return @ 0x03 + .4byte ScrCmd_call @ 0x04 + .4byte ScrCmd_goto @ 0x05 + .4byte ScrCmd_goto_if @ 0x06 + .4byte ScrCmd_call_if @ 0x07 + .4byte ScrCmd_gotostd @ 0x08 + .4byte ScrCmd_callstd @ 0x09 + .4byte ScrCmd_gotostd_if @ 0x0a + .4byte ScrCmd_callstd_if @ 0x0b + .4byte ScrCmd_returnram @ 0x0c + .4byte ScrCmd_endram @ 0x0d + .4byte ScrCmd_setmysteryeventstatus @ 0x0e + .4byte ScrCmd_loadword @ 0x0f + .4byte ScrCmd_loadbyte @ 0x10 + .4byte ScrCmd_setptr @ 0x11 + .4byte ScrCmd_loadbytefromptr @ 0x12 + .4byte ScrCmd_setptrbyte @ 0x13 + .4byte ScrCmd_copylocal @ 0x14 + .4byte ScrCmd_copybyte @ 0x15 + .4byte ScrCmd_setvar @ 0x16 + .4byte ScrCmd_addvar @ 0x17 + .4byte ScrCmd_subvar @ 0x18 + .4byte ScrCmd_copyvar @ 0x19 + .4byte ScrCmd_setorcopyvar @ 0x1a + .4byte ScrCmd_compare_local_to_local @ 0x1b + .4byte ScrCmd_compare_local_to_value @ 0x1c + .4byte ScrCmd_compare_local_to_ptr @ 0x1d + .4byte ScrCmd_compare_ptr_to_local @ 0x1e + .4byte ScrCmd_compare_ptr_to_value @ 0x1f + .4byte ScrCmd_compare_ptr_to_ptr @ 0x20 + .4byte ScrCmd_compare_var_to_value @ 0x21 + .4byte ScrCmd_compare_var_to_var @ 0x22 + .4byte ScrCmd_callnative @ 0x23 + .4byte ScrCmd_gotonative @ 0x24 + .4byte ScrCmd_special @ 0x25 + .4byte ScrCmd_specialvar @ 0x26 + .4byte ScrCmd_waitstate @ 0x27 + .4byte ScrCmd_delay @ 0x28 + .4byte ScrCmd_setflag @ 0x29 + .4byte ScrCmd_clearflag @ 0x2a + .4byte ScrCmd_checkflag @ 0x2b + .4byte ScrCmd_initclock @ 0x2c + .4byte ScrCmd_dotimebasedevents @ 0x2d + .4byte ScrCmd_gettime @ 0x2e + .4byte ScrCmd_playse @ 0x2f + .4byte ScrCmd_waitse @ 0x30 + .4byte ScrCmd_playfanfare @ 0x31 + .4byte ScrCmd_waitfanfare @ 0x32 + .4byte ScrCmd_playbgm @ 0x33 + .4byte ScrCmd_savebgm @ 0x34 + .4byte ScrCmd_fadedefaultbgm @ 0x35 + .4byte ScrCmd_fadenewbgm @ 0x36 + .4byte ScrCmd_fadeoutbgm @ 0x37 + .4byte ScrCmd_fadeinbgm @ 0x38 + .4byte ScrCmd_warp @ 0x39 + .4byte ScrCmd_warpsilent @ 0x3a + .4byte ScrCmd_warpdoor @ 0x3b + .4byte ScrCmd_warphole @ 0x3c + .4byte ScrCmd_warpteleport @ 0x3d + .4byte ScrCmd_setwarp @ 0x3e + .4byte ScrCmd_setdynamicwarp @ 0x3f + .4byte ScrCmd_setdivewarp @ 0x40 + .4byte ScrCmd_setholewarp @ 0x41 + .4byte ScrCmd_getplayerxy @ 0x42 + .4byte ScrCmd_getpartysize @ 0x43 + .4byte ScrCmd_additem @ 0x44 + .4byte ScrCmd_removeitem @ 0x45 + .4byte ScrCmd_checkitemspace @ 0x46 + .4byte ScrCmd_checkitem @ 0x47 + .4byte ScrCmd_checkitemtype @ 0x48 + .4byte ScrCmd_addpcitem @ 0x49 + .4byte ScrCmd_checkpcitem @ 0x4a + .4byte ScrCmd_adddecoration @ 0x4b + .4byte ScrCmd_removedecoration @ 0x4c + .4byte ScrCmd_checkdecor @ 0x4d + .4byte ScrCmd_checkdecorspace @ 0x4e + .4byte ScrCmd_applymovement @ 0x4f + .4byte ScrCmd_applymovementat @ 0x50 + .4byte ScrCmd_waitmovement @ 0x51 + .4byte ScrCmd_waitmovementat @ 0x52 + .4byte ScrCmd_removeobject @ 0x53 + .4byte ScrCmd_removeobjectat @ 0x54 + .4byte ScrCmd_addobject @ 0x55 + .4byte ScrCmd_addobjectat @ 0x56 + .4byte ScrCmd_setobjectxy @ 0x57 + .4byte ScrCmd_showobjectat @ 0x58 + .4byte ScrCmd_hideobjectat @ 0x59 + .4byte ScrCmd_faceplayer @ 0x5a + .4byte ScrCmd_turnobject @ 0x5b + .4byte ScrCmd_trainerbattle @ 0x5c + .4byte ScrCmd_dotrainerbattle @ 0x5d + .4byte ScrCmd_gotopostbattlescript @ 0x5e + .4byte ScrCmd_gotobeatenscript @ 0x5f + .4byte ScrCmd_checktrainerflag @ 0x60 + .4byte ScrCmd_settrainerflag @ 0x61 + .4byte ScrCmd_cleartrainerflag @ 0x62 + .4byte ScrCmd_setobjectxyperm @ 0x63 + .4byte ScrCmd_copyobjectxytoperm @ 0x64 + .4byte ScrCmd_setobjectmovementtype @ 0x65 + .4byte ScrCmd_waitmessage @ 0x66 + .4byte ScrCmd_message @ 0x67 + .4byte ScrCmd_closemessage @ 0x68 + .4byte ScrCmd_lockall @ 0x69 + .4byte ScrCmd_lock @ 0x6a + .4byte ScrCmd_releaseall @ 0x6b + .4byte ScrCmd_release @ 0x6c + .4byte ScrCmd_waitbuttonpress @ 0x6d + .4byte ScrCmd_yesnobox @ 0x6e + .4byte ScrCmd_multichoice @ 0x6f + .4byte ScrCmd_multichoicedefault @ 0x70 + .4byte ScrCmd_multichoicegrid @ 0x71 + .4byte ScrCmd_drawbox @ 0x72 + .4byte ScrCmd_erasebox @ 0x73 + .4byte ScrCmd_drawboxtext @ 0x74 + .4byte ScrCmd_showmonpic @ 0x75 + .4byte ScrCmd_hidemonpic @ 0x76 + .4byte ScrCmd_showcontestpainting @ 0x77 + .4byte ScrCmd_braillemessage @ 0x78 + .4byte ScrCmd_givemon @ 0x79 + .4byte ScrCmd_giveegg @ 0x7a + .4byte ScrCmd_setmonmove @ 0x7b + .4byte ScrCmd_checkpartymove @ 0x7c + .4byte ScrCmd_bufferspeciesname @ 0x7d + .4byte ScrCmd_bufferleadmonspeciesname @ 0x7e + .4byte ScrCmd_bufferpartymonnick @ 0x7f + .4byte ScrCmd_bufferitemname @ 0x80 + .4byte ScrCmd_bufferdecorationname @ 0x81 + .4byte ScrCmd_buffermovename @ 0x82 + .4byte ScrCmd_buffernumberstring @ 0x83 + .4byte ScrCmd_bufferstdstring @ 0x84 + .4byte ScrCmd_bufferstring @ 0x85 + .4byte ScrCmd_pokemart @ 0x86 + .4byte ScrCmd_pokemartdecoration @ 0x87 + .4byte ScrCmd_pokemartdecoration2 @ 0x88 + .4byte ScrCmd_playslotmachine @ 0x89 + .4byte ScrCmd_setberrytree @ 0x8a + .4byte ScrCmd_choosecontestmon @ 0x8b + .4byte ScrCmd_startcontest @ 0x8c + .4byte ScrCmd_showcontestresults @ 0x8d + .4byte ScrCmd_contestlinktransfer @ 0x8e + .4byte ScrCmd_random @ 0x8f + .4byte ScrCmd_addmoney @ 0x90 + .4byte ScrCmd_removemoney @ 0x91 + .4byte ScrCmd_checkmoney @ 0x92 + .4byte ScrCmd_showmoneybox @ 0x93 + .4byte ScrCmd_hidemoneybox @ 0x94 + .4byte ScrCmd_updatemoneybox @ 0x95 + .4byte ScrCmd_getpokenewsactive @ 0x96 + .4byte ScrCmd_fadescreen @ 0x97 + .4byte ScrCmd_fadescreenspeed @ 0x98 + .4byte ScrCmd_setflashlevel @ 0x99 + .4byte ScrCmd_animateflash @ 0x9a + .4byte ScrCmd_messageautoscroll @ 0x9b + .4byte ScrCmd_dofieldeffect @ 0x9c + .4byte ScrCmd_setfieldeffectargument @ 0x9d + .4byte ScrCmd_waitfieldeffect @ 0x9e + .4byte ScrCmd_setrespawn @ 0x9f + .4byte ScrCmd_checkplayergender @ 0xa0 + .4byte ScrCmd_playmoncry @ 0xa1 + .4byte ScrCmd_setmetatile @ 0xa2 + .4byte ScrCmd_resetweather @ 0xa3 + .4byte ScrCmd_setweather @ 0xa4 + .4byte ScrCmd_doweather @ 0xa5 + .4byte ScrCmd_setstepcallback @ 0xa6 + .4byte ScrCmd_setmaplayoutindex @ 0xa7 + .4byte ScrCmd_setobjectsubpriority @ 0xa8 + .4byte ScrCmd_resetobjectsubpriority @ 0xa9 + .4byte ScrCmd_createvobject @ 0xaa + .4byte ScrCmd_turnvobject @ 0xab + .4byte ScrCmd_opendoor @ 0xac + .4byte ScrCmd_closedoor @ 0xad + .4byte ScrCmd_waitdooranim @ 0xae + .4byte ScrCmd_setdooropen @ 0xaf + .4byte ScrCmd_setdoorclosed @ 0xb0 + .4byte ScrCmd_addelevmenuitem @ 0xb1 + .4byte ScrCmd_showelevmenu @ 0xb2 + .4byte ScrCmd_checkcoins @ 0xb3 + .4byte ScrCmd_addcoins @ 0xb4 + .4byte ScrCmd_removecoins @ 0xb5 + .4byte ScrCmd_setwildbattle @ 0xb6 + .4byte ScrCmd_dowildbattle @ 0xb7 + .4byte ScrCmd_setvaddress @ 0xb8 + .4byte ScrCmd_vgoto @ 0xb9 + .4byte ScrCmd_vcall @ 0xba + .4byte ScrCmd_vgoto_if @ 0xbb + .4byte ScrCmd_vcall_if @ 0xbc + .4byte ScrCmd_vmessage @ 0xbd + .4byte ScrCmd_vbuffermessage @ 0xbe + .4byte ScrCmd_vbufferstring @ 0xbf + .4byte ScrCmd_showcoinsbox @ 0xc0 + .4byte ScrCmd_hidecoinsbox @ 0xc1 + .4byte ScrCmd_updatecoinsbox @ 0xc2 + .4byte ScrCmd_incrementgamestat @ 0xc3 + .4byte ScrCmd_setescapewarp @ 0xc4 + .4byte ScrCmd_waitmoncry @ 0xc5 + .4byte ScrCmd_bufferboxname @ 0xc6 + .4byte ScrCmd_nop1 @ 0xc7 + .4byte ScrCmd_nop1 @ 0xc8 + .4byte ScrCmd_nop1 @ 0xc9 + .4byte ScrCmd_nop1 @ 0xca + .4byte ScrCmd_nop1 @ 0xcb + .4byte ScrCmd_nop1 @ 0xcc + .4byte ScrCmd_setmonmodernfatefulencounter @ 0xcd + .4byte ScrCmd_checkmonmodernfatefulencounter @ 0xce + .4byte ScrCmd_trywondercardscript @ 0xcf + .4byte ScrCmd_nop1 @ 0xd0 + .4byte ScrCmd_warpspinenter @ 0xd1 + .4byte ScrCmd_setmonmetlocation @ 0xd2 + .4byte ScrCmd_moverotatingtileobjects @ 0xd3 + .4byte ScrCmd_turnrotatingtileobjects @ 0xd4 + .4byte ScrCmd_initrotatingtilepuzzle @ 0xd5 + .4byte ScrCmd_freerotatingtilepuzzle @ 0xd6 + .4byte ScrCmd_warpmossdeepgym @ 0xd7 + .4byte ScrCmd_selectapproachingtrainer @ 0xd8 + .4byte ScrCmd_lockfortrainer @ 0xd9 + .4byte ScrCmd_closebraillemessage @ 0xda + .4byte ScrCmd_messageinstant @ 0xdb + .4byte ScrCmd_fadescreenswapbuffers @ 0xdc + .4byte ScrCmd_buffertrainerclassname @ 0xdd + .4byte ScrCmd_buffertrainername @ 0xde + .4byte ScrCmd_pokenavcall @ 0xdf + .4byte ScrCmd_warpwhitefade @ 0xe0 + .4byte ScrCmd_buffercontestname @ 0xe1 + .4byte ScrCmd_bufferitemnameplural @ 0xe2 gScriptCmdTableEnd:: .4byte ScrCmd_nop diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 164dc42e8478..f9ec4eeffdfc 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -1,3 +1,5 @@ +.if DEBUG_OVERWORLD_MENU == TRUE + Debug_ShowFieldMessageStringVar4:: special ShowFieldMessageStringVar4 waitmessage @@ -21,7 +23,7 @@ Debug_CheatStart:: setflag FLAG_SYS_POKEDEX_GET special SetUnlockedPokedexFlags setflag FLAG_RECEIVED_POKEDEX_FROM_BIRCH - setvar VAR_CABLE_CLUB_TUTORIAL_STATE, 1 + setvar VAR_CABLE_CLUB_TUTORIAL_STATE, 2 setflag FLAG_SYS_NATIONAL_DEX special EnableNationalPokedex setflag FLAG_RECEIVED_RUNNING_SHOES @@ -41,19 +43,32 @@ Debug_CheatStart:: release end -Debug_FlagsNotSetMessage:: +Debug_FlagsNotSetOverworldConfigMessage:: lockall - message Debug_FlagsNotSetMessage_Text + message Debug_FlagsNotSetOverworldConfigMessage_Text waitmessage waitbuttonpress releaseall end -Debug_FlagsNotSetMessage_Text: +Debug_FlagsNotSetOverworldConfigMessage_Text: .string "Feature unavailable!\n" .string "Please define a usable flag in:\l" .string "'include/config/overworld.h'!$" +Debug_FlagsNotSetBattleConfigMessage:: + lockall + message Debug_FlagsNotSetBattleConfigMessage_Text + waitmessage + waitbuttonpress + releaseall + end + +Debug_FlagsNotSetBattleConfigMessage_Text: + .string "Feature unavailable!\n" + .string "Please define a usable flag in:\l" + .string "'include/config/battle.h'!$" + Debug_Script_1:: end @@ -77,3 +92,24 @@ Debug_Script_7:: Debug_Script_8:: end + +Debug_CheckSaveBlock:: + callnative CheckSaveBlock1Size + msgbox Debug_SaveBlock1Size, MSGBOX_DEFAULT + callnative CheckSaveBlock2Size + msgbox Debug_SaveBlock2Size, MSGBOX_DEFAULT + callnative CheckPokemonStorageSize + msgbox Debug_PokemonStorageSize, MSGBOX_DEFAULT + release + end + +Debug_SaveBlock1Size:: + .string "SaveBlock1 size: {STR_VAR_1}/{STR_VAR_2}.$" + +Debug_SaveBlock2Size:: + .string "SaveBlock2 size: {STR_VAR_1}/{STR_VAR_2}.$" + +Debug_PokemonStorageSize:: + .string "{PKMN}Storage size: {STR_VAR_1}/{STR_VAR_2}.$" + +.endif diff --git a/data/scripts/gift_pichu.inc b/data/scripts/gift_pichu.inc index d2cd381b5391..56c1e5234915 100644 --- a/data/scripts/gift_pichu.inc +++ b/data/scripts/gift_pichu.inc @@ -29,7 +29,7 @@ SurfPichu_FullParty: SurfPichu_GiveEgg: giveegg SPECIES_PICHU - setmoneventlegal VAR_GIFT_PICHU_SLOT + setmodernfatefulencounter VAR_GIFT_PICHU_SLOT setmonmetlocation VAR_GIFT_PICHU_SLOT, METLOC_FATEFUL_ENCOUNTER vgoto_if_eq VAR_GIFT_PICHU_SLOT, 1, SurfPichu_Slot1 vgoto_if_eq VAR_GIFT_PICHU_SLOT, 2, SurfPichu_Slot2 diff --git a/data/scripts/mauville_man.inc b/data/scripts/mauville_man.inc index eda3505bf4a9..a336360436a4 100644 --- a/data/scripts/mauville_man.inc +++ b/data/scripts/mauville_man.inc @@ -64,9 +64,9 @@ MauvilleCity_PokemonCenter_1F_EventScript_DeclineWritingLyrics:: MauvilleCity_PokemonCenter_1F_EventScript_Hipster:: lock faceplayer - setflag FLAG_SYS_HIPSTER_MEET + setflag FLAG_UNLOCKED_TRENDY_SAYINGS msgbox MauvilleCity_PokemonCenter_1F_Text_TeachWhatsHipAndHappening, MSGBOX_DEFAULT - special GetHipsterSpokenFlag + special HasHipsterTaughtWord goto_if_eq VAR_RESULT, FALSE, MauvilleCity_PokemonCenter_1F_EventScript_TryTeachWord msgbox MauvilleCity_PokemonCenter_1F_Text_IAlreadyTaughtYou, MSGBOX_DEFAULT release @@ -80,8 +80,8 @@ MauvilleCity_PokemonCenter_1F_EventScript_TryTeachWord:: end MauvilleCity_PokemonCenter_1F_EventScript_TeachWord:: - msgbox MauvilleCity_PokemonCenter_1F_Text_HaveYouHeardOfPhrase, MSGBOX_DEFAULT - special SetHipsterSpokenFlag + msgbox MauvilleCity_PokemonCenter_1F_Text_HaveYouHeardOfWord, MSGBOX_DEFAULT + special SetHipsterTaughtWord release end @@ -969,7 +969,7 @@ MauvilleCity_PokemonCenter_1F_Text_IveGotNothingNewToTeach: .string "what's hip and happening.\p" .string "I've got nothing new to teach you!$" -MauvilleCity_PokemonCenter_1F_Text_HaveYouHeardOfPhrase: +MauvilleCity_PokemonCenter_1F_Text_HaveYouHeardOfWord: .string "Hey, have you heard about\n" .string "“{STR_VAR_1}”?\p" .string "What's it mean? Well…\n" diff --git a/data/specials.inc b/data/specials.inc index 8e81ff847b25..ded2e3f4fee7 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -111,8 +111,8 @@ gSpecials:: def_special Script_GetCurrentMauvilleMan def_special HasBardSongBeenChanged def_special SaveBardSongLyrics - def_special GetHipsterSpokenFlag - def_special SetHipsterSpokenFlag + def_special HasHipsterTaughtWord + def_special SetHipsterTaughtWord def_special HipsterTryTeachWord def_special PlayBardSong def_special SetMauvilleOldManObjEventGfx @@ -489,7 +489,7 @@ gSpecials:: def_special ScrollableMultichoice_ClosePersistentMenu def_special DoDeoxysRockInteraction def_special SetDeoxysRockPalette - def_special CreateEventLegalEnemyMon + def_special CreateEnemyEventMon def_special StartMirageTowerDisintegration def_special StartMirageTowerShake def_special StartMirageTowerFossilFallAndSink diff --git a/gflib/malloc.c b/gflib/malloc.c index d0b94976358f..dcfac6ee8128 100644 --- a/gflib/malloc.c +++ b/gflib/malloc.c @@ -1,37 +1,18 @@ #include "global.h" +#include "malloc.h" static void *sHeapStart; static u32 sHeapSize; -#define MALLOC_SYSTEM_ID 0xA3A3 - -struct MemBlock { - // Whether this block is currently allocated. - bool16 flag; - - // Magic number used for error checking. Should equal MALLOC_SYSTEM_ID. - u16 magic; - - // Size of the block (not including this header struct). - u32 size; - - // Previous block pointer. Equals sHeapStart if this is the first block. - struct MemBlock *prev; - - // Next block pointer. Equals sHeapStart if this is the last block. - struct MemBlock *next; - - // Data in the memory block. (Arrays of length 0 are a GNU extension.) - u8 data[0]; -}; - void PutMemBlockHeader(void *block, struct MemBlock *prev, struct MemBlock *next, u32 size) { struct MemBlock *header = (struct MemBlock *)block; - header->flag = FALSE; + header->allocated = FALSE; + header->locationHi = 0; header->magic = MALLOC_SYSTEM_ID; header->size = size; + header->locationLo = 0; header->prev = prev; header->next = next; } @@ -41,7 +22,7 @@ void PutFirstMemBlockHeader(void *block, u32 size) PutMemBlockHeader(block, (struct MemBlock *)block, (struct MemBlock *)block, size - sizeof(struct MemBlock)); } -void *AllocInternal(void *heapStart, u32 size) +void *AllocInternal(void *heapStart, u32 size, const char *location) { struct MemBlock *pos = (struct MemBlock *)heapStart; struct MemBlock *head = pos; @@ -55,14 +36,14 @@ void *AllocInternal(void *heapStart, u32 size) for (;;) { // Loop through the blocks looking for unused block that's big enough. - if (!pos->flag) { + if (!pos->allocated) { foundBlockSize = pos->size; if (foundBlockSize >= size) { if (foundBlockSize - size < 2 * sizeof(struct MemBlock)) { // The block isn't much bigger than the requested size, // so just use it. - pos->flag = TRUE; + pos->allocated = TRUE; } else { // The block is significantly bigger than the requested // size, so split the rest into a separate block. @@ -71,7 +52,7 @@ void *AllocInternal(void *heapStart, u32 size) splitBlock = (struct MemBlock *)(pos->data + size); - pos->flag = TRUE; + pos->allocated = TRUE; pos->size = size; PutMemBlockHeader(splitBlock, pos, pos->next, foundBlockSize); @@ -82,6 +63,9 @@ void *AllocInternal(void *heapStart, u32 size) splitBlock->next->prev = splitBlock; } + pos->locationHi = ((uintptr_t)location) >> 14; + pos->locationLo = (uintptr_t)location; + return pos->data; } } @@ -98,12 +82,12 @@ void FreeInternal(void *heapStart, void *pointer) if (pointer) { struct MemBlock *head = (struct MemBlock *)heapStart; struct MemBlock *block = (struct MemBlock *)((u8 *)pointer - sizeof(struct MemBlock)); - block->flag = FALSE; + block->allocated = FALSE; // If the freed block isn't the last one, merge with the next block // if it's not in use. if (block->next != head) { - if (!block->next->flag) { + if (!block->next->allocated) { block->size += sizeof(struct MemBlock) + block->next->size; block->next->magic = 0; block->next = block->next->next; @@ -115,7 +99,7 @@ void FreeInternal(void *heapStart, void *pointer) // If the freed block isn't the first one, merge with the previous block // if it's not in use. if (block != head) { - if (!block->prev->flag) { + if (!block->prev->allocated) { block->prev->next = block->next; if (block->next != head) @@ -128,9 +112,9 @@ void FreeInternal(void *heapStart, void *pointer) } } -void *AllocZeroedInternal(void *heapStart, u32 size) +void *AllocZeroedInternal(void *heapStart, u32 size, const char *location) { - void *mem = AllocInternal(heapStart, size); + void *mem = AllocInternal(heapStart, size, location); if (mem != NULL) { if (size & 3) @@ -175,14 +159,14 @@ void InitHeap(void *heapStart, u32 heapSize) PutFirstMemBlockHeader(heapStart, heapSize); } -void *Alloc(u32 size) +void *Alloc_(u32 size, const char *location) { - return AllocInternal(sHeapStart, size); + return AllocInternal(sHeapStart, size, location); } -void *AllocZeroed(u32 size) +void *AllocZeroed_(u32 size, const char *location) { - return AllocZeroedInternal(sHeapStart, size); + return AllocZeroedInternal(sHeapStart, size, location); } void Free(void *pointer) @@ -207,3 +191,16 @@ bool32 CheckHeap() return TRUE; } + +const struct MemBlock *HeapHead(void) +{ + return (const struct MemBlock *)sHeapStart; +} + +const char *MemBlockLocation(const struct MemBlock *block) +{ + if (!block->allocated) + return NULL; + + return (const char *)(ROM_START | (block->locationHi << 14) | block->locationLo); +} diff --git a/gflib/malloc.h b/gflib/malloc.h index 851db83a62e5..d17291b3cdb2 100644 --- a/gflib/malloc.h +++ b/gflib/malloc.h @@ -11,11 +11,57 @@ #define TRY_FREE_AND_SET_NULL(ptr) if (ptr != NULL) FREE_AND_SET_NULL(ptr) +#define MALLOC_SYSTEM_ID 0xA3A3 + +struct MemBlock +{ + // Whether this block is currently allocated. + u16 allocated:1; + + u16 unused_00:4; + + // High 11 bits of location pointer. + u16 locationHi:11; + + // Magic number used for error checking. Should equal MALLOC_SYSTEM_ID. + u16 magic; + + // Size of the block (not including this header struct). + u32 size:18; + + // Low 14 bits of location pointer. + u32 locationLo:14; + + // Previous block pointer. Equals sHeapStart if this is the first block. + struct MemBlock *prev; + + // Next block pointer. Equals sHeapStart if this is the last block. + struct MemBlock *next; + + // Data in the memory block. (Arrays of length 0 are a GNU extension.) + u8 data[0]; +}; + extern u8 gHeap[]; -void *Alloc(u32 size); -void *AllocZeroed(u32 size); +#if TESTING || !defined(NDEBUG) + +#define Alloc(size) Alloc_(size, __FILE__ ":" STR(__LINE__)) +#define AllocZeroed(size) AllocZeroed_(size, __FILE__ ":" STR(__LINE__)) + +#else + +#define Alloc(size) Alloc_(size, NULL) +#define AllocZeroed(size) AllocZeroed_(size, NULL) + +#endif + +void *Alloc_(u32 size, const char *location); +void *AllocZeroed_(u32 size, const char *location); void Free(void *pointer); void InitHeap(void *pointer, u32 size); +const struct MemBlock *HeapHead(void); +const char *MemBlockLocation(const struct MemBlock *block); + #endif // GUARD_ALLOC_H diff --git a/gflib/sprite.c b/gflib/sprite.c index c489eb6a4c34..80fba81fe309 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1600,7 +1600,7 @@ u8 LoadSpritePalette(const struct SpritePalette *palette) else { sSpritePaletteTags[index] = palette->tag; - DoLoadSpritePalette(palette->data, index * 16); + DoLoadSpritePalette(palette->data, PLTT_ID(index)); return index; } } diff --git a/gflib/text.c b/gflib/text.c index 86dca38291fe..1bded26b5a52 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -36,7 +36,7 @@ static u32 GetGlyphWidth_Narrow(u16, bool32); static u32 GetGlyphWidth_SmallNarrow(u16, bool32); static EWRAM_DATA struct TextPrinter sTempTextPrinter = {0}; -static EWRAM_DATA struct TextPrinter sTextPrinters[NUM_TEXT_PRINTERS] = {0}; +static EWRAM_DATA struct TextPrinter sTextPrinters[WINDOWS_MAX] = {0}; static u16 sFontHalfRowLookupTable[0x51]; static u16 sLastTextBgColor; @@ -244,7 +244,7 @@ static void SetFontsPointer(const struct FontInfo *fonts) void DeactivateAllTextPrinters(void) { int printer; - for (printer = 0; printer < NUM_TEXT_PRINTERS; ++printer) + for (printer = 0; printer < WINDOWS_MAX; ++printer) sTextPrinters[printer].active = FALSE; } @@ -322,7 +322,7 @@ void RunTextPrinters(void) if (!gDisableTextPrinters) { - for (i = 0; i < NUM_TEXT_PRINTERS; ++i) + for (i = 0; i < WINDOWS_MAX; ++i) { if (sTextPrinters[i].active) { diff --git a/gflib/text.h b/gflib/text.h index a88cb990e18f..ff13efa9a82a 100644 --- a/gflib/text.h +++ b/gflib/text.h @@ -3,8 +3,6 @@ #include "characters.h" -#define NUM_TEXT_PRINTERS 32 - // Given as a text speed when all the text should be // loaded at once but not copied to vram yet. #define TEXT_SKIP_DRAW 0xFF diff --git a/gflib/window.c b/gflib/window.c index 1621a08842b7..76e863f10ea8 100644 --- a/gflib/window.c +++ b/gflib/window.c @@ -9,8 +9,6 @@ u8 gTransparentTileNumber; void *gWindowBgTilemapBuffers[NUM_BACKGROUNDS]; extern u32 gWindowTileAutoAllocEnabled; -#define WINDOWS_MAX 32 - EWRAM_DATA struct Window gWindows[WINDOWS_MAX] = {0}; EWRAM_DATA static struct Window* sWindowPtr = NULL; EWRAM_DATA static u16 sWindowSize = 0; diff --git a/gflib/window.h b/gflib/window.h index 0000dd864df3..0f2dff2a8aea 100644 --- a/gflib/window.h +++ b/gflib/window.h @@ -1,6 +1,8 @@ #ifndef GUARD_WINDOW_H #define GUARD_WINDOW_H +#define WINDOWS_MAX 32 + #define PIXEL_FILL(num) ((num) | ((num) << 4)) enum { diff --git a/graphics/bag/select_button.png b/graphics/bag/select_button.png index bded587fd1d0..52cdc1ed5acb 100644 Binary files a/graphics/bag/select_button.png and b/graphics/bag/select_button.png differ diff --git a/graphics/battle_anims/sprites/black_ball.bin b/graphics/battle_anims/sprites/black_ball.bin deleted file mode 100644 index 4a6592a8edc3..000000000000 Binary files a/graphics/battle_anims/sprites/black_ball.bin and /dev/null differ diff --git a/graphics/battle_anims/sprites/black_ball.pal b/graphics/battle_anims/sprites/black_ball.pal new file mode 100644 index 000000000000..57e320140e8b --- /dev/null +++ b/graphics/battle_anims/sprites/black_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 205 98 +156 205 98 +156 205 98 +131 205 131 +156 205 0 +24 0 106 +156 8 98 +0 213 131 +24 197 0 +164 8 106 +156 8 98 +164 8 106 +156 205 131 +24 213 98 +156 8 106 +164 205 98 diff --git a/graphics/battle_anims/sprites/new/teapot.png b/graphics/battle_anims/sprites/new/teapot.png index 6be0680dfce1..0e2660641891 100644 Binary files a/graphics/battle_anims/sprites/new/teapot.png and b/graphics/battle_anims/sprites/new/teapot.png differ diff --git a/graphics/battle_anims/sprites/omega_symbol.png b/graphics/battle_anims/sprites/omega_symbol.png index a821d5e40aa7..150501367aa7 100644 Binary files a/graphics/battle_anims/sprites/omega_symbol.png and b/graphics/battle_anims/sprites/omega_symbol.png differ diff --git a/graphics/battle_anims/unused/line_sketch_2.pal b/graphics/battle_anims/unused/line_sketch_2.pal new file mode 100644 index 000000000000..17cce5c65e48 --- /dev/null +++ b/graphics/battle_anims/unused/line_sketch_2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 255 +0 255 255 +148 255 255 +148 205 255 +148 156 255 +0 0 0 +0 0 0 +0 0 0 +255 0 8 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 255 255 diff --git a/graphics/battle_anims/unused/line_sketch_2_pal.bin b/graphics/battle_anims/unused/line_sketch_2_pal.bin deleted file mode 100644 index 15379a9ceae7..000000000000 Binary files a/graphics/battle_anims/unused/line_sketch_2_pal.bin and /dev/null differ diff --git a/graphics/battle_interface/alpha_indicator.png b/graphics/battle_interface/alpha_indicator.png index 0e302576b6ac..84cfee2cf136 100644 Binary files a/graphics/battle_interface/alpha_indicator.png and b/graphics/battle_interface/alpha_indicator.png differ diff --git a/graphics/battle_interface/omega_indicator.png b/graphics/battle_interface/omega_indicator.png index c56d51c151e6..8e21007a800b 100644 Binary files a/graphics/battle_interface/omega_indicator.png and b/graphics/battle_interface/omega_indicator.png differ diff --git a/graphics/battle_interface/status.png b/graphics/battle_interface/status.png index 9fae45b71fff..0b212907e557 100644 Binary files a/graphics/battle_interface/status.png and b/graphics/battle_interface/status.png differ diff --git a/graphics/battle_interface/status2.png b/graphics/battle_interface/status2.png index af7ce05d3bad..5d7f6459be31 100644 Binary files a/graphics/battle_interface/status2.png and b/graphics/battle_interface/status2.png differ diff --git a/graphics/battle_interface/status3.png b/graphics/battle_interface/status3.png index d0febfb17c50..7cc8cd56dccb 100644 Binary files a/graphics/battle_interface/status3.png and b/graphics/battle_interface/status3.png differ diff --git a/graphics/battle_interface/status4.png b/graphics/battle_interface/status4.png index 9704a36119d4..c5ab2c5e116c 100644 Binary files a/graphics/battle_interface/status4.png and b/graphics/battle_interface/status4.png differ diff --git a/graphics/battle_interface/z_move_trigger.png b/graphics/battle_interface/z_move_trigger.png index 5e27dbabbe83..d719494d9f0a 100644 Binary files a/graphics/battle_interface/z_move_trigger.png and b/graphics/battle_interface/z_move_trigger.png differ diff --git a/graphics/battle_transitions/frontier_logo_center.bin b/graphics/battle_transitions/frontier_logo_center.bin index 7b9d2af284bc..52479134604a 100644 Binary files a/graphics/battle_transitions/frontier_logo_center.bin and b/graphics/battle_transitions/frontier_logo_center.bin differ diff --git a/graphics/berries/babiri.png b/graphics/berries/babiri.png index 056353bab97a..bd9222899e38 100644 Binary files a/graphics/berries/babiri.png and b/graphics/berries/babiri.png differ diff --git a/graphics/berries/charti.png b/graphics/berries/charti.png index 9f119ebac0e9..399cd626efa8 100644 Binary files a/graphics/berries/charti.png and b/graphics/berries/charti.png differ diff --git a/graphics/berries/chilan.png b/graphics/berries/chilan.png index 8f717bb82cfe..286ed5c3fae4 100644 Binary files a/graphics/berries/chilan.png and b/graphics/berries/chilan.png differ diff --git a/graphics/berries/chople.png b/graphics/berries/chople.png index 0b4b28014f28..345eae24b7af 100644 Binary files a/graphics/berries/chople.png and b/graphics/berries/chople.png differ diff --git a/graphics/berries/coba.png b/graphics/berries/coba.png index 18283bd79da6..7824d8449892 100644 Binary files a/graphics/berries/coba.png and b/graphics/berries/coba.png differ diff --git a/graphics/berries/colbur.png b/graphics/berries/colbur.png index d422a826e57c..bb1560b2284a 100644 Binary files a/graphics/berries/colbur.png and b/graphics/berries/colbur.png differ diff --git a/graphics/berries/haban.png b/graphics/berries/haban.png index 87b27fb2633a..6dc0f01902e1 100644 Binary files a/graphics/berries/haban.png and b/graphics/berries/haban.png differ diff --git a/graphics/berries/kasib.png b/graphics/berries/kasib.png index f1b09244b07b..3cba928cefce 100644 Binary files a/graphics/berries/kasib.png and b/graphics/berries/kasib.png differ diff --git a/graphics/berries/kebia.png b/graphics/berries/kebia.png index e0dfefd672b2..b4ed7dc4347f 100644 Binary files a/graphics/berries/kebia.png and b/graphics/berries/kebia.png differ diff --git a/graphics/berries/kee.png b/graphics/berries/kee.png index 1c83b65b1943..37e1dc087c01 100644 Binary files a/graphics/berries/kee.png and b/graphics/berries/kee.png differ diff --git a/graphics/berries/micle.png b/graphics/berries/micle.png index bbe6011b4490..953523dd863b 100644 Binary files a/graphics/berries/micle.png and b/graphics/berries/micle.png differ diff --git a/graphics/berries/occa.png b/graphics/berries/occa.png index 1ad829e5f1a6..1d2af365f926 100644 Binary files a/graphics/berries/occa.png and b/graphics/berries/occa.png differ diff --git a/graphics/berries/passho.png b/graphics/berries/passho.png index c5414754505f..156dc18d1825 100644 Binary files a/graphics/berries/passho.png and b/graphics/berries/passho.png differ diff --git a/graphics/berries/rindo.png b/graphics/berries/rindo.png index 91e895d04311..741077893823 100644 Binary files a/graphics/berries/rindo.png and b/graphics/berries/rindo.png differ diff --git a/graphics/berries/roseli.png b/graphics/berries/roseli.png index 4eb675a44757..9fb4c8f8dd4a 100644 Binary files a/graphics/berries/roseli.png and b/graphics/berries/roseli.png differ diff --git a/graphics/berries/rowap.png b/graphics/berries/rowap.png index bbeee3f3b460..decb5a2a9988 100644 Binary files a/graphics/berries/rowap.png and b/graphics/berries/rowap.png differ diff --git a/graphics/berries/shuca.png b/graphics/berries/shuca.png index 618f3abace93..8ddc5474895b 100644 Binary files a/graphics/berries/shuca.png and b/graphics/berries/shuca.png differ diff --git a/graphics/berries/tanga.png b/graphics/berries/tanga.png index 702da676f35f..6b9076b608d1 100644 Binary files a/graphics/berries/tanga.png and b/graphics/berries/tanga.png differ diff --git a/graphics/berries/wacan.png b/graphics/berries/wacan.png index 5d88c95bd293..d79c025e6f2e 100644 Binary files a/graphics/berries/wacan.png and b/graphics/berries/wacan.png differ diff --git a/graphics/berries/yache.png b/graphics/berries/yache.png index 3f3978277016..43ebf0768281 100644 Binary files a/graphics/berries/yache.png and b/graphics/berries/yache.png differ diff --git a/graphics/cable_car/pylons.bin b/graphics/cable_car/pylon_pole.bin similarity index 100% rename from graphics/cable_car/pylons.bin rename to graphics/cable_car/pylon_pole.bin diff --git a/graphics/cable_car/pylon_top.bin b/graphics/cable_car/pylon_top.bin new file mode 100755 index 000000000000..44b20744d438 Binary files /dev/null and b/graphics/cable_car/pylon_top.bin differ diff --git a/graphics/expansion_intro/powered_by.png b/graphics/expansion_intro/powered_by.png index b422f6e568b8..910053f64694 100644 Binary files a/graphics/expansion_intro/powered_by.png and b/graphics/expansion_intro/powered_by.png differ diff --git a/graphics/interface/status_icons.png b/graphics/interface/status_icons.png index fe802d7f6665..f93406cfd1b8 100644 Binary files a/graphics/interface/status_icons.png and b/graphics/interface/status_icons.png differ diff --git a/graphics/items/icon_palettes/ability_shield.pal b/graphics/items/icon_palettes/ability_shield.pal new file mode 100644 index 000000000000..d11016b32c43 --- /dev/null +++ b/graphics/items/icon_palettes/ability_shield.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +248 200 240 +224 176 232 +200 144 224 +240 224 248 +176 120 216 +77 146 186 +105 179 221 +238 246 246 +222 222 222 +197 197 197 +161 161 161 +48 48 48 +255 255 255 +0 0 0 diff --git a/graphics/items/icon_palettes/adamant_crystal.pal b/graphics/items/icon_palettes/adamant_crystal.pal new file mode 100644 index 000000000000..738ff049810e --- /dev/null +++ b/graphics/items/icon_palettes/adamant_crystal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +184 208 248 +168 200 248 +81 123 173 +128 168 216 +200 232 248 +224 248 248 +248 248 248 +104 104 104 +48 48 48 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/auspicious_armor.pal b/graphics/items/icon_palettes/auspicious_armor.pal new file mode 100644 index 000000000000..9d0c8e444c42 --- /dev/null +++ b/graphics/items/icon_palettes/auspicious_armor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +160 144 32 +192 176 56 +224 208 88 +128 112 32 +72 56 24 +224 80 80 +176 88 88 +120 72 72 +48 48 48 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/berserk_gene.pal b/graphics/items/icon_palettes/berserk_gene.pal new file mode 100644 index 000000000000..3ac8981aa03d --- /dev/null +++ b/graphics/items/icon_palettes/berserk_gene.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +212 146 75 +49 49 49 +131 123 131 +98 90 98 +74 65 74 +164 90 222 +230 180 255 +255 230 238 +255 230 106 +255 189 74 +255 171 32 +238 148 0 +255 246 189 +123 82 32 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/big_bamboo_shoot.pal b/graphics/items/icon_palettes/big_bamboo_shoot.pal new file mode 100644 index 000000000000..28ab4fe69972 --- /dev/null +++ b/graphics/items/icon_palettes/big_bamboo_shoot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +189 202 71 +121 168 43 +120 167 42 +163 126 74 +116 101 78 +79 66 46 +115 77 43 +180 133 94 +233 176 96 +241 241 193 +183 170 147 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/black_augurite.pal b/graphics/items/icon_palettes/black_augurite.pal new file mode 100644 index 000000000000..0d67abee396c --- /dev/null +++ b/graphics/items/icon_palettes/black_augurite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 192 168 +0 0 0 +111 108 124 +58 48 49 +206 206 214 +151 149 160 +142 93 117 +89 62 76 +255 255 255 +111 109 124 +194 192 202 +88 62 76 +80 74 88 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/booster_energy.pal b/graphics/items/icon_palettes/booster_energy.pal new file mode 100644 index 000000000000..21dc17ba2fbb --- /dev/null +++ b/graphics/items/icon_palettes/booster_energy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +111 45 22 +0 0 0 +190 91 13 +255 139 1 +255 255 255 +255 231 10 +251 42 6 +154 157 151 +193 161 19 +234 238 234 +122 111 115 +74 67 68 +90 185 248 +78 86 255 +111 52 255 diff --git a/graphics/items/icon_palettes/covert_cloak.pal b/graphics/items/icon_palettes/covert_cloak.pal new file mode 100644 index 000000000000..06491d2ada43 --- /dev/null +++ b/graphics/items/icon_palettes/covert_cloak.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +54 52 72 +101 120 143 +103 139 163 +84 105 130 +74 75 101 +90 108 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/gimmighoul_coin.pal b/graphics/items/icon_palettes/gimmighoul_coin.pal new file mode 100644 index 000000000000..555a04dbe303 --- /dev/null +++ b/graphics/items/icon_palettes/gimmighoul_coin.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +180 124 35 +115 66 13 +255 249 234 +224 159 27 +255 226 121 +255 200 59 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/griseous_core.pal b/graphics/items/icon_palettes/griseous_core.pal new file mode 100644 index 000000000000..05980782c65f --- /dev/null +++ b/graphics/items/icon_palettes/griseous_core.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +206 181 41 +222 198 57 +247 231 140 +156 132 33 +189 156 41 +123 99 33 +49 49 49 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/leaders_crest.pal b/graphics/items/icon_palettes/leaders_crest.pal new file mode 100644 index 000000000000..1f60ee2204f5 --- /dev/null +++ b/graphics/items/icon_palettes/leaders_crest.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +188 143 70 +131 85 43 +186 181 176 +80 74 71 +239 185 78 +138 128 128 +220 217 215 +250 225 159 +246 205 93 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/linking_cord.pal b/graphics/items/icon_palettes/linking_cord.pal new file mode 100644 index 000000000000..8be2b522f79f --- /dev/null +++ b/graphics/items/icon_palettes/linking_cord.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 192 168 +87 87 88 +155 158 156 +117 114 116 +0 0 0 +36 37 42 +62 66 68 +56 57 61 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/loaded_dice.pal b/graphics/items/icon_palettes/loaded_dice.pal new file mode 100644 index 000000000000..16624b9e9e60 --- /dev/null +++ b/graphics/items/icon_palettes/loaded_dice.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +48 52 78 +127 216 17 +0 0 0 +192 240 140 +128 217 18 +90 137 46 +129 218 19 +88 135 48 +107 182 17 +128 217 18 +93 144 44 +89 136 47 +255 255 255 +127 216 19 +48 38 64 diff --git a/graphics/items/icon_palettes/lustrous_globe.pal b/graphics/items/icon_palettes/lustrous_globe.pal new file mode 100644 index 000000000000..b62730a16139 --- /dev/null +++ b/graphics/items/icon_palettes/lustrous_globe.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +248 216 232 +198 159 217 +210 171 229 +224 192 240 +210 192 240 +160 192 232 +144 200 232 +160 216 240 +128 216 224 +208 240 240 +248 240 240 +248 248 248 +80 80 80 +48 48 48 diff --git a/graphics/items/icon_palettes/malicious_armor.pal b/graphics/items/icon_palettes/malicious_armor.pal new file mode 100644 index 000000000000..1ef3efe89ecf --- /dev/null +++ b/graphics/items/icon_palettes/malicious_armor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +66 66 99 +90 90 132 +115 115 156 +90 115 230 +132 140 181 +125 147 246 +48 48 48 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/mirror_herb.pal b/graphics/items/icon_palettes/mirror_herb.pal new file mode 100644 index 000000000000..b4ad3f972646 --- /dev/null +++ b/graphics/items/icon_palettes/mirror_herb.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +39 194 168 +124 228 211 +19 101 84 +187 228 77 +238 250 169 +234 244 124 +24 152 108 +126 106 28 +173 171 15 +43 138 128 +127 175 55 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/peat_block.pal b/graphics/items/icon_palettes/peat_block.pal new file mode 100644 index 000000000000..8d4b5e3b6f49 --- /dev/null +++ b/graphics/items/icon_palettes/peat_block.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 198 168 +32 32 32 +230 217 213 +199 189 184 +156 135 143 +102 83 83 +143 118 130 +65 56 56 +179 162 151 +117 100 100 +210 183 192 +180 158 167 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/punching_glove.pal b/graphics/items/icon_palettes/punching_glove.pal new file mode 100644 index 000000000000..f21cb39ec565 --- /dev/null +++ b/graphics/items/icon_palettes/punching_glove.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +255 212 0 +200 56 32 +248 64 48 +232 232 232 +48 48 48 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/scroll_of_darkness.pal b/graphics/items/icon_palettes/scroll_of_darkness.pal new file mode 100644 index 000000000000..1b66d85e00d6 --- /dev/null +++ b/graphics/items/icon_palettes/scroll_of_darkness.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +130 116 116 +86 86 86 +54 41 49 +104 78 86 +56 56 56 +141 105 41 +223 191 65 +242 241 242 +184 172 179 +186 140 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/scroll_of_waters.pal b/graphics/items/icon_palettes/scroll_of_waters.pal new file mode 100644 index 000000000000..41a94976f012 --- /dev/null +++ b/graphics/items/icon_palettes/scroll_of_waters.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +118 109 109 +143 130 127 +101 77 83 +73 68 68 +122 108 104 +141 105 41 +223 191 65 +242 241 242 +184 172 179 +186 140 57 +102 78 84 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/tera_orb.pal b/graphics/items/icon_palettes/tera_orb.pal new file mode 100644 index 000000000000..78b3689f9d05 --- /dev/null +++ b/graphics/items/icon_palettes/tera_orb.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +81 41 75 +98 61 92 +66 72 65 +51 4 43 +201 185 199 +110 86 106 +84 73 92 +32 41 34 +255 255 255 +71 50 92 +64 71 94 +139 165 201 +183 191 209 +0 0 0 diff --git a/graphics/items/icon_palettes/tiny_bamboo_shoot.pal b/graphics/items/icon_palettes/tiny_bamboo_shoot.pal new file mode 100644 index 000000000000..1172befa6c59 --- /dev/null +++ b/graphics/items/icon_palettes/tiny_bamboo_shoot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +111 167 43 +179 192 68 +107 144 66 +84 116 48 +68 93 37 +124 137 52 +168 87 80 +168 116 111 +241 241 193 +168 87 80 +183 170 147 +121 52 57 +0 0 0 +0 0 0 diff --git a/graphics/items/icons/ability_capsule.png b/graphics/items/icons/ability_capsule.png index 4cb366137fb5..49a70ffa56c3 100755 Binary files a/graphics/items/icons/ability_capsule.png and b/graphics/items/icons/ability_capsule.png differ diff --git a/graphics/items/icons/ability_patch.png b/graphics/items/icons/ability_patch.png index acbef74623f7..8f14ab7eeee8 100644 Binary files a/graphics/items/icons/ability_patch.png and b/graphics/items/icons/ability_patch.png differ diff --git a/graphics/items/icons/ability_shield.png b/graphics/items/icons/ability_shield.png new file mode 100644 index 000000000000..de7354d71f8a Binary files /dev/null and b/graphics/items/icons/ability_shield.png differ diff --git a/graphics/items/icons/absorb_bulb.png b/graphics/items/icons/absorb_bulb.png index d958ab368400..a63f7a8bcc4a 100755 Binary files a/graphics/items/icons/absorb_bulb.png and b/graphics/items/icons/absorb_bulb.png differ diff --git a/graphics/items/icons/adamant_crystal.png b/graphics/items/icons/adamant_crystal.png new file mode 100644 index 000000000000..37175b565e18 Binary files /dev/null and b/graphics/items/icons/adamant_crystal.png differ diff --git a/graphics/items/icons/air_balloon.png b/graphics/items/icons/air_balloon.png index 6ed3a9ad214d..dbcff6d13bad 100755 Binary files a/graphics/items/icons/air_balloon.png and b/graphics/items/icons/air_balloon.png differ diff --git a/graphics/items/icons/armor_fossil.png b/graphics/items/icons/armor_fossil.png index a24d2ec4da2e..7647f9db555b 100755 Binary files a/graphics/items/icons/armor_fossil.png and b/graphics/items/icons/armor_fossil.png differ diff --git a/graphics/items/icons/auspicious_armor.png b/graphics/items/icons/auspicious_armor.png new file mode 100644 index 000000000000..db7bb231bc78 Binary files /dev/null and b/graphics/items/icons/auspicious_armor.png differ diff --git a/graphics/items/icons/babiri_berry.png b/graphics/items/icons/babiri_berry.png index aeca14e70a91..72141937b96c 100755 Binary files a/graphics/items/icons/babiri_berry.png and b/graphics/items/icons/babiri_berry.png differ diff --git a/graphics/items/icons/berserk_gene.png b/graphics/items/icons/berserk_gene.png new file mode 100644 index 000000000000..faac0f67690b Binary files /dev/null and b/graphics/items/icons/berserk_gene.png differ diff --git a/graphics/items/icons/big_bamboo_shoot.png b/graphics/items/icons/big_bamboo_shoot.png new file mode 100644 index 000000000000..49c3428661cb Binary files /dev/null and b/graphics/items/icons/big_bamboo_shoot.png differ diff --git a/graphics/items/icons/big_malasada.png b/graphics/items/icons/big_malasada.png index d24cd9e00d31..a651027774bb 100755 Binary files a/graphics/items/icons/big_malasada.png and b/graphics/items/icons/big_malasada.png differ diff --git a/graphics/items/icons/big_root.png b/graphics/items/icons/big_root.png index e857cc5f301e..ef20e8ea5412 100644 Binary files a/graphics/items/icons/big_root.png and b/graphics/items/icons/big_root.png differ diff --git a/graphics/items/icons/black_apricorn.png b/graphics/items/icons/black_apricorn.png index c80707e067c1..470e77fcfca0 100755 Binary files a/graphics/items/icons/black_apricorn.png and b/graphics/items/icons/black_apricorn.png differ diff --git a/graphics/items/icons/black_augurite.png b/graphics/items/icons/black_augurite.png new file mode 100644 index 000000000000..8be2bc188c9b Binary files /dev/null and b/graphics/items/icons/black_augurite.png differ diff --git a/graphics/items/icons/black_sludge.png b/graphics/items/icons/black_sludge.png index 2e1fac755f6e..9987ef73b6ba 100644 Binary files a/graphics/items/icons/black_sludge.png and b/graphics/items/icons/black_sludge.png differ diff --git a/graphics/items/icons/blue_apricorn.png b/graphics/items/icons/blue_apricorn.png index 35d0ed23b24b..9e1b19fb30b2 100755 Binary files a/graphics/items/icons/blue_apricorn.png and b/graphics/items/icons/blue_apricorn.png differ diff --git a/graphics/items/icons/booster_energy.png b/graphics/items/icons/booster_energy.png new file mode 100644 index 000000000000..df583a2508d4 Binary files /dev/null and b/graphics/items/icons/booster_energy.png differ diff --git a/graphics/items/icons/bug_gem.png b/graphics/items/icons/bug_gem.png index 0561d24d06f9..4d69046687a1 100644 Binary files a/graphics/items/icons/bug_gem.png and b/graphics/items/icons/bug_gem.png differ diff --git a/graphics/items/icons/bug_memory.png b/graphics/items/icons/bug_memory.png index 5c4c09098829..87f558feef80 100755 Binary files a/graphics/items/icons/bug_memory.png and b/graphics/items/icons/bug_memory.png differ diff --git a/graphics/items/icons/burn_drive.png b/graphics/items/icons/burn_drive.png index c83fbd335896..9486eff484ac 100644 Binary files a/graphics/items/icons/burn_drive.png and b/graphics/items/icons/burn_drive.png differ diff --git a/graphics/items/icons/cell_battery.png b/graphics/items/icons/cell_battery.png index 6183bdb085b3..23fde6a299b8 100755 Binary files a/graphics/items/icons/cell_battery.png and b/graphics/items/icons/cell_battery.png differ diff --git a/graphics/items/icons/charti_berry.png b/graphics/items/icons/charti_berry.png index 8848e18d4f54..a59e62009a73 100755 Binary files a/graphics/items/icons/charti_berry.png and b/graphics/items/icons/charti_berry.png differ diff --git a/graphics/items/icons/chilan_berry.png b/graphics/items/icons/chilan_berry.png index d1516f7323dc..c78465aa2183 100755 Binary files a/graphics/items/icons/chilan_berry.png and b/graphics/items/icons/chilan_berry.png differ diff --git a/graphics/items/icons/chill_drive.png b/graphics/items/icons/chill_drive.png index a2c7e98a6893..d3d5e019c246 100644 Binary files a/graphics/items/icons/chill_drive.png and b/graphics/items/icons/chill_drive.png differ diff --git a/graphics/items/icons/choice_scarf.png b/graphics/items/icons/choice_scarf.png index 51157fcc22f0..99e126453ec9 100644 Binary files a/graphics/items/icons/choice_scarf.png and b/graphics/items/icons/choice_scarf.png differ diff --git a/graphics/items/icons/choice_specs.png b/graphics/items/icons/choice_specs.png index 6c64cb26e4aa..7c90bdcff3c6 100644 Binary files a/graphics/items/icons/choice_specs.png and b/graphics/items/icons/choice_specs.png differ diff --git a/graphics/items/icons/chople_berry.png b/graphics/items/icons/chople_berry.png index 3fa84f379a6d..22f4f2426cf6 100755 Binary files a/graphics/items/icons/chople_berry.png and b/graphics/items/icons/chople_berry.png differ diff --git a/graphics/items/icons/coba_berry.png b/graphics/items/icons/coba_berry.png index 5ac21683e07f..05f117f4bfa4 100755 Binary files a/graphics/items/icons/coba_berry.png and b/graphics/items/icons/coba_berry.png differ diff --git a/graphics/items/icons/colbur_berry.png b/graphics/items/icons/colbur_berry.png index 56d46a52a22f..9e785094339d 100755 Binary files a/graphics/items/icons/colbur_berry.png and b/graphics/items/icons/colbur_berry.png differ diff --git a/graphics/items/icons/cover_fossil.png b/graphics/items/icons/cover_fossil.png index bc8bbe69b5ee..1202bb455698 100755 Binary files a/graphics/items/icons/cover_fossil.png and b/graphics/items/icons/cover_fossil.png differ diff --git a/graphics/items/icons/covert_cloak.png b/graphics/items/icons/covert_cloak.png new file mode 100644 index 000000000000..a6cb97487864 Binary files /dev/null and b/graphics/items/icons/covert_cloak.png differ diff --git a/graphics/items/icons/custap_berry.png b/graphics/items/icons/custap_berry.png index 3fa594667d46..56f1492c3cf7 100755 Binary files a/graphics/items/icons/custap_berry.png and b/graphics/items/icons/custap_berry.png differ diff --git a/graphics/items/icons/damp_rock.png b/graphics/items/icons/damp_rock.png index fe908739e5bd..97c75b08fda4 100644 Binary files a/graphics/items/icons/damp_rock.png and b/graphics/items/icons/damp_rock.png differ diff --git a/graphics/items/icons/dark_gem.png b/graphics/items/icons/dark_gem.png index 947f04167490..8999ca25accc 100644 Binary files a/graphics/items/icons/dark_gem.png and b/graphics/items/icons/dark_gem.png differ diff --git a/graphics/items/icons/dark_memory.png b/graphics/items/icons/dark_memory.png index 258bd309bf40..3cb69c7a5f67 100755 Binary files a/graphics/items/icons/dark_memory.png and b/graphics/items/icons/dark_memory.png differ diff --git a/graphics/items/icons/dawn_stone.png b/graphics/items/icons/dawn_stone.png index 0465d18bad46..a0db015327fd 100755 Binary files a/graphics/items/icons/dawn_stone.png and b/graphics/items/icons/dawn_stone.png differ diff --git a/graphics/items/icons/destiny_knot.png b/graphics/items/icons/destiny_knot.png index ceeb38d5c782..ce8b18f93798 100644 Binary files a/graphics/items/icons/destiny_knot.png and b/graphics/items/icons/destiny_knot.png differ diff --git a/graphics/items/icons/douse_drive.png b/graphics/items/icons/douse_drive.png index eee5ae35f1ef..f59616159aed 100644 Binary files a/graphics/items/icons/douse_drive.png and b/graphics/items/icons/douse_drive.png differ diff --git a/graphics/items/icons/draco_plate.png b/graphics/items/icons/draco_plate.png index 9b08c31c8df7..21339c048226 100644 Binary files a/graphics/items/icons/draco_plate.png and b/graphics/items/icons/draco_plate.png differ diff --git a/graphics/items/icons/dragon_gem.png b/graphics/items/icons/dragon_gem.png index 2d41c858c19c..f071726a1320 100644 Binary files a/graphics/items/icons/dragon_gem.png and b/graphics/items/icons/dragon_gem.png differ diff --git a/graphics/items/icons/dragon_memory.png b/graphics/items/icons/dragon_memory.png index d073dace311d..3888b3f3af5f 100755 Binary files a/graphics/items/icons/dragon_memory.png and b/graphics/items/icons/dragon_memory.png differ diff --git a/graphics/items/icons/dread_plate.png b/graphics/items/icons/dread_plate.png index f93493f97bbb..8679df524d24 100644 Binary files a/graphics/items/icons/dread_plate.png and b/graphics/items/icons/dread_plate.png differ diff --git a/graphics/items/icons/dubious_disc.png b/graphics/items/icons/dubious_disc.png index bf2ab2fc0fa6..bd0e7f7758fe 100755 Binary files a/graphics/items/icons/dubious_disc.png and b/graphics/items/icons/dubious_disc.png differ diff --git a/graphics/items/icons/dusk_stone.png b/graphics/items/icons/dusk_stone.png index e928b251671a..3d3669bb44ee 100755 Binary files a/graphics/items/icons/dusk_stone.png and b/graphics/items/icons/dusk_stone.png differ diff --git a/graphics/items/icons/earth_plate.png b/graphics/items/icons/earth_plate.png index 688b24be35b6..e79dff33ce03 100644 Binary files a/graphics/items/icons/earth_plate.png and b/graphics/items/icons/earth_plate.png differ diff --git a/graphics/items/icons/eject_button.png b/graphics/items/icons/eject_button.png index a0492ed6e0b9..ada08cbb7f49 100755 Binary files a/graphics/items/icons/eject_button.png and b/graphics/items/icons/eject_button.png differ diff --git a/graphics/items/icons/electirizer.png b/graphics/items/icons/electirizer.png index 73f6f8f26ed7..f0351e64d61c 100755 Binary files a/graphics/items/icons/electirizer.png and b/graphics/items/icons/electirizer.png differ diff --git a/graphics/items/icons/electric_gem.png b/graphics/items/icons/electric_gem.png index 88e604f182f8..e17e3f4d139a 100644 Binary files a/graphics/items/icons/electric_gem.png and b/graphics/items/icons/electric_gem.png differ diff --git a/graphics/items/icons/electric_memory.png b/graphics/items/icons/electric_memory.png index ce9a8f362472..0ab5da3770d4 100755 Binary files a/graphics/items/icons/electric_memory.png and b/graphics/items/icons/electric_memory.png differ diff --git a/graphics/items/icons/eviolite.png b/graphics/items/icons/eviolite.png index c08cc5950680..b8bc613f8f50 100644 Binary files a/graphics/items/icons/eviolite.png and b/graphics/items/icons/eviolite.png differ diff --git a/graphics/items/icons/expert_belt.png b/graphics/items/icons/expert_belt.png index bc00454907e3..62d4b8bc2605 100644 Binary files a/graphics/items/icons/expert_belt.png and b/graphics/items/icons/expert_belt.png differ diff --git a/graphics/items/icons/fairy_gem.png b/graphics/items/icons/fairy_gem.png index 871f74426d8e..5fe8f6ed99e3 100644 Binary files a/graphics/items/icons/fairy_gem.png and b/graphics/items/icons/fairy_gem.png differ diff --git a/graphics/items/icons/fairy_memory.png b/graphics/items/icons/fairy_memory.png index fba869128077..5d472d966310 100755 Binary files a/graphics/items/icons/fairy_memory.png and b/graphics/items/icons/fairy_memory.png differ diff --git a/graphics/items/icons/fighting_gem.png b/graphics/items/icons/fighting_gem.png index 7f4fc8b97d31..229376779485 100644 Binary files a/graphics/items/icons/fighting_gem.png and b/graphics/items/icons/fighting_gem.png differ diff --git a/graphics/items/icons/fighting_memory.png b/graphics/items/icons/fighting_memory.png index ad21a2d078c4..f46e89d73335 100755 Binary files a/graphics/items/icons/fighting_memory.png and b/graphics/items/icons/fighting_memory.png differ diff --git a/graphics/items/icons/fire_gem.png b/graphics/items/icons/fire_gem.png index deb8979bd8eb..d6caa7d3d17b 100644 Binary files a/graphics/items/icons/fire_gem.png and b/graphics/items/icons/fire_gem.png differ diff --git a/graphics/items/icons/fire_memory.png b/graphics/items/icons/fire_memory.png index 33116aed1223..bc62b02c15e9 100755 Binary files a/graphics/items/icons/fire_memory.png and b/graphics/items/icons/fire_memory.png differ diff --git a/graphics/items/icons/fist_plate.png b/graphics/items/icons/fist_plate.png index 0142938d511c..7e6cb2b92d31 100644 Binary files a/graphics/items/icons/fist_plate.png and b/graphics/items/icons/fist_plate.png differ diff --git a/graphics/items/icons/flame_plate.png b/graphics/items/icons/flame_plate.png index 6f78e5d0205c..42a3564ea257 100644 Binary files a/graphics/items/icons/flame_plate.png and b/graphics/items/icons/flame_plate.png differ diff --git a/graphics/items/icons/float_stone.png b/graphics/items/icons/float_stone.png index 61f096fc368e..a421d553fbc9 100644 Binary files a/graphics/items/icons/float_stone.png and b/graphics/items/icons/float_stone.png differ diff --git a/graphics/items/icons/flying_gem.png b/graphics/items/icons/flying_gem.png index 563e80f3bf05..eb328c85ee90 100644 Binary files a/graphics/items/icons/flying_gem.png and b/graphics/items/icons/flying_gem.png differ diff --git a/graphics/items/icons/flying_memory.png b/graphics/items/icons/flying_memory.png index da413ba1ff61..e38f2400486e 100755 Binary files a/graphics/items/icons/flying_memory.png and b/graphics/items/icons/flying_memory.png differ diff --git a/graphics/items/icons/focus_sash.png b/graphics/items/icons/focus_sash.png index e0df9798ef49..a09d2d26bd5b 100644 Binary files a/graphics/items/icons/focus_sash.png and b/graphics/items/icons/focus_sash.png differ diff --git a/graphics/items/icons/full_incense.png b/graphics/items/icons/full_incense.png index 230927e085dc..a44f6bffa8e9 100755 Binary files a/graphics/items/icons/full_incense.png and b/graphics/items/icons/full_incense.png differ diff --git a/graphics/items/icons/ghost_gem.png b/graphics/items/icons/ghost_gem.png index 96e320e2195c..c4813ee299ea 100644 Binary files a/graphics/items/icons/ghost_gem.png and b/graphics/items/icons/ghost_gem.png differ diff --git a/graphics/items/icons/ghost_memory.png b/graphics/items/icons/ghost_memory.png index 3041643aaae3..2a9b4f65997b 100755 Binary files a/graphics/items/icons/ghost_memory.png and b/graphics/items/icons/ghost_memory.png differ diff --git a/graphics/items/icons/gimmighoul_coin.png b/graphics/items/icons/gimmighoul_coin.png new file mode 100644 index 000000000000..b161cf12ac37 Binary files /dev/null and b/graphics/items/icons/gimmighoul_coin.png differ diff --git a/graphics/items/icons/gracidea.png b/graphics/items/icons/gracidea.png index 31bac3846cde..fdbd8c8af00a 100755 Binary files a/graphics/items/icons/gracidea.png and b/graphics/items/icons/gracidea.png differ diff --git a/graphics/items/icons/grass_gem.png b/graphics/items/icons/grass_gem.png index df57119b27d3..756a769cab22 100644 Binary files a/graphics/items/icons/grass_gem.png and b/graphics/items/icons/grass_gem.png differ diff --git a/graphics/items/icons/grass_memory.png b/graphics/items/icons/grass_memory.png index 646568c41274..4ef16802d7f3 100755 Binary files a/graphics/items/icons/grass_memory.png and b/graphics/items/icons/grass_memory.png differ diff --git a/graphics/items/icons/green_apricorn.png b/graphics/items/icons/green_apricorn.png index dc821541bc81..da60f8544acb 100755 Binary files a/graphics/items/icons/green_apricorn.png and b/graphics/items/icons/green_apricorn.png differ diff --git a/graphics/items/icons/grip_claw.png b/graphics/items/icons/grip_claw.png index d76c6b75c2ae..dfe2b5509a37 100644 Binary files a/graphics/items/icons/grip_claw.png and b/graphics/items/icons/grip_claw.png differ diff --git a/graphics/items/icons/griseous_core.png b/graphics/items/icons/griseous_core.png new file mode 100644 index 000000000000..08748fe7bba1 Binary files /dev/null and b/graphics/items/icons/griseous_core.png differ diff --git a/graphics/items/icons/griseous_orb.png b/graphics/items/icons/griseous_orb.png index 5140ea3acde5..e306e5866194 100644 Binary files a/graphics/items/icons/griseous_orb.png and b/graphics/items/icons/griseous_orb.png differ diff --git a/graphics/items/icons/ground_gem.png b/graphics/items/icons/ground_gem.png index 27a8bf69d5af..21fab57b0f97 100644 Binary files a/graphics/items/icons/ground_gem.png and b/graphics/items/icons/ground_gem.png differ diff --git a/graphics/items/icons/ground_memory.png b/graphics/items/icons/ground_memory.png index 0f9f31734df6..45ac4379ef3e 100755 Binary files a/graphics/items/icons/ground_memory.png and b/graphics/items/icons/ground_memory.png differ diff --git a/graphics/items/icons/haban_berry.png b/graphics/items/icons/haban_berry.png index f413ea9e146a..7171d2b07e04 100755 Binary files a/graphics/items/icons/haban_berry.png and b/graphics/items/icons/haban_berry.png differ diff --git a/graphics/items/icons/heat_rock.png b/graphics/items/icons/heat_rock.png index 60eae816964f..cbfa5985829d 100644 Binary files a/graphics/items/icons/heat_rock.png and b/graphics/items/icons/heat_rock.png differ diff --git a/graphics/items/icons/ice_gem.png b/graphics/items/icons/ice_gem.png index db87018fea06..e9c28f05032d 100644 Binary files a/graphics/items/icons/ice_gem.png and b/graphics/items/icons/ice_gem.png differ diff --git a/graphics/items/icons/ice_memory.png b/graphics/items/icons/ice_memory.png index c0f7cd76e852..5dad66f879b8 100755 Binary files a/graphics/items/icons/ice_memory.png and b/graphics/items/icons/ice_memory.png differ diff --git a/graphics/items/icons/ice_stone.png b/graphics/items/icons/ice_stone.png index ee5309544ed3..5f5a7958a62a 100755 Binary files a/graphics/items/icons/ice_stone.png and b/graphics/items/icons/ice_stone.png differ diff --git a/graphics/items/icons/icicle_plate.png b/graphics/items/icons/icicle_plate.png index 2d3e27bbbac5..7a74d45a55b7 100644 Binary files a/graphics/items/icons/icicle_plate.png and b/graphics/items/icons/icicle_plate.png differ diff --git a/graphics/items/icons/icy_rock.png b/graphics/items/icons/icy_rock.png index 800b12ec87ab..56fe8cf41129 100644 Binary files a/graphics/items/icons/icy_rock.png and b/graphics/items/icons/icy_rock.png differ diff --git a/graphics/items/icons/insect_plate.png b/graphics/items/icons/insect_plate.png index 993e420da1a2..23bee90932f2 100644 Binary files a/graphics/items/icons/insect_plate.png and b/graphics/items/icons/insect_plate.png differ diff --git a/graphics/items/icons/iron_ball.png b/graphics/items/icons/iron_ball.png index e1f82bde1d5f..994641c8d320 100644 Binary files a/graphics/items/icons/iron_ball.png and b/graphics/items/icons/iron_ball.png differ diff --git a/graphics/items/icons/iron_plate.png b/graphics/items/icons/iron_plate.png index 08a3cb8b9964..d4a778e4df15 100644 Binary files a/graphics/items/icons/iron_plate.png and b/graphics/items/icons/iron_plate.png differ diff --git a/graphics/items/icons/jaboca_berry.png b/graphics/items/icons/jaboca_berry.png index da6d029b081f..41cbeb174abb 100755 Binary files a/graphics/items/icons/jaboca_berry.png and b/graphics/items/icons/jaboca_berry.png differ diff --git a/graphics/items/icons/jaw_fossil.png b/graphics/items/icons/jaw_fossil.png index a52a7579fd7c..5691efc13bcb 100755 Binary files a/graphics/items/icons/jaw_fossil.png and b/graphics/items/icons/jaw_fossil.png differ diff --git a/graphics/items/icons/kasib_berry.png b/graphics/items/icons/kasib_berry.png index c09fa20dec70..a62c3e95cbc5 100755 Binary files a/graphics/items/icons/kasib_berry.png and b/graphics/items/icons/kasib_berry.png differ diff --git a/graphics/items/icons/kebia_berry.png b/graphics/items/icons/kebia_berry.png index a4b5a43939c8..ba679f626bcb 100755 Binary files a/graphics/items/icons/kebia_berry.png and b/graphics/items/icons/kebia_berry.png differ diff --git a/graphics/items/icons/kee_berry.png b/graphics/items/icons/kee_berry.png index 83749d1b8342..bbd6c53cf2ea 100755 Binary files a/graphics/items/icons/kee_berry.png and b/graphics/items/icons/kee_berry.png differ diff --git a/graphics/items/icons/lagging_tail.png b/graphics/items/icons/lagging_tail.png index 3299515b6c0e..3d35e633c890 100644 Binary files a/graphics/items/icons/lagging_tail.png and b/graphics/items/icons/lagging_tail.png differ diff --git a/graphics/items/icons/leaders_crest.png b/graphics/items/icons/leaders_crest.png new file mode 100644 index 000000000000..b105fcd29d95 Binary files /dev/null and b/graphics/items/icons/leaders_crest.png differ diff --git a/graphics/items/icons/life_orb.png b/graphics/items/icons/life_orb.png index 9a9ed7c68272..68aaa8e51adf 100644 Binary files a/graphics/items/icons/life_orb.png and b/graphics/items/icons/life_orb.png differ diff --git a/graphics/items/icons/light_clay.png b/graphics/items/icons/light_clay.png index 7cc3e63801f3..0007ea8c89d3 100644 Binary files a/graphics/items/icons/light_clay.png and b/graphics/items/icons/light_clay.png differ diff --git a/graphics/items/icons/linking_cord.png b/graphics/items/icons/linking_cord.png new file mode 100644 index 000000000000..a3f92da04b75 Binary files /dev/null and b/graphics/items/icons/linking_cord.png differ diff --git a/graphics/items/icons/loaded_dice.png b/graphics/items/icons/loaded_dice.png new file mode 100644 index 000000000000..1295450928df Binary files /dev/null and b/graphics/items/icons/loaded_dice.png differ diff --git a/graphics/items/icons/lucarionite.png b/graphics/items/icons/lucarionite.png index ea4955c8a0ce..b42991487288 100644 Binary files a/graphics/items/icons/lucarionite.png and b/graphics/items/icons/lucarionite.png differ diff --git a/graphics/items/icons/luck_incense.png b/graphics/items/icons/luck_incense.png index 396ab2f61321..6a14050cf925 100755 Binary files a/graphics/items/icons/luck_incense.png and b/graphics/items/icons/luck_incense.png differ diff --git a/graphics/items/icons/luminous_moss.png b/graphics/items/icons/luminous_moss.png index 6ee31c5e1b2e..b15ba36d8e3c 100755 Binary files a/graphics/items/icons/luminous_moss.png and b/graphics/items/icons/luminous_moss.png differ diff --git a/graphics/items/icons/lustrous_globe.png b/graphics/items/icons/lustrous_globe.png new file mode 100644 index 000000000000..c0e8e885df97 Binary files /dev/null and b/graphics/items/icons/lustrous_globe.png differ diff --git a/graphics/items/icons/lustrous_orb.png b/graphics/items/icons/lustrous_orb.png index 08b452aba90d..ab931ff46849 100644 Binary files a/graphics/items/icons/lustrous_orb.png and b/graphics/items/icons/lustrous_orb.png differ diff --git a/graphics/items/icons/magmarizer.png b/graphics/items/icons/magmarizer.png index fcaf04b44609..41a1b50caecb 100755 Binary files a/graphics/items/icons/magmarizer.png and b/graphics/items/icons/magmarizer.png differ diff --git a/graphics/items/icons/malicious_armor.png b/graphics/items/icons/malicious_armor.png new file mode 100644 index 000000000000..931850013a6d Binary files /dev/null and b/graphics/items/icons/malicious_armor.png differ diff --git a/graphics/items/icons/maranga_berry.png b/graphics/items/icons/maranga_berry.png index 2551c0167b24..d56ce9643c4c 100755 Binary files a/graphics/items/icons/maranga_berry.png and b/graphics/items/icons/maranga_berry.png differ diff --git a/graphics/items/icons/meadow_plate.png b/graphics/items/icons/meadow_plate.png index 5cec7fc16726..6571446bb5ff 100644 Binary files a/graphics/items/icons/meadow_plate.png and b/graphics/items/icons/meadow_plate.png differ diff --git a/graphics/items/icons/metronome.png b/graphics/items/icons/metronome.png index 4aa57f95e0c3..4270fcaedaa7 100644 Binary files a/graphics/items/icons/metronome.png and b/graphics/items/icons/metronome.png differ diff --git a/graphics/items/icons/micle_berry.png b/graphics/items/icons/micle_berry.png index 74e011d0e846..5e108e5a19bd 100755 Binary files a/graphics/items/icons/micle_berry.png and b/graphics/items/icons/micle_berry.png differ diff --git a/graphics/items/icons/mind_plate.png b/graphics/items/icons/mind_plate.png index dfe89ddbb51c..12af8f9ea812 100644 Binary files a/graphics/items/icons/mind_plate.png and b/graphics/items/icons/mind_plate.png differ diff --git a/graphics/items/icons/mirror_herb.png b/graphics/items/icons/mirror_herb.png new file mode 100644 index 000000000000..e792bad8294c Binary files /dev/null and b/graphics/items/icons/mirror_herb.png differ diff --git a/graphics/items/icons/muscle_band.png b/graphics/items/icons/muscle_band.png index b374760a7121..1954f8a56bda 100644 Binary files a/graphics/items/icons/muscle_band.png and b/graphics/items/icons/muscle_band.png differ diff --git a/graphics/items/icons/normal_gem.png b/graphics/items/icons/normal_gem.png index c57142c32414..5d8cbf7bfded 100644 Binary files a/graphics/items/icons/normal_gem.png and b/graphics/items/icons/normal_gem.png differ diff --git a/graphics/items/icons/occa_berry.png b/graphics/items/icons/occa_berry.png index 05d9860fb5b6..aa37cf3f6284 100755 Binary files a/graphics/items/icons/occa_berry.png and b/graphics/items/icons/occa_berry.png differ diff --git a/graphics/items/icons/odd_incense.png b/graphics/items/icons/odd_incense.png index 11c7d24f7da5..9d5f7d2abe2f 100755 Binary files a/graphics/items/icons/odd_incense.png and b/graphics/items/icons/odd_incense.png differ diff --git a/graphics/items/icons/odd_keystone.png b/graphics/items/icons/odd_keystone.png index 8ef2d3cdb536..8da9f26aa9f0 100755 Binary files a/graphics/items/icons/odd_keystone.png and b/graphics/items/icons/odd_keystone.png differ diff --git a/graphics/items/icons/old_gateau.png b/graphics/items/icons/old_gateau.png index 064c997a53bd..93edb8f97e3e 100755 Binary files a/graphics/items/icons/old_gateau.png and b/graphics/items/icons/old_gateau.png differ diff --git a/graphics/items/icons/oval_stone.png b/graphics/items/icons/oval_stone.png index 27e0a7ccf2e8..08e8d96be17b 100755 Binary files a/graphics/items/icons/oval_stone.png and b/graphics/items/icons/oval_stone.png differ diff --git a/graphics/items/icons/passho_berry.png b/graphics/items/icons/passho_berry.png index cdf3756078f0..c23145cd9b2b 100755 Binary files a/graphics/items/icons/passho_berry.png and b/graphics/items/icons/passho_berry.png differ diff --git a/graphics/items/icons/payapa_berry.png b/graphics/items/icons/payapa_berry.png index fe021c473ec4..fd9ac891aa3e 100755 Binary files a/graphics/items/icons/payapa_berry.png and b/graphics/items/icons/payapa_berry.png differ diff --git a/graphics/items/icons/peat_block.png b/graphics/items/icons/peat_block.png new file mode 100644 index 000000000000..9c106598756e Binary files /dev/null and b/graphics/items/icons/peat_block.png differ diff --git a/graphics/items/icons/pink_apricorn.png b/graphics/items/icons/pink_apricorn.png index abcedcba49d7..817e0140c395 100755 Binary files a/graphics/items/icons/pink_apricorn.png and b/graphics/items/icons/pink_apricorn.png differ diff --git a/graphics/items/icons/pink_nectar.png b/graphics/items/icons/pink_nectar.png index 21e88d3023f5..9fbe0f76b34f 100755 Binary files a/graphics/items/icons/pink_nectar.png and b/graphics/items/icons/pink_nectar.png differ diff --git a/graphics/items/icons/plume_fossil.png b/graphics/items/icons/plume_fossil.png index cf98166b31c5..3662964aba2f 100755 Binary files a/graphics/items/icons/plume_fossil.png and b/graphics/items/icons/plume_fossil.png differ diff --git a/graphics/items/icons/poison_gem.png b/graphics/items/icons/poison_gem.png index ab339eb718de..8e78855276e9 100644 Binary files a/graphics/items/icons/poison_gem.png and b/graphics/items/icons/poison_gem.png differ diff --git a/graphics/items/icons/poison_memory.png b/graphics/items/icons/poison_memory.png index e665d8176263..270c8697dd91 100755 Binary files a/graphics/items/icons/poison_memory.png and b/graphics/items/icons/poison_memory.png differ diff --git a/graphics/items/icons/poke_radar.png b/graphics/items/icons/poke_radar.png index f0de8796ac0b..ca4e0477a32c 100644 Binary files a/graphics/items/icons/poke_radar.png and b/graphics/items/icons/poke_radar.png differ diff --git a/graphics/items/icons/power_anklet.png b/graphics/items/icons/power_anklet.png index 3a2091c8ee86..be1982645b98 100755 Binary files a/graphics/items/icons/power_anklet.png and b/graphics/items/icons/power_anklet.png differ diff --git a/graphics/items/icons/power_band.png b/graphics/items/icons/power_band.png index a88e5391b15e..d46374279d16 100755 Binary files a/graphics/items/icons/power_band.png and b/graphics/items/icons/power_band.png differ diff --git a/graphics/items/icons/power_belt.png b/graphics/items/icons/power_belt.png index e4273f85c649..456793fb9903 100755 Binary files a/graphics/items/icons/power_belt.png and b/graphics/items/icons/power_belt.png differ diff --git a/graphics/items/icons/power_bracer.png b/graphics/items/icons/power_bracer.png index 54aa34844bd5..9d3d37781bfd 100755 Binary files a/graphics/items/icons/power_bracer.png and b/graphics/items/icons/power_bracer.png differ diff --git a/graphics/items/icons/power_herb.png b/graphics/items/icons/power_herb.png index 947996c4cdd6..68225447fbc6 100644 Binary files a/graphics/items/icons/power_herb.png and b/graphics/items/icons/power_herb.png differ diff --git a/graphics/items/icons/power_lens.png b/graphics/items/icons/power_lens.png index b18d91186037..742db4b4dfaa 100755 Binary files a/graphics/items/icons/power_lens.png and b/graphics/items/icons/power_lens.png differ diff --git a/graphics/items/icons/power_weight.png b/graphics/items/icons/power_weight.png index 149679c38703..221416007cf7 100755 Binary files a/graphics/items/icons/power_weight.png and b/graphics/items/icons/power_weight.png differ diff --git a/graphics/items/icons/prism_scale.png b/graphics/items/icons/prism_scale.png index 335816ddbcc4..f992c3bd84fd 100755 Binary files a/graphics/items/icons/prism_scale.png and b/graphics/items/icons/prism_scale.png differ diff --git a/graphics/items/icons/protector.png b/graphics/items/icons/protector.png index fa88ae155606..5ba93c919ba3 100755 Binary files a/graphics/items/icons/protector.png and b/graphics/items/icons/protector.png differ diff --git a/graphics/items/icons/psychic_gem.png b/graphics/items/icons/psychic_gem.png index 6b84f38daba8..b73184955efb 100644 Binary files a/graphics/items/icons/psychic_gem.png and b/graphics/items/icons/psychic_gem.png differ diff --git a/graphics/items/icons/psychic_memory.png b/graphics/items/icons/psychic_memory.png index beda2c22df19..6a5aea79a762 100755 Binary files a/graphics/items/icons/psychic_memory.png and b/graphics/items/icons/psychic_memory.png differ diff --git a/graphics/items/icons/punching_glove.png b/graphics/items/icons/punching_glove.png new file mode 100644 index 000000000000..f0a1438a4e95 Binary files /dev/null and b/graphics/items/icons/punching_glove.png differ diff --git a/graphics/items/icons/pure_incense.png b/graphics/items/icons/pure_incense.png index 8657683b1882..eb5345f014c9 100755 Binary files a/graphics/items/icons/pure_incense.png and b/graphics/items/icons/pure_incense.png differ diff --git a/graphics/items/icons/purple_nectar.png b/graphics/items/icons/purple_nectar.png index 59111f1e4e40..f792b5ff558e 100755 Binary files a/graphics/items/icons/purple_nectar.png and b/graphics/items/icons/purple_nectar.png differ diff --git a/graphics/items/icons/quick_powder.png b/graphics/items/icons/quick_powder.png index d83b0b506257..fa56dcca7c26 100644 Binary files a/graphics/items/icons/quick_powder.png and b/graphics/items/icons/quick_powder.png differ diff --git a/graphics/items/icons/rare_bone.png b/graphics/items/icons/rare_bone.png index 80b4af9d58c1..eb5665a351af 100755 Binary files a/graphics/items/icons/rare_bone.png and b/graphics/items/icons/rare_bone.png differ diff --git a/graphics/items/icons/razor_claw.png b/graphics/items/icons/razor_claw.png index 59c27fc809c3..e9530521cba4 100755 Binary files a/graphics/items/icons/razor_claw.png and b/graphics/items/icons/razor_claw.png differ diff --git a/graphics/items/icons/razor_fang.png b/graphics/items/icons/razor_fang.png index dd54b98e794f..17dd1a042a3c 100755 Binary files a/graphics/items/icons/razor_fang.png and b/graphics/items/icons/razor_fang.png differ diff --git a/graphics/items/icons/reaper_cloth.png b/graphics/items/icons/reaper_cloth.png index 73f0874426a2..f4f0bfdb4875 100755 Binary files a/graphics/items/icons/reaper_cloth.png and b/graphics/items/icons/reaper_cloth.png differ diff --git a/graphics/items/icons/red_apricorn.png b/graphics/items/icons/red_apricorn.png index 52d219c07397..aaa952f77312 100755 Binary files a/graphics/items/icons/red_apricorn.png and b/graphics/items/icons/red_apricorn.png differ diff --git a/graphics/items/icons/red_card.png b/graphics/items/icons/red_card.png index 1d07d827fa80..88c8bf0c171c 100755 Binary files a/graphics/items/icons/red_card.png and b/graphics/items/icons/red_card.png differ diff --git a/graphics/items/icons/red_nectar.png b/graphics/items/icons/red_nectar.png index 1d2058dca1bb..73710370e494 100755 Binary files a/graphics/items/icons/red_nectar.png and b/graphics/items/icons/red_nectar.png differ diff --git a/graphics/items/icons/rindo_berry.png b/graphics/items/icons/rindo_berry.png index 4729e188c017..56a144e953f0 100755 Binary files a/graphics/items/icons/rindo_berry.png and b/graphics/items/icons/rindo_berry.png differ diff --git a/graphics/items/icons/ring_target.png b/graphics/items/icons/ring_target.png index fae2b944bee3..08b044df7667 100755 Binary files a/graphics/items/icons/ring_target.png and b/graphics/items/icons/ring_target.png differ diff --git a/graphics/items/icons/rock_gem.png b/graphics/items/icons/rock_gem.png index 6d6070b51615..fdf634b730a4 100644 Binary files a/graphics/items/icons/rock_gem.png and b/graphics/items/icons/rock_gem.png differ diff --git a/graphics/items/icons/rock_incense.png b/graphics/items/icons/rock_incense.png index 04a3d1b5c233..a79f08927fb3 100755 Binary files a/graphics/items/icons/rock_incense.png and b/graphics/items/icons/rock_incense.png differ diff --git a/graphics/items/icons/rock_memory.png b/graphics/items/icons/rock_memory.png index 32d46fea49a3..9e6ce8fdb824 100755 Binary files a/graphics/items/icons/rock_memory.png and b/graphics/items/icons/rock_memory.png differ diff --git a/graphics/items/icons/rocky_helmet.png b/graphics/items/icons/rocky_helmet.png index 006a9f8aa4a1..72613a206e40 100755 Binary files a/graphics/items/icons/rocky_helmet.png and b/graphics/items/icons/rocky_helmet.png differ diff --git a/graphics/items/icons/rose_incense.png b/graphics/items/icons/rose_incense.png index c6b6abcc3607..95bfc77e1f8e 100755 Binary files a/graphics/items/icons/rose_incense.png and b/graphics/items/icons/rose_incense.png differ diff --git a/graphics/items/icons/roseli_berry.png b/graphics/items/icons/roseli_berry.png index 7487cb2a4c6e..11756b42d4e6 100755 Binary files a/graphics/items/icons/roseli_berry.png and b/graphics/items/icons/roseli_berry.png differ diff --git a/graphics/items/icons/rowap_berry.png b/graphics/items/icons/rowap_berry.png index a25d39838fad..318ff9bd1350 100755 Binary files a/graphics/items/icons/rowap_berry.png and b/graphics/items/icons/rowap_berry.png differ diff --git a/graphics/items/icons/sachet.png b/graphics/items/icons/sachet.png index 32c566a91da2..e1b2774086c6 100755 Binary files a/graphics/items/icons/sachet.png and b/graphics/items/icons/sachet.png differ diff --git a/graphics/items/icons/safety_goggles.png b/graphics/items/icons/safety_goggles.png index 7a1efab67adf..2381790f2a3b 100644 Binary files a/graphics/items/icons/safety_goggles.png and b/graphics/items/icons/safety_goggles.png differ diff --git a/graphics/items/icons/sail_fossil.png b/graphics/items/icons/sail_fossil.png index 4c6514820e4c..acf7f13ba2d9 100755 Binary files a/graphics/items/icons/sail_fossil.png and b/graphics/items/icons/sail_fossil.png differ diff --git a/graphics/items/icons/scroll_of_darkness.png b/graphics/items/icons/scroll_of_darkness.png new file mode 100644 index 000000000000..52591273be0e Binary files /dev/null and b/graphics/items/icons/scroll_of_darkness.png differ diff --git a/graphics/items/icons/scroll_of_waters.png b/graphics/items/icons/scroll_of_waters.png new file mode 100644 index 000000000000..c3a1af9b607b Binary files /dev/null and b/graphics/items/icons/scroll_of_waters.png differ diff --git a/graphics/items/icons/shed_shell.png b/graphics/items/icons/shed_shell.png index 6e02ff4a3a8b..a3df4d15c2d3 100644 Binary files a/graphics/items/icons/shed_shell.png and b/graphics/items/icons/shed_shell.png differ diff --git a/graphics/items/icons/shiny_charm.png b/graphics/items/icons/shiny_charm.png index 3829154cd5a3..fd2c97ac8361 100644 Binary files a/graphics/items/icons/shiny_charm.png and b/graphics/items/icons/shiny_charm.png differ diff --git a/graphics/items/icons/shiny_stone.png b/graphics/items/icons/shiny_stone.png index d48db4d86a27..a54091d4aa1b 100755 Binary files a/graphics/items/icons/shiny_stone.png and b/graphics/items/icons/shiny_stone.png differ diff --git a/graphics/items/icons/shock_drive.png b/graphics/items/icons/shock_drive.png index 2ac62f6cee29..99f8e512c412 100644 Binary files a/graphics/items/icons/shock_drive.png and b/graphics/items/icons/shock_drive.png differ diff --git a/graphics/items/icons/shuca_berry.png b/graphics/items/icons/shuca_berry.png index cc99671876d9..f26a80f7ac01 100755 Binary files a/graphics/items/icons/shuca_berry.png and b/graphics/items/icons/shuca_berry.png differ diff --git a/graphics/items/icons/skull_fossil.png b/graphics/items/icons/skull_fossil.png index 1868983468c0..2f82900c1542 100755 Binary files a/graphics/items/icons/skull_fossil.png and b/graphics/items/icons/skull_fossil.png differ diff --git a/graphics/items/icons/sky_plate.png b/graphics/items/icons/sky_plate.png index f64b14aff6d0..0d2a910bcae4 100644 Binary files a/graphics/items/icons/sky_plate.png and b/graphics/items/icons/sky_plate.png differ diff --git a/graphics/items/icons/smooth_rock.png b/graphics/items/icons/smooth_rock.png index 8db8ef11f5b4..31715570fb64 100644 Binary files a/graphics/items/icons/smooth_rock.png and b/graphics/items/icons/smooth_rock.png differ diff --git a/graphics/items/icons/snowball.png b/graphics/items/icons/snowball.png index 3ba834ae342a..516b1cbd86e9 100755 Binary files a/graphics/items/icons/snowball.png and b/graphics/items/icons/snowball.png differ diff --git a/graphics/items/icons/splash_plate.png b/graphics/items/icons/splash_plate.png index b290e8100142..c75fe5473609 100644 Binary files a/graphics/items/icons/splash_plate.png and b/graphics/items/icons/splash_plate.png differ diff --git a/graphics/items/icons/spooky_plate.png b/graphics/items/icons/spooky_plate.png index 215657bcc674..d3dbfaf0c82c 100644 Binary files a/graphics/items/icons/spooky_plate.png and b/graphics/items/icons/spooky_plate.png differ diff --git a/graphics/items/icons/steel_gem.png b/graphics/items/icons/steel_gem.png index 252dc2d47ea1..65495811f35a 100644 Binary files a/graphics/items/icons/steel_gem.png and b/graphics/items/icons/steel_gem.png differ diff --git a/graphics/items/icons/steel_memory.png b/graphics/items/icons/steel_memory.png index b9329e2d0260..b404ad320982 100755 Binary files a/graphics/items/icons/steel_memory.png and b/graphics/items/icons/steel_memory.png differ diff --git a/graphics/items/icons/sticky_barb.png b/graphics/items/icons/sticky_barb.png index 735d3a051f35..8147e8de74d1 100644 Binary files a/graphics/items/icons/sticky_barb.png and b/graphics/items/icons/sticky_barb.png differ diff --git a/graphics/items/icons/stone_plate.png b/graphics/items/icons/stone_plate.png index 8af90a8a655d..4aa9ba284898 100644 Binary files a/graphics/items/icons/stone_plate.png and b/graphics/items/icons/stone_plate.png differ diff --git a/graphics/items/icons/sweet_heart.png b/graphics/items/icons/sweet_heart.png index 06b592022f69..6c9ece30d47d 100755 Binary files a/graphics/items/icons/sweet_heart.png and b/graphics/items/icons/sweet_heart.png differ diff --git a/graphics/items/icons/tanga_berry.png b/graphics/items/icons/tanga_berry.png index 37f8e2465647..1c552fb6d6f5 100755 Binary files a/graphics/items/icons/tanga_berry.png and b/graphics/items/icons/tanga_berry.png differ diff --git a/graphics/items/icons/tera_orb.png b/graphics/items/icons/tera_orb.png new file mode 100644 index 000000000000..03ecb8e82c2d Binary files /dev/null and b/graphics/items/icons/tera_orb.png differ diff --git a/graphics/items/icons/tiny_bamboo_shoot.png b/graphics/items/icons/tiny_bamboo_shoot.png new file mode 100644 index 000000000000..6b24c7e383e4 Binary files /dev/null and b/graphics/items/icons/tiny_bamboo_shoot.png differ diff --git a/graphics/items/icons/toxic_orb.png b/graphics/items/icons/toxic_orb.png index d63ad4fa3ab6..4b385799c0e6 100644 Binary files a/graphics/items/icons/toxic_orb.png and b/graphics/items/icons/toxic_orb.png differ diff --git a/graphics/items/icons/toxic_plate.png b/graphics/items/icons/toxic_plate.png index de64d6c20181..f282c0f3a7d2 100644 Binary files a/graphics/items/icons/toxic_plate.png and b/graphics/items/icons/toxic_plate.png differ diff --git a/graphics/items/icons/wacan_berry.png b/graphics/items/icons/wacan_berry.png index af113c9b58ae..61e94c642749 100755 Binary files a/graphics/items/icons/wacan_berry.png and b/graphics/items/icons/wacan_berry.png differ diff --git a/graphics/items/icons/water_gem.png b/graphics/items/icons/water_gem.png index 79e0ca07f310..555d92ccca9b 100644 Binary files a/graphics/items/icons/water_gem.png and b/graphics/items/icons/water_gem.png differ diff --git a/graphics/items/icons/water_memory.png b/graphics/items/icons/water_memory.png index d7096f57cc1b..054c05d11618 100755 Binary files a/graphics/items/icons/water_memory.png and b/graphics/items/icons/water_memory.png differ diff --git a/graphics/items/icons/wave_incense.png b/graphics/items/icons/wave_incense.png index aec3fd05efd0..5fc560eb86b7 100755 Binary files a/graphics/items/icons/wave_incense.png and b/graphics/items/icons/wave_incense.png differ diff --git a/graphics/items/icons/weakness_policy.png b/graphics/items/icons/weakness_policy.png index d8f0b45531de..76d26e7e493c 100755 Binary files a/graphics/items/icons/weakness_policy.png and b/graphics/items/icons/weakness_policy.png differ diff --git a/graphics/items/icons/whipped_dream.png b/graphics/items/icons/whipped_dream.png index 9cf9c959a708..0d3b4249844d 100755 Binary files a/graphics/items/icons/whipped_dream.png and b/graphics/items/icons/whipped_dream.png differ diff --git a/graphics/items/icons/white_apricorn.png b/graphics/items/icons/white_apricorn.png index c2ea56174237..976779af7019 100755 Binary files a/graphics/items/icons/white_apricorn.png and b/graphics/items/icons/white_apricorn.png differ diff --git a/graphics/items/icons/wide_lens.png b/graphics/items/icons/wide_lens.png index ea432dc8de9f..dd1e92c2c29e 100644 Binary files a/graphics/items/icons/wide_lens.png and b/graphics/items/icons/wide_lens.png differ diff --git a/graphics/items/icons/wise_glasses.png b/graphics/items/icons/wise_glasses.png index a3982f181628..5500baa320f3 100644 Binary files a/graphics/items/icons/wise_glasses.png and b/graphics/items/icons/wise_glasses.png differ diff --git a/graphics/items/icons/x_special_defense.png b/graphics/items/icons/x_special_defense.png index 54a3e00fdfc4..18dd6d5cc8ae 100755 Binary files a/graphics/items/icons/x_special_defense.png and b/graphics/items/icons/x_special_defense.png differ diff --git a/graphics/items/icons/yache_berry.png b/graphics/items/icons/yache_berry.png index 08bb40fcfbdf..1d53ed633849 100755 Binary files a/graphics/items/icons/yache_berry.png and b/graphics/items/icons/yache_berry.png differ diff --git a/graphics/items/icons/yellow_apricorn.png b/graphics/items/icons/yellow_apricorn.png index 4dd12c5eb664..293b4054f216 100755 Binary files a/graphics/items/icons/yellow_apricorn.png and b/graphics/items/icons/yellow_apricorn.png differ diff --git a/graphics/items/icons/yellow_nectar.png b/graphics/items/icons/yellow_nectar.png index fff8ae6977c5..c097f4092645 100755 Binary files a/graphics/items/icons/yellow_nectar.png and b/graphics/items/icons/yellow_nectar.png differ diff --git a/graphics/items/icons/zap_plate.png b/graphics/items/icons/zap_plate.png index 80fed9a1e587..3e355ca99592 100644 Binary files a/graphics/items/icons/zap_plate.png and b/graphics/items/icons/zap_plate.png differ diff --git a/graphics/items/icons/zoom_lens.png b/graphics/items/icons/zoom_lens.png index 167619aa64e1..c5350960e330 100644 Binary files a/graphics/items/icons/zoom_lens.png and b/graphics/items/icons/zoom_lens.png differ diff --git a/graphics/object_events/pics/berry_trees/chople.png b/graphics/object_events/pics/berry_trees/chople.png index fc70a9af59a4..5377a7fa4032 100644 Binary files a/graphics/object_events/pics/berry_trees/chople.png and b/graphics/object_events/pics/berry_trees/chople.png differ diff --git a/graphics/object_events/pics/berry_trees/custap.png b/graphics/object_events/pics/berry_trees/custap.png index 3cb5ccfb10cd..a64a89275e62 100644 Binary files a/graphics/object_events/pics/berry_trees/custap.png and b/graphics/object_events/pics/berry_trees/custap.png differ diff --git a/graphics/object_events/pics/berry_trees/jaboca.png b/graphics/object_events/pics/berry_trees/jaboca.png index 36e51eb01579..a85ca438d734 100644 Binary files a/graphics/object_events/pics/berry_trees/jaboca.png and b/graphics/object_events/pics/berry_trees/jaboca.png differ diff --git a/graphics/object_events/pics/berry_trees/kasib.png b/graphics/object_events/pics/berry_trees/kasib.png index b8a8401e8d18..dcd988ecde9d 100644 Binary files a/graphics/object_events/pics/berry_trees/kasib.png and b/graphics/object_events/pics/berry_trees/kasib.png differ diff --git a/graphics/object_events/pics/berry_trees/kebia.png b/graphics/object_events/pics/berry_trees/kebia.png index 03efc73c1f5c..413ef9b4b43d 100644 Binary files a/graphics/object_events/pics/berry_trees/kebia.png and b/graphics/object_events/pics/berry_trees/kebia.png differ diff --git a/graphics/object_events/pics/berry_trees/micle.png b/graphics/object_events/pics/berry_trees/micle.png index 365ff43b2153..b7d05e5dd88e 100644 Binary files a/graphics/object_events/pics/berry_trees/micle.png and b/graphics/object_events/pics/berry_trees/micle.png differ diff --git a/graphics/object_events/pics/berry_trees/occa.png b/graphics/object_events/pics/berry_trees/occa.png index 8685264f9b41..cd90f48851c3 100644 Binary files a/graphics/object_events/pics/berry_trees/occa.png and b/graphics/object_events/pics/berry_trees/occa.png differ diff --git a/graphics/object_events/pics/berry_trees/payapa.png b/graphics/object_events/pics/berry_trees/payapa.png index 14aed0c235f6..99233cab7cac 100644 Binary files a/graphics/object_events/pics/berry_trees/payapa.png and b/graphics/object_events/pics/berry_trees/payapa.png differ diff --git a/graphics/object_events/pics/berry_trees/roseli.png b/graphics/object_events/pics/berry_trees/roseli.png index f59bf93a2d9e..6e8aab1584d1 100644 Binary files a/graphics/object_events/pics/berry_trees/roseli.png and b/graphics/object_events/pics/berry_trees/roseli.png differ diff --git a/graphics/object_events/pics/berry_trees/shuca.png b/graphics/object_events/pics/berry_trees/shuca.png index 4e95bb4f6acf..dec160ae6740 100644 Binary files a/graphics/object_events/pics/berry_trees/shuca.png and b/graphics/object_events/pics/berry_trees/shuca.png differ diff --git a/graphics/object_events/pics/berry_trees/tanga.png b/graphics/object_events/pics/berry_trees/tanga.png index 28e86f6f4d98..0bba806bc466 100644 Binary files a/graphics/object_events/pics/berry_trees/tanga.png and b/graphics/object_events/pics/berry_trees/tanga.png differ diff --git a/graphics/pokeblock/use_screen/graph_data.bin b/graphics/pokeblock/use_screen/graph_data.bin index 5f8f364fc907..75581f46e235 100644 Binary files a/graphics/pokeblock/use_screen/graph_data.bin and b/graphics/pokeblock/use_screen/graph_data.bin differ diff --git a/graphics/pokeblock/use_screen/mon_frame.bin b/graphics/pokeblock/use_screen/mon_frame.bin index 4e7c2d4adc32..130dcff29c74 100644 Binary files a/graphics/pokeblock/use_screen/mon_frame.bin and b/graphics/pokeblock/use_screen/mon_frame.bin differ diff --git a/graphics/pokemon/abomasnow/footprint.png b/graphics/pokemon/abomasnow/footprint.png index 51788b73a018..346ca954d935 100644 Binary files a/graphics/pokemon/abomasnow/footprint.png and b/graphics/pokemon/abomasnow/footprint.png differ diff --git a/graphics/pokemon/abomasnow/front.png b/graphics/pokemon/abomasnow/front.png deleted file mode 100644 index eec72b647671..000000000000 Binary files a/graphics/pokemon/abomasnow/front.png and /dev/null differ diff --git a/graphics/pokemon/abra/footprint.png b/graphics/pokemon/abra/footprint.png index 42b5e416f322..073c7871915c 100644 Binary files a/graphics/pokemon/abra/footprint.png and b/graphics/pokemon/abra/footprint.png differ diff --git a/graphics/pokemon/abra/front.png b/graphics/pokemon/abra/front.png deleted file mode 100644 index 0880fbb48e8a..000000000000 Binary files a/graphics/pokemon/abra/front.png and /dev/null differ diff --git a/graphics/pokemon/absol/footprint.png b/graphics/pokemon/absol/footprint.png index da4076f78051..f6280e1be235 100644 Binary files a/graphics/pokemon/absol/footprint.png and b/graphics/pokemon/absol/footprint.png differ diff --git a/graphics/pokemon/absol/front.png b/graphics/pokemon/absol/front.png deleted file mode 100644 index 0026dd2744c4..000000000000 Binary files a/graphics/pokemon/absol/front.png and /dev/null differ diff --git a/graphics/pokemon/absol/icon.png b/graphics/pokemon/absol/icon.png index 681d98d1d9ee..d58d208a7bd3 100644 Binary files a/graphics/pokemon/absol/icon.png and b/graphics/pokemon/absol/icon.png differ diff --git a/graphics/pokemon/accelgor/footprint.png b/graphics/pokemon/accelgor/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/accelgor/footprint.png and b/graphics/pokemon/accelgor/footprint.png differ diff --git a/graphics/pokemon/accelgor/front.png b/graphics/pokemon/accelgor/front.png deleted file mode 100644 index 1f55e29acdbe..000000000000 Binary files a/graphics/pokemon/accelgor/front.png and /dev/null differ diff --git a/graphics/pokemon/accelgor/icon.png b/graphics/pokemon/accelgor/icon.png index d8538bec1d87..5d971a97b24c 100644 Binary files a/graphics/pokemon/accelgor/icon.png and b/graphics/pokemon/accelgor/icon.png differ diff --git a/graphics/pokemon/aegislash/blade/front.png b/graphics/pokemon/aegislash/blade/front.png deleted file mode 100644 index 288bdf5eb07b..000000000000 Binary files a/graphics/pokemon/aegislash/blade/front.png and /dev/null differ diff --git a/graphics/pokemon/aegislash/footprint.png b/graphics/pokemon/aegislash/footprint.png index 90850b47444f..2449369fd6b8 100644 Binary files a/graphics/pokemon/aegislash/footprint.png and b/graphics/pokemon/aegislash/footprint.png differ diff --git a/graphics/pokemon/aegislash/front.png b/graphics/pokemon/aegislash/front.png deleted file mode 100644 index 2e468aa8ece8..000000000000 Binary files a/graphics/pokemon/aegislash/front.png and /dev/null differ diff --git a/graphics/pokemon/aerodactyl/footprint.png b/graphics/pokemon/aerodactyl/footprint.png index 7c5d3e6c19ca..b127884a536f 100644 Binary files a/graphics/pokemon/aerodactyl/footprint.png and b/graphics/pokemon/aerodactyl/footprint.png differ diff --git a/graphics/pokemon/aerodactyl/front.png b/graphics/pokemon/aerodactyl/front.png deleted file mode 100644 index 36181a6c2647..000000000000 Binary files a/graphics/pokemon/aerodactyl/front.png and /dev/null differ diff --git a/graphics/pokemon/aerodactyl/icon.png b/graphics/pokemon/aerodactyl/icon.png index e354dbb0dcaa..58c96d57c7fc 100644 Binary files a/graphics/pokemon/aerodactyl/icon.png and b/graphics/pokemon/aerodactyl/icon.png differ diff --git a/graphics/pokemon/aggron/footprint.png b/graphics/pokemon/aggron/footprint.png index 3ba6d480ba6d..7c9d7177c917 100644 Binary files a/graphics/pokemon/aggron/footprint.png and b/graphics/pokemon/aggron/footprint.png differ diff --git a/graphics/pokemon/aggron/front.png b/graphics/pokemon/aggron/front.png deleted file mode 100644 index 0d59202cac6f..000000000000 Binary files a/graphics/pokemon/aggron/front.png and /dev/null differ diff --git a/graphics/pokemon/aggron/icon.png b/graphics/pokemon/aggron/icon.png index 5410a384f66a..3eaa0605429f 100644 Binary files a/graphics/pokemon/aggron/icon.png and b/graphics/pokemon/aggron/icon.png differ diff --git a/graphics/pokemon/aipom/footprint.png b/graphics/pokemon/aipom/footprint.png index 67f7f1188bdb..41d8a4a7cb90 100644 Binary files a/graphics/pokemon/aipom/footprint.png and b/graphics/pokemon/aipom/footprint.png differ diff --git a/graphics/pokemon/aipom/front.png b/graphics/pokemon/aipom/front.png deleted file mode 100644 index 227584fcba51..000000000000 Binary files a/graphics/pokemon/aipom/front.png and /dev/null differ diff --git a/graphics/pokemon/aipom/icon.png b/graphics/pokemon/aipom/icon.png index 43822f098048..294ab74eb43d 100644 Binary files a/graphics/pokemon/aipom/icon.png and b/graphics/pokemon/aipom/icon.png differ diff --git a/graphics/pokemon/alakazam/footprint.png b/graphics/pokemon/alakazam/footprint.png index e3c3795cf5f3..c6d8f6ebe6ac 100644 Binary files a/graphics/pokemon/alakazam/footprint.png and b/graphics/pokemon/alakazam/footprint.png differ diff --git a/graphics/pokemon/alakazam/front.png b/graphics/pokemon/alakazam/front.png deleted file mode 100644 index 9632f20dd9ba..000000000000 Binary files a/graphics/pokemon/alakazam/front.png and /dev/null differ diff --git a/graphics/pokemon/alakazam/icon.png b/graphics/pokemon/alakazam/icon.png index 6d136899d988..e823e94cd36a 100644 Binary files a/graphics/pokemon/alakazam/icon.png and b/graphics/pokemon/alakazam/icon.png differ diff --git a/graphics/pokemon/alcremie/caramel_swirl/front.png b/graphics/pokemon/alcremie/caramel_swirl/front.png index 42f6c0482c0f..3b52242b14c3 100644 Binary files a/graphics/pokemon/alcremie/caramel_swirl/front.png and b/graphics/pokemon/alcremie/caramel_swirl/front.png differ diff --git a/graphics/pokemon/alcremie/footprint.png b/graphics/pokemon/alcremie/footprint.png index aeea2e966e0f..2449369fd6b8 100644 Binary files a/graphics/pokemon/alcremie/footprint.png and b/graphics/pokemon/alcremie/footprint.png differ diff --git a/graphics/pokemon/alcremie/lemon_cream/front.png b/graphics/pokemon/alcremie/lemon_cream/front.png index b913e40be83c..4fff85bc541a 100644 Binary files a/graphics/pokemon/alcremie/lemon_cream/front.png and b/graphics/pokemon/alcremie/lemon_cream/front.png differ diff --git a/graphics/pokemon/alcremie/matcha_cream/back.png b/graphics/pokemon/alcremie/matcha_cream/back.png index 8f93ef92ef56..2ef7e2d3bdf0 100644 Binary files a/graphics/pokemon/alcremie/matcha_cream/back.png and b/graphics/pokemon/alcremie/matcha_cream/back.png differ diff --git a/graphics/pokemon/alcremie/matcha_cream/front.png b/graphics/pokemon/alcremie/matcha_cream/front.png index 39c3ab855a7e..7dfe1b3073b5 100644 Binary files a/graphics/pokemon/alcremie/matcha_cream/front.png and b/graphics/pokemon/alcremie/matcha_cream/front.png differ diff --git a/graphics/pokemon/alcremie/mint_cream/front.png b/graphics/pokemon/alcremie/mint_cream/front.png index 68d3b5a4c028..e019cb098ac3 100644 Binary files a/graphics/pokemon/alcremie/mint_cream/front.png and b/graphics/pokemon/alcremie/mint_cream/front.png differ diff --git a/graphics/pokemon/alcremie/rainbow_swirl/back.png b/graphics/pokemon/alcremie/rainbow_swirl/back.png index e7f558454d93..06abc68128d0 100644 Binary files a/graphics/pokemon/alcremie/rainbow_swirl/back.png and b/graphics/pokemon/alcremie/rainbow_swirl/back.png differ diff --git a/graphics/pokemon/alcremie/ruby_cream/front.png b/graphics/pokemon/alcremie/ruby_cream/front.png index 7196c7054bf2..3f59ec810787 100644 Binary files a/graphics/pokemon/alcremie/ruby_cream/front.png and b/graphics/pokemon/alcremie/ruby_cream/front.png differ diff --git a/graphics/pokemon/alcremie/salted_cream/front.png b/graphics/pokemon/alcremie/salted_cream/front.png index 08a75d2e8eb3..13cc028c444a 100644 Binary files a/graphics/pokemon/alcremie/salted_cream/front.png and b/graphics/pokemon/alcremie/salted_cream/front.png differ diff --git a/graphics/pokemon/alomomola/footprint.png b/graphics/pokemon/alomomola/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/alomomola/footprint.png and b/graphics/pokemon/alomomola/footprint.png differ diff --git a/graphics/pokemon/alomomola/front.png b/graphics/pokemon/alomomola/front.png deleted file mode 100644 index bbf90238b4b6..000000000000 Binary files a/graphics/pokemon/alomomola/front.png and /dev/null differ diff --git a/graphics/pokemon/altaria/back.png b/graphics/pokemon/altaria/back.png index 2f69affea0d1..77b89ed0b621 100644 Binary files a/graphics/pokemon/altaria/back.png and b/graphics/pokemon/altaria/back.png differ diff --git a/graphics/pokemon/altaria/footprint.png b/graphics/pokemon/altaria/footprint.png index 6c65deae5395..3310f5d0d2a2 100644 Binary files a/graphics/pokemon/altaria/footprint.png and b/graphics/pokemon/altaria/footprint.png differ diff --git a/graphics/pokemon/altaria/front.png b/graphics/pokemon/altaria/front.png deleted file mode 100644 index d22c4b80c397..000000000000 Binary files a/graphics/pokemon/altaria/front.png and /dev/null differ diff --git a/graphics/pokemon/altaria/icon.png b/graphics/pokemon/altaria/icon.png index f1d2698a2aae..8c9bf81982dd 100644 Binary files a/graphics/pokemon/altaria/icon.png and b/graphics/pokemon/altaria/icon.png differ diff --git a/graphics/pokemon/amaura/footprint.png b/graphics/pokemon/amaura/footprint.png index 59e6de9545c2..169bb4cf5b13 100644 Binary files a/graphics/pokemon/amaura/footprint.png and b/graphics/pokemon/amaura/footprint.png differ diff --git a/graphics/pokemon/amaura/front.png b/graphics/pokemon/amaura/front.png deleted file mode 100644 index c9dbac51806a..000000000000 Binary files a/graphics/pokemon/amaura/front.png and /dev/null differ diff --git a/graphics/pokemon/ambipom/footprint.png b/graphics/pokemon/ambipom/footprint.png index cb1be37273e6..0e7f7f63865b 100644 Binary files a/graphics/pokemon/ambipom/footprint.png and b/graphics/pokemon/ambipom/footprint.png differ diff --git a/graphics/pokemon/ambipom/front.png b/graphics/pokemon/ambipom/front.png deleted file mode 100644 index 064cbb4e6045..000000000000 Binary files a/graphics/pokemon/ambipom/front.png and /dev/null differ diff --git a/graphics/pokemon/amoonguss/footprint.png b/graphics/pokemon/amoonguss/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/amoonguss/footprint.png and b/graphics/pokemon/amoonguss/footprint.png differ diff --git a/graphics/pokemon/amoonguss/front.png b/graphics/pokemon/amoonguss/front.png deleted file mode 100644 index baec9f8dda24..000000000000 Binary files a/graphics/pokemon/amoonguss/front.png and /dev/null differ diff --git a/graphics/pokemon/amoonguss/icon.png b/graphics/pokemon/amoonguss/icon.png index a0762f49c3b2..baf24220746f 100644 Binary files a/graphics/pokemon/amoonguss/icon.png and b/graphics/pokemon/amoonguss/icon.png differ diff --git a/graphics/pokemon/ampharos/anim_front.png b/graphics/pokemon/ampharos/anim_front.png index 1b3930f64a13..4e71838b0078 100644 Binary files a/graphics/pokemon/ampharos/anim_front.png and b/graphics/pokemon/ampharos/anim_front.png differ diff --git a/graphics/pokemon/ampharos/back.png b/graphics/pokemon/ampharos/back.png index 80fdc1f23d26..7cba18fe4780 100644 Binary files a/graphics/pokemon/ampharos/back.png and b/graphics/pokemon/ampharos/back.png differ diff --git a/graphics/pokemon/ampharos/footprint.png b/graphics/pokemon/ampharos/footprint.png index bfc2f8034567..6f0cc20f08d3 100644 Binary files a/graphics/pokemon/ampharos/footprint.png and b/graphics/pokemon/ampharos/footprint.png differ diff --git a/graphics/pokemon/ampharos/front.png b/graphics/pokemon/ampharos/front.png deleted file mode 100644 index cc9711f87d9d..000000000000 Binary files a/graphics/pokemon/ampharos/front.png and /dev/null differ diff --git a/graphics/pokemon/ampharos/normal.pal b/graphics/pokemon/ampharos/normal.pal index dd9818d6b055..af1e4ae876ed 100644 --- a/graphics/pokemon/ampharos/normal.pal +++ b/graphics/pokemon/ampharos/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -88 80 88 -248 192 16 -200 136 16 -128 88 48 -192 0 0 -248 232 72 -248 32 32 -248 248 248 -168 0 0 -176 176 176 -224 224 224 -248 176 160 -127 63 75 -198 121 121 +90 90 90 +255 197 16 +205 139 16 +131 90 49 +197 65 0 +255 238 74 +255 98 0 +255 255 255 +139 32 0 +172 172 172 +230 230 230 +255 98 0 +90 0 0 +197 65 0 diff --git a/graphics/pokemon/anorith/footprint.png b/graphics/pokemon/anorith/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/anorith/footprint.png and b/graphics/pokemon/anorith/footprint.png differ diff --git a/graphics/pokemon/anorith/front.png b/graphics/pokemon/anorith/front.png deleted file mode 100644 index e08948a30678..000000000000 Binary files a/graphics/pokemon/anorith/front.png and /dev/null differ diff --git a/graphics/pokemon/appletun/footprint.png b/graphics/pokemon/appletun/footprint.png index f39865658a58..ca1472dc82a8 100644 Binary files a/graphics/pokemon/appletun/footprint.png and b/graphics/pokemon/appletun/footprint.png differ diff --git a/graphics/pokemon/applin/footprint.png b/graphics/pokemon/applin/footprint.png index 915b2fc2ae71..2449369fd6b8 100644 Binary files a/graphics/pokemon/applin/footprint.png and b/graphics/pokemon/applin/footprint.png differ diff --git a/graphics/pokemon/araquanid/footprint.png b/graphics/pokemon/araquanid/footprint.png index 4740af4274ca..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/araquanid/footprint.png and b/graphics/pokemon/araquanid/footprint.png differ diff --git a/graphics/pokemon/arbok/footprint.png b/graphics/pokemon/arbok/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/arbok/footprint.png and b/graphics/pokemon/arbok/footprint.png differ diff --git a/graphics/pokemon/arbok/front.png b/graphics/pokemon/arbok/front.png deleted file mode 100644 index b9fe8eaf836a..000000000000 Binary files a/graphics/pokemon/arbok/front.png and /dev/null differ diff --git a/graphics/pokemon/arcanine/footprint.png b/graphics/pokemon/arcanine/footprint.png index 96b7f93ae2ce..994cefce6f56 100644 Binary files a/graphics/pokemon/arcanine/footprint.png and b/graphics/pokemon/arcanine/footprint.png differ diff --git a/graphics/pokemon/arcanine/front.png b/graphics/pokemon/arcanine/front.png deleted file mode 100644 index f5c33c8728c2..000000000000 Binary files a/graphics/pokemon/arcanine/front.png and /dev/null differ diff --git a/graphics/pokemon/arcanine/hisuian/back.png b/graphics/pokemon/arcanine/hisuian/back.png old mode 100644 new mode 100755 index a6fdca501ad8..cf835c6f1d03 Binary files a/graphics/pokemon/arcanine/hisuian/back.png and b/graphics/pokemon/arcanine/hisuian/back.png differ diff --git a/graphics/pokemon/arcanine/hisuian/front.png b/graphics/pokemon/arcanine/hisuian/front.png old mode 100644 new mode 100755 index 6adc0d93acdc..d546311f1359 Binary files a/graphics/pokemon/arcanine/hisuian/front.png and b/graphics/pokemon/arcanine/hisuian/front.png differ diff --git a/graphics/pokemon/arcanine/hisuian/normal.pal b/graphics/pokemon/arcanine/hisuian/normal.pal old mode 100644 new mode 100755 index 7502c6a4cc22..b59cd30cf934 --- a/graphics/pokemon/arcanine/hisuian/normal.pal +++ b/graphics/pokemon/arcanine/hisuian/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -48 40 32 +32 44 40 +128 140 128 +16 16 16 +80 100 96 +96 12 0 +248 120 96 +232 72 48 +168 40 32 +184 180 176 +248 248 248 0 0 0 -136 136 128 -96 96 80 -232 72 56 -176 48 32 -216 216 208 -248 248 240 -72 64 56 -40 40 40 -208 88 64 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/arcanine/hisuian/shiny.pal b/graphics/pokemon/arcanine/hisuian/shiny.pal old mode 100644 new mode 100755 index c786e1990fcb..61de91d20ba3 --- a/graphics/pokemon/arcanine/hisuian/shiny.pal +++ b/graphics/pokemon/arcanine/hisuian/shiny.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -48 40 32 +32 44 40 +128 140 128 +16 16 16 +80 100 96 +90 65 16 +231 184 41 +231 184 41 +181 126 0 +184 180 176 +248 248 248 0 0 0 -136 136 128 -96 96 80 -224 208 40 -176 152 0 -216 216 208 -248 248 240 -72 64 56 -40 40 40 -224 208 40 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/arceus/footprint.png b/graphics/pokemon/arceus/footprint.png index b06a466c0613..b148dc11db06 100644 Binary files a/graphics/pokemon/arceus/footprint.png and b/graphics/pokemon/arceus/footprint.png differ diff --git a/graphics/pokemon/arceus/front.png b/graphics/pokemon/arceus/front.png deleted file mode 100644 index c143e4e69baf..000000000000 Binary files a/graphics/pokemon/arceus/front.png and /dev/null differ diff --git a/graphics/pokemon/arceus/icon.png b/graphics/pokemon/arceus/icon.png index 155bfc35bdb7..6141c35e8c92 100644 Binary files a/graphics/pokemon/arceus/icon.png and b/graphics/pokemon/arceus/icon.png differ diff --git a/graphics/pokemon/archen/footprint.png b/graphics/pokemon/archen/footprint.png index 6ad18c33c223..fd4dff8d672c 100644 Binary files a/graphics/pokemon/archen/footprint.png and b/graphics/pokemon/archen/footprint.png differ diff --git a/graphics/pokemon/archen/front.png b/graphics/pokemon/archen/front.png deleted file mode 100644 index ebd166254a37..000000000000 Binary files a/graphics/pokemon/archen/front.png and /dev/null differ diff --git a/graphics/pokemon/archeops/footprint.png b/graphics/pokemon/archeops/footprint.png index 68e20f253ad9..8edd0d6f917b 100644 Binary files a/graphics/pokemon/archeops/footprint.png and b/graphics/pokemon/archeops/footprint.png differ diff --git a/graphics/pokemon/archeops/front.png b/graphics/pokemon/archeops/front.png deleted file mode 100644 index bbbf6e3a24f9..000000000000 Binary files a/graphics/pokemon/archeops/front.png and /dev/null differ diff --git a/graphics/pokemon/arctovish/footprint.png b/graphics/pokemon/arctovish/footprint.png index 0ba63e72316e..40f947b46355 100644 Binary files a/graphics/pokemon/arctovish/footprint.png and b/graphics/pokemon/arctovish/footprint.png differ diff --git a/graphics/pokemon/arctozolt/footprint.png b/graphics/pokemon/arctozolt/footprint.png index 2ed399586c1a..40f947b46355 100644 Binary files a/graphics/pokemon/arctozolt/footprint.png and b/graphics/pokemon/arctozolt/footprint.png differ diff --git a/graphics/pokemon/ariados/anim_front.png b/graphics/pokemon/ariados/anim_front.png index c579c4c01492..024aa0bebf9e 100644 Binary files a/graphics/pokemon/ariados/anim_front.png and b/graphics/pokemon/ariados/anim_front.png differ diff --git a/graphics/pokemon/ariados/footprint.png b/graphics/pokemon/ariados/footprint.png index cee3b1ba5b53..e766c18df2e6 100644 Binary files a/graphics/pokemon/ariados/footprint.png and b/graphics/pokemon/ariados/footprint.png differ diff --git a/graphics/pokemon/ariados/front.png b/graphics/pokemon/ariados/front.png deleted file mode 100644 index 8d11202a2c91..000000000000 Binary files a/graphics/pokemon/ariados/front.png and /dev/null differ diff --git a/graphics/pokemon/ariados/icon.png b/graphics/pokemon/ariados/icon.png index c6ff8c5f8533..e6206a3cb5a3 100644 Binary files a/graphics/pokemon/ariados/icon.png and b/graphics/pokemon/ariados/icon.png differ diff --git a/graphics/pokemon/ariados/normal.pal b/graphics/pokemon/ariados/normal.pal index 5939c4fcbac3..66aaa7bdb48f 100644 --- a/graphics/pokemon/ariados/normal.pal +++ b/graphics/pokemon/ariados/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 80 24 -248 216 64 +106 82 24 +255 222 65 0 0 0 -192 176 72 -152 88 192 -184 128 224 -96 48 152 -136 32 0 -200 40 56 -240 72 112 -240 136 152 -104 104 104 -184 184 184 -248 248 248 -80 0 0 +197 180 74 +156 90 197 +189 131 230 +98 49 156 +139 32 0 +197 65 65 +255 90 74 +255 139 115 +106 106 106 +189 189 189 +255 255 255 +139 32 0 diff --git a/graphics/pokemon/armaldo/footprint.png b/graphics/pokemon/armaldo/footprint.png index d12d2e42c098..b6c085f3dfd2 100644 Binary files a/graphics/pokemon/armaldo/footprint.png and b/graphics/pokemon/armaldo/footprint.png differ diff --git a/graphics/pokemon/armaldo/front.png b/graphics/pokemon/armaldo/front.png deleted file mode 100644 index 2ab629340582..000000000000 Binary files a/graphics/pokemon/armaldo/front.png and /dev/null differ diff --git a/graphics/pokemon/armaldo/icon.png b/graphics/pokemon/armaldo/icon.png index 5dba6557dfd9..1277dbbbe0ee 100644 Binary files a/graphics/pokemon/armaldo/icon.png and b/graphics/pokemon/armaldo/icon.png differ diff --git a/graphics/pokemon/aromatisse/footprint.png b/graphics/pokemon/aromatisse/footprint.png index b4df4e542253..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/aromatisse/footprint.png and b/graphics/pokemon/aromatisse/footprint.png differ diff --git a/graphics/pokemon/aromatisse/front.png b/graphics/pokemon/aromatisse/front.png deleted file mode 100644 index 3fcd8c4f6ce9..000000000000 Binary files a/graphics/pokemon/aromatisse/front.png and /dev/null differ diff --git a/graphics/pokemon/aron/footprint.png b/graphics/pokemon/aron/footprint.png index fe53cb5ebd86..6a87f3c11b29 100644 Binary files a/graphics/pokemon/aron/footprint.png and b/graphics/pokemon/aron/footprint.png differ diff --git a/graphics/pokemon/aron/front.png b/graphics/pokemon/aron/front.png deleted file mode 100644 index 72b0da8ec860..000000000000 Binary files a/graphics/pokemon/aron/front.png and /dev/null differ diff --git a/graphics/pokemon/arrokuda/footprint.png b/graphics/pokemon/arrokuda/footprint.png index 62b788fddc1e..2449369fd6b8 100644 Binary files a/graphics/pokemon/arrokuda/footprint.png and b/graphics/pokemon/arrokuda/footprint.png differ diff --git a/graphics/pokemon/articuno/footprint.png b/graphics/pokemon/articuno/footprint.png index e6e4fa9ef33b..b364b5211b9a 100644 Binary files a/graphics/pokemon/articuno/footprint.png and b/graphics/pokemon/articuno/footprint.png differ diff --git a/graphics/pokemon/articuno/front.png b/graphics/pokemon/articuno/front.png deleted file mode 100644 index 71b411a3806c..000000000000 Binary files a/graphics/pokemon/articuno/front.png and /dev/null differ diff --git a/graphics/pokemon/articuno/icon.png b/graphics/pokemon/articuno/icon.png index 79685a2d1262..c50044963418 100644 Binary files a/graphics/pokemon/articuno/icon.png and b/graphics/pokemon/articuno/icon.png differ diff --git a/graphics/pokemon/audino/footprint.png b/graphics/pokemon/audino/footprint.png index 92f58a91e839..ad192e531f70 100644 Binary files a/graphics/pokemon/audino/footprint.png and b/graphics/pokemon/audino/footprint.png differ diff --git a/graphics/pokemon/audino/front.png b/graphics/pokemon/audino/front.png deleted file mode 100644 index 5aad0eb990cb..000000000000 Binary files a/graphics/pokemon/audino/front.png and /dev/null differ diff --git a/graphics/pokemon/aurorus/footprint.png b/graphics/pokemon/aurorus/footprint.png index bb11fc27d3d9..8448898d12bd 100644 Binary files a/graphics/pokemon/aurorus/footprint.png and b/graphics/pokemon/aurorus/footprint.png differ diff --git a/graphics/pokemon/aurorus/front.png b/graphics/pokemon/aurorus/front.png deleted file mode 100644 index 00a50a2727b6..000000000000 Binary files a/graphics/pokemon/aurorus/front.png and /dev/null differ diff --git a/graphics/pokemon/avalugg/footprint.png b/graphics/pokemon/avalugg/footprint.png index bbed0cff2af3..6d2f7ebce4af 100644 Binary files a/graphics/pokemon/avalugg/footprint.png and b/graphics/pokemon/avalugg/footprint.png differ diff --git a/graphics/pokemon/avalugg/front.png b/graphics/pokemon/avalugg/front.png deleted file mode 100644 index 76bce56675d6..000000000000 Binary files a/graphics/pokemon/avalugg/front.png and /dev/null differ diff --git a/graphics/pokemon/avalugg/hisuian/back.png b/graphics/pokemon/avalugg/hisuian/back.png old mode 100644 new mode 100755 index 885fd4c13a1c..6bf621584946 Binary files a/graphics/pokemon/avalugg/hisuian/back.png and b/graphics/pokemon/avalugg/hisuian/back.png differ diff --git a/graphics/pokemon/avalugg/hisuian/front.png b/graphics/pokemon/avalugg/hisuian/front.png old mode 100644 new mode 100755 index b120608e1f62..58201f335fc7 Binary files a/graphics/pokemon/avalugg/hisuian/front.png and b/graphics/pokemon/avalugg/hisuian/front.png differ diff --git a/graphics/pokemon/avalugg/hisuian/normal.pal b/graphics/pokemon/avalugg/hisuian/normal.pal old mode 100644 new mode 100755 index 8055ef92abc8..f64e40434d18 --- a/graphics/pokemon/avalugg/hisuian/normal.pal +++ b/graphics/pokemon/avalugg/hisuian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 168 208 -80 112 144 -184 240 248 -104 80 64 -128 208 240 -248 248 248 -80 40 24 -8 8 8 +80 96 104 +176 224 240 +136 176 192 +16 16 16 +104 84 64 +232 244 248 +80 60 48 +72 44 32 144 120 96 -144 64 32 -200 200 216 -144 152 168 -248 192 0 -88 56 56 +112 112 112 +184 188 184 +232 232 232 +144 68 32 +240 184 72 0 0 0 diff --git a/graphics/pokemon/avalugg/hisuian/shiny.pal b/graphics/pokemon/avalugg/hisuian/shiny.pal old mode 100644 new mode 100755 index 9e547358cc6a..b3492268318f --- a/graphics/pokemon/avalugg/hisuian/shiny.pal +++ b/graphics/pokemon/avalugg/hisuian/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 152 208 -80 96 168 -184 232 248 -200 160 144 -128 192 240 -248 248 248 -112 80 72 -8 8 8 -232 192 176 -248 176 24 -248 176 120 -248 136 88 -248 176 24 -160 128 120 +80 96 104 +176 224 240 +136 176 192 +16 16 16 +104 84 64 +232 244 248 +80 60 48 +72 44 32 +144 120 96 +149 41 26 +213 79 53 +249 131 79 +144 68 32 +240 184 72 0 0 0 diff --git a/graphics/pokemon/axew/footprint.png b/graphics/pokemon/axew/footprint.png index 42f0448237ae..47c6c4c73fe3 100644 Binary files a/graphics/pokemon/axew/footprint.png and b/graphics/pokemon/axew/footprint.png differ diff --git a/graphics/pokemon/axew/front.png b/graphics/pokemon/axew/front.png deleted file mode 100644 index 993b4432146f..000000000000 Binary files a/graphics/pokemon/axew/front.png and /dev/null differ diff --git a/graphics/pokemon/azelf/footprint.png b/graphics/pokemon/azelf/footprint.png index b99863315b18..f1b5a7a094fd 100644 Binary files a/graphics/pokemon/azelf/footprint.png and b/graphics/pokemon/azelf/footprint.png differ diff --git a/graphics/pokemon/azelf/front.png b/graphics/pokemon/azelf/front.png deleted file mode 100644 index 67d155bbf058..000000000000 Binary files a/graphics/pokemon/azelf/front.png and /dev/null differ diff --git a/graphics/pokemon/azelf/icon.png b/graphics/pokemon/azelf/icon.png index c8d0af3d9f0d..816b6f5cc7b4 100644 Binary files a/graphics/pokemon/azelf/icon.png and b/graphics/pokemon/azelf/icon.png differ diff --git a/graphics/pokemon/azumarill/footprint.png b/graphics/pokemon/azumarill/footprint.png index 904bf941c7a4..8c47c843043f 100644 Binary files a/graphics/pokemon/azumarill/footprint.png and b/graphics/pokemon/azumarill/footprint.png differ diff --git a/graphics/pokemon/azumarill/front.png b/graphics/pokemon/azumarill/front.png deleted file mode 100644 index 6513b5f21158..000000000000 Binary files a/graphics/pokemon/azumarill/front.png and /dev/null differ diff --git a/graphics/pokemon/azumarill/icon.png b/graphics/pokemon/azumarill/icon.png index cc79407be894..8d1a6267602f 100644 Binary files a/graphics/pokemon/azumarill/icon.png and b/graphics/pokemon/azumarill/icon.png differ diff --git a/graphics/pokemon/azurill/footprint.png b/graphics/pokemon/azurill/footprint.png index 60db8e03b896..0839c9c089a5 100644 Binary files a/graphics/pokemon/azurill/footprint.png and b/graphics/pokemon/azurill/footprint.png differ diff --git a/graphics/pokemon/azurill/front.png b/graphics/pokemon/azurill/front.png deleted file mode 100644 index 269e181dcfe4..000000000000 Binary files a/graphics/pokemon/azurill/front.png and /dev/null differ diff --git a/graphics/pokemon/bagon/back.png b/graphics/pokemon/bagon/back.png index fe88902d1cde..1bab33f32c35 100644 Binary files a/graphics/pokemon/bagon/back.png and b/graphics/pokemon/bagon/back.png differ diff --git a/graphics/pokemon/bagon/footprint.png b/graphics/pokemon/bagon/footprint.png index 9a93a7564e0f..aec25f6acb3b 100644 Binary files a/graphics/pokemon/bagon/footprint.png and b/graphics/pokemon/bagon/footprint.png differ diff --git a/graphics/pokemon/bagon/front.png b/graphics/pokemon/bagon/front.png deleted file mode 100644 index 21314fe08212..000000000000 Binary files a/graphics/pokemon/bagon/front.png and /dev/null differ diff --git a/graphics/pokemon/baltoy/footprint.png b/graphics/pokemon/baltoy/footprint.png index 6965dbe60faf..a9b0e33c2899 100644 Binary files a/graphics/pokemon/baltoy/footprint.png and b/graphics/pokemon/baltoy/footprint.png differ diff --git a/graphics/pokemon/baltoy/front.png b/graphics/pokemon/baltoy/front.png deleted file mode 100644 index c1bdd8e9060f..000000000000 Binary files a/graphics/pokemon/baltoy/front.png and /dev/null differ diff --git a/graphics/pokemon/banette/footprint.png b/graphics/pokemon/banette/footprint.png index a15814f2f0c2..20f6b642e3f2 100644 Binary files a/graphics/pokemon/banette/footprint.png and b/graphics/pokemon/banette/footprint.png differ diff --git a/graphics/pokemon/banette/front.png b/graphics/pokemon/banette/front.png deleted file mode 100644 index 48a48753ec09..000000000000 Binary files a/graphics/pokemon/banette/front.png and /dev/null differ diff --git a/graphics/pokemon/barbaracle/footprint.png b/graphics/pokemon/barbaracle/footprint.png index b36b1c3eef38..6f1a76391238 100644 Binary files a/graphics/pokemon/barbaracle/footprint.png and b/graphics/pokemon/barbaracle/footprint.png differ diff --git a/graphics/pokemon/barbaracle/front.png b/graphics/pokemon/barbaracle/front.png deleted file mode 100644 index 268ee3cc7ecb..000000000000 Binary files a/graphics/pokemon/barbaracle/front.png and /dev/null differ diff --git a/graphics/pokemon/barboach/footprint.png b/graphics/pokemon/barboach/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/barboach/footprint.png and b/graphics/pokemon/barboach/footprint.png differ diff --git a/graphics/pokemon/barboach/front.png b/graphics/pokemon/barboach/front.png deleted file mode 100644 index 78f0c69eb764..000000000000 Binary files a/graphics/pokemon/barboach/front.png and /dev/null differ diff --git a/graphics/pokemon/barraskewda/footprint.png b/graphics/pokemon/barraskewda/footprint.png index 795e7e445c6c..2449369fd6b8 100644 Binary files a/graphics/pokemon/barraskewda/footprint.png and b/graphics/pokemon/barraskewda/footprint.png differ diff --git a/graphics/pokemon/basculegion/back.png b/graphics/pokemon/basculegion/back.png new file mode 100755 index 000000000000..cb4e0c0883e7 Binary files /dev/null and b/graphics/pokemon/basculegion/back.png differ diff --git a/graphics/pokemon/basculegion/female/back.png b/graphics/pokemon/basculegion/female/back.png new file mode 100755 index 000000000000..a1ce4263e250 Binary files /dev/null and b/graphics/pokemon/basculegion/female/back.png differ diff --git a/graphics/pokemon/basculegion/female/front.png b/graphics/pokemon/basculegion/female/front.png new file mode 100755 index 000000000000..5b91d3a84c45 Binary files /dev/null and b/graphics/pokemon/basculegion/female/front.png differ diff --git a/graphics/pokemon/basculegion/iconf.png b/graphics/pokemon/basculegion/female/icon.png similarity index 100% rename from graphics/pokemon/basculegion/iconf.png rename to graphics/pokemon/basculegion/female/icon.png diff --git a/graphics/pokemon/basculegion/female/normal.pal b/graphics/pokemon/basculegion/female/normal.pal new file mode 100755 index 000000000000..b5b76f062fa1 --- /dev/null +++ b/graphics/pokemon/basculegion/female/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +98 98 98 +16 16 16 +46 92 120 +171 222 224 +230 230 230 +227 242 239 +164 164 164 +122 168 175 +32 49 57 +65 82 82 +55 140 89 +21 64 34 +34 96 61 +16 16 18 +99 62 41 diff --git a/graphics/pokemon/basculegion/female/shiny.pal b/graphics/pokemon/basculegion/female/shiny.pal new file mode 100755 index 000000000000..863a0f773e70 --- /dev/null +++ b/graphics/pokemon/basculegion/female/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +98 98 98 +16 16 16 +112 96 64 +216 208 112 +230 230 230 +248 236 160 +164 164 164 +160 152 72 +32 49 57 +64 80 80 +96 144 48 +21 64 34 +72 108 56 +16 16 18 +99 62 41 diff --git a/graphics/pokemon/basculegion/front.png b/graphics/pokemon/basculegion/front.png new file mode 100755 index 000000000000..4d46e3cbc637 Binary files /dev/null and b/graphics/pokemon/basculegion/front.png differ diff --git a/graphics/pokemon/basculegion/normal.pal b/graphics/pokemon/basculegion/normal.pal new file mode 100755 index 000000000000..75d4b45a1800 --- /dev/null +++ b/graphics/pokemon/basculegion/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 140 88 +192 52 80 +160 164 160 +16 64 32 +16 16 16 +120 24 24 +248 164 200 +96 60 40 +224 228 224 +64 80 80 +32 48 56 +32 96 56 +248 80 120 +96 96 96 +56 84 72 diff --git a/graphics/pokemon/basculegion/shiny.pal b/graphics/pokemon/basculegion/shiny.pal new file mode 100755 index 000000000000..a725255a9bb1 --- /dev/null +++ b/graphics/pokemon/basculegion/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 144 48 +144 72 176 +160 164 160 +16 64 32 +16 16 16 +88 36 112 +224 176 240 +96 60 40 +224 228 224 +60 82 76 +32 48 56 +72 108 56 +184 84 232 +96 96 96 +56 84 72 diff --git a/graphics/pokemon/basculin/blue_striped/back.png b/graphics/pokemon/basculin/blue_striped/back.png index fbe338ab816e..9578c6665f90 100644 Binary files a/graphics/pokemon/basculin/blue_striped/back.png and b/graphics/pokemon/basculin/blue_striped/back.png differ diff --git a/graphics/pokemon/basculin/blue_striped/icon.png b/graphics/pokemon/basculin/blue_striped/icon.png index f0450849a15c..d84ec283fc60 100644 Binary files a/graphics/pokemon/basculin/blue_striped/icon.png and b/graphics/pokemon/basculin/blue_striped/icon.png differ diff --git a/graphics/pokemon/basculin/footprint.png b/graphics/pokemon/basculin/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/basculin/footprint.png and b/graphics/pokemon/basculin/footprint.png differ diff --git a/graphics/pokemon/basculin/front.png b/graphics/pokemon/basculin/front.png deleted file mode 100644 index ac3f6ded33d0..000000000000 Binary files a/graphics/pokemon/basculin/front.png and /dev/null differ diff --git a/graphics/pokemon/bastiodon/footprint.png b/graphics/pokemon/bastiodon/footprint.png index cd62716e2f28..5193e88fd8c7 100644 Binary files a/graphics/pokemon/bastiodon/footprint.png and b/graphics/pokemon/bastiodon/footprint.png differ diff --git a/graphics/pokemon/bastiodon/front.png b/graphics/pokemon/bastiodon/front.png deleted file mode 100644 index c662e853c17b..000000000000 Binary files a/graphics/pokemon/bastiodon/front.png and /dev/null differ diff --git a/graphics/pokemon/bayleef/anim_front.png b/graphics/pokemon/bayleef/anim_front.png index 3b5b90f511e1..05f44e73b544 100644 Binary files a/graphics/pokemon/bayleef/anim_front.png and b/graphics/pokemon/bayleef/anim_front.png differ diff --git a/graphics/pokemon/bayleef/footprint.png b/graphics/pokemon/bayleef/footprint.png index 04b375a7a7e5..031cc59537ca 100644 Binary files a/graphics/pokemon/bayleef/footprint.png and b/graphics/pokemon/bayleef/footprint.png differ diff --git a/graphics/pokemon/bayleef/front.png b/graphics/pokemon/bayleef/front.png deleted file mode 100644 index 24cec2bcbfb8..000000000000 Binary files a/graphics/pokemon/bayleef/front.png and /dev/null differ diff --git a/graphics/pokemon/bayleef/normal.pal b/graphics/pokemon/bayleef/normal.pal index 2602bc25770f..d055dd9350ec 100644 --- a/graphics/pokemon/bayleef/normal.pal +++ b/graphics/pokemon/bayleef/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 80 8 -80 120 8 -136 184 48 -104 152 16 +41 82 8 +82 123 8 +139 189 49 +106 156 16 16 16 16 -168 128 40 -104 80 0 -248 232 160 -216 184 112 -248 248 248 -248 240 200 -208 56 0 -208 136 80 -96 96 96 -192 192 192 +164 131 24 +106 82 0 +246 230 74 +222 189 41 +255 255 255 +255 255 139 +172 49 0 +213 139 82 +98 98 98 +197 197 197 diff --git a/graphics/pokemon/beartic/back.png b/graphics/pokemon/beartic/back.png index f8bb2707d0da..ab4586f69eda 100644 Binary files a/graphics/pokemon/beartic/back.png and b/graphics/pokemon/beartic/back.png differ diff --git a/graphics/pokemon/beartic/footprint.png b/graphics/pokemon/beartic/footprint.png index 4e37e328a415..e5ea2b38c61b 100644 Binary files a/graphics/pokemon/beartic/footprint.png and b/graphics/pokemon/beartic/footprint.png differ diff --git a/graphics/pokemon/beartic/front.png b/graphics/pokemon/beartic/front.png deleted file mode 100644 index 18d3083c2f21..000000000000 Binary files a/graphics/pokemon/beartic/front.png and /dev/null differ diff --git a/graphics/pokemon/beartic/icon.png b/graphics/pokemon/beartic/icon.png index c4ed605a0ef3..991f9f265d21 100644 Binary files a/graphics/pokemon/beartic/icon.png and b/graphics/pokemon/beartic/icon.png differ diff --git a/graphics/pokemon/beautifly/footprint.png b/graphics/pokemon/beautifly/footprint.png index 49175cb0267f..7111a8b703ab 100644 Binary files a/graphics/pokemon/beautifly/footprint.png and b/graphics/pokemon/beautifly/footprint.png differ diff --git a/graphics/pokemon/beautifly/front.png b/graphics/pokemon/beautifly/front.png deleted file mode 100644 index 41d5bc0ca9fd..000000000000 Binary files a/graphics/pokemon/beautifly/front.png and /dev/null differ diff --git a/graphics/pokemon/beedrill/footprint.png b/graphics/pokemon/beedrill/footprint.png index 5c3f21090f08..475d5235a5af 100644 Binary files a/graphics/pokemon/beedrill/footprint.png and b/graphics/pokemon/beedrill/footprint.png differ diff --git a/graphics/pokemon/beedrill/front.png b/graphics/pokemon/beedrill/front.png deleted file mode 100644 index e1f22b5a7df5..000000000000 Binary files a/graphics/pokemon/beedrill/front.png and /dev/null differ diff --git a/graphics/pokemon/beheeyem/footprint.png b/graphics/pokemon/beheeyem/footprint.png index a8c721650ecb..b543fcf8b54c 100644 Binary files a/graphics/pokemon/beheeyem/footprint.png and b/graphics/pokemon/beheeyem/footprint.png differ diff --git a/graphics/pokemon/beheeyem/front.png b/graphics/pokemon/beheeyem/front.png deleted file mode 100644 index b8817b50b9cf..000000000000 Binary files a/graphics/pokemon/beheeyem/front.png and /dev/null differ diff --git a/graphics/pokemon/beldum/footprint.png b/graphics/pokemon/beldum/footprint.png index 0554eedfe051..c4be8f0bfb31 100644 Binary files a/graphics/pokemon/beldum/footprint.png and b/graphics/pokemon/beldum/footprint.png differ diff --git a/graphics/pokemon/beldum/front.png b/graphics/pokemon/beldum/front.png deleted file mode 100644 index 065d7a8548c0..000000000000 Binary files a/graphics/pokemon/beldum/front.png and /dev/null differ diff --git a/graphics/pokemon/beldum/icon.png b/graphics/pokemon/beldum/icon.png index 8cac3cf71469..af22605458fe 100644 Binary files a/graphics/pokemon/beldum/icon.png and b/graphics/pokemon/beldum/icon.png differ diff --git a/graphics/pokemon/bellossom/footprint.png b/graphics/pokemon/bellossom/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/bellossom/footprint.png and b/graphics/pokemon/bellossom/footprint.png differ diff --git a/graphics/pokemon/bellossom/front.png b/graphics/pokemon/bellossom/front.png deleted file mode 100644 index c0b1a0e3d349..000000000000 Binary files a/graphics/pokemon/bellossom/front.png and /dev/null differ diff --git a/graphics/pokemon/bellsprout/footprint.png b/graphics/pokemon/bellsprout/footprint.png index 8fcf4f4f49fa..6a5edfd61910 100644 Binary files a/graphics/pokemon/bellsprout/footprint.png and b/graphics/pokemon/bellsprout/footprint.png differ diff --git a/graphics/pokemon/bellsprout/front.png b/graphics/pokemon/bellsprout/front.png deleted file mode 100644 index 492c8b29f84e..000000000000 Binary files a/graphics/pokemon/bellsprout/front.png and /dev/null differ diff --git a/graphics/pokemon/bellsprout/icon.png b/graphics/pokemon/bellsprout/icon.png index 59ae8d037ed7..ff6ca2c33716 100644 Binary files a/graphics/pokemon/bellsprout/icon.png and b/graphics/pokemon/bellsprout/icon.png differ diff --git a/graphics/pokemon/bergmite/footprint.png b/graphics/pokemon/bergmite/footprint.png index 78eeb7b0323f..a9b0e33c2899 100644 Binary files a/graphics/pokemon/bergmite/footprint.png and b/graphics/pokemon/bergmite/footprint.png differ diff --git a/graphics/pokemon/bergmite/front.png b/graphics/pokemon/bergmite/front.png deleted file mode 100644 index 8526648893b7..000000000000 Binary files a/graphics/pokemon/bergmite/front.png and /dev/null differ diff --git a/graphics/pokemon/bewear/footprint.png b/graphics/pokemon/bewear/footprint.png index f754f203c946..993ed501ce3f 100644 Binary files a/graphics/pokemon/bewear/footprint.png and b/graphics/pokemon/bewear/footprint.png differ diff --git a/graphics/pokemon/bibarel/footprint.png b/graphics/pokemon/bibarel/footprint.png index 38f8717ebd55..f4fd8ac062e5 100644 Binary files a/graphics/pokemon/bibarel/footprint.png and b/graphics/pokemon/bibarel/footprint.png differ diff --git a/graphics/pokemon/bibarel/front.png b/graphics/pokemon/bibarel/front.png deleted file mode 100644 index 1963eb81a15e..000000000000 Binary files a/graphics/pokemon/bibarel/front.png and /dev/null differ diff --git a/graphics/pokemon/bidoof/anim_frontf.png b/graphics/pokemon/bidoof/anim_frontf.png index 9585a6015c3b..a62f24b7d247 100644 Binary files a/graphics/pokemon/bidoof/anim_frontf.png and b/graphics/pokemon/bidoof/anim_frontf.png differ diff --git a/graphics/pokemon/bidoof/backf.png b/graphics/pokemon/bidoof/backf.png index 5f6bc7e8bc22..a76560fe473c 100644 Binary files a/graphics/pokemon/bidoof/backf.png and b/graphics/pokemon/bidoof/backf.png differ diff --git a/graphics/pokemon/bidoof/footprint.png b/graphics/pokemon/bidoof/footprint.png index 07c1cff78d60..18364358ac4d 100644 Binary files a/graphics/pokemon/bidoof/footprint.png and b/graphics/pokemon/bidoof/footprint.png differ diff --git a/graphics/pokemon/bidoof/front.png b/graphics/pokemon/bidoof/front.png deleted file mode 100644 index 299e487496b3..000000000000 Binary files a/graphics/pokemon/bidoof/front.png and /dev/null differ diff --git a/graphics/pokemon/binacle/footprint.png b/graphics/pokemon/binacle/footprint.png index 9430d42505b4..2449369fd6b8 100644 Binary files a/graphics/pokemon/binacle/footprint.png and b/graphics/pokemon/binacle/footprint.png differ diff --git a/graphics/pokemon/binacle/front.png b/graphics/pokemon/binacle/front.png deleted file mode 100644 index c3d184282424..000000000000 Binary files a/graphics/pokemon/binacle/front.png and /dev/null differ diff --git a/graphics/pokemon/bisharp/footprint.png b/graphics/pokemon/bisharp/footprint.png index 86e3eaf005d3..368eed2f2121 100644 Binary files a/graphics/pokemon/bisharp/footprint.png and b/graphics/pokemon/bisharp/footprint.png differ diff --git a/graphics/pokemon/bisharp/front.png b/graphics/pokemon/bisharp/front.png deleted file mode 100644 index 003da831f914..000000000000 Binary files a/graphics/pokemon/bisharp/front.png and /dev/null differ diff --git a/graphics/pokemon/blacephalon/footprint.png b/graphics/pokemon/blacephalon/footprint.png index 7ae084ee5f70..6e8b15e7e60d 100644 Binary files a/graphics/pokemon/blacephalon/footprint.png and b/graphics/pokemon/blacephalon/footprint.png differ diff --git a/graphics/pokemon/blastoise/footprint.png b/graphics/pokemon/blastoise/footprint.png index b881f92706b0..c2d01389b80a 100644 Binary files a/graphics/pokemon/blastoise/footprint.png and b/graphics/pokemon/blastoise/footprint.png differ diff --git a/graphics/pokemon/blastoise/front.png b/graphics/pokemon/blastoise/front.png deleted file mode 100644 index 0419463d831c..000000000000 Binary files a/graphics/pokemon/blastoise/front.png and /dev/null differ diff --git a/graphics/pokemon/blaziken/footprint.png b/graphics/pokemon/blaziken/footprint.png index cf18a353ab28..371621ba4574 100644 Binary files a/graphics/pokemon/blaziken/footprint.png and b/graphics/pokemon/blaziken/footprint.png differ diff --git a/graphics/pokemon/blaziken/front.png b/graphics/pokemon/blaziken/front.png deleted file mode 100644 index 5336ff9b32db..000000000000 Binary files a/graphics/pokemon/blaziken/front.png and /dev/null differ diff --git a/graphics/pokemon/blipbug/footprint.png b/graphics/pokemon/blipbug/footprint.png index 762f0b03a083..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/blipbug/footprint.png and b/graphics/pokemon/blipbug/footprint.png differ diff --git a/graphics/pokemon/blissey/footprint.png b/graphics/pokemon/blissey/footprint.png index 3da3dbf938db..ae7a7d533d7e 100644 Binary files a/graphics/pokemon/blissey/footprint.png and b/graphics/pokemon/blissey/footprint.png differ diff --git a/graphics/pokemon/blissey/front.png b/graphics/pokemon/blissey/front.png deleted file mode 100644 index 629594beb48c..000000000000 Binary files a/graphics/pokemon/blissey/front.png and /dev/null differ diff --git a/graphics/pokemon/blitzle/footprint.png b/graphics/pokemon/blitzle/footprint.png index a805d8f4e8a8..1e4af3a63a03 100644 Binary files a/graphics/pokemon/blitzle/footprint.png and b/graphics/pokemon/blitzle/footprint.png differ diff --git a/graphics/pokemon/blitzle/front.png b/graphics/pokemon/blitzle/front.png deleted file mode 100644 index 8eb3033d290a..000000000000 Binary files a/graphics/pokemon/blitzle/front.png and /dev/null differ diff --git a/graphics/pokemon/boldore/footprint.png b/graphics/pokemon/boldore/footprint.png index f9a2cd710d13..587b0ee96360 100644 Binary files a/graphics/pokemon/boldore/footprint.png and b/graphics/pokemon/boldore/footprint.png differ diff --git a/graphics/pokemon/boldore/front.png b/graphics/pokemon/boldore/front.png deleted file mode 100644 index d5fef1c2fb1a..000000000000 Binary files a/graphics/pokemon/boldore/front.png and /dev/null differ diff --git a/graphics/pokemon/boltund/footprint.png b/graphics/pokemon/boltund/footprint.png index 91e1defe9a9d..aecf35c717cf 100644 Binary files a/graphics/pokemon/boltund/footprint.png and b/graphics/pokemon/boltund/footprint.png differ diff --git a/graphics/pokemon/bonsly/footprint.png b/graphics/pokemon/bonsly/footprint.png index 88392bd69c42..e6d89085366c 100644 Binary files a/graphics/pokemon/bonsly/footprint.png and b/graphics/pokemon/bonsly/footprint.png differ diff --git a/graphics/pokemon/bonsly/front.png b/graphics/pokemon/bonsly/front.png deleted file mode 100644 index 328a0b031557..000000000000 Binary files a/graphics/pokemon/bonsly/front.png and /dev/null differ diff --git a/graphics/pokemon/bouffalant/footprint.png b/graphics/pokemon/bouffalant/footprint.png index 3415d1655c00..eb9040ca3dbd 100644 Binary files a/graphics/pokemon/bouffalant/footprint.png and b/graphics/pokemon/bouffalant/footprint.png differ diff --git a/graphics/pokemon/bouffalant/front.png b/graphics/pokemon/bouffalant/front.png deleted file mode 100644 index e3562d81616d..000000000000 Binary files a/graphics/pokemon/bouffalant/front.png and /dev/null differ diff --git a/graphics/pokemon/bounsweet/footprint.png b/graphics/pokemon/bounsweet/footprint.png index 0ad5a272edd7..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/bounsweet/footprint.png and b/graphics/pokemon/bounsweet/footprint.png differ diff --git a/graphics/pokemon/braixen/footprint.png b/graphics/pokemon/braixen/footprint.png index 1efae6710194..03f338c34a1a 100644 Binary files a/graphics/pokemon/braixen/footprint.png and b/graphics/pokemon/braixen/footprint.png differ diff --git a/graphics/pokemon/braixen/front.png b/graphics/pokemon/braixen/front.png deleted file mode 100644 index bb090c9d1713..000000000000 Binary files a/graphics/pokemon/braixen/front.png and /dev/null differ diff --git a/graphics/pokemon/braviary/footprint.png b/graphics/pokemon/braviary/footprint.png index be3a74fb0650..692af69162a0 100644 Binary files a/graphics/pokemon/braviary/footprint.png and b/graphics/pokemon/braviary/footprint.png differ diff --git a/graphics/pokemon/braviary/front.png b/graphics/pokemon/braviary/front.png deleted file mode 100644 index 8efa81512e58..000000000000 Binary files a/graphics/pokemon/braviary/front.png and /dev/null differ diff --git a/graphics/pokemon/braviary/hisuian/back.png b/graphics/pokemon/braviary/hisuian/back.png old mode 100644 new mode 100755 index e314179b2b44..947bc46aeb3b Binary files a/graphics/pokemon/braviary/hisuian/back.png and b/graphics/pokemon/braviary/hisuian/back.png differ diff --git a/graphics/pokemon/braviary/hisuian/front.png b/graphics/pokemon/braviary/hisuian/front.png old mode 100644 new mode 100755 index 63fe93214d93..61a5457a5727 Binary files a/graphics/pokemon/braviary/hisuian/front.png and b/graphics/pokemon/braviary/hisuian/front.png differ diff --git a/graphics/pokemon/braviary/hisuian/icon.png b/graphics/pokemon/braviary/hisuian/icon.png old mode 100644 new mode 100755 diff --git a/graphics/pokemon/braviary/hisuian/normal.pal b/graphics/pokemon/braviary/hisuian/normal.pal old mode 100644 new mode 100755 index b792f9ab7e30..e8632fe39218 --- a/graphics/pokemon/braviary/hisuian/normal.pal +++ b/graphics/pokemon/braviary/hisuian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 88 80 -8 8 8 -232 232 224 -184 176 168 -56 56 64 -80 88 88 -152 64 168 -168 96 184 -32 40 40 +184 156 16 +80 188 160 +96 80 32 +16 16 16 +144 60 160 +160 48 48 +232 212 88 144 152 184 -80 184 160 -168 24 24 -240 248 248 -224 192 72 -184 128 56 +228 230 224 +168 100 184 +48 52 64 +104 92 80 +184 176 168 +88 84 104 +240 240 240 diff --git a/graphics/pokemon/braviary/hisuian/shiny.pal b/graphics/pokemon/braviary/hisuian/shiny.pal old mode 100644 new mode 100755 index fea7024017c1..019e8991134f --- a/graphics/pokemon/braviary/hisuian/shiny.pal +++ b/graphics/pokemon/braviary/hisuian/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 24 24 -8 8 8 -64 64 56 -40 40 32 -56 56 64 -80 88 88 -48 176 216 -120 232 240 -32 40 40 -168 248 248 -232 248 248 -96 56 144 -240 248 248 -224 192 72 -184 128 56 +208 160 70 +233 254 252 +103 74 27 +16 16 16 +51 180 217 +96 63 150 +243 215 139 +174 251 251 +71 66 63 +122 234 243 +48 52 64 +30 28 26 +45 41 38 +88 84 104 +240 240 240 diff --git a/graphics/pokemon/breloom/back.png b/graphics/pokemon/breloom/back.png index e8a71c9139e0..9616b079568c 100644 Binary files a/graphics/pokemon/breloom/back.png and b/graphics/pokemon/breloom/back.png differ diff --git a/graphics/pokemon/breloom/footprint.png b/graphics/pokemon/breloom/footprint.png index 98d920669da7..7e940a5d7f9f 100644 Binary files a/graphics/pokemon/breloom/footprint.png and b/graphics/pokemon/breloom/footprint.png differ diff --git a/graphics/pokemon/breloom/front.png b/graphics/pokemon/breloom/front.png deleted file mode 100644 index ebfe14335fd8..000000000000 Binary files a/graphics/pokemon/breloom/front.png and /dev/null differ diff --git a/graphics/pokemon/brionne/footprint.png b/graphics/pokemon/brionne/footprint.png index 7536a6250969..2449369fd6b8 100644 Binary files a/graphics/pokemon/brionne/footprint.png and b/graphics/pokemon/brionne/footprint.png differ diff --git a/graphics/pokemon/bronzong/footprint.png b/graphics/pokemon/bronzong/footprint.png index cf2b13c3aadd..2449369fd6b8 100644 Binary files a/graphics/pokemon/bronzong/footprint.png and b/graphics/pokemon/bronzong/footprint.png differ diff --git a/graphics/pokemon/bronzong/front.png b/graphics/pokemon/bronzong/front.png deleted file mode 100644 index 8ede6d683bd4..000000000000 Binary files a/graphics/pokemon/bronzong/front.png and /dev/null differ diff --git a/graphics/pokemon/bronzor/footprint.png b/graphics/pokemon/bronzor/footprint.png index cf2b13c3aadd..2449369fd6b8 100644 Binary files a/graphics/pokemon/bronzor/footprint.png and b/graphics/pokemon/bronzor/footprint.png differ diff --git a/graphics/pokemon/bronzor/front.png b/graphics/pokemon/bronzor/front.png deleted file mode 100644 index 71a928cc3b4e..000000000000 Binary files a/graphics/pokemon/bronzor/front.png and /dev/null differ diff --git a/graphics/pokemon/bruxish/footprint.png b/graphics/pokemon/bruxish/footprint.png index 9f97b57e6e55..2449369fd6b8 100644 Binary files a/graphics/pokemon/bruxish/footprint.png and b/graphics/pokemon/bruxish/footprint.png differ diff --git a/graphics/pokemon/budew/back.png b/graphics/pokemon/budew/back.png index 4c8478e2a8ff..33a92ba75c2e 100644 Binary files a/graphics/pokemon/budew/back.png and b/graphics/pokemon/budew/back.png differ diff --git a/graphics/pokemon/budew/footprint.png b/graphics/pokemon/budew/footprint.png index 374a42e5df5b..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/budew/footprint.png and b/graphics/pokemon/budew/footprint.png differ diff --git a/graphics/pokemon/budew/front.png b/graphics/pokemon/budew/front.png deleted file mode 100644 index 09a81838ad52..000000000000 Binary files a/graphics/pokemon/budew/front.png and /dev/null differ diff --git a/graphics/pokemon/buizel/footprint.png b/graphics/pokemon/buizel/footprint.png index f94d6b073b31..752c79917f0d 100644 Binary files a/graphics/pokemon/buizel/footprint.png and b/graphics/pokemon/buizel/footprint.png differ diff --git a/graphics/pokemon/buizel/front.png b/graphics/pokemon/buizel/front.png deleted file mode 100644 index e52b77c57136..000000000000 Binary files a/graphics/pokemon/buizel/front.png and /dev/null differ diff --git a/graphics/pokemon/bulbasaur/footprint.png b/graphics/pokemon/bulbasaur/footprint.png index 8e9ab9c6bd25..6dafa96e2bd8 100644 Binary files a/graphics/pokemon/bulbasaur/footprint.png and b/graphics/pokemon/bulbasaur/footprint.png differ diff --git a/graphics/pokemon/bulbasaur/front.png b/graphics/pokemon/bulbasaur/front.png deleted file mode 100644 index cd7a485b97f2..000000000000 Binary files a/graphics/pokemon/bulbasaur/front.png and /dev/null differ diff --git a/graphics/pokemon/buneary/footprint.png b/graphics/pokemon/buneary/footprint.png index 59030d6325f3..e5669275c96e 100644 Binary files a/graphics/pokemon/buneary/footprint.png and b/graphics/pokemon/buneary/footprint.png differ diff --git a/graphics/pokemon/buneary/front.png b/graphics/pokemon/buneary/front.png deleted file mode 100644 index efb01359d430..000000000000 Binary files a/graphics/pokemon/buneary/front.png and /dev/null differ diff --git a/graphics/pokemon/bunnelby/footprint.png b/graphics/pokemon/bunnelby/footprint.png index b7ea8db09999..c2c45ebec4d0 100644 Binary files a/graphics/pokemon/bunnelby/footprint.png and b/graphics/pokemon/bunnelby/footprint.png differ diff --git a/graphics/pokemon/bunnelby/front.png b/graphics/pokemon/bunnelby/front.png deleted file mode 100644 index d307c4ff339e..000000000000 Binary files a/graphics/pokemon/bunnelby/front.png and /dev/null differ diff --git a/graphics/pokemon/burmy/front.png b/graphics/pokemon/burmy/front.png deleted file mode 100644 index 20e449da8702..000000000000 Binary files a/graphics/pokemon/burmy/front.png and /dev/null differ diff --git a/graphics/pokemon/burmy/plant/footprint.png b/graphics/pokemon/burmy/plant/footprint.png index 2055799b3b3c..2449369fd6b8 100644 Binary files a/graphics/pokemon/burmy/plant/footprint.png and b/graphics/pokemon/burmy/plant/footprint.png differ diff --git a/graphics/pokemon/burmy/sandy_cloak/front.png b/graphics/pokemon/burmy/sandy_cloak/front.png deleted file mode 100644 index 13f9c353ad0d..000000000000 Binary files a/graphics/pokemon/burmy/sandy_cloak/front.png and /dev/null differ diff --git a/graphics/pokemon/burmy/trash_cloak/front.png b/graphics/pokemon/burmy/trash_cloak/front.png deleted file mode 100644 index 39004627d58c..000000000000 Binary files a/graphics/pokemon/burmy/trash_cloak/front.png and /dev/null differ diff --git a/graphics/pokemon/butterfree/footprint.png b/graphics/pokemon/butterfree/footprint.png index b2740e9ccc7a..c6b4750d3097 100644 Binary files a/graphics/pokemon/butterfree/footprint.png and b/graphics/pokemon/butterfree/footprint.png differ diff --git a/graphics/pokemon/butterfree/front.png b/graphics/pokemon/butterfree/front.png deleted file mode 100644 index 9f98ee7a355e..000000000000 Binary files a/graphics/pokemon/butterfree/front.png and /dev/null differ diff --git a/graphics/pokemon/butterfree/icon.png b/graphics/pokemon/butterfree/icon.png index 2ea823cf4a06..827ceee0d6a8 100644 Binary files a/graphics/pokemon/butterfree/icon.png and b/graphics/pokemon/butterfree/icon.png differ diff --git a/graphics/pokemon/buzzwole/footprint.png b/graphics/pokemon/buzzwole/footprint.png index 1e3f7c6775fa..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/buzzwole/footprint.png and b/graphics/pokemon/buzzwole/footprint.png differ diff --git a/graphics/pokemon/cacnea/footprint.png b/graphics/pokemon/cacnea/footprint.png index 00b6a8a7e3be..92c2b235a0a2 100644 Binary files a/graphics/pokemon/cacnea/footprint.png and b/graphics/pokemon/cacnea/footprint.png differ diff --git a/graphics/pokemon/cacnea/front.png b/graphics/pokemon/cacnea/front.png deleted file mode 100644 index 2fa30c173079..000000000000 Binary files a/graphics/pokemon/cacnea/front.png and /dev/null differ diff --git a/graphics/pokemon/cacturne/footprint.png b/graphics/pokemon/cacturne/footprint.png index 5441f92d6b59..a06f75fc9d26 100644 Binary files a/graphics/pokemon/cacturne/footprint.png and b/graphics/pokemon/cacturne/footprint.png differ diff --git a/graphics/pokemon/cacturne/front.png b/graphics/pokemon/cacturne/front.png deleted file mode 100644 index 0e7587f6f71c..000000000000 Binary files a/graphics/pokemon/cacturne/front.png and /dev/null differ diff --git a/graphics/pokemon/cacturne/icon.png b/graphics/pokemon/cacturne/icon.png index fd1bb1d5fef7..8dd74b291de3 100644 Binary files a/graphics/pokemon/cacturne/icon.png and b/graphics/pokemon/cacturne/icon.png differ diff --git a/graphics/pokemon/calyrex/footprint.png b/graphics/pokemon/calyrex/footprint.png index 9b96a7a1eb07..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/calyrex/footprint.png and b/graphics/pokemon/calyrex/footprint.png differ diff --git a/graphics/pokemon/camerupt/footprint.png b/graphics/pokemon/camerupt/footprint.png index 40708b8a1fe2..81ec6210464d 100644 Binary files a/graphics/pokemon/camerupt/footprint.png and b/graphics/pokemon/camerupt/footprint.png differ diff --git a/graphics/pokemon/camerupt/front.png b/graphics/pokemon/camerupt/front.png deleted file mode 100644 index 9baaa98c7783..000000000000 Binary files a/graphics/pokemon/camerupt/front.png and /dev/null differ diff --git a/graphics/pokemon/carbink/footprint.png b/graphics/pokemon/carbink/footprint.png index 9fcdf683ab4f..2449369fd6b8 100644 Binary files a/graphics/pokemon/carbink/footprint.png and b/graphics/pokemon/carbink/footprint.png differ diff --git a/graphics/pokemon/carbink/front.png b/graphics/pokemon/carbink/front.png deleted file mode 100644 index 31db1394a04c..000000000000 Binary files a/graphics/pokemon/carbink/front.png and /dev/null differ diff --git a/graphics/pokemon/carkol/footprint.png b/graphics/pokemon/carkol/footprint.png index 628e18259bce..587b0ee96360 100644 Binary files a/graphics/pokemon/carkol/footprint.png and b/graphics/pokemon/carkol/footprint.png differ diff --git a/graphics/pokemon/carnivine/footprint.png b/graphics/pokemon/carnivine/footprint.png index f9cc48ba7fa8..2449369fd6b8 100644 Binary files a/graphics/pokemon/carnivine/footprint.png and b/graphics/pokemon/carnivine/footprint.png differ diff --git a/graphics/pokemon/carnivine/front.png b/graphics/pokemon/carnivine/front.png deleted file mode 100644 index 2d26ac90484e..000000000000 Binary files a/graphics/pokemon/carnivine/front.png and /dev/null differ diff --git a/graphics/pokemon/carracosta/footprint.png b/graphics/pokemon/carracosta/footprint.png index 285d6398ee56..964ebdcdfd22 100644 Binary files a/graphics/pokemon/carracosta/footprint.png and b/graphics/pokemon/carracosta/footprint.png differ diff --git a/graphics/pokemon/carracosta/front.png b/graphics/pokemon/carracosta/front.png deleted file mode 100644 index 7297c4b24f39..000000000000 Binary files a/graphics/pokemon/carracosta/front.png and /dev/null differ diff --git a/graphics/pokemon/carvanha/back.png b/graphics/pokemon/carvanha/back.png index 6b2b3ca2784b..e461b970c92b 100644 Binary files a/graphics/pokemon/carvanha/back.png and b/graphics/pokemon/carvanha/back.png differ diff --git a/graphics/pokemon/carvanha/footprint.png b/graphics/pokemon/carvanha/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/carvanha/footprint.png and b/graphics/pokemon/carvanha/footprint.png differ diff --git a/graphics/pokemon/carvanha/front.png b/graphics/pokemon/carvanha/front.png deleted file mode 100644 index b5b9ec4d1bfc..000000000000 Binary files a/graphics/pokemon/carvanha/front.png and /dev/null differ diff --git a/graphics/pokemon/cascoon/footprint.png b/graphics/pokemon/cascoon/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/cascoon/footprint.png and b/graphics/pokemon/cascoon/footprint.png differ diff --git a/graphics/pokemon/cascoon/front.png b/graphics/pokemon/cascoon/front.png deleted file mode 100644 index 54081095cc1d..000000000000 Binary files a/graphics/pokemon/cascoon/front.png and /dev/null differ diff --git a/graphics/pokemon/castform/footprint.png b/graphics/pokemon/castform/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/castform/footprint.png and b/graphics/pokemon/castform/footprint.png differ diff --git a/graphics/pokemon/castform/icon.png b/graphics/pokemon/castform/icon.png index 6f4a5a18a299..5e3c092919c8 100644 Binary files a/graphics/pokemon/castform/icon.png and b/graphics/pokemon/castform/icon.png differ diff --git a/graphics/pokemon/castform/rainy/icon.png b/graphics/pokemon/castform/rainy/icon.png index 2bca7deddb15..c61d0e5f0928 100644 Binary files a/graphics/pokemon/castform/rainy/icon.png and b/graphics/pokemon/castform/rainy/icon.png differ diff --git a/graphics/pokemon/castform/snowy/icon.png b/graphics/pokemon/castform/snowy/icon.png index 6ab5a1549150..e8651ef4172f 100644 Binary files a/graphics/pokemon/castform/snowy/icon.png and b/graphics/pokemon/castform/snowy/icon.png differ diff --git a/graphics/pokemon/castform/sunny/icon.png b/graphics/pokemon/castform/sunny/icon.png index 56a9ee5149aa..a59112839936 100644 Binary files a/graphics/pokemon/castform/sunny/icon.png and b/graphics/pokemon/castform/sunny/icon.png differ diff --git a/graphics/pokemon/caterpie/footprint.png b/graphics/pokemon/caterpie/footprint.png index c1c0058e74e9..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/caterpie/footprint.png and b/graphics/pokemon/caterpie/footprint.png differ diff --git a/graphics/pokemon/caterpie/front.png b/graphics/pokemon/caterpie/front.png deleted file mode 100644 index 7ee00f7b364d..000000000000 Binary files a/graphics/pokemon/caterpie/front.png and /dev/null differ diff --git a/graphics/pokemon/celebi/back.png b/graphics/pokemon/celebi/back.png index d21d8e38cddb..759bfc96a42e 100644 Binary files a/graphics/pokemon/celebi/back.png and b/graphics/pokemon/celebi/back.png differ diff --git a/graphics/pokemon/celebi/footprint.png b/graphics/pokemon/celebi/footprint.png index 11aa4301cce9..2e75f679379b 100644 Binary files a/graphics/pokemon/celebi/footprint.png and b/graphics/pokemon/celebi/footprint.png differ diff --git a/graphics/pokemon/celebi/front.png b/graphics/pokemon/celebi/front.png deleted file mode 100644 index 492be76a9e53..000000000000 Binary files a/graphics/pokemon/celebi/front.png and /dev/null differ diff --git a/graphics/pokemon/celesteela/footprint.png b/graphics/pokemon/celesteela/footprint.png index 190f28d207ee..db405c04b946 100644 Binary files a/graphics/pokemon/celesteela/footprint.png and b/graphics/pokemon/celesteela/footprint.png differ diff --git a/graphics/pokemon/centiskorch/footprint.png b/graphics/pokemon/centiskorch/footprint.png index 084c77fda807..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/centiskorch/footprint.png and b/graphics/pokemon/centiskorch/footprint.png differ diff --git a/graphics/pokemon/chandelure/footprint.png b/graphics/pokemon/chandelure/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/chandelure/footprint.png and b/graphics/pokemon/chandelure/footprint.png differ diff --git a/graphics/pokemon/chandelure/front.png b/graphics/pokemon/chandelure/front.png deleted file mode 100644 index 4dfc4d1898cc..000000000000 Binary files a/graphics/pokemon/chandelure/front.png and /dev/null differ diff --git a/graphics/pokemon/chansey/footprint.png b/graphics/pokemon/chansey/footprint.png index 17893b9fb7ab..20028e8b7487 100644 Binary files a/graphics/pokemon/chansey/footprint.png and b/graphics/pokemon/chansey/footprint.png differ diff --git a/graphics/pokemon/chansey/front.png b/graphics/pokemon/chansey/front.png deleted file mode 100644 index 4dd2e2fe277c..000000000000 Binary files a/graphics/pokemon/chansey/front.png and /dev/null differ diff --git a/graphics/pokemon/charizard/footprint.png b/graphics/pokemon/charizard/footprint.png index e69f38392747..86218af32e6a 100644 Binary files a/graphics/pokemon/charizard/footprint.png and b/graphics/pokemon/charizard/footprint.png differ diff --git a/graphics/pokemon/charizard/front.png b/graphics/pokemon/charizard/front.png deleted file mode 100644 index a6792d551ca1..000000000000 Binary files a/graphics/pokemon/charizard/front.png and /dev/null differ diff --git a/graphics/pokemon/charjabug/footprint.png b/graphics/pokemon/charjabug/footprint.png index 8dea358a430d..2449369fd6b8 100644 Binary files a/graphics/pokemon/charjabug/footprint.png and b/graphics/pokemon/charjabug/footprint.png differ diff --git a/graphics/pokemon/charmander/footprint.png b/graphics/pokemon/charmander/footprint.png index 2f7723621e41..9f0bcbdd913c 100644 Binary files a/graphics/pokemon/charmander/footprint.png and b/graphics/pokemon/charmander/footprint.png differ diff --git a/graphics/pokemon/charmander/front.png b/graphics/pokemon/charmander/front.png deleted file mode 100644 index eb0a9590d997..000000000000 Binary files a/graphics/pokemon/charmander/front.png and /dev/null differ diff --git a/graphics/pokemon/charmeleon/footprint.png b/graphics/pokemon/charmeleon/footprint.png index 6ec15ee2042e..87305df5be94 100644 Binary files a/graphics/pokemon/charmeleon/footprint.png and b/graphics/pokemon/charmeleon/footprint.png differ diff --git a/graphics/pokemon/charmeleon/front.png b/graphics/pokemon/charmeleon/front.png deleted file mode 100644 index bdbd577e223d..000000000000 Binary files a/graphics/pokemon/charmeleon/front.png and /dev/null differ diff --git a/graphics/pokemon/chatot/footprint.png b/graphics/pokemon/chatot/footprint.png index 61918db53f7a..501f913ddc54 100644 Binary files a/graphics/pokemon/chatot/footprint.png and b/graphics/pokemon/chatot/footprint.png differ diff --git a/graphics/pokemon/chatot/front.png b/graphics/pokemon/chatot/front.png deleted file mode 100644 index 41d53718e40c..000000000000 Binary files a/graphics/pokemon/chatot/front.png and /dev/null differ diff --git a/graphics/pokemon/chatot/icon.png b/graphics/pokemon/chatot/icon.png index ee4eab2a1eba..9a8777c7ad17 100644 Binary files a/graphics/pokemon/chatot/icon.png and b/graphics/pokemon/chatot/icon.png differ diff --git a/graphics/pokemon/cherrim/footprint.png b/graphics/pokemon/cherrim/footprint.png index 772eaa704bc9..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/cherrim/footprint.png and b/graphics/pokemon/cherrim/footprint.png differ diff --git a/graphics/pokemon/cherrim/icon.png b/graphics/pokemon/cherrim/icon.png index 145074d7a3b2..6915d775b4e5 100644 Binary files a/graphics/pokemon/cherrim/icon.png and b/graphics/pokemon/cherrim/icon.png differ diff --git a/graphics/pokemon/cherrim/sunshine/icon.png b/graphics/pokemon/cherrim/sunshine/icon.png index 2c23461bb49d..333e22bb5920 100644 Binary files a/graphics/pokemon/cherrim/sunshine/icon.png and b/graphics/pokemon/cherrim/sunshine/icon.png differ diff --git a/graphics/pokemon/cherubi/footprint.png b/graphics/pokemon/cherubi/footprint.png index 772eaa704bc9..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/cherubi/footprint.png and b/graphics/pokemon/cherubi/footprint.png differ diff --git a/graphics/pokemon/cherubi/front.png b/graphics/pokemon/cherubi/front.png deleted file mode 100644 index 75b735e577a5..000000000000 Binary files a/graphics/pokemon/cherubi/front.png and /dev/null differ diff --git a/graphics/pokemon/chesnaught/footprint.png b/graphics/pokemon/chesnaught/footprint.png index 0f9d51ed7011..56f48bb16475 100644 Binary files a/graphics/pokemon/chesnaught/footprint.png and b/graphics/pokemon/chesnaught/footprint.png differ diff --git a/graphics/pokemon/chesnaught/front.png b/graphics/pokemon/chesnaught/front.png deleted file mode 100644 index 5e2191810666..000000000000 Binary files a/graphics/pokemon/chesnaught/front.png and /dev/null differ diff --git a/graphics/pokemon/chespin/anim_front.png b/graphics/pokemon/chespin/anim_front.png index b55bb128c836..af2f036fa8ad 100644 Binary files a/graphics/pokemon/chespin/anim_front.png and b/graphics/pokemon/chespin/anim_front.png differ diff --git a/graphics/pokemon/chespin/footprint.png b/graphics/pokemon/chespin/footprint.png index 5b3235b712b9..d48fdfb52552 100644 Binary files a/graphics/pokemon/chespin/footprint.png and b/graphics/pokemon/chespin/footprint.png differ diff --git a/graphics/pokemon/chespin/front.png b/graphics/pokemon/chespin/front.png deleted file mode 100644 index f12f3a8737be..000000000000 Binary files a/graphics/pokemon/chespin/front.png and /dev/null differ diff --git a/graphics/pokemon/chewtle/footprint.png b/graphics/pokemon/chewtle/footprint.png index d7d12db0432e..86276e6d0a6d 100644 Binary files a/graphics/pokemon/chewtle/footprint.png and b/graphics/pokemon/chewtle/footprint.png differ diff --git a/graphics/pokemon/chikorita/anim_front.png b/graphics/pokemon/chikorita/anim_front.png index ebba2d94f30d..c12f9f5f0242 100644 Binary files a/graphics/pokemon/chikorita/anim_front.png and b/graphics/pokemon/chikorita/anim_front.png differ diff --git a/graphics/pokemon/chikorita/footprint.png b/graphics/pokemon/chikorita/footprint.png index 3ac4abd9f7a1..bbb7102f6695 100644 Binary files a/graphics/pokemon/chikorita/footprint.png and b/graphics/pokemon/chikorita/footprint.png differ diff --git a/graphics/pokemon/chikorita/front.png b/graphics/pokemon/chikorita/front.png deleted file mode 100644 index 687e8ee3639f..000000000000 Binary files a/graphics/pokemon/chikorita/front.png and /dev/null differ diff --git a/graphics/pokemon/chikorita/icon.png b/graphics/pokemon/chikorita/icon.png index ef2975dc4f60..ed1eac67f8bc 100644 Binary files a/graphics/pokemon/chikorita/icon.png and b/graphics/pokemon/chikorita/icon.png differ diff --git a/graphics/pokemon/chikorita/normal.pal b/graphics/pokemon/chikorita/normal.pal index 0cda9b7dd968..a89f73e98b2d 100644 --- a/graphics/pokemon/chikorita/normal.pal +++ b/graphics/pokemon/chikorita/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 192 192 248 -80 136 32 -64 96 24 -144 208 96 -104 176 72 +98 139 41 +65 98 24 +131 230 49 +106 180 41 0 0 0 -96 96 56 -152 152 88 -224 232 168 -240 240 208 -184 200 120 -192 192 192 -248 248 248 -96 64 88 -192 40 40 -232 120 120 +65 90 24 +131 148 82 +213 246 139 +238 255 197 +180 205 106 +197 197 197 +255 255 255 +98 65 90 +197 41 41 +238 123 123 diff --git a/graphics/pokemon/chimchar/footprint.png b/graphics/pokemon/chimchar/footprint.png index e9e4f8c82588..da0826463514 100644 Binary files a/graphics/pokemon/chimchar/footprint.png and b/graphics/pokemon/chimchar/footprint.png differ diff --git a/graphics/pokemon/chimchar/front.png b/graphics/pokemon/chimchar/front.png deleted file mode 100644 index 1a0e606a8758..000000000000 Binary files a/graphics/pokemon/chimchar/front.png and /dev/null differ diff --git a/graphics/pokemon/chimecho/footprint.png b/graphics/pokemon/chimecho/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/chimecho/footprint.png and b/graphics/pokemon/chimecho/footprint.png differ diff --git a/graphics/pokemon/chimecho/front.png b/graphics/pokemon/chimecho/front.png deleted file mode 100644 index 7d9992580895..000000000000 Binary files a/graphics/pokemon/chimecho/front.png and /dev/null differ diff --git a/graphics/pokemon/chimecho/icon.png b/graphics/pokemon/chimecho/icon.png index f5480bc35673..d4d6b644855a 100644 Binary files a/graphics/pokemon/chimecho/icon.png and b/graphics/pokemon/chimecho/icon.png differ diff --git a/graphics/pokemon/chinchou/anim_front.png b/graphics/pokemon/chinchou/anim_front.png index 370a5a99d32e..1b7e9ee03a8b 100644 Binary files a/graphics/pokemon/chinchou/anim_front.png and b/graphics/pokemon/chinchou/anim_front.png differ diff --git a/graphics/pokemon/chinchou/footprint.png b/graphics/pokemon/chinchou/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/chinchou/footprint.png and b/graphics/pokemon/chinchou/footprint.png differ diff --git a/graphics/pokemon/chinchou/front.png b/graphics/pokemon/chinchou/front.png deleted file mode 100644 index 348090d34855..000000000000 Binary files a/graphics/pokemon/chinchou/front.png and /dev/null differ diff --git a/graphics/pokemon/chinchou/normal.pal b/graphics/pokemon/chinchou/normal.pal index a2d9c8aca000..5af02cce938f 100644 --- a/graphics/pokemon/chinchou/normal.pal +++ b/graphics/pokemon/chinchou/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 112 192 -40 80 144 -120 152 216 -184 152 32 -240 216 56 -184 192 232 -8 40 88 +90 115 197 +41 82 148 +106 164 230 +197 148 0 +255 205 82 +148 205 230 +8 41 90 0 0 0 -128 96 80 -80 40 24 -248 232 128 -216 184 48 -144 160 224 -176 0 0 +131 98 82 +82 41 24 +255 238 131 +230 180 41 +123 189 230 +180 0 0 0 0 0 diff --git a/graphics/pokemon/chingling/footprint.png b/graphics/pokemon/chingling/footprint.png index b6f2ff3f23ae..7c0499f09f0b 100644 Binary files a/graphics/pokemon/chingling/footprint.png and b/graphics/pokemon/chingling/footprint.png differ diff --git a/graphics/pokemon/chingling/front.png b/graphics/pokemon/chingling/front.png deleted file mode 100644 index d8092f393e8f..000000000000 Binary files a/graphics/pokemon/chingling/front.png and /dev/null differ diff --git a/graphics/pokemon/cinccino/back.png b/graphics/pokemon/cinccino/back.png index 6855ace88876..b97531f9f2ca 100644 Binary files a/graphics/pokemon/cinccino/back.png and b/graphics/pokemon/cinccino/back.png differ diff --git a/graphics/pokemon/cinccino/footprint.png b/graphics/pokemon/cinccino/footprint.png index ff503f6dcdb6..792ed65386fd 100644 Binary files a/graphics/pokemon/cinccino/footprint.png and b/graphics/pokemon/cinccino/footprint.png differ diff --git a/graphics/pokemon/cinccino/front.png b/graphics/pokemon/cinccino/front.png deleted file mode 100644 index 12d953daf51f..000000000000 Binary files a/graphics/pokemon/cinccino/front.png and /dev/null differ diff --git a/graphics/pokemon/cinderace/back.png b/graphics/pokemon/cinderace/back.png index 701208e6729d..6af38da2b409 100644 Binary files a/graphics/pokemon/cinderace/back.png and b/graphics/pokemon/cinderace/back.png differ diff --git a/graphics/pokemon/cinderace/footprint.png b/graphics/pokemon/cinderace/footprint.png index 18c62da8bd85..d46dc1df8564 100644 Binary files a/graphics/pokemon/cinderace/footprint.png and b/graphics/pokemon/cinderace/footprint.png differ diff --git a/graphics/pokemon/cinderace/front.png b/graphics/pokemon/cinderace/front.png index fe11d997e7a8..d4b086a789ce 100644 Binary files a/graphics/pokemon/cinderace/front.png and b/graphics/pokemon/cinderace/front.png differ diff --git a/graphics/pokemon/clamperl/footprint.png b/graphics/pokemon/clamperl/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/clamperl/footprint.png and b/graphics/pokemon/clamperl/footprint.png differ diff --git a/graphics/pokemon/clamperl/front.png b/graphics/pokemon/clamperl/front.png deleted file mode 100644 index dab2d9881d39..000000000000 Binary files a/graphics/pokemon/clamperl/front.png and /dev/null differ diff --git a/graphics/pokemon/clauncher/footprint.png b/graphics/pokemon/clauncher/footprint.png index 201ec9bb6735..a9b0e33c2899 100644 Binary files a/graphics/pokemon/clauncher/footprint.png and b/graphics/pokemon/clauncher/footprint.png differ diff --git a/graphics/pokemon/clauncher/front.png b/graphics/pokemon/clauncher/front.png deleted file mode 100644 index ade9f6518cd4..000000000000 Binary files a/graphics/pokemon/clauncher/front.png and /dev/null differ diff --git a/graphics/pokemon/clawitzer/footprint.png b/graphics/pokemon/clawitzer/footprint.png index 9d7bc6a1a4b1..2449369fd6b8 100644 Binary files a/graphics/pokemon/clawitzer/footprint.png and b/graphics/pokemon/clawitzer/footprint.png differ diff --git a/graphics/pokemon/clawitzer/front.png b/graphics/pokemon/clawitzer/front.png deleted file mode 100644 index 8c6c2f04881e..000000000000 Binary files a/graphics/pokemon/clawitzer/front.png and /dev/null differ diff --git a/graphics/pokemon/claydol/footprint.png b/graphics/pokemon/claydol/footprint.png index 2f0bca1accbf..ce84eba58d78 100644 Binary files a/graphics/pokemon/claydol/footprint.png and b/graphics/pokemon/claydol/footprint.png differ diff --git a/graphics/pokemon/claydol/front.png b/graphics/pokemon/claydol/front.png deleted file mode 100644 index cc2f1c16e7bb..000000000000 Binary files a/graphics/pokemon/claydol/front.png and /dev/null differ diff --git a/graphics/pokemon/clefable/footprint.png b/graphics/pokemon/clefable/footprint.png index 5ff3e19a1de4..2f3f60fbdf45 100644 Binary files a/graphics/pokemon/clefable/footprint.png and b/graphics/pokemon/clefable/footprint.png differ diff --git a/graphics/pokemon/clefable/front.png b/graphics/pokemon/clefable/front.png deleted file mode 100644 index 2ac06ddfc3da..000000000000 Binary files a/graphics/pokemon/clefable/front.png and /dev/null differ diff --git a/graphics/pokemon/clefairy/footprint.png b/graphics/pokemon/clefairy/footprint.png index 85c25a5dcceb..86276e6d0a6d 100644 Binary files a/graphics/pokemon/clefairy/footprint.png and b/graphics/pokemon/clefairy/footprint.png differ diff --git a/graphics/pokemon/clefairy/front.png b/graphics/pokemon/clefairy/front.png deleted file mode 100644 index 4e959bd4ee16..000000000000 Binary files a/graphics/pokemon/clefairy/front.png and /dev/null differ diff --git a/graphics/pokemon/cleffa/anim_front.png b/graphics/pokemon/cleffa/anim_front.png index 2f3e541f7e2c..9f2ee497fad3 100644 Binary files a/graphics/pokemon/cleffa/anim_front.png and b/graphics/pokemon/cleffa/anim_front.png differ diff --git a/graphics/pokemon/cleffa/footprint.png b/graphics/pokemon/cleffa/footprint.png index 4bf9339ae59d..e085ea10fed2 100644 Binary files a/graphics/pokemon/cleffa/footprint.png and b/graphics/pokemon/cleffa/footprint.png differ diff --git a/graphics/pokemon/cleffa/front.png b/graphics/pokemon/cleffa/front.png deleted file mode 100644 index a8d989f263c2..000000000000 Binary files a/graphics/pokemon/cleffa/front.png and /dev/null differ diff --git a/graphics/pokemon/cleffa/normal.pal b/graphics/pokemon/cleffa/normal.pal index d6dafd7980d9..c4944c7c6634 100644 --- a/graphics/pokemon/cleffa/normal.pal +++ b/graphics/pokemon/cleffa/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 168 80 80 -248 208 200 -248 160 160 -200 128 128 -80 48 40 -88 48 32 -112 72 56 +255 213 205 +255 164 164 +205 131 131 +98 32 24 +115 74 49 +156 98 8 16 16 16 -152 128 112 +197 139 41 248 248 248 -248 112 80 -248 152 120 -192 64 64 +205 131 131 +255 164 164 +156 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/clobbopus/footprint.png b/graphics/pokemon/clobbopus/footprint.png index 755d30849465..adf2d1a6c844 100644 Binary files a/graphics/pokemon/clobbopus/footprint.png and b/graphics/pokemon/clobbopus/footprint.png differ diff --git a/graphics/pokemon/cloyster/footprint.png b/graphics/pokemon/cloyster/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/cloyster/footprint.png and b/graphics/pokemon/cloyster/footprint.png differ diff --git a/graphics/pokemon/cloyster/front.png b/graphics/pokemon/cloyster/front.png deleted file mode 100644 index 6c4a65eb699f..000000000000 Binary files a/graphics/pokemon/cloyster/front.png and /dev/null differ diff --git a/graphics/pokemon/cloyster/icon.png b/graphics/pokemon/cloyster/icon.png index a60befbbf116..9f50ad4dd9b2 100644 Binary files a/graphics/pokemon/cloyster/icon.png and b/graphics/pokemon/cloyster/icon.png differ diff --git a/graphics/pokemon/coalossal/footprint.png b/graphics/pokemon/coalossal/footprint.png index 7e2a55cf10fb..110dbc99f17d 100644 Binary files a/graphics/pokemon/coalossal/footprint.png and b/graphics/pokemon/coalossal/footprint.png differ diff --git a/graphics/pokemon/cobalion/footprint.png b/graphics/pokemon/cobalion/footprint.png index ad56dc26163c..587a5aedbee4 100644 Binary files a/graphics/pokemon/cobalion/footprint.png and b/graphics/pokemon/cobalion/footprint.png differ diff --git a/graphics/pokemon/cobalion/front.png b/graphics/pokemon/cobalion/front.png deleted file mode 100644 index c57b709d3636..000000000000 Binary files a/graphics/pokemon/cobalion/front.png and /dev/null differ diff --git a/graphics/pokemon/cobalion/icon.png b/graphics/pokemon/cobalion/icon.png index 376226b242ff..5dcdd6cb0e91 100644 Binary files a/graphics/pokemon/cobalion/icon.png and b/graphics/pokemon/cobalion/icon.png differ diff --git a/graphics/pokemon/cofagrigus/footprint.png b/graphics/pokemon/cofagrigus/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/cofagrigus/footprint.png and b/graphics/pokemon/cofagrigus/footprint.png differ diff --git a/graphics/pokemon/cofagrigus/front.png b/graphics/pokemon/cofagrigus/front.png deleted file mode 100644 index c48dbdaa4450..000000000000 Binary files a/graphics/pokemon/cofagrigus/front.png and /dev/null differ diff --git a/graphics/pokemon/cofagrigus/icon.png b/graphics/pokemon/cofagrigus/icon.png index 19476138c140..1ae2b6609952 100644 Binary files a/graphics/pokemon/cofagrigus/icon.png and b/graphics/pokemon/cofagrigus/icon.png differ diff --git a/graphics/pokemon/combee/footprint.png b/graphics/pokemon/combee/footprint.png index 2055799b3b3c..2449369fd6b8 100644 Binary files a/graphics/pokemon/combee/footprint.png and b/graphics/pokemon/combee/footprint.png differ diff --git a/graphics/pokemon/combee/front.png b/graphics/pokemon/combee/front.png deleted file mode 100644 index 4c1368df4b8c..000000000000 Binary files a/graphics/pokemon/combee/front.png and /dev/null differ diff --git a/graphics/pokemon/combusken/footprint.png b/graphics/pokemon/combusken/footprint.png index 6b66429d8de8..953e0e676a55 100644 Binary files a/graphics/pokemon/combusken/footprint.png and b/graphics/pokemon/combusken/footprint.png differ diff --git a/graphics/pokemon/combusken/front.png b/graphics/pokemon/combusken/front.png deleted file mode 100644 index 2c2b6a5a1b2e..000000000000 Binary files a/graphics/pokemon/combusken/front.png and /dev/null differ diff --git a/graphics/pokemon/combusken/icon.png b/graphics/pokemon/combusken/icon.png index d7b1f8412b32..231252ccb5d3 100644 Binary files a/graphics/pokemon/combusken/icon.png and b/graphics/pokemon/combusken/icon.png differ diff --git a/graphics/pokemon/comfey/footprint.png b/graphics/pokemon/comfey/footprint.png index 96f7256ab995..2449369fd6b8 100644 Binary files a/graphics/pokemon/comfey/footprint.png and b/graphics/pokemon/comfey/footprint.png differ diff --git a/graphics/pokemon/conkeldurr/footprint.png b/graphics/pokemon/conkeldurr/footprint.png index 5e55211e656b..ab7670269e31 100644 Binary files a/graphics/pokemon/conkeldurr/footprint.png and b/graphics/pokemon/conkeldurr/footprint.png differ diff --git a/graphics/pokemon/conkeldurr/front.png b/graphics/pokemon/conkeldurr/front.png deleted file mode 100644 index bfa9221f99f0..000000000000 Binary files a/graphics/pokemon/conkeldurr/front.png and /dev/null differ diff --git a/graphics/pokemon/copperajah/footprint.png b/graphics/pokemon/copperajah/footprint.png index 2436de10873d..dd2c3f960a2e 100644 Binary files a/graphics/pokemon/copperajah/footprint.png and b/graphics/pokemon/copperajah/footprint.png differ diff --git a/graphics/pokemon/corphish/footprint.png b/graphics/pokemon/corphish/footprint.png index f624724c71d7..5717fd7f23bf 100644 Binary files a/graphics/pokemon/corphish/footprint.png and b/graphics/pokemon/corphish/footprint.png differ diff --git a/graphics/pokemon/corphish/front.png b/graphics/pokemon/corphish/front.png deleted file mode 100644 index 3a78a7b0113d..000000000000 Binary files a/graphics/pokemon/corphish/front.png and /dev/null differ diff --git a/graphics/pokemon/corsola/footprint.png b/graphics/pokemon/corsola/footprint.png index bae0aaf92d96..458777edeb8d 100644 Binary files a/graphics/pokemon/corsola/footprint.png and b/graphics/pokemon/corsola/footprint.png differ diff --git a/graphics/pokemon/corsola/front.png b/graphics/pokemon/corsola/front.png deleted file mode 100644 index b82fbceb5e48..000000000000 Binary files a/graphics/pokemon/corsola/front.png and /dev/null differ diff --git a/graphics/pokemon/corsola/galarian/front.png b/graphics/pokemon/corsola/galarian/front.png index e9b4a7ded55f..19d22f3b89ed 100644 Binary files a/graphics/pokemon/corsola/galarian/front.png and b/graphics/pokemon/corsola/galarian/front.png differ diff --git a/graphics/pokemon/corsola/icon.png b/graphics/pokemon/corsola/icon.png index 9fb51a0b1460..e5ebe6c08d6a 100644 Binary files a/graphics/pokemon/corsola/icon.png and b/graphics/pokemon/corsola/icon.png differ diff --git a/graphics/pokemon/corviknight/footprint.png b/graphics/pokemon/corviknight/footprint.png index 3042a0e458b7..ef4ad1a916e0 100644 Binary files a/graphics/pokemon/corviknight/footprint.png and b/graphics/pokemon/corviknight/footprint.png differ diff --git a/graphics/pokemon/corvisquire/footprint.png b/graphics/pokemon/corvisquire/footprint.png index 328be429b3b1..8d9cd78e0d83 100644 Binary files a/graphics/pokemon/corvisquire/footprint.png and b/graphics/pokemon/corvisquire/footprint.png differ diff --git a/graphics/pokemon/cosmoem/footprint.png b/graphics/pokemon/cosmoem/footprint.png index 31cecc3ac5f4..2449369fd6b8 100644 Binary files a/graphics/pokemon/cosmoem/footprint.png and b/graphics/pokemon/cosmoem/footprint.png differ diff --git a/graphics/pokemon/cosmog/footprint.png b/graphics/pokemon/cosmog/footprint.png index a2fe0b64c44b..2449369fd6b8 100644 Binary files a/graphics/pokemon/cosmog/footprint.png and b/graphics/pokemon/cosmog/footprint.png differ diff --git a/graphics/pokemon/cottonee/footprint.png b/graphics/pokemon/cottonee/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/cottonee/footprint.png and b/graphics/pokemon/cottonee/footprint.png differ diff --git a/graphics/pokemon/cottonee/front.png b/graphics/pokemon/cottonee/front.png deleted file mode 100644 index 0e807ff42e0f..000000000000 Binary files a/graphics/pokemon/cottonee/front.png and /dev/null differ diff --git a/graphics/pokemon/crabominable/footprint.png b/graphics/pokemon/crabominable/footprint.png index d67ceceeeab5..03f338c34a1a 100644 Binary files a/graphics/pokemon/crabominable/footprint.png and b/graphics/pokemon/crabominable/footprint.png differ diff --git a/graphics/pokemon/crabrawler/footprint.png b/graphics/pokemon/crabrawler/footprint.png index 665b3e97b7e4..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/crabrawler/footprint.png and b/graphics/pokemon/crabrawler/footprint.png differ diff --git a/graphics/pokemon/cradily/footprint.png b/graphics/pokemon/cradily/footprint.png index 998229dc76af..394b38da09c1 100644 Binary files a/graphics/pokemon/cradily/footprint.png and b/graphics/pokemon/cradily/footprint.png differ diff --git a/graphics/pokemon/cradily/front.png b/graphics/pokemon/cradily/front.png deleted file mode 100644 index 0280dedf9bf9..000000000000 Binary files a/graphics/pokemon/cradily/front.png and /dev/null differ diff --git a/graphics/pokemon/cramorant/footprint.png b/graphics/pokemon/cramorant/footprint.png index 9c9bffb0c97e..fc06dcd4f6a7 100644 Binary files a/graphics/pokemon/cramorant/footprint.png and b/graphics/pokemon/cramorant/footprint.png differ diff --git a/graphics/pokemon/cranidos/back.png b/graphics/pokemon/cranidos/back.png index 54947660c0ce..39aacf0bad4e 100644 Binary files a/graphics/pokemon/cranidos/back.png and b/graphics/pokemon/cranidos/back.png differ diff --git a/graphics/pokemon/cranidos/footprint.png b/graphics/pokemon/cranidos/footprint.png index 5c2c8c7827c4..65718c63c725 100644 Binary files a/graphics/pokemon/cranidos/footprint.png and b/graphics/pokemon/cranidos/footprint.png differ diff --git a/graphics/pokemon/cranidos/front.png b/graphics/pokemon/cranidos/front.png deleted file mode 100644 index 000533a92450..000000000000 Binary files a/graphics/pokemon/cranidos/front.png and /dev/null differ diff --git a/graphics/pokemon/crawdaunt/footprint.png b/graphics/pokemon/crawdaunt/footprint.png index 9169e2807108..bedeeb01aabf 100644 Binary files a/graphics/pokemon/crawdaunt/footprint.png and b/graphics/pokemon/crawdaunt/footprint.png differ diff --git a/graphics/pokemon/crawdaunt/front.png b/graphics/pokemon/crawdaunt/front.png deleted file mode 100644 index ede486992dcc..000000000000 Binary files a/graphics/pokemon/crawdaunt/front.png and /dev/null differ diff --git a/graphics/pokemon/cresselia/footprint.png b/graphics/pokemon/cresselia/footprint.png index a1e3ba06d294..2449369fd6b8 100644 Binary files a/graphics/pokemon/cresselia/footprint.png and b/graphics/pokemon/cresselia/footprint.png differ diff --git a/graphics/pokemon/cresselia/front.png b/graphics/pokemon/cresselia/front.png deleted file mode 100644 index 56a6f004f710..000000000000 Binary files a/graphics/pokemon/cresselia/front.png and /dev/null differ diff --git a/graphics/pokemon/cresselia/icon.png b/graphics/pokemon/cresselia/icon.png index 76b9b36390de..8189ad7d1658 100644 Binary files a/graphics/pokemon/cresselia/icon.png and b/graphics/pokemon/cresselia/icon.png differ diff --git a/graphics/pokemon/croagunk/footprint.png b/graphics/pokemon/croagunk/footprint.png index b6c7cd165bf7..54fe4e60b311 100644 Binary files a/graphics/pokemon/croagunk/footprint.png and b/graphics/pokemon/croagunk/footprint.png differ diff --git a/graphics/pokemon/croagunk/front.png b/graphics/pokemon/croagunk/front.png deleted file mode 100644 index 6725ae39e7f7..000000000000 Binary files a/graphics/pokemon/croagunk/front.png and /dev/null differ diff --git a/graphics/pokemon/crobat/anim_front.png b/graphics/pokemon/crobat/anim_front.png index abf3b22be46e..9275d8309426 100644 Binary files a/graphics/pokemon/crobat/anim_front.png and b/graphics/pokemon/crobat/anim_front.png differ diff --git a/graphics/pokemon/crobat/footprint.png b/graphics/pokemon/crobat/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/crobat/footprint.png and b/graphics/pokemon/crobat/footprint.png differ diff --git a/graphics/pokemon/crobat/front.png b/graphics/pokemon/crobat/front.png deleted file mode 100644 index e0b69bad7856..000000000000 Binary files a/graphics/pokemon/crobat/front.png and /dev/null differ diff --git a/graphics/pokemon/crobat/icon.png b/graphics/pokemon/crobat/icon.png index 5a3257411dc8..2d42fa21b609 100644 Binary files a/graphics/pokemon/crobat/icon.png and b/graphics/pokemon/crobat/icon.png differ diff --git a/graphics/pokemon/crobat/normal.pal b/graphics/pokemon/crobat/normal.pal index c8b2897700ca..5db72c9cf364 100644 --- a/graphics/pokemon/crobat/normal.pal +++ b/graphics/pokemon/crobat/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 24 120 -120 72 152 -176 120 200 +90 41 115 +131 74 205 +205 139 246 16 16 16 -8 64 104 -32 104 144 -160 88 200 -72 152 184 -208 144 0 -248 208 0 -176 0 0 -104 104 104 -160 160 160 -248 248 248 +8 65 106 +32 106 148 +172 90 255 +74 156 189 +213 148 0 +255 213 0 +180 0 0 +106 106 106 +164 164 164 +255 255 255 0 0 0 diff --git a/graphics/pokemon/croconaw/anim_front.png b/graphics/pokemon/croconaw/anim_front.png index bdd5340fd5ed..3fc9ff81f287 100644 Binary files a/graphics/pokemon/croconaw/anim_front.png and b/graphics/pokemon/croconaw/anim_front.png differ diff --git a/graphics/pokemon/croconaw/footprint.png b/graphics/pokemon/croconaw/footprint.png index 43da8e68e320..4dec2924f5fe 100644 Binary files a/graphics/pokemon/croconaw/footprint.png and b/graphics/pokemon/croconaw/footprint.png differ diff --git a/graphics/pokemon/croconaw/front.png b/graphics/pokemon/croconaw/front.png deleted file mode 100644 index b1cd5b3b64f1..000000000000 Binary files a/graphics/pokemon/croconaw/front.png and /dev/null differ diff --git a/graphics/pokemon/croconaw/normal.pal b/graphics/pokemon/croconaw/normal.pal index 95fb4e4502b2..1a33a193e955 100644 --- a/graphics/pokemon/croconaw/normal.pal +++ b/graphics/pokemon/croconaw/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 0 8 -248 136 128 +156 16 32 +255 172 90 16 16 16 -240 80 88 -200 40 56 -32 96 120 -32 136 184 -104 200 200 -136 232 224 -248 248 248 -120 0 0 -224 64 32 -104 80 0 -200 184 96 -248 224 136 +255 74 74 +213 24 16 +32 98 123 +32 139 189 +106 205 205 +139 238 230 +255 255 255 +123 0 0 +230 65 32 +139 98 0 +238 180 74 +255 255 98 diff --git a/graphics/pokemon/crustle/footprint.png b/graphics/pokemon/crustle/footprint.png index 4cc2972cf28e..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/crustle/footprint.png and b/graphics/pokemon/crustle/footprint.png differ diff --git a/graphics/pokemon/crustle/front.png b/graphics/pokemon/crustle/front.png deleted file mode 100644 index 44fa563a2821..000000000000 Binary files a/graphics/pokemon/crustle/front.png and /dev/null differ diff --git a/graphics/pokemon/crustle/icon.png b/graphics/pokemon/crustle/icon.png index e6a99fe634cf..5b70147792e6 100644 Binary files a/graphics/pokemon/crustle/icon.png and b/graphics/pokemon/crustle/icon.png differ diff --git a/graphics/pokemon/cryogonal/footprint.png b/graphics/pokemon/cryogonal/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/cryogonal/footprint.png and b/graphics/pokemon/cryogonal/footprint.png differ diff --git a/graphics/pokemon/cryogonal/front.png b/graphics/pokemon/cryogonal/front.png deleted file mode 100644 index e3cd4c10f1fe..000000000000 Binary files a/graphics/pokemon/cryogonal/front.png and /dev/null differ diff --git a/graphics/pokemon/cubchoo/footprint.png b/graphics/pokemon/cubchoo/footprint.png index b2027716cdd9..169bb4cf5b13 100644 Binary files a/graphics/pokemon/cubchoo/footprint.png and b/graphics/pokemon/cubchoo/footprint.png differ diff --git a/graphics/pokemon/cubchoo/front.png b/graphics/pokemon/cubchoo/front.png deleted file mode 100644 index 82e5e9194ea2..000000000000 Binary files a/graphics/pokemon/cubchoo/front.png and /dev/null differ diff --git a/graphics/pokemon/cubone/footprint.png b/graphics/pokemon/cubone/footprint.png index 21deee1a6c1f..46a6a9659550 100644 Binary files a/graphics/pokemon/cubone/footprint.png and b/graphics/pokemon/cubone/footprint.png differ diff --git a/graphics/pokemon/cubone/front.png b/graphics/pokemon/cubone/front.png deleted file mode 100644 index ddf94b1a049d..000000000000 Binary files a/graphics/pokemon/cubone/front.png and /dev/null differ diff --git a/graphics/pokemon/cufant/footprint.png b/graphics/pokemon/cufant/footprint.png index 1f455d9d8ab5..ebdb4a2baae4 100644 Binary files a/graphics/pokemon/cufant/footprint.png and b/graphics/pokemon/cufant/footprint.png differ diff --git a/graphics/pokemon/cursola/footprint.png b/graphics/pokemon/cursola/footprint.png index 2a8e9ff356cf..458777edeb8d 100644 Binary files a/graphics/pokemon/cursola/footprint.png and b/graphics/pokemon/cursola/footprint.png differ diff --git a/graphics/pokemon/cursola/front.png b/graphics/pokemon/cursola/front.png index 01f189f5cb4f..d4811ab1e711 100644 Binary files a/graphics/pokemon/cursola/front.png and b/graphics/pokemon/cursola/front.png differ diff --git a/graphics/pokemon/cutiefly/footprint.png b/graphics/pokemon/cutiefly/footprint.png index b7587ca277ed..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/cutiefly/footprint.png and b/graphics/pokemon/cutiefly/footprint.png differ diff --git a/graphics/pokemon/cyndaquil/anim_front.png b/graphics/pokemon/cyndaquil/anim_front.png index bfdf5a6223ac..3649ae50efd7 100644 Binary files a/graphics/pokemon/cyndaquil/anim_front.png and b/graphics/pokemon/cyndaquil/anim_front.png differ diff --git a/graphics/pokemon/cyndaquil/footprint.png b/graphics/pokemon/cyndaquil/footprint.png index 6413cbaae4ec..ebdb4a2baae4 100644 Binary files a/graphics/pokemon/cyndaquil/footprint.png and b/graphics/pokemon/cyndaquil/footprint.png differ diff --git a/graphics/pokemon/cyndaquil/front.png b/graphics/pokemon/cyndaquil/front.png deleted file mode 100644 index 448a51f8a91c..000000000000 Binary files a/graphics/pokemon/cyndaquil/front.png and /dev/null differ diff --git a/graphics/pokemon/cyndaquil/normal.pal b/graphics/pokemon/cyndaquil/normal.pal index f5182e5eed41..b600ed85e695 100644 --- a/graphics/pokemon/cyndaquil/normal.pal +++ b/graphics/pokemon/cyndaquil/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -216 0 0 -248 56 0 -16 56 80 -48 104 128 -96 168 184 -248 152 0 +222 0 0 +255 90 0 +41 82 82 +57 98 123 +98 131 156 +255 156 0 16 16 16 -248 216 16 -16 40 48 -200 168 80 -248 240 160 -120 96 32 -216 176 120 -168 168 168 +255 222 0 +24 57 74 +197 164 106 +255 238 164 +123 98 32 +230 205 106 +172 172 172 248 248 248 diff --git a/graphics/pokemon/darkrai/footprint.png b/graphics/pokemon/darkrai/footprint.png index 8c3692e430b6..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/darkrai/footprint.png and b/graphics/pokemon/darkrai/footprint.png differ diff --git a/graphics/pokemon/darkrai/front.png b/graphics/pokemon/darkrai/front.png deleted file mode 100644 index e3f284abdd46..000000000000 Binary files a/graphics/pokemon/darkrai/front.png and /dev/null differ diff --git a/graphics/pokemon/darkrai/icon.png b/graphics/pokemon/darkrai/icon.png index 71d92afdc2a7..c31c365bdbc9 100644 Binary files a/graphics/pokemon/darkrai/icon.png and b/graphics/pokemon/darkrai/icon.png differ diff --git a/graphics/pokemon/darmanitan/footprint.png b/graphics/pokemon/darmanitan/footprint.png index 4d851ce7f23d..bd60d6c798c8 100644 Binary files a/graphics/pokemon/darmanitan/footprint.png and b/graphics/pokemon/darmanitan/footprint.png differ diff --git a/graphics/pokemon/darmanitan/front.png b/graphics/pokemon/darmanitan/front.png deleted file mode 100644 index 137b407ba9da..000000000000 Binary files a/graphics/pokemon/darmanitan/front.png and /dev/null differ diff --git a/graphics/pokemon/darmanitan/zen_mode/front.png b/graphics/pokemon/darmanitan/zen_mode/front.png deleted file mode 100644 index 84ace43cf945..000000000000 Binary files a/graphics/pokemon/darmanitan/zen_mode/front.png and /dev/null differ diff --git a/graphics/pokemon/darmanitan/zen_mode/icon.png b/graphics/pokemon/darmanitan/zen_mode/icon.png index f9e8674785ab..b563d4f2ad13 100644 Binary files a/graphics/pokemon/darmanitan/zen_mode/icon.png and b/graphics/pokemon/darmanitan/zen_mode/icon.png differ diff --git a/graphics/pokemon/dartrix/footprint.png b/graphics/pokemon/dartrix/footprint.png index 8a7eb236dcd7..8d9cd78e0d83 100644 Binary files a/graphics/pokemon/dartrix/footprint.png and b/graphics/pokemon/dartrix/footprint.png differ diff --git a/graphics/pokemon/darumaka/footprint.png b/graphics/pokemon/darumaka/footprint.png index 09eba937bb12..b6dd8595c7d3 100644 Binary files a/graphics/pokemon/darumaka/footprint.png and b/graphics/pokemon/darumaka/footprint.png differ diff --git a/graphics/pokemon/darumaka/front.png b/graphics/pokemon/darumaka/front.png deleted file mode 100644 index 92a3645d24ef..000000000000 Binary files a/graphics/pokemon/darumaka/front.png and /dev/null differ diff --git a/graphics/pokemon/decidueye/footprint.png b/graphics/pokemon/decidueye/footprint.png index 8061657a7499..a5b235dc87e5 100644 Binary files a/graphics/pokemon/decidueye/footprint.png and b/graphics/pokemon/decidueye/footprint.png differ diff --git a/graphics/pokemon/decidueye/hisuian/back.png b/graphics/pokemon/decidueye/hisuian/back.png new file mode 100755 index 000000000000..e977f88e25db Binary files /dev/null and b/graphics/pokemon/decidueye/hisuian/back.png differ diff --git a/graphics/pokemon/decidueye/hisuian/front.png b/graphics/pokemon/decidueye/hisuian/front.png new file mode 100755 index 000000000000..f3c4d93af1fb Binary files /dev/null and b/graphics/pokemon/decidueye/hisuian/front.png differ diff --git a/graphics/pokemon/decidueye/hisuian/icon.png b/graphics/pokemon/decidueye/hisuian/icon.png old mode 100644 new mode 100755 diff --git a/graphics/pokemon/decidueye/hisuian/normal.pal b/graphics/pokemon/decidueye/hisuian/normal.pal new file mode 100755 index 000000000000..a5a61bafe07e --- /dev/null +++ b/graphics/pokemon/decidueye/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 213 164 +115 106 106 +16 16 16 +238 238 238 +189 189 189 +238 156 57 +65 41 32 +106 24 41 +189 106 41 +205 49 41 +148 32 41 +41 41 49 +213 148 98 +74 74 90 +172 106 74 +115 65 57 diff --git a/graphics/pokemon/decidueye/hisuian/shiny.pal b/graphics/pokemon/decidueye/hisuian/shiny.pal new file mode 100755 index 000000000000..5dd5e9e8f60b --- /dev/null +++ b/graphics/pokemon/decidueye/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 213 164 +115 106 106 +16 16 16 +238 238 238 +189 189 189 +238 82 57 +65 41 32 +16 57 41 +172 41 41 +32 131 98 +24 90 65 +41 41 49 +172 139 106 +74 74 90 +131 106 90 +90 65 57 diff --git a/graphics/pokemon/dedenne/footprint.png b/graphics/pokemon/dedenne/footprint.png index 275b3dc7b16c..5e92deff2158 100644 Binary files a/graphics/pokemon/dedenne/footprint.png and b/graphics/pokemon/dedenne/footprint.png differ diff --git a/graphics/pokemon/dedenne/front.png b/graphics/pokemon/dedenne/front.png deleted file mode 100644 index 05e9403c5088..000000000000 Binary files a/graphics/pokemon/dedenne/front.png and /dev/null differ diff --git a/graphics/pokemon/deerling/autumn/icon.png b/graphics/pokemon/deerling/autumn/icon.png index 7c14c05cb299..4181194e1da1 100644 Binary files a/graphics/pokemon/deerling/autumn/icon.png and b/graphics/pokemon/deerling/autumn/icon.png differ diff --git a/graphics/pokemon/deerling/footprint.png b/graphics/pokemon/deerling/footprint.png index 1b699876b854..faee4817bb8f 100644 Binary files a/graphics/pokemon/deerling/footprint.png and b/graphics/pokemon/deerling/footprint.png differ diff --git a/graphics/pokemon/deerling/front.png b/graphics/pokemon/deerling/front.png deleted file mode 100644 index cade6f0dbfdf..000000000000 Binary files a/graphics/pokemon/deerling/front.png and /dev/null differ diff --git a/graphics/pokemon/deerling/summer/icon.png b/graphics/pokemon/deerling/summer/icon.png index 7a95355c35c6..c3358ab9fce7 100644 Binary files a/graphics/pokemon/deerling/summer/icon.png and b/graphics/pokemon/deerling/summer/icon.png differ diff --git a/graphics/pokemon/deerling/winter/icon.png b/graphics/pokemon/deerling/winter/icon.png index a7259c67e0c4..6528ea971175 100644 Binary files a/graphics/pokemon/deerling/winter/icon.png and b/graphics/pokemon/deerling/winter/icon.png differ diff --git a/graphics/pokemon/deino/footprint.png b/graphics/pokemon/deino/footprint.png index 4451e571365e..e65ee09015ce 100644 Binary files a/graphics/pokemon/deino/footprint.png and b/graphics/pokemon/deino/footprint.png differ diff --git a/graphics/pokemon/deino/front.png b/graphics/pokemon/deino/front.png deleted file mode 100644 index 835771003ab1..000000000000 Binary files a/graphics/pokemon/deino/front.png and /dev/null differ diff --git a/graphics/pokemon/deino/icon.png b/graphics/pokemon/deino/icon.png index 60822658b5ec..0b5ec01ce0d8 100644 Binary files a/graphics/pokemon/deino/icon.png and b/graphics/pokemon/deino/icon.png differ diff --git a/graphics/pokemon/delcatty/footprint.png b/graphics/pokemon/delcatty/footprint.png index 5ff40e5a0dcb..58035e1ae557 100644 Binary files a/graphics/pokemon/delcatty/footprint.png and b/graphics/pokemon/delcatty/footprint.png differ diff --git a/graphics/pokemon/delcatty/front.png b/graphics/pokemon/delcatty/front.png deleted file mode 100644 index bdb666e0399a..000000000000 Binary files a/graphics/pokemon/delcatty/front.png and /dev/null differ diff --git a/graphics/pokemon/delibird/footprint.png b/graphics/pokemon/delibird/footprint.png index e7348586ec32..56baaef90a3d 100644 Binary files a/graphics/pokemon/delibird/footprint.png and b/graphics/pokemon/delibird/footprint.png differ diff --git a/graphics/pokemon/delibird/front.png b/graphics/pokemon/delibird/front.png deleted file mode 100644 index a0eaf79af0fe..000000000000 Binary files a/graphics/pokemon/delibird/front.png and /dev/null differ diff --git a/graphics/pokemon/delphox/footprint.png b/graphics/pokemon/delphox/footprint.png index abb8462b308b..52c60fcab548 100644 Binary files a/graphics/pokemon/delphox/footprint.png and b/graphics/pokemon/delphox/footprint.png differ diff --git a/graphics/pokemon/delphox/front.png b/graphics/pokemon/delphox/front.png deleted file mode 100644 index 939b538c44a1..000000000000 Binary files a/graphics/pokemon/delphox/front.png and /dev/null differ diff --git a/graphics/pokemon/deoxys/attack/front.png b/graphics/pokemon/deoxys/attack/front.png deleted file mode 100644 index 5080dd28eb4b..000000000000 Binary files a/graphics/pokemon/deoxys/attack/front.png and /dev/null differ diff --git a/graphics/pokemon/deoxys/defense/front.png b/graphics/pokemon/deoxys/defense/front.png deleted file mode 100644 index 2e21b5592ed6..000000000000 Binary files a/graphics/pokemon/deoxys/defense/front.png and /dev/null differ diff --git a/graphics/pokemon/deoxys/footprint.png b/graphics/pokemon/deoxys/footprint.png index ea97e4014c64..31270c17c1be 100644 Binary files a/graphics/pokemon/deoxys/footprint.png and b/graphics/pokemon/deoxys/footprint.png differ diff --git a/graphics/pokemon/deoxys/front.png b/graphics/pokemon/deoxys/front.png deleted file mode 100644 index 5c2c25314e59..000000000000 Binary files a/graphics/pokemon/deoxys/front.png and /dev/null differ diff --git a/graphics/pokemon/deoxys/speed/front.png b/graphics/pokemon/deoxys/speed/front.png deleted file mode 100644 index 776d0083b368..000000000000 Binary files a/graphics/pokemon/deoxys/speed/front.png and /dev/null differ diff --git a/graphics/pokemon/dewgong/back.png b/graphics/pokemon/dewgong/back.png index 1d5e35fdff12..90b5ae680b02 100644 Binary files a/graphics/pokemon/dewgong/back.png and b/graphics/pokemon/dewgong/back.png differ diff --git a/graphics/pokemon/dewgong/footprint.png b/graphics/pokemon/dewgong/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/dewgong/footprint.png and b/graphics/pokemon/dewgong/footprint.png differ diff --git a/graphics/pokemon/dewgong/front.png b/graphics/pokemon/dewgong/front.png deleted file mode 100644 index 62201eaab32d..000000000000 Binary files a/graphics/pokemon/dewgong/front.png and /dev/null differ diff --git a/graphics/pokemon/dewott/footprint.png b/graphics/pokemon/dewott/footprint.png index 1a0d6f37f1d4..2ef60e49beb2 100644 Binary files a/graphics/pokemon/dewott/footprint.png and b/graphics/pokemon/dewott/footprint.png differ diff --git a/graphics/pokemon/dewott/front.png b/graphics/pokemon/dewott/front.png deleted file mode 100644 index d8665e601ea5..000000000000 Binary files a/graphics/pokemon/dewott/front.png and /dev/null differ diff --git a/graphics/pokemon/dewpider/footprint.png b/graphics/pokemon/dewpider/footprint.png index 87f972b02821..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/dewpider/footprint.png and b/graphics/pokemon/dewpider/footprint.png differ diff --git a/graphics/pokemon/dhelmise/footprint.png b/graphics/pokemon/dhelmise/footprint.png index 933d21b5ac10..2449369fd6b8 100644 Binary files a/graphics/pokemon/dhelmise/footprint.png and b/graphics/pokemon/dhelmise/footprint.png differ diff --git a/graphics/pokemon/dialga/footprint.png b/graphics/pokemon/dialga/footprint.png index bba0048ca829..635cc004887a 100644 Binary files a/graphics/pokemon/dialga/footprint.png and b/graphics/pokemon/dialga/footprint.png differ diff --git a/graphics/pokemon/dialga/front.png b/graphics/pokemon/dialga/front.png deleted file mode 100644 index e4a6172ace57..000000000000 Binary files a/graphics/pokemon/dialga/front.png and /dev/null differ diff --git a/graphics/pokemon/dialga/icon.png b/graphics/pokemon/dialga/icon.png index 83db2e521dfc..232b9bf94540 100644 Binary files a/graphics/pokemon/dialga/icon.png and b/graphics/pokemon/dialga/icon.png differ diff --git a/graphics/pokemon/diancie/footprint.png b/graphics/pokemon/diancie/footprint.png index 9f46f600372f..2449369fd6b8 100644 Binary files a/graphics/pokemon/diancie/footprint.png and b/graphics/pokemon/diancie/footprint.png differ diff --git a/graphics/pokemon/diancie/front.png b/graphics/pokemon/diancie/front.png deleted file mode 100644 index c99768d64a41..000000000000 Binary files a/graphics/pokemon/diancie/front.png and /dev/null differ diff --git a/graphics/pokemon/diggersby/footprint.png b/graphics/pokemon/diggersby/footprint.png index 997244c7c4c3..b702b37ce029 100644 Binary files a/graphics/pokemon/diggersby/footprint.png and b/graphics/pokemon/diggersby/footprint.png differ diff --git a/graphics/pokemon/diggersby/front.png b/graphics/pokemon/diggersby/front.png deleted file mode 100644 index 90ff136ab71c..000000000000 Binary files a/graphics/pokemon/diggersby/front.png and /dev/null differ diff --git a/graphics/pokemon/diglett/footprint.png b/graphics/pokemon/diglett/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/diglett/footprint.png and b/graphics/pokemon/diglett/footprint.png differ diff --git a/graphics/pokemon/diglett/front.png b/graphics/pokemon/diglett/front.png deleted file mode 100644 index 4e527ef5e57c..000000000000 Binary files a/graphics/pokemon/diglett/front.png and /dev/null differ diff --git a/graphics/pokemon/ditto/back.png b/graphics/pokemon/ditto/back.png index 9768f89a15b1..5bea88a4aee6 100644 Binary files a/graphics/pokemon/ditto/back.png and b/graphics/pokemon/ditto/back.png differ diff --git a/graphics/pokemon/ditto/footprint.png b/graphics/pokemon/ditto/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/ditto/footprint.png and b/graphics/pokemon/ditto/footprint.png differ diff --git a/graphics/pokemon/ditto/front.png b/graphics/pokemon/ditto/front.png deleted file mode 100644 index 73603b303d3a..000000000000 Binary files a/graphics/pokemon/ditto/front.png and /dev/null differ diff --git a/graphics/pokemon/dodrio/footprint.png b/graphics/pokemon/dodrio/footprint.png index 34f85bfb39d0..045339f23e79 100644 Binary files a/graphics/pokemon/dodrio/footprint.png and b/graphics/pokemon/dodrio/footprint.png differ diff --git a/graphics/pokemon/dodrio/front.png b/graphics/pokemon/dodrio/front.png deleted file mode 100644 index 5184438f4985..000000000000 Binary files a/graphics/pokemon/dodrio/front.png and /dev/null differ diff --git a/graphics/pokemon/dodrio/icon.png b/graphics/pokemon/dodrio/icon.png index bd1692b13391..19d1644a3cfb 100644 Binary files a/graphics/pokemon/dodrio/icon.png and b/graphics/pokemon/dodrio/icon.png differ diff --git a/graphics/pokemon/doduo/footprint.png b/graphics/pokemon/doduo/footprint.png index 0710eca52335..21ca1be91cd2 100644 Binary files a/graphics/pokemon/doduo/footprint.png and b/graphics/pokemon/doduo/footprint.png differ diff --git a/graphics/pokemon/doduo/front.png b/graphics/pokemon/doduo/front.png deleted file mode 100644 index 6222a7e271e9..000000000000 Binary files a/graphics/pokemon/doduo/front.png and /dev/null differ diff --git a/graphics/pokemon/donphan/footprint.png b/graphics/pokemon/donphan/footprint.png index 394cf6457033..0bb8543ed59a 100644 Binary files a/graphics/pokemon/donphan/footprint.png and b/graphics/pokemon/donphan/footprint.png differ diff --git a/graphics/pokemon/donphan/front.png b/graphics/pokemon/donphan/front.png deleted file mode 100644 index cb344b85bc2e..000000000000 Binary files a/graphics/pokemon/donphan/front.png and /dev/null differ diff --git a/graphics/pokemon/donphan/icon.png b/graphics/pokemon/donphan/icon.png index ce6783910794..32368b808dea 100644 Binary files a/graphics/pokemon/donphan/icon.png and b/graphics/pokemon/donphan/icon.png differ diff --git a/graphics/pokemon/dottler/footprint.png b/graphics/pokemon/dottler/footprint.png index d1c72ca9c3ea..5d01e97d6962 100644 Binary files a/graphics/pokemon/dottler/footprint.png and b/graphics/pokemon/dottler/footprint.png differ diff --git a/graphics/pokemon/doublade/footprint.png b/graphics/pokemon/doublade/footprint.png index eac01614ef68..2449369fd6b8 100644 Binary files a/graphics/pokemon/doublade/footprint.png and b/graphics/pokemon/doublade/footprint.png differ diff --git a/graphics/pokemon/doublade/front.png b/graphics/pokemon/doublade/front.png deleted file mode 100644 index b2bd15029f56..000000000000 Binary files a/graphics/pokemon/doublade/front.png and /dev/null differ diff --git a/graphics/pokemon/dracovish/footprint.png b/graphics/pokemon/dracovish/footprint.png index 393a49c9e385..d28f2a5295d9 100644 Binary files a/graphics/pokemon/dracovish/footprint.png and b/graphics/pokemon/dracovish/footprint.png differ diff --git a/graphics/pokemon/dracozolt/footprint.png b/graphics/pokemon/dracozolt/footprint.png index 61e4db30136f..d28f2a5295d9 100644 Binary files a/graphics/pokemon/dracozolt/footprint.png and b/graphics/pokemon/dracozolt/footprint.png differ diff --git a/graphics/pokemon/dragalge/footprint.png b/graphics/pokemon/dragalge/footprint.png index 4320ad16da4a..2449369fd6b8 100644 Binary files a/graphics/pokemon/dragalge/footprint.png and b/graphics/pokemon/dragalge/footprint.png differ diff --git a/graphics/pokemon/dragalge/front.png b/graphics/pokemon/dragalge/front.png deleted file mode 100644 index be813026f8d2..000000000000 Binary files a/graphics/pokemon/dragalge/front.png and /dev/null differ diff --git a/graphics/pokemon/dragapult/footprint.png b/graphics/pokemon/dragapult/footprint.png index 74f6dcf3cfb4..374328211257 100644 Binary files a/graphics/pokemon/dragapult/footprint.png and b/graphics/pokemon/dragapult/footprint.png differ diff --git a/graphics/pokemon/dragonair/footprint.png b/graphics/pokemon/dragonair/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/dragonair/footprint.png and b/graphics/pokemon/dragonair/footprint.png differ diff --git a/graphics/pokemon/dragonair/front.png b/graphics/pokemon/dragonair/front.png deleted file mode 100644 index 91fea694e261..000000000000 Binary files a/graphics/pokemon/dragonair/front.png and /dev/null differ diff --git a/graphics/pokemon/dragonite/footprint.png b/graphics/pokemon/dragonite/footprint.png index 1f41296b0b0f..d28f2a5295d9 100644 Binary files a/graphics/pokemon/dragonite/footprint.png and b/graphics/pokemon/dragonite/footprint.png differ diff --git a/graphics/pokemon/dragonite/front.png b/graphics/pokemon/dragonite/front.png deleted file mode 100644 index 6bffee898003..000000000000 Binary files a/graphics/pokemon/dragonite/front.png and /dev/null differ diff --git a/graphics/pokemon/dragonite/icon.png b/graphics/pokemon/dragonite/icon.png index 11fb866c393f..12c2c141d680 100644 Binary files a/graphics/pokemon/dragonite/icon.png and b/graphics/pokemon/dragonite/icon.png differ diff --git a/graphics/pokemon/drakloak/footprint.png b/graphics/pokemon/drakloak/footprint.png index a73855356a39..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/drakloak/footprint.png and b/graphics/pokemon/drakloak/footprint.png differ diff --git a/graphics/pokemon/drampa/footprint.png b/graphics/pokemon/drampa/footprint.png index 63bc4a257cb8..2449369fd6b8 100644 Binary files a/graphics/pokemon/drampa/footprint.png and b/graphics/pokemon/drampa/footprint.png differ diff --git a/graphics/pokemon/drapion/footprint.png b/graphics/pokemon/drapion/footprint.png index 486780c2a8a7..a9b0e33c2899 100644 Binary files a/graphics/pokemon/drapion/footprint.png and b/graphics/pokemon/drapion/footprint.png differ diff --git a/graphics/pokemon/drapion/front.png b/graphics/pokemon/drapion/front.png deleted file mode 100644 index 57734a284423..000000000000 Binary files a/graphics/pokemon/drapion/front.png and /dev/null differ diff --git a/graphics/pokemon/dratini/footprint.png b/graphics/pokemon/dratini/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/dratini/footprint.png and b/graphics/pokemon/dratini/footprint.png differ diff --git a/graphics/pokemon/dratini/front.png b/graphics/pokemon/dratini/front.png deleted file mode 100644 index ee6f3bc45017..000000000000 Binary files a/graphics/pokemon/dratini/front.png and /dev/null differ diff --git a/graphics/pokemon/drednaw/footprint.png b/graphics/pokemon/drednaw/footprint.png index f6da8b76b278..d837294f9db2 100644 Binary files a/graphics/pokemon/drednaw/footprint.png and b/graphics/pokemon/drednaw/footprint.png differ diff --git a/graphics/pokemon/dreepy/footprint.png b/graphics/pokemon/dreepy/footprint.png index ff7379baa94b..2449369fd6b8 100644 Binary files a/graphics/pokemon/dreepy/footprint.png and b/graphics/pokemon/dreepy/footprint.png differ diff --git a/graphics/pokemon/drifblim/footprint.png b/graphics/pokemon/drifblim/footprint.png index 1e52ea608114..2449369fd6b8 100644 Binary files a/graphics/pokemon/drifblim/footprint.png and b/graphics/pokemon/drifblim/footprint.png differ diff --git a/graphics/pokemon/drifblim/front.png b/graphics/pokemon/drifblim/front.png deleted file mode 100644 index f6cf9d5f9d64..000000000000 Binary files a/graphics/pokemon/drifblim/front.png and /dev/null differ diff --git a/graphics/pokemon/drifblim/icon.png b/graphics/pokemon/drifblim/icon.png index bfa106e872f3..df7c888d5f41 100644 Binary files a/graphics/pokemon/drifblim/icon.png and b/graphics/pokemon/drifblim/icon.png differ diff --git a/graphics/pokemon/drifloon/footprint.png b/graphics/pokemon/drifloon/footprint.png index 1e52ea608114..2449369fd6b8 100644 Binary files a/graphics/pokemon/drifloon/footprint.png and b/graphics/pokemon/drifloon/footprint.png differ diff --git a/graphics/pokemon/drifloon/front.png b/graphics/pokemon/drifloon/front.png deleted file mode 100644 index dea6e88717ea..000000000000 Binary files a/graphics/pokemon/drifloon/front.png and /dev/null differ diff --git a/graphics/pokemon/drilbur/footprint.png b/graphics/pokemon/drilbur/footprint.png index 2da2d31896f1..cfac8c0ac988 100644 Binary files a/graphics/pokemon/drilbur/footprint.png and b/graphics/pokemon/drilbur/footprint.png differ diff --git a/graphics/pokemon/drilbur/front.png b/graphics/pokemon/drilbur/front.png deleted file mode 100644 index 1bb3bb20d883..000000000000 Binary files a/graphics/pokemon/drilbur/front.png and /dev/null differ diff --git a/graphics/pokemon/drizzile/footprint.png b/graphics/pokemon/drizzile/footprint.png index bda00c21328c..a34da31ca67d 100644 Binary files a/graphics/pokemon/drizzile/footprint.png and b/graphics/pokemon/drizzile/footprint.png differ diff --git a/graphics/pokemon/drowzee/footprint.png b/graphics/pokemon/drowzee/footprint.png index 23293423e87f..fcc93432e866 100644 Binary files a/graphics/pokemon/drowzee/footprint.png and b/graphics/pokemon/drowzee/footprint.png differ diff --git a/graphics/pokemon/drowzee/front.png b/graphics/pokemon/drowzee/front.png deleted file mode 100644 index b1296df0e26b..000000000000 Binary files a/graphics/pokemon/drowzee/front.png and /dev/null differ diff --git a/graphics/pokemon/druddigon/footprint.png b/graphics/pokemon/druddigon/footprint.png index 958d563792e6..67f3bb6f3997 100644 Binary files a/graphics/pokemon/druddigon/footprint.png and b/graphics/pokemon/druddigon/footprint.png differ diff --git a/graphics/pokemon/druddigon/front.png b/graphics/pokemon/druddigon/front.png deleted file mode 100644 index a522546a2b80..000000000000 Binary files a/graphics/pokemon/druddigon/front.png and /dev/null differ diff --git a/graphics/pokemon/dubwool/footprint.png b/graphics/pokemon/dubwool/footprint.png index c302e113bccc..63cfc90382bc 100644 Binary files a/graphics/pokemon/dubwool/footprint.png and b/graphics/pokemon/dubwool/footprint.png differ diff --git a/graphics/pokemon/ducklett/footprint.png b/graphics/pokemon/ducklett/footprint.png index 855e05c4f204..d7babe58fb9e 100644 Binary files a/graphics/pokemon/ducklett/footprint.png and b/graphics/pokemon/ducklett/footprint.png differ diff --git a/graphics/pokemon/ducklett/front.png b/graphics/pokemon/ducklett/front.png deleted file mode 100644 index f86b61a3d517..000000000000 Binary files a/graphics/pokemon/ducklett/front.png and /dev/null differ diff --git a/graphics/pokemon/dugtrio/footprint.png b/graphics/pokemon/dugtrio/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/dugtrio/footprint.png and b/graphics/pokemon/dugtrio/footprint.png differ diff --git a/graphics/pokemon/dugtrio/front.png b/graphics/pokemon/dugtrio/front.png deleted file mode 100644 index 60051cd79ce7..000000000000 Binary files a/graphics/pokemon/dugtrio/front.png and /dev/null differ diff --git a/graphics/pokemon/dunsparce/back.png b/graphics/pokemon/dunsparce/back.png index 03dc3acbb893..c19d4b5dbeda 100644 Binary files a/graphics/pokemon/dunsparce/back.png and b/graphics/pokemon/dunsparce/back.png differ diff --git a/graphics/pokemon/dunsparce/footprint.png b/graphics/pokemon/dunsparce/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/dunsparce/footprint.png and b/graphics/pokemon/dunsparce/footprint.png differ diff --git a/graphics/pokemon/dunsparce/front.png b/graphics/pokemon/dunsparce/front.png deleted file mode 100644 index 660f5e1a1156..000000000000 Binary files a/graphics/pokemon/dunsparce/front.png and /dev/null differ diff --git a/graphics/pokemon/duosion/anim_front.png b/graphics/pokemon/duosion/anim_front.png index e8c48d6c05fa..c265b42524e8 100644 Binary files a/graphics/pokemon/duosion/anim_front.png and b/graphics/pokemon/duosion/anim_front.png differ diff --git a/graphics/pokemon/duosion/footprint.png b/graphics/pokemon/duosion/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/duosion/footprint.png and b/graphics/pokemon/duosion/footprint.png differ diff --git a/graphics/pokemon/duosion/front.png b/graphics/pokemon/duosion/front.png deleted file mode 100644 index acf0c1c0d239..000000000000 Binary files a/graphics/pokemon/duosion/front.png and /dev/null differ diff --git a/graphics/pokemon/duosion/icon.png b/graphics/pokemon/duosion/icon.png index 90064f3be059..9385bf6140a4 100644 Binary files a/graphics/pokemon/duosion/icon.png and b/graphics/pokemon/duosion/icon.png differ diff --git a/graphics/pokemon/duosion/normal.pal b/graphics/pokemon/duosion/normal.pal index 9af82073ece4..1316dc666201 100644 --- a/graphics/pokemon/duosion/normal.pal +++ b/graphics/pokemon/duosion/normal.pal @@ -11,8 +11,8 @@ JASC-PAL 16 16 16 128 216 160 224 248 216 -112 56 56 176 64 64 +112 56 56 128 216 160 0 0 0 0 0 0 diff --git a/graphics/pokemon/duraludon/footprint.png b/graphics/pokemon/duraludon/footprint.png index e723bbd398b5..c0d2b88c5ea3 100644 Binary files a/graphics/pokemon/duraludon/footprint.png and b/graphics/pokemon/duraludon/footprint.png differ diff --git a/graphics/pokemon/durant/footprint.png b/graphics/pokemon/durant/footprint.png index ca99591d40cf..a9b0e33c2899 100644 Binary files a/graphics/pokemon/durant/footprint.png and b/graphics/pokemon/durant/footprint.png differ diff --git a/graphics/pokemon/durant/front.png b/graphics/pokemon/durant/front.png deleted file mode 100644 index 0320e654f912..000000000000 Binary files a/graphics/pokemon/durant/front.png and /dev/null differ diff --git a/graphics/pokemon/dusclops/footprint.png b/graphics/pokemon/dusclops/footprint.png index 752ffa353cfa..86cb1fbc8fc8 100644 Binary files a/graphics/pokemon/dusclops/footprint.png and b/graphics/pokemon/dusclops/footprint.png differ diff --git a/graphics/pokemon/dusclops/front.png b/graphics/pokemon/dusclops/front.png deleted file mode 100644 index 58a0d15abb07..000000000000 Binary files a/graphics/pokemon/dusclops/front.png and /dev/null differ diff --git a/graphics/pokemon/dusknoir/footprint.png b/graphics/pokemon/dusknoir/footprint.png index ba82cd69e3ae..2449369fd6b8 100644 Binary files a/graphics/pokemon/dusknoir/footprint.png and b/graphics/pokemon/dusknoir/footprint.png differ diff --git a/graphics/pokemon/dusknoir/front.png b/graphics/pokemon/dusknoir/front.png deleted file mode 100644 index 95a5ccea9840..000000000000 Binary files a/graphics/pokemon/dusknoir/front.png and /dev/null differ diff --git a/graphics/pokemon/duskull/anim_front.png b/graphics/pokemon/duskull/anim_front.png index ede00efffc08..b873ffbb7c93 100644 Binary files a/graphics/pokemon/duskull/anim_front.png and b/graphics/pokemon/duskull/anim_front.png differ diff --git a/graphics/pokemon/duskull/back.png b/graphics/pokemon/duskull/back.png index e3817e24eacf..82b1266c5c49 100644 Binary files a/graphics/pokemon/duskull/back.png and b/graphics/pokemon/duskull/back.png differ diff --git a/graphics/pokemon/duskull/footprint.png b/graphics/pokemon/duskull/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/duskull/footprint.png and b/graphics/pokemon/duskull/footprint.png differ diff --git a/graphics/pokemon/duskull/front.png b/graphics/pokemon/duskull/front.png deleted file mode 100644 index 33903c773d5e..000000000000 Binary files a/graphics/pokemon/duskull/front.png and /dev/null differ diff --git a/graphics/pokemon/duskull/shiny.pal b/graphics/pokemon/duskull/shiny.pal index 2c59d3ae14a7..16dc97f5a8cb 100644 --- a/graphics/pokemon/duskull/shiny.pal +++ b/graphics/pokemon/duskull/shiny.pal @@ -14,6 +14,6 @@ JASC-PAL 248 232 176 248 120 88 152 40 72 -104 88 80 +248 120 88 0 0 0 0 0 0 diff --git a/graphics/pokemon/dustox/footprint.png b/graphics/pokemon/dustox/footprint.png index f7cc85bf9cbb..ea2aae4e8262 100644 Binary files a/graphics/pokemon/dustox/footprint.png and b/graphics/pokemon/dustox/footprint.png differ diff --git a/graphics/pokemon/dustox/front.png b/graphics/pokemon/dustox/front.png deleted file mode 100644 index 356320c18db1..000000000000 Binary files a/graphics/pokemon/dustox/front.png and /dev/null differ diff --git a/graphics/pokemon/dwebble/footprint.png b/graphics/pokemon/dwebble/footprint.png index c4fdc5673e1c..a9b0e33c2899 100644 Binary files a/graphics/pokemon/dwebble/footprint.png and b/graphics/pokemon/dwebble/footprint.png differ diff --git a/graphics/pokemon/dwebble/front.png b/graphics/pokemon/dwebble/front.png deleted file mode 100644 index 560295f560f1..000000000000 Binary files a/graphics/pokemon/dwebble/front.png and /dev/null differ diff --git a/graphics/pokemon/dwebble/icon.png b/graphics/pokemon/dwebble/icon.png index 32a23fd05a22..4b356d5aaa9f 100644 Binary files a/graphics/pokemon/dwebble/icon.png and b/graphics/pokemon/dwebble/icon.png differ diff --git a/graphics/pokemon/eelektrik/footprint.png b/graphics/pokemon/eelektrik/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/eelektrik/footprint.png and b/graphics/pokemon/eelektrik/footprint.png differ diff --git a/graphics/pokemon/eelektrik/front.png b/graphics/pokemon/eelektrik/front.png deleted file mode 100644 index 6bb7cc764f94..000000000000 Binary files a/graphics/pokemon/eelektrik/front.png and /dev/null differ diff --git a/graphics/pokemon/eelektross/footprint.png b/graphics/pokemon/eelektross/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/eelektross/footprint.png and b/graphics/pokemon/eelektross/footprint.png differ diff --git a/graphics/pokemon/eelektross/front.png b/graphics/pokemon/eelektross/front.png deleted file mode 100644 index b1ae70adb048..000000000000 Binary files a/graphics/pokemon/eelektross/front.png and /dev/null differ diff --git a/graphics/pokemon/eevee/backf.png b/graphics/pokemon/eevee/backf.png index 7689d995b607..6c265361f5fb 100644 Binary files a/graphics/pokemon/eevee/backf.png and b/graphics/pokemon/eevee/backf.png differ diff --git a/graphics/pokemon/eevee/footprint.png b/graphics/pokemon/eevee/footprint.png index 4e4c01c9f52e..793daaba5287 100644 Binary files a/graphics/pokemon/eevee/footprint.png and b/graphics/pokemon/eevee/footprint.png differ diff --git a/graphics/pokemon/eevee/front.png b/graphics/pokemon/eevee/front.png deleted file mode 100644 index 1773de2aaf1a..000000000000 Binary files a/graphics/pokemon/eevee/front.png and /dev/null differ diff --git a/graphics/pokemon/egg/front.png b/graphics/pokemon/egg/front.png deleted file mode 100644 index d9680a899240..000000000000 Binary files a/graphics/pokemon/egg/front.png and /dev/null differ diff --git a/graphics/pokemon/eiscue/footprint.png b/graphics/pokemon/eiscue/footprint.png index c57938799e69..fe4a161d6ad8 100644 Binary files a/graphics/pokemon/eiscue/footprint.png and b/graphics/pokemon/eiscue/footprint.png differ diff --git a/graphics/pokemon/ekans/footprint.png b/graphics/pokemon/ekans/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/ekans/footprint.png and b/graphics/pokemon/ekans/footprint.png differ diff --git a/graphics/pokemon/ekans/front.png b/graphics/pokemon/ekans/front.png deleted file mode 100644 index ebfd623efaf5..000000000000 Binary files a/graphics/pokemon/ekans/front.png and /dev/null differ diff --git a/graphics/pokemon/eldegoss/footprint.png b/graphics/pokemon/eldegoss/footprint.png index 78c5766d5ead..2449369fd6b8 100644 Binary files a/graphics/pokemon/eldegoss/footprint.png and b/graphics/pokemon/eldegoss/footprint.png differ diff --git a/graphics/pokemon/electabuzz/footprint.png b/graphics/pokemon/electabuzz/footprint.png index b2b4de625b15..19608da7a2ac 100644 Binary files a/graphics/pokemon/electabuzz/footprint.png and b/graphics/pokemon/electabuzz/footprint.png differ diff --git a/graphics/pokemon/electabuzz/front.png b/graphics/pokemon/electabuzz/front.png deleted file mode 100644 index 0459ecb3bc41..000000000000 Binary files a/graphics/pokemon/electabuzz/front.png and /dev/null differ diff --git a/graphics/pokemon/electivire/anim_front.png b/graphics/pokemon/electivire/anim_front.png index a5f05a7e8b95..9aae7e5b5c7e 100644 Binary files a/graphics/pokemon/electivire/anim_front.png and b/graphics/pokemon/electivire/anim_front.png differ diff --git a/graphics/pokemon/electivire/footprint.png b/graphics/pokemon/electivire/footprint.png index c03f36b87970..8a8c6954de2c 100644 Binary files a/graphics/pokemon/electivire/footprint.png and b/graphics/pokemon/electivire/footprint.png differ diff --git a/graphics/pokemon/electivire/front.png b/graphics/pokemon/electivire/front.png deleted file mode 100644 index 41bf884b5e4b..000000000000 Binary files a/graphics/pokemon/electivire/front.png and /dev/null differ diff --git a/graphics/pokemon/electivire/normal.pal b/graphics/pokemon/electivire/normal.pal index e751bd37ecd4..890828f27907 100644 --- a/graphics/pokemon/electivire/normal.pal +++ b/graphics/pokemon/electivire/normal.pal @@ -13,7 +13,7 @@ JASC-PAL 248 232 144 192 168 64 248 248 248 +88 72 64 104 104 104 176 176 192 0 0 0 -0 0 0 diff --git a/graphics/pokemon/electrike/footprint.png b/graphics/pokemon/electrike/footprint.png index 8dd914b35c81..03f78314dada 100644 Binary files a/graphics/pokemon/electrike/footprint.png and b/graphics/pokemon/electrike/footprint.png differ diff --git a/graphics/pokemon/electrike/front.png b/graphics/pokemon/electrike/front.png deleted file mode 100644 index 3e2b74a7522a..000000000000 Binary files a/graphics/pokemon/electrike/front.png and /dev/null differ diff --git a/graphics/pokemon/electrode/footprint.png b/graphics/pokemon/electrode/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/electrode/footprint.png and b/graphics/pokemon/electrode/footprint.png differ diff --git a/graphics/pokemon/electrode/front.png b/graphics/pokemon/electrode/front.png deleted file mode 100644 index 6de7d5e090f2..000000000000 Binary files a/graphics/pokemon/electrode/front.png and /dev/null differ diff --git a/graphics/pokemon/elekid/back.png b/graphics/pokemon/elekid/back.png index 09028a7d9ffd..c0b5f8cb79f5 100644 Binary files a/graphics/pokemon/elekid/back.png and b/graphics/pokemon/elekid/back.png differ diff --git a/graphics/pokemon/elekid/footprint.png b/graphics/pokemon/elekid/footprint.png index 15547931cfed..2b072fbaeb75 100644 Binary files a/graphics/pokemon/elekid/footprint.png and b/graphics/pokemon/elekid/footprint.png differ diff --git a/graphics/pokemon/elekid/front.png b/graphics/pokemon/elekid/front.png deleted file mode 100644 index dc1c694b23e0..000000000000 Binary files a/graphics/pokemon/elekid/front.png and /dev/null differ diff --git a/graphics/pokemon/elgyem/footprint.png b/graphics/pokemon/elgyem/footprint.png index 96a13b7b8624..c2c45ebec4d0 100644 Binary files a/graphics/pokemon/elgyem/footprint.png and b/graphics/pokemon/elgyem/footprint.png differ diff --git a/graphics/pokemon/elgyem/front.png b/graphics/pokemon/elgyem/front.png deleted file mode 100644 index f1a930f82a6d..000000000000 Binary files a/graphics/pokemon/elgyem/front.png and /dev/null differ diff --git a/graphics/pokemon/emboar/footprint.png b/graphics/pokemon/emboar/footprint.png index dc1ab2f076c6..d232346135bd 100644 Binary files a/graphics/pokemon/emboar/footprint.png and b/graphics/pokemon/emboar/footprint.png differ diff --git a/graphics/pokemon/emboar/front.png b/graphics/pokemon/emboar/front.png deleted file mode 100644 index 009ecfd4de55..000000000000 Binary files a/graphics/pokemon/emboar/front.png and /dev/null differ diff --git a/graphics/pokemon/emboar/icon.png b/graphics/pokemon/emboar/icon.png index 8d6f99628e99..d79f6f004ba6 100644 Binary files a/graphics/pokemon/emboar/icon.png and b/graphics/pokemon/emboar/icon.png differ diff --git a/graphics/pokemon/emolga/footprint.png b/graphics/pokemon/emolga/footprint.png index aeba5b9ebfef..c52d410ddf6d 100644 Binary files a/graphics/pokemon/emolga/footprint.png and b/graphics/pokemon/emolga/footprint.png differ diff --git a/graphics/pokemon/emolga/front.png b/graphics/pokemon/emolga/front.png deleted file mode 100644 index 23a5856b4bef..000000000000 Binary files a/graphics/pokemon/emolga/front.png and /dev/null differ diff --git a/graphics/pokemon/empoleon/footprint.png b/graphics/pokemon/empoleon/footprint.png index f9eeaf358638..3b6170fe1139 100644 Binary files a/graphics/pokemon/empoleon/footprint.png and b/graphics/pokemon/empoleon/footprint.png differ diff --git a/graphics/pokemon/empoleon/front.png b/graphics/pokemon/empoleon/front.png deleted file mode 100644 index 3b3dff0bc288..000000000000 Binary files a/graphics/pokemon/empoleon/front.png and /dev/null differ diff --git a/graphics/pokemon/empoleon/icon.png b/graphics/pokemon/empoleon/icon.png index f4bbc4fd4887..1e6e30582824 100644 Binary files a/graphics/pokemon/empoleon/icon.png and b/graphics/pokemon/empoleon/icon.png differ diff --git a/graphics/pokemon/enamorus/back.png b/graphics/pokemon/enamorus/back.png new file mode 100755 index 000000000000..1b2b00e218f9 Binary files /dev/null and b/graphics/pokemon/enamorus/back.png differ diff --git a/graphics/pokemon/enamorus/front.png b/graphics/pokemon/enamorus/front.png new file mode 100755 index 000000000000..f6b93019966b Binary files /dev/null and b/graphics/pokemon/enamorus/front.png differ diff --git a/graphics/pokemon/enamorus/normal.pal b/graphics/pokemon/enamorus/normal.pal new file mode 100755 index 000000000000..08f6e5ebf1a9 --- /dev/null +++ b/graphics/pokemon/enamorus/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +74 74 74 +180 180 189 +252 252 252 +16 16 16 +118 50 58 +147 33 30 +224 116 156 +243 46 46 +174 74 87 +199 46 41 +243 84 143 +187 62 94 +255 197 60 +239 228 176 +0 0 0 diff --git a/graphics/pokemon/enamorus/shiny.pal b/graphics/pokemon/enamorus/shiny.pal new file mode 100644 index 000000000000..180ae687e5ac --- /dev/null +++ b/graphics/pokemon/enamorus/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 74 74 +180 180 189 +255 255 255 +0 0 0 +131 57 82 +164 24 24 +230 131 164 +255 90 0 +189 82 106 +222 74 41 +255 139 238 +205 98 189 +255 197 32 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/enamorus/therian/back.png b/graphics/pokemon/enamorus/therian/back.png new file mode 100644 index 000000000000..a563156e4d1f Binary files /dev/null and b/graphics/pokemon/enamorus/therian/back.png differ diff --git a/graphics/pokemon/enamorus/therian/front.png b/graphics/pokemon/enamorus/therian/front.png new file mode 100644 index 000000000000..8ac7c93f0662 Binary files /dev/null and b/graphics/pokemon/enamorus/therian/front.png differ diff --git a/graphics/pokemon/enamorus/therian/normal.pal b/graphics/pokemon/enamorus/therian/normal.pal new file mode 100644 index 000000000000..096dfb36aff8 --- /dev/null +++ b/graphics/pokemon/enamorus/therian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 213 164 +131 41 49 +213 106 156 +16 16 16 +213 65 57 +74 74 74 +255 255 255 +180 180 189 +255 197 57 +123 164 131 +98 115 98 +148 197 156 +230 246 230 +49 57 49 +213 106 156 +0 0 0 diff --git a/graphics/pokemon/enamorus/therian/shiny.pal b/graphics/pokemon/enamorus/therian/shiny.pal new file mode 100644 index 000000000000..58c556462198 --- /dev/null +++ b/graphics/pokemon/enamorus/therian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 213 164 +131 41 49 +213 106 156 +16 16 16 +213 65 57 +74 74 74 +255 255 255 +180 180 189 +255 197 57 +123 164 131 +98 115 98 +148 197 156 +230 246 230 +49 57 49 +238 131 230 +0 0 0 diff --git a/graphics/pokemon/entei/footprint.png b/graphics/pokemon/entei/footprint.png index 7336df599ddb..50470342a1df 100644 Binary files a/graphics/pokemon/entei/footprint.png and b/graphics/pokemon/entei/footprint.png differ diff --git a/graphics/pokemon/entei/front.png b/graphics/pokemon/entei/front.png deleted file mode 100644 index efed934d7f75..000000000000 Binary files a/graphics/pokemon/entei/front.png and /dev/null differ diff --git a/graphics/pokemon/entei/icon.png b/graphics/pokemon/entei/icon.png index b7707797f0cb..eeb80f46047d 100644 Binary files a/graphics/pokemon/entei/icon.png and b/graphics/pokemon/entei/icon.png differ diff --git a/graphics/pokemon/escavalier/footprint.png b/graphics/pokemon/escavalier/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/escavalier/footprint.png and b/graphics/pokemon/escavalier/footprint.png differ diff --git a/graphics/pokemon/escavalier/front.png b/graphics/pokemon/escavalier/front.png deleted file mode 100644 index eb56edb91244..000000000000 Binary files a/graphics/pokemon/escavalier/front.png and /dev/null differ diff --git a/graphics/pokemon/escavalier/icon.png b/graphics/pokemon/escavalier/icon.png index 32c3988341d4..94f646ecf70a 100644 Binary files a/graphics/pokemon/escavalier/icon.png and b/graphics/pokemon/escavalier/icon.png differ diff --git a/graphics/pokemon/espeon/back.png b/graphics/pokemon/espeon/back.png index 0eb826823924..e88821875b43 100644 Binary files a/graphics/pokemon/espeon/back.png and b/graphics/pokemon/espeon/back.png differ diff --git a/graphics/pokemon/espeon/footprint.png b/graphics/pokemon/espeon/footprint.png index c7b17a4ad482..0d975c620a8e 100644 Binary files a/graphics/pokemon/espeon/footprint.png and b/graphics/pokemon/espeon/footprint.png differ diff --git a/graphics/pokemon/espeon/front.png b/graphics/pokemon/espeon/front.png deleted file mode 100644 index 9c0cc5bba9d6..000000000000 Binary files a/graphics/pokemon/espeon/front.png and /dev/null differ diff --git a/graphics/pokemon/espeon/icon.png b/graphics/pokemon/espeon/icon.png index 86a4606c9650..ebb9fd328b25 100644 Binary files a/graphics/pokemon/espeon/icon.png and b/graphics/pokemon/espeon/icon.png differ diff --git a/graphics/pokemon/espurr/footprint.png b/graphics/pokemon/espurr/footprint.png index ce84d4ad31cf..a9b0e33c2899 100644 Binary files a/graphics/pokemon/espurr/footprint.png and b/graphics/pokemon/espurr/footprint.png differ diff --git a/graphics/pokemon/espurr/front.png b/graphics/pokemon/espurr/front.png deleted file mode 100644 index c07972d9796d..000000000000 Binary files a/graphics/pokemon/espurr/front.png and /dev/null differ diff --git a/graphics/pokemon/eternatus/footprint.png b/graphics/pokemon/eternatus/footprint.png index 7bc9c3e37a65..70813d2151c1 100644 Binary files a/graphics/pokemon/eternatus/footprint.png and b/graphics/pokemon/eternatus/footprint.png differ diff --git a/graphics/pokemon/excadrill/footprint.png b/graphics/pokemon/excadrill/footprint.png index 3e12d3b80beb..83ea2d4d3386 100644 Binary files a/graphics/pokemon/excadrill/footprint.png and b/graphics/pokemon/excadrill/footprint.png differ diff --git a/graphics/pokemon/excadrill/front.png b/graphics/pokemon/excadrill/front.png deleted file mode 100644 index 35cb0a1723cb..000000000000 Binary files a/graphics/pokemon/excadrill/front.png and /dev/null differ diff --git a/graphics/pokemon/exeggcute/footprint.png b/graphics/pokemon/exeggcute/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/exeggcute/footprint.png and b/graphics/pokemon/exeggcute/footprint.png differ diff --git a/graphics/pokemon/exeggcute/front.png b/graphics/pokemon/exeggcute/front.png deleted file mode 100644 index 730bd6e12264..000000000000 Binary files a/graphics/pokemon/exeggcute/front.png and /dev/null differ diff --git a/graphics/pokemon/exeggutor/footprint.png b/graphics/pokemon/exeggutor/footprint.png index 6df7122f84ef..706de0bf4e5a 100644 Binary files a/graphics/pokemon/exeggutor/footprint.png and b/graphics/pokemon/exeggutor/footprint.png differ diff --git a/graphics/pokemon/exeggutor/front.png b/graphics/pokemon/exeggutor/front.png deleted file mode 100644 index 2ea8935be4e8..000000000000 Binary files a/graphics/pokemon/exeggutor/front.png and /dev/null differ diff --git a/graphics/pokemon/exeggutor/icon.png b/graphics/pokemon/exeggutor/icon.png index 1812258413d2..007641b095d8 100644 Binary files a/graphics/pokemon/exeggutor/icon.png and b/graphics/pokemon/exeggutor/icon.png differ diff --git a/graphics/pokemon/exploud/footprint.png b/graphics/pokemon/exploud/footprint.png index b27283a141af..daecfd459d36 100644 Binary files a/graphics/pokemon/exploud/footprint.png and b/graphics/pokemon/exploud/footprint.png differ diff --git a/graphics/pokemon/exploud/front.png b/graphics/pokemon/exploud/front.png deleted file mode 100644 index 03eb4fa59ba6..000000000000 Binary files a/graphics/pokemon/exploud/front.png and /dev/null differ diff --git a/graphics/pokemon/exploud/icon.png b/graphics/pokemon/exploud/icon.png index f803aecaba44..3cb142dde2af 100644 Binary files a/graphics/pokemon/exploud/icon.png and b/graphics/pokemon/exploud/icon.png differ diff --git a/graphics/pokemon/falinks/footprint.png b/graphics/pokemon/falinks/footprint.png index b8befed87c19..458777edeb8d 100644 Binary files a/graphics/pokemon/falinks/footprint.png and b/graphics/pokemon/falinks/footprint.png differ diff --git a/graphics/pokemon/farfetchd/footprint.png b/graphics/pokemon/farfetchd/footprint.png index 2f08f732d57b..cbfca034d5ee 100644 Binary files a/graphics/pokemon/farfetchd/footprint.png and b/graphics/pokemon/farfetchd/footprint.png differ diff --git a/graphics/pokemon/farfetchd/front.png b/graphics/pokemon/farfetchd/front.png deleted file mode 100644 index 9616f035f61d..000000000000 Binary files a/graphics/pokemon/farfetchd/front.png and /dev/null differ diff --git a/graphics/pokemon/fearow/footprint.png b/graphics/pokemon/fearow/footprint.png index 04ea7924d542..82302a804394 100644 Binary files a/graphics/pokemon/fearow/footprint.png and b/graphics/pokemon/fearow/footprint.png differ diff --git a/graphics/pokemon/fearow/front.png b/graphics/pokemon/fearow/front.png deleted file mode 100644 index 6cb779e78e7a..000000000000 Binary files a/graphics/pokemon/fearow/front.png and /dev/null differ diff --git a/graphics/pokemon/feebas/footprint.png b/graphics/pokemon/feebas/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/feebas/footprint.png and b/graphics/pokemon/feebas/footprint.png differ diff --git a/graphics/pokemon/feebas/front.png b/graphics/pokemon/feebas/front.png deleted file mode 100644 index 2b746a493ec7..000000000000 Binary files a/graphics/pokemon/feebas/front.png and /dev/null differ diff --git a/graphics/pokemon/fennekin/footprint.png b/graphics/pokemon/fennekin/footprint.png index 6d63066d1a89..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/fennekin/footprint.png and b/graphics/pokemon/fennekin/footprint.png differ diff --git a/graphics/pokemon/fennekin/front.png b/graphics/pokemon/fennekin/front.png deleted file mode 100644 index 272ff92747a0..000000000000 Binary files a/graphics/pokemon/fennekin/front.png and /dev/null differ diff --git a/graphics/pokemon/feraligatr/anim_front.png b/graphics/pokemon/feraligatr/anim_front.png index d644a30ae3da..26df70b9e134 100644 Binary files a/graphics/pokemon/feraligatr/anim_front.png and b/graphics/pokemon/feraligatr/anim_front.png differ diff --git a/graphics/pokemon/feraligatr/footprint.png b/graphics/pokemon/feraligatr/footprint.png index efe894289cf4..d1c37d88de10 100644 Binary files a/graphics/pokemon/feraligatr/footprint.png and b/graphics/pokemon/feraligatr/footprint.png differ diff --git a/graphics/pokemon/feraligatr/front.png b/graphics/pokemon/feraligatr/front.png deleted file mode 100644 index dda82ea74953..000000000000 Binary files a/graphics/pokemon/feraligatr/front.png and /dev/null differ diff --git a/graphics/pokemon/feraligatr/icon.png b/graphics/pokemon/feraligatr/icon.png index 2fe3556a8409..74aca6aea47a 100644 Binary files a/graphics/pokemon/feraligatr/icon.png and b/graphics/pokemon/feraligatr/icon.png differ diff --git a/graphics/pokemon/feraligatr/normal.pal b/graphics/pokemon/feraligatr/normal.pal index 166ae9add605..3322ac24e3f3 100644 --- a/graphics/pokemon/feraligatr/normal.pal +++ b/graphics/pokemon/feraligatr/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 0 8 -248 136 128 +131 0 8 +255 139 131 16 16 16 -240 80 88 -8 104 144 -64 208 232 -40 152 184 -136 232 248 -248 248 248 -192 192 192 -248 184 112 -128 88 0 -248 224 136 -200 184 96 +246 82 90 +41 74 139 +90 180 246 +57 139 205 +139 213 255 +255 255 255 +197 197 197 +255 230 139 +106 82 0 +255 230 139 +205 189 98 0 0 0 diff --git a/graphics/pokemon/ferroseed/footprint.png b/graphics/pokemon/ferroseed/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/ferroseed/footprint.png and b/graphics/pokemon/ferroseed/footprint.png differ diff --git a/graphics/pokemon/ferroseed/front.png b/graphics/pokemon/ferroseed/front.png deleted file mode 100644 index 8242059a063f..000000000000 Binary files a/graphics/pokemon/ferroseed/front.png and /dev/null differ diff --git a/graphics/pokemon/ferrothorn/footprint.png b/graphics/pokemon/ferrothorn/footprint.png index a754fdb9b532..5e9b043d59ba 100644 Binary files a/graphics/pokemon/ferrothorn/footprint.png and b/graphics/pokemon/ferrothorn/footprint.png differ diff --git a/graphics/pokemon/ferrothorn/front.png b/graphics/pokemon/ferrothorn/front.png deleted file mode 100644 index eeee76f769cc..000000000000 Binary files a/graphics/pokemon/ferrothorn/front.png and /dev/null differ diff --git a/graphics/pokemon/finneon/footprint.png b/graphics/pokemon/finneon/footprint.png index 0a5cb2bb4382..2449369fd6b8 100644 Binary files a/graphics/pokemon/finneon/footprint.png and b/graphics/pokemon/finneon/footprint.png differ diff --git a/graphics/pokemon/finneon/front.png b/graphics/pokemon/finneon/front.png deleted file mode 100644 index 635dcfc7e99a..000000000000 Binary files a/graphics/pokemon/finneon/front.png and /dev/null differ diff --git a/graphics/pokemon/flaaffy/anim_front.png b/graphics/pokemon/flaaffy/anim_front.png index 0cc7d0439e64..c09ccf4922e5 100644 Binary files a/graphics/pokemon/flaaffy/anim_front.png and b/graphics/pokemon/flaaffy/anim_front.png differ diff --git a/graphics/pokemon/flaaffy/footprint.png b/graphics/pokemon/flaaffy/footprint.png index d1695ec805ec..6824d2bb9e28 100644 Binary files a/graphics/pokemon/flaaffy/footprint.png and b/graphics/pokemon/flaaffy/footprint.png differ diff --git a/graphics/pokemon/flaaffy/front.png b/graphics/pokemon/flaaffy/front.png deleted file mode 100644 index 373ff986f292..000000000000 Binary files a/graphics/pokemon/flaaffy/front.png and /dev/null differ diff --git a/graphics/pokemon/flaaffy/normal.pal b/graphics/pokemon/flaaffy/normal.pal index 9b678134244e..5dd45e400ea0 100644 --- a/graphics/pokemon/flaaffy/normal.pal +++ b/graphics/pokemon/flaaffy/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 176 208 -248 248 248 -128 112 136 -200 216 240 +189 189 213 +255 255 255 +131 115 139 +222 230 246 16 16 16 -72 72 88 -208 96 120 -248 176 200 -248 136 152 -248 200 208 -136 32 48 -64 112 168 -80 128 192 -128 192 248 -40 64 136 +74 74 90 +222 65 98 +255 164 164 +255 115 115 +255 189 189 +164 0 16 +82 131 197 +82 131 197 +131 197 255 +41 65 139 diff --git a/graphics/pokemon/flabebe/back.png b/graphics/pokemon/flabebe/back.png index 143601c63f93..9a2a8367a79e 100644 Binary files a/graphics/pokemon/flabebe/back.png and b/graphics/pokemon/flabebe/back.png differ diff --git a/graphics/pokemon/flabebe/blue_flower/icon.png b/graphics/pokemon/flabebe/blue_flower/icon.png index 3f354f4f1485..bdac1f46eda0 100644 Binary files a/graphics/pokemon/flabebe/blue_flower/icon.png and b/graphics/pokemon/flabebe/blue_flower/icon.png differ diff --git a/graphics/pokemon/flabebe/footprint.png b/graphics/pokemon/flabebe/footprint.png index e36ead8b493c..2449369fd6b8 100644 Binary files a/graphics/pokemon/flabebe/footprint.png and b/graphics/pokemon/flabebe/footprint.png differ diff --git a/graphics/pokemon/flabebe/front.png b/graphics/pokemon/flabebe/front.png deleted file mode 100644 index 835047c90f34..000000000000 Binary files a/graphics/pokemon/flabebe/front.png and /dev/null differ diff --git a/graphics/pokemon/flabebe/orange_flower/icon.png b/graphics/pokemon/flabebe/orange_flower/icon.png index 39ce13bf2d32..1c34927aa1ff 100644 Binary files a/graphics/pokemon/flabebe/orange_flower/icon.png and b/graphics/pokemon/flabebe/orange_flower/icon.png differ diff --git a/graphics/pokemon/flabebe/white_flower/icon.png b/graphics/pokemon/flabebe/white_flower/icon.png index ac706407af8e..85aebadd1f52 100644 Binary files a/graphics/pokemon/flabebe/white_flower/icon.png and b/graphics/pokemon/flabebe/white_flower/icon.png differ diff --git a/graphics/pokemon/flabebe/yellow_flower/icon.png b/graphics/pokemon/flabebe/yellow_flower/icon.png index a1cef6e262c2..2ad8437e3eab 100644 Binary files a/graphics/pokemon/flabebe/yellow_flower/icon.png and b/graphics/pokemon/flabebe/yellow_flower/icon.png differ diff --git a/graphics/pokemon/flapple/footprint.png b/graphics/pokemon/flapple/footprint.png index c17ef139ae5a..2449369fd6b8 100644 Binary files a/graphics/pokemon/flapple/footprint.png and b/graphics/pokemon/flapple/footprint.png differ diff --git a/graphics/pokemon/flareon/footprint.png b/graphics/pokemon/flareon/footprint.png index db5d37ed461e..aecf35c717cf 100644 Binary files a/graphics/pokemon/flareon/footprint.png and b/graphics/pokemon/flareon/footprint.png differ diff --git a/graphics/pokemon/flareon/front.png b/graphics/pokemon/flareon/front.png deleted file mode 100644 index 40ef80eea5df..000000000000 Binary files a/graphics/pokemon/flareon/front.png and /dev/null differ diff --git a/graphics/pokemon/flareon/icon.png b/graphics/pokemon/flareon/icon.png index 96092e7eef01..92f4dad53244 100644 Binary files a/graphics/pokemon/flareon/icon.png and b/graphics/pokemon/flareon/icon.png differ diff --git a/graphics/pokemon/fletchinder/footprint.png b/graphics/pokemon/fletchinder/footprint.png index 964998764a4c..3d196a200284 100644 Binary files a/graphics/pokemon/fletchinder/footprint.png and b/graphics/pokemon/fletchinder/footprint.png differ diff --git a/graphics/pokemon/fletchinder/front.png b/graphics/pokemon/fletchinder/front.png deleted file mode 100644 index 86ff4500f007..000000000000 Binary files a/graphics/pokemon/fletchinder/front.png and /dev/null differ diff --git a/graphics/pokemon/fletchling/footprint.png b/graphics/pokemon/fletchling/footprint.png index 164e6b88fcc3..bf35d516fe15 100644 Binary files a/graphics/pokemon/fletchling/footprint.png and b/graphics/pokemon/fletchling/footprint.png differ diff --git a/graphics/pokemon/fletchling/front.png b/graphics/pokemon/fletchling/front.png deleted file mode 100644 index 53713836d034..000000000000 Binary files a/graphics/pokemon/fletchling/front.png and /dev/null differ diff --git a/graphics/pokemon/floatzel/footprint.png b/graphics/pokemon/floatzel/footprint.png index d5c3ccc2a4bf..1b6475d68270 100644 Binary files a/graphics/pokemon/floatzel/footprint.png and b/graphics/pokemon/floatzel/footprint.png differ diff --git a/graphics/pokemon/floatzel/front.png b/graphics/pokemon/floatzel/front.png deleted file mode 100644 index 6ff6ec136213..000000000000 Binary files a/graphics/pokemon/floatzel/front.png and /dev/null differ diff --git a/graphics/pokemon/floette/blue_flower/icon.png b/graphics/pokemon/floette/blue_flower/icon.png index 734c6eb4aa8c..aa2227c430a1 100644 Binary files a/graphics/pokemon/floette/blue_flower/icon.png and b/graphics/pokemon/floette/blue_flower/icon.png differ diff --git a/graphics/pokemon/floette/eternal_flower/back.png b/graphics/pokemon/floette/eternal_flower/back.png index edcf0ef2cc59..450120721173 100644 Binary files a/graphics/pokemon/floette/eternal_flower/back.png and b/graphics/pokemon/floette/eternal_flower/back.png differ diff --git a/graphics/pokemon/floette/eternal_flower/front.png b/graphics/pokemon/floette/eternal_flower/front.png index 56d9a71669ec..5d0a8c7df71b 100644 Binary files a/graphics/pokemon/floette/eternal_flower/front.png and b/graphics/pokemon/floette/eternal_flower/front.png differ diff --git a/graphics/pokemon/floette/eternal_flower/icon.png b/graphics/pokemon/floette/eternal_flower/icon.png index 42931825ce33..a1e0d3c5134c 100644 Binary files a/graphics/pokemon/floette/eternal_flower/icon.png and b/graphics/pokemon/floette/eternal_flower/icon.png differ diff --git a/graphics/pokemon/floette/footprint.png b/graphics/pokemon/floette/footprint.png index fc6240d717c7..2449369fd6b8 100644 Binary files a/graphics/pokemon/floette/footprint.png and b/graphics/pokemon/floette/footprint.png differ diff --git a/graphics/pokemon/floette/front.png b/graphics/pokemon/floette/front.png deleted file mode 100644 index d8d85450b403..000000000000 Binary files a/graphics/pokemon/floette/front.png and /dev/null differ diff --git a/graphics/pokemon/floette/orange_flower/icon.png b/graphics/pokemon/floette/orange_flower/icon.png index 3c839277cd87..07b6d9a09a4f 100644 Binary files a/graphics/pokemon/floette/orange_flower/icon.png and b/graphics/pokemon/floette/orange_flower/icon.png differ diff --git a/graphics/pokemon/floette/white_flower/icon.png b/graphics/pokemon/floette/white_flower/icon.png index a1975ff13435..5c86b2634558 100644 Binary files a/graphics/pokemon/floette/white_flower/icon.png and b/graphics/pokemon/floette/white_flower/icon.png differ diff --git a/graphics/pokemon/floette/yellow_flower/icon.png b/graphics/pokemon/floette/yellow_flower/icon.png index 4a9dc4257152..29049f106a76 100644 Binary files a/graphics/pokemon/floette/yellow_flower/icon.png and b/graphics/pokemon/floette/yellow_flower/icon.png differ diff --git a/graphics/pokemon/florges/back.png b/graphics/pokemon/florges/back.png index d1515c2aece2..d0d918fab2ce 100644 Binary files a/graphics/pokemon/florges/back.png and b/graphics/pokemon/florges/back.png differ diff --git a/graphics/pokemon/florges/blue_flower/icon.png b/graphics/pokemon/florges/blue_flower/icon.png index d0dc98cb1f2f..8a4743f4f56d 100644 Binary files a/graphics/pokemon/florges/blue_flower/icon.png and b/graphics/pokemon/florges/blue_flower/icon.png differ diff --git a/graphics/pokemon/florges/footprint.png b/graphics/pokemon/florges/footprint.png index 09e52b3cdf19..2449369fd6b8 100644 Binary files a/graphics/pokemon/florges/footprint.png and b/graphics/pokemon/florges/footprint.png differ diff --git a/graphics/pokemon/florges/front.png b/graphics/pokemon/florges/front.png deleted file mode 100644 index fe77fe4e68cc..000000000000 Binary files a/graphics/pokemon/florges/front.png and /dev/null differ diff --git a/graphics/pokemon/florges/orange_flower/icon.png b/graphics/pokemon/florges/orange_flower/icon.png index 5bcb76de35a1..a8239748c4d6 100644 Binary files a/graphics/pokemon/florges/orange_flower/icon.png and b/graphics/pokemon/florges/orange_flower/icon.png differ diff --git a/graphics/pokemon/florges/white_flower/icon.png b/graphics/pokemon/florges/white_flower/icon.png index 06cccec6c513..11b04c54e019 100644 Binary files a/graphics/pokemon/florges/white_flower/icon.png and b/graphics/pokemon/florges/white_flower/icon.png differ diff --git a/graphics/pokemon/florges/yellow_flower/icon.png b/graphics/pokemon/florges/yellow_flower/icon.png index c3a5716077b7..8fab7804fce0 100644 Binary files a/graphics/pokemon/florges/yellow_flower/icon.png and b/graphics/pokemon/florges/yellow_flower/icon.png differ diff --git a/graphics/pokemon/flygon/footprint.png b/graphics/pokemon/flygon/footprint.png index 5af877878d15..ef9f392cf107 100644 Binary files a/graphics/pokemon/flygon/footprint.png and b/graphics/pokemon/flygon/footprint.png differ diff --git a/graphics/pokemon/flygon/front.png b/graphics/pokemon/flygon/front.png deleted file mode 100644 index 64b9467a5d94..000000000000 Binary files a/graphics/pokemon/flygon/front.png and /dev/null differ diff --git a/graphics/pokemon/flygon/icon.png b/graphics/pokemon/flygon/icon.png index 10788b2253f8..f0c4e165ad0a 100644 Binary files a/graphics/pokemon/flygon/icon.png and b/graphics/pokemon/flygon/icon.png differ diff --git a/graphics/pokemon/fomantis/footprint.png b/graphics/pokemon/fomantis/footprint.png index 91b583cfd77e..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/fomantis/footprint.png and b/graphics/pokemon/fomantis/footprint.png differ diff --git a/graphics/pokemon/foongus/footprint.png b/graphics/pokemon/foongus/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/foongus/footprint.png and b/graphics/pokemon/foongus/footprint.png differ diff --git a/graphics/pokemon/foongus/front.png b/graphics/pokemon/foongus/front.png deleted file mode 100644 index 0d584f1da7cf..000000000000 Binary files a/graphics/pokemon/foongus/front.png and /dev/null differ diff --git a/graphics/pokemon/foongus/icon.png b/graphics/pokemon/foongus/icon.png index f6e6171a4618..c6e4ab426bdb 100644 Binary files a/graphics/pokemon/foongus/icon.png and b/graphics/pokemon/foongus/icon.png differ diff --git a/graphics/pokemon/forretress/footprint.png b/graphics/pokemon/forretress/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/forretress/footprint.png and b/graphics/pokemon/forretress/footprint.png differ diff --git a/graphics/pokemon/forretress/front.png b/graphics/pokemon/forretress/front.png deleted file mode 100644 index dde5eac09e51..000000000000 Binary files a/graphics/pokemon/forretress/front.png and /dev/null differ diff --git a/graphics/pokemon/fraxure/footprint.png b/graphics/pokemon/fraxure/footprint.png index 25a6a7dc774a..706be6428290 100644 Binary files a/graphics/pokemon/fraxure/footprint.png and b/graphics/pokemon/fraxure/footprint.png differ diff --git a/graphics/pokemon/fraxure/front.png b/graphics/pokemon/fraxure/front.png deleted file mode 100644 index 5171acb525bd..000000000000 Binary files a/graphics/pokemon/fraxure/front.png and /dev/null differ diff --git a/graphics/pokemon/frillish/footprint.png b/graphics/pokemon/frillish/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/frillish/footprint.png and b/graphics/pokemon/frillish/footprint.png differ diff --git a/graphics/pokemon/frillish/front.png b/graphics/pokemon/frillish/front.png deleted file mode 100644 index cd48a39ac990..000000000000 Binary files a/graphics/pokemon/frillish/front.png and /dev/null differ diff --git a/graphics/pokemon/froakie/footprint.png b/graphics/pokemon/froakie/footprint.png index 3c3ada42a772..f343dd885404 100644 Binary files a/graphics/pokemon/froakie/footprint.png and b/graphics/pokemon/froakie/footprint.png differ diff --git a/graphics/pokemon/froakie/front.png b/graphics/pokemon/froakie/front.png deleted file mode 100644 index aa16e312056d..000000000000 Binary files a/graphics/pokemon/froakie/front.png and /dev/null differ diff --git a/graphics/pokemon/frogadier/footprint.png b/graphics/pokemon/frogadier/footprint.png index d19aa2f7afc6..da320867f878 100644 Binary files a/graphics/pokemon/frogadier/footprint.png and b/graphics/pokemon/frogadier/footprint.png differ diff --git a/graphics/pokemon/frogadier/front.png b/graphics/pokemon/frogadier/front.png deleted file mode 100644 index e99089269e5b..000000000000 Binary files a/graphics/pokemon/frogadier/front.png and /dev/null differ diff --git a/graphics/pokemon/froslass/footprint.png b/graphics/pokemon/froslass/footprint.png index ba82cd69e3ae..2449369fd6b8 100644 Binary files a/graphics/pokemon/froslass/footprint.png and b/graphics/pokemon/froslass/footprint.png differ diff --git a/graphics/pokemon/froslass/front.png b/graphics/pokemon/froslass/front.png deleted file mode 100644 index 28597b4285f6..000000000000 Binary files a/graphics/pokemon/froslass/front.png and /dev/null differ diff --git a/graphics/pokemon/froslass/icon.png b/graphics/pokemon/froslass/icon.png index dfaec88ceb5d..2869fb8de14d 100644 Binary files a/graphics/pokemon/froslass/icon.png and b/graphics/pokemon/froslass/icon.png differ diff --git a/graphics/pokemon/frosmoth/footprint.png b/graphics/pokemon/frosmoth/footprint.png index 4b1ebb9b77d1..2449369fd6b8 100644 Binary files a/graphics/pokemon/frosmoth/footprint.png and b/graphics/pokemon/frosmoth/footprint.png differ diff --git a/graphics/pokemon/furfrou/dandy_trim/front.png b/graphics/pokemon/furfrou/dandy_trim/front.png deleted file mode 100644 index ffb12c4f0d1a..000000000000 Binary files a/graphics/pokemon/furfrou/dandy_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/dandy_trim/icon.png b/graphics/pokemon/furfrou/dandy_trim/icon.png index 86089db3c5d1..9e20ab1c4026 100644 Binary files a/graphics/pokemon/furfrou/dandy_trim/icon.png and b/graphics/pokemon/furfrou/dandy_trim/icon.png differ diff --git a/graphics/pokemon/furfrou/debutante_trim/front.png b/graphics/pokemon/furfrou/debutante_trim/front.png deleted file mode 100644 index 2ccf422ae6eb..000000000000 Binary files a/graphics/pokemon/furfrou/debutante_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/debutante_trim/icon.png b/graphics/pokemon/furfrou/debutante_trim/icon.png index 05d1c448a521..04860b16d25e 100644 Binary files a/graphics/pokemon/furfrou/debutante_trim/icon.png and b/graphics/pokemon/furfrou/debutante_trim/icon.png differ diff --git a/graphics/pokemon/furfrou/diamond_trim/front.png b/graphics/pokemon/furfrou/diamond_trim/front.png deleted file mode 100644 index 393a40588814..000000000000 Binary files a/graphics/pokemon/furfrou/diamond_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/diamond_trim/icon.png b/graphics/pokemon/furfrou/diamond_trim/icon.png index 50934adad7d4..f5ce645e4ee9 100644 Binary files a/graphics/pokemon/furfrou/diamond_trim/icon.png and b/graphics/pokemon/furfrou/diamond_trim/icon.png differ diff --git a/graphics/pokemon/furfrou/footprint.png b/graphics/pokemon/furfrou/footprint.png index 32ceac6818ed..03f338c34a1a 100644 Binary files a/graphics/pokemon/furfrou/footprint.png and b/graphics/pokemon/furfrou/footprint.png differ diff --git a/graphics/pokemon/furfrou/front.png b/graphics/pokemon/furfrou/front.png deleted file mode 100644 index 037c54037a4f..000000000000 Binary files a/graphics/pokemon/furfrou/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/heart_trim/front.png b/graphics/pokemon/furfrou/heart_trim/front.png deleted file mode 100644 index 17b2f3dbb6a6..000000000000 Binary files a/graphics/pokemon/furfrou/heart_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/heart_trim/icon.png b/graphics/pokemon/furfrou/heart_trim/icon.png index f8a6b1531a2d..70049dc53f9a 100644 Binary files a/graphics/pokemon/furfrou/heart_trim/icon.png and b/graphics/pokemon/furfrou/heart_trim/icon.png differ diff --git a/graphics/pokemon/furfrou/kabuki_trim/front.png b/graphics/pokemon/furfrou/kabuki_trim/front.png deleted file mode 100644 index c1efac1c0827..000000000000 Binary files a/graphics/pokemon/furfrou/kabuki_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/kabuki_trim/icon.png b/graphics/pokemon/furfrou/kabuki_trim/icon.png index da2a254b630f..bc81044fb034 100644 Binary files a/graphics/pokemon/furfrou/kabuki_trim/icon.png and b/graphics/pokemon/furfrou/kabuki_trim/icon.png differ diff --git a/graphics/pokemon/furfrou/la_reine_trim/front.png b/graphics/pokemon/furfrou/la_reine_trim/front.png deleted file mode 100644 index 7527d59eca3c..000000000000 Binary files a/graphics/pokemon/furfrou/la_reine_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/la_reine_trim/icon.png b/graphics/pokemon/furfrou/la_reine_trim/icon.png index 9a9881c19458..4451c0c16139 100644 Binary files a/graphics/pokemon/furfrou/la_reine_trim/icon.png and b/graphics/pokemon/furfrou/la_reine_trim/icon.png differ diff --git a/graphics/pokemon/furfrou/matron_trim/front.png b/graphics/pokemon/furfrou/matron_trim/front.png deleted file mode 100644 index afcb90c7a648..000000000000 Binary files a/graphics/pokemon/furfrou/matron_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/matron_trim/icon.png b/graphics/pokemon/furfrou/matron_trim/icon.png index b579007510fd..6d379a8cae66 100644 Binary files a/graphics/pokemon/furfrou/matron_trim/icon.png and b/graphics/pokemon/furfrou/matron_trim/icon.png differ diff --git a/graphics/pokemon/furfrou/pharaoh_trim/front.png b/graphics/pokemon/furfrou/pharaoh_trim/front.png deleted file mode 100644 index 987c7a7a448e..000000000000 Binary files a/graphics/pokemon/furfrou/pharaoh_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/pharaoh_trim/icon.png b/graphics/pokemon/furfrou/pharaoh_trim/icon.png index a54c76608921..f674c8b47ef3 100644 Binary files a/graphics/pokemon/furfrou/pharaoh_trim/icon.png and b/graphics/pokemon/furfrou/pharaoh_trim/icon.png differ diff --git a/graphics/pokemon/furfrou/star_trim/front.png b/graphics/pokemon/furfrou/star_trim/front.png deleted file mode 100644 index a953143214b1..000000000000 Binary files a/graphics/pokemon/furfrou/star_trim/front.png and /dev/null differ diff --git a/graphics/pokemon/furfrou/star_trim/icon.png b/graphics/pokemon/furfrou/star_trim/icon.png index 90623f6d7767..7d571808e94d 100644 Binary files a/graphics/pokemon/furfrou/star_trim/icon.png and b/graphics/pokemon/furfrou/star_trim/icon.png differ diff --git a/graphics/pokemon/furret/anim_front.png b/graphics/pokemon/furret/anim_front.png index bd0119c5684b..6e84d7410355 100644 Binary files a/graphics/pokemon/furret/anim_front.png and b/graphics/pokemon/furret/anim_front.png differ diff --git a/graphics/pokemon/furret/footprint.png b/graphics/pokemon/furret/footprint.png index 225445fb3df1..cfbf001140ca 100644 Binary files a/graphics/pokemon/furret/footprint.png and b/graphics/pokemon/furret/footprint.png differ diff --git a/graphics/pokemon/furret/front.png b/graphics/pokemon/furret/front.png deleted file mode 100644 index bab4d95b6bcb..000000000000 Binary files a/graphics/pokemon/furret/front.png and /dev/null differ diff --git a/graphics/pokemon/furret/normal.pal b/graphics/pokemon/furret/normal.pal index 661f34207a42..e1a23347b079 100644 --- a/graphics/pokemon/furret/normal.pal +++ b/graphics/pokemon/furret/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 40 32 -208 176 104 -120 64 56 -32 32 40 -192 152 64 -232 208 160 -152 96 72 -168 128 40 -248 248 192 -248 248 248 -112 112 112 -152 0 0 -248 144 96 +82 41 32 +230 197 74 +123 65 57 +32 32 41 +197 156 65 +255 238 148 +156 98 74 +172 131 41 +255 255 197 +255 255 255 +115 115 115 +156 0 0 +255 148 98 120 64 56 0 0 0 diff --git a/graphics/pokemon/gabite/footprint.png b/graphics/pokemon/gabite/footprint.png index bcc2e9a9fa9b..19c9479901d7 100644 Binary files a/graphics/pokemon/gabite/footprint.png and b/graphics/pokemon/gabite/footprint.png differ diff --git a/graphics/pokemon/gabite/front.png b/graphics/pokemon/gabite/front.png deleted file mode 100644 index 3495a5f183fe..000000000000 Binary files a/graphics/pokemon/gabite/front.png and /dev/null differ diff --git a/graphics/pokemon/gallade/footprint.png b/graphics/pokemon/gallade/footprint.png index 8ef34d69c3ae..9d57a79ddec7 100644 Binary files a/graphics/pokemon/gallade/footprint.png and b/graphics/pokemon/gallade/footprint.png differ diff --git a/graphics/pokemon/gallade/front.png b/graphics/pokemon/gallade/front.png deleted file mode 100644 index 93f2001594b4..000000000000 Binary files a/graphics/pokemon/gallade/front.png and /dev/null differ diff --git a/graphics/pokemon/gallade/icon.png b/graphics/pokemon/gallade/icon.png index a31e02fbbb48..fce5123d9be4 100644 Binary files a/graphics/pokemon/gallade/icon.png and b/graphics/pokemon/gallade/icon.png differ diff --git a/graphics/pokemon/galvantula/back.png b/graphics/pokemon/galvantula/back.png index f15a60a3de0e..4d872ac6bae7 100644 Binary files a/graphics/pokemon/galvantula/back.png and b/graphics/pokemon/galvantula/back.png differ diff --git a/graphics/pokemon/galvantula/footprint.png b/graphics/pokemon/galvantula/footprint.png index 7c7fbf4db5a5..7c0499f09f0b 100644 Binary files a/graphics/pokemon/galvantula/footprint.png and b/graphics/pokemon/galvantula/footprint.png differ diff --git a/graphics/pokemon/galvantula/front.png b/graphics/pokemon/galvantula/front.png deleted file mode 100644 index 980ca86f9fa5..000000000000 Binary files a/graphics/pokemon/galvantula/front.png and /dev/null differ diff --git a/graphics/pokemon/garbodor/footprint.png b/graphics/pokemon/garbodor/footprint.png index 993270f31222..e8982ee63f00 100644 Binary files a/graphics/pokemon/garbodor/footprint.png and b/graphics/pokemon/garbodor/footprint.png differ diff --git a/graphics/pokemon/garbodor/front.png b/graphics/pokemon/garbodor/front.png deleted file mode 100644 index 959931034f84..000000000000 Binary files a/graphics/pokemon/garbodor/front.png and /dev/null differ diff --git a/graphics/pokemon/garchomp/footprint.png b/graphics/pokemon/garchomp/footprint.png index 5a99bfa2e4ab..74931e072b01 100644 Binary files a/graphics/pokemon/garchomp/footprint.png and b/graphics/pokemon/garchomp/footprint.png differ diff --git a/graphics/pokemon/garchomp/front.png b/graphics/pokemon/garchomp/front.png deleted file mode 100644 index e84e0270ff80..000000000000 Binary files a/graphics/pokemon/garchomp/front.png and /dev/null differ diff --git a/graphics/pokemon/gardevoir/footprint.png b/graphics/pokemon/gardevoir/footprint.png index fd9f4755bcd3..cf81cde173e9 100644 Binary files a/graphics/pokemon/gardevoir/footprint.png and b/graphics/pokemon/gardevoir/footprint.png differ diff --git a/graphics/pokemon/gardevoir/front.png b/graphics/pokemon/gardevoir/front.png deleted file mode 100644 index 2bfc838793f2..000000000000 Binary files a/graphics/pokemon/gardevoir/front.png and /dev/null differ diff --git a/graphics/pokemon/gastly/footprint.png b/graphics/pokemon/gastly/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/gastly/footprint.png and b/graphics/pokemon/gastly/footprint.png differ diff --git a/graphics/pokemon/gastly/front.png b/graphics/pokemon/gastly/front.png deleted file mode 100644 index eca993908e9b..000000000000 Binary files a/graphics/pokemon/gastly/front.png and /dev/null differ diff --git a/graphics/pokemon/gastly/icon.png b/graphics/pokemon/gastly/icon.png index 7a28a0575ed1..a5dc4527d668 100644 Binary files a/graphics/pokemon/gastly/icon.png and b/graphics/pokemon/gastly/icon.png differ diff --git a/graphics/pokemon/gastrodon/east_sea/front.png b/graphics/pokemon/gastrodon/east_sea/front.png deleted file mode 100644 index ca68f56d3a0b..000000000000 Binary files a/graphics/pokemon/gastrodon/east_sea/front.png and /dev/null differ diff --git a/graphics/pokemon/gastrodon/east_sea/icon.png b/graphics/pokemon/gastrodon/east_sea/icon.png index 4eec76873c86..33ba3c5c51be 100644 Binary files a/graphics/pokemon/gastrodon/east_sea/icon.png and b/graphics/pokemon/gastrodon/east_sea/icon.png differ diff --git a/graphics/pokemon/gastrodon/footprint.png b/graphics/pokemon/gastrodon/footprint.png index 4be498a7aae3..2502f58ea2d6 100644 Binary files a/graphics/pokemon/gastrodon/footprint.png and b/graphics/pokemon/gastrodon/footprint.png differ diff --git a/graphics/pokemon/gastrodon/front.png b/graphics/pokemon/gastrodon/front.png deleted file mode 100644 index b28352aed30e..000000000000 Binary files a/graphics/pokemon/gastrodon/front.png and /dev/null differ diff --git a/graphics/pokemon/genesect/footprint.png b/graphics/pokemon/genesect/footprint.png index 6da2ad90de38..298cb09e5d18 100644 Binary files a/graphics/pokemon/genesect/footprint.png and b/graphics/pokemon/genesect/footprint.png differ diff --git a/graphics/pokemon/genesect/front.png b/graphics/pokemon/genesect/front.png deleted file mode 100644 index fff9ce8854de..000000000000 Binary files a/graphics/pokemon/genesect/front.png and /dev/null differ diff --git a/graphics/pokemon/genesect/icon.png b/graphics/pokemon/genesect/icon.png index 6ab5e6f03546..a448db60332e 100644 Binary files a/graphics/pokemon/genesect/icon.png and b/graphics/pokemon/genesect/icon.png differ diff --git a/graphics/pokemon/gengar/footprint.png b/graphics/pokemon/gengar/footprint.png index 0eb8fcebfa44..3f806b400723 100644 Binary files a/graphics/pokemon/gengar/footprint.png and b/graphics/pokemon/gengar/footprint.png differ diff --git a/graphics/pokemon/gengar/front.png b/graphics/pokemon/gengar/front.png deleted file mode 100644 index 2c47843a2605..000000000000 Binary files a/graphics/pokemon/gengar/front.png and /dev/null differ diff --git a/graphics/pokemon/geodude/back.png b/graphics/pokemon/geodude/back.png index 45eba4d1c548..bd2cbeac6cc9 100644 Binary files a/graphics/pokemon/geodude/back.png and b/graphics/pokemon/geodude/back.png differ diff --git a/graphics/pokemon/geodude/footprint.png b/graphics/pokemon/geodude/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/geodude/footprint.png and b/graphics/pokemon/geodude/footprint.png differ diff --git a/graphics/pokemon/geodude/front.png b/graphics/pokemon/geodude/front.png deleted file mode 100644 index 8b94b33685ff..000000000000 Binary files a/graphics/pokemon/geodude/front.png and /dev/null differ diff --git a/graphics/pokemon/gible/footprint.png b/graphics/pokemon/gible/footprint.png index 7e56f1f8ee69..a7ab331c104a 100644 Binary files a/graphics/pokemon/gible/footprint.png and b/graphics/pokemon/gible/footprint.png differ diff --git a/graphics/pokemon/gible/front.png b/graphics/pokemon/gible/front.png deleted file mode 100644 index d3d5b48739a3..000000000000 Binary files a/graphics/pokemon/gible/front.png and /dev/null differ diff --git a/graphics/pokemon/gigalith/footprint.png b/graphics/pokemon/gigalith/footprint.png index c4d874a1ec57..c67644d5de33 100644 Binary files a/graphics/pokemon/gigalith/footprint.png and b/graphics/pokemon/gigalith/footprint.png differ diff --git a/graphics/pokemon/gigalith/front.png b/graphics/pokemon/gigalith/front.png deleted file mode 100644 index 9cf2b0446929..000000000000 Binary files a/graphics/pokemon/gigalith/front.png and /dev/null differ diff --git a/graphics/pokemon/girafarig/footprint.png b/graphics/pokemon/girafarig/footprint.png index f7af3f622dbe..86ebcfc5f3dd 100644 Binary files a/graphics/pokemon/girafarig/footprint.png and b/graphics/pokemon/girafarig/footprint.png differ diff --git a/graphics/pokemon/girafarig/front.png b/graphics/pokemon/girafarig/front.png deleted file mode 100644 index 2a43c76e5d49..000000000000 Binary files a/graphics/pokemon/girafarig/front.png and /dev/null differ diff --git a/graphics/pokemon/giratina/footprint.png b/graphics/pokemon/giratina/footprint.png index a763213cd75d..33a274fd7641 100644 Binary files a/graphics/pokemon/giratina/footprint.png and b/graphics/pokemon/giratina/footprint.png differ diff --git a/graphics/pokemon/giratina/front.png b/graphics/pokemon/giratina/front.png deleted file mode 100644 index d0004746a901..000000000000 Binary files a/graphics/pokemon/giratina/front.png and /dev/null differ diff --git a/graphics/pokemon/giratina/icon.png b/graphics/pokemon/giratina/icon.png index 7a6ba19e9876..235ea4721e6c 100644 Binary files a/graphics/pokemon/giratina/icon.png and b/graphics/pokemon/giratina/icon.png differ diff --git a/graphics/pokemon/giratina/origin/front.png b/graphics/pokemon/giratina/origin/front.png deleted file mode 100644 index 14f631d09516..000000000000 Binary files a/graphics/pokemon/giratina/origin/front.png and /dev/null differ diff --git a/graphics/pokemon/glaceon/back.png b/graphics/pokemon/glaceon/back.png index 1f534353790d..1acee66de988 100644 Binary files a/graphics/pokemon/glaceon/back.png and b/graphics/pokemon/glaceon/back.png differ diff --git a/graphics/pokemon/glaceon/footprint.png b/graphics/pokemon/glaceon/footprint.png index d176ea9fd1e0..43b2a5a65ed8 100644 Binary files a/graphics/pokemon/glaceon/footprint.png and b/graphics/pokemon/glaceon/footprint.png differ diff --git a/graphics/pokemon/glaceon/front.png b/graphics/pokemon/glaceon/front.png deleted file mode 100644 index 463bd723d766..000000000000 Binary files a/graphics/pokemon/glaceon/front.png and /dev/null differ diff --git a/graphics/pokemon/glalie/footprint.png b/graphics/pokemon/glalie/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/glalie/footprint.png and b/graphics/pokemon/glalie/footprint.png differ diff --git a/graphics/pokemon/glalie/front.png b/graphics/pokemon/glalie/front.png deleted file mode 100644 index cb6ecd4925a3..000000000000 Binary files a/graphics/pokemon/glalie/front.png and /dev/null differ diff --git a/graphics/pokemon/glameow/footprint.png b/graphics/pokemon/glameow/footprint.png index 938a0af323cf..323482bd94a2 100644 Binary files a/graphics/pokemon/glameow/footprint.png and b/graphics/pokemon/glameow/footprint.png differ diff --git a/graphics/pokemon/glameow/front.png b/graphics/pokemon/glameow/front.png deleted file mode 100644 index bd72d82c12a5..000000000000 Binary files a/graphics/pokemon/glameow/front.png and /dev/null differ diff --git a/graphics/pokemon/glastrier/footprint.png b/graphics/pokemon/glastrier/footprint.png index cf32331ce68d..594e5b303981 100644 Binary files a/graphics/pokemon/glastrier/footprint.png and b/graphics/pokemon/glastrier/footprint.png differ diff --git a/graphics/pokemon/gligar/footprint.png b/graphics/pokemon/gligar/footprint.png index 3ca9864f062e..e873325878f9 100644 Binary files a/graphics/pokemon/gligar/footprint.png and b/graphics/pokemon/gligar/footprint.png differ diff --git a/graphics/pokemon/gligar/front.png b/graphics/pokemon/gligar/front.png deleted file mode 100644 index 5164cb452bf5..000000000000 Binary files a/graphics/pokemon/gligar/front.png and /dev/null differ diff --git a/graphics/pokemon/gliscor/footprint.png b/graphics/pokemon/gliscor/footprint.png index 665b9af00ce8..ab24720b6d92 100644 Binary files a/graphics/pokemon/gliscor/footprint.png and b/graphics/pokemon/gliscor/footprint.png differ diff --git a/graphics/pokemon/gliscor/front.png b/graphics/pokemon/gliscor/front.png deleted file mode 100644 index 24be70580480..000000000000 Binary files a/graphics/pokemon/gliscor/front.png and /dev/null differ diff --git a/graphics/pokemon/gliscor/icon.png b/graphics/pokemon/gliscor/icon.png index deddd792df89..74f4126d9810 100644 Binary files a/graphics/pokemon/gliscor/icon.png and b/graphics/pokemon/gliscor/icon.png differ diff --git a/graphics/pokemon/gloom/footprint.png b/graphics/pokemon/gloom/footprint.png index 7e9c265e81c8..13ca4ee71eaf 100644 Binary files a/graphics/pokemon/gloom/footprint.png and b/graphics/pokemon/gloom/footprint.png differ diff --git a/graphics/pokemon/gloom/front.png b/graphics/pokemon/gloom/front.png deleted file mode 100644 index dfadc6841f8f..000000000000 Binary files a/graphics/pokemon/gloom/front.png and /dev/null differ diff --git a/graphics/pokemon/gogoat/footprint.png b/graphics/pokemon/gogoat/footprint.png index a7418112377e..73f66988d19b 100644 Binary files a/graphics/pokemon/gogoat/footprint.png and b/graphics/pokemon/gogoat/footprint.png differ diff --git a/graphics/pokemon/gogoat/front.png b/graphics/pokemon/gogoat/front.png deleted file mode 100644 index 3653876d55be..000000000000 Binary files a/graphics/pokemon/gogoat/front.png and /dev/null differ diff --git a/graphics/pokemon/golbat/footprint.png b/graphics/pokemon/golbat/footprint.png index 65c126fb3ea8..ebdf4cafa253 100644 Binary files a/graphics/pokemon/golbat/footprint.png and b/graphics/pokemon/golbat/footprint.png differ diff --git a/graphics/pokemon/golbat/front.png b/graphics/pokemon/golbat/front.png deleted file mode 100644 index a18aad36517b..000000000000 Binary files a/graphics/pokemon/golbat/front.png and /dev/null differ diff --git a/graphics/pokemon/goldeen/footprint.png b/graphics/pokemon/goldeen/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/goldeen/footprint.png and b/graphics/pokemon/goldeen/footprint.png differ diff --git a/graphics/pokemon/goldeen/front.png b/graphics/pokemon/goldeen/front.png deleted file mode 100644 index 4f4b6db93922..000000000000 Binary files a/graphics/pokemon/goldeen/front.png and /dev/null differ diff --git a/graphics/pokemon/golduck/footprint.png b/graphics/pokemon/golduck/footprint.png index 63ba752e43b2..1835eb86788d 100644 Binary files a/graphics/pokemon/golduck/footprint.png and b/graphics/pokemon/golduck/footprint.png differ diff --git a/graphics/pokemon/golduck/front.png b/graphics/pokemon/golduck/front.png deleted file mode 100644 index e670ad751977..000000000000 Binary files a/graphics/pokemon/golduck/front.png and /dev/null differ diff --git a/graphics/pokemon/golem/footprint.png b/graphics/pokemon/golem/footprint.png index 8ddc6345cc59..c9f61444290b 100644 Binary files a/graphics/pokemon/golem/footprint.png and b/graphics/pokemon/golem/footprint.png differ diff --git a/graphics/pokemon/golem/front.png b/graphics/pokemon/golem/front.png deleted file mode 100644 index d885469e2b26..000000000000 Binary files a/graphics/pokemon/golem/front.png and /dev/null differ diff --git a/graphics/pokemon/golett/back.png b/graphics/pokemon/golett/back.png index d3b7ad67e392..5a2ae220887b 100644 Binary files a/graphics/pokemon/golett/back.png and b/graphics/pokemon/golett/back.png differ diff --git a/graphics/pokemon/golett/footprint.png b/graphics/pokemon/golett/footprint.png index 3eba34f93152..aeae5e65800d 100644 Binary files a/graphics/pokemon/golett/footprint.png and b/graphics/pokemon/golett/footprint.png differ diff --git a/graphics/pokemon/golett/front.png b/graphics/pokemon/golett/front.png deleted file mode 100644 index f58715bb95d6..000000000000 Binary files a/graphics/pokemon/golett/front.png and /dev/null differ diff --git a/graphics/pokemon/golett/icon.png b/graphics/pokemon/golett/icon.png index 20dd1f45ab25..a3513174898f 100644 Binary files a/graphics/pokemon/golett/icon.png and b/graphics/pokemon/golett/icon.png differ diff --git a/graphics/pokemon/golisopod/footprint.png b/graphics/pokemon/golisopod/footprint.png index 7da39e2aa10b..b59cb9b7bfa0 100644 Binary files a/graphics/pokemon/golisopod/footprint.png and b/graphics/pokemon/golisopod/footprint.png differ diff --git a/graphics/pokemon/golurk/footprint.png b/graphics/pokemon/golurk/footprint.png index 7e7cfce2f915..661694ffdab3 100644 Binary files a/graphics/pokemon/golurk/footprint.png and b/graphics/pokemon/golurk/footprint.png differ diff --git a/graphics/pokemon/golurk/front.png b/graphics/pokemon/golurk/front.png deleted file mode 100644 index 225a6a1426ff..000000000000 Binary files a/graphics/pokemon/golurk/front.png and /dev/null differ diff --git a/graphics/pokemon/goodra/footprint.png b/graphics/pokemon/goodra/footprint.png index 875eae3322d0..115802fa8c2a 100644 Binary files a/graphics/pokemon/goodra/footprint.png and b/graphics/pokemon/goodra/footprint.png differ diff --git a/graphics/pokemon/goodra/front.png b/graphics/pokemon/goodra/front.png deleted file mode 100644 index cb0b50ca9404..000000000000 Binary files a/graphics/pokemon/goodra/front.png and /dev/null differ diff --git a/graphics/pokemon/goodra/hisuian/back.png b/graphics/pokemon/goodra/hisuian/back.png old mode 100644 new mode 100755 index a454fcde6556..27025835f1ab Binary files a/graphics/pokemon/goodra/hisuian/back.png and b/graphics/pokemon/goodra/hisuian/back.png differ diff --git a/graphics/pokemon/goodra/hisuian/front.png b/graphics/pokemon/goodra/hisuian/front.png old mode 100644 new mode 100755 index edd5e3c3abd5..1b53bfacf35c Binary files a/graphics/pokemon/goodra/hisuian/front.png and b/graphics/pokemon/goodra/hisuian/front.png differ diff --git a/graphics/pokemon/goodra/hisuian/normal.pal b/graphics/pokemon/goodra/hisuian/normal.pal old mode 100644 new mode 100755 index 28da385cb049..846d1b0e29b3 --- a/graphics/pokemon/goodra/hisuian/normal.pal +++ b/graphics/pokemon/goodra/hisuian/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -128 96 112 -216 192 208 -136 136 136 -8 8 8 -240 240 240 -200 200 200 -168 152 168 -64 64 64 -176 176 176 -96 96 104 -136 104 168 -64 56 88 -168 152 192 -232 208 232 +152 208 160 +136 148 168 +192 204 224 +224 228 240 +80 96 112 16 16 16 +88 68 88 +192 168 200 +232 212 232 +136 108 144 +48 64 72 +248 252 248 +248 248 248 +64 60 88 +104 96 144 +144 132 200 diff --git a/graphics/pokemon/goodra/hisuian/shiny.pal b/graphics/pokemon/goodra/hisuian/shiny.pal old mode 100644 new mode 100755 index 73fd87e714ae..93612e407bd8 --- a/graphics/pokemon/goodra/hisuian/shiny.pal +++ b/graphics/pokemon/goodra/hisuian/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 96 112 -216 192 208 -120 104 56 -8 8 8 -240 240 240 -200 176 88 -168 152 168 -56 40 32 -160 136 72 -80 64 40 -136 104 168 -64 56 88 -168 152 192 -232 208 232 +141 107 50 +184 139 71 +215 166 100 +101 80 35 16 16 16 +88 68 88 +192 168 200 +232 212 232 +136 108 144 +68 54 21 +248 252 248 +248 248 248 +64 60 88 +110 99 147 +144 132 200 diff --git a/graphics/pokemon/goomy/footprint.png b/graphics/pokemon/goomy/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/goomy/footprint.png and b/graphics/pokemon/goomy/footprint.png differ diff --git a/graphics/pokemon/goomy/front.png b/graphics/pokemon/goomy/front.png deleted file mode 100644 index b61c3e2d37b2..000000000000 Binary files a/graphics/pokemon/goomy/front.png and /dev/null differ diff --git a/graphics/pokemon/gorebyss/footprint.png b/graphics/pokemon/gorebyss/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/gorebyss/footprint.png and b/graphics/pokemon/gorebyss/footprint.png differ diff --git a/graphics/pokemon/gorebyss/front.png b/graphics/pokemon/gorebyss/front.png deleted file mode 100644 index 09a8a3587fed..000000000000 Binary files a/graphics/pokemon/gorebyss/front.png and /dev/null differ diff --git a/graphics/pokemon/gossifleur/footprint.png b/graphics/pokemon/gossifleur/footprint.png index 0efe7646a4dd..01abc74f100e 100644 Binary files a/graphics/pokemon/gossifleur/footprint.png and b/graphics/pokemon/gossifleur/footprint.png differ diff --git a/graphics/pokemon/gothita/footprint.png b/graphics/pokemon/gothita/footprint.png index 4cc2972cf28e..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/gothita/footprint.png and b/graphics/pokemon/gothita/footprint.png differ diff --git a/graphics/pokemon/gothita/front.png b/graphics/pokemon/gothita/front.png deleted file mode 100644 index e7052bf8d077..000000000000 Binary files a/graphics/pokemon/gothita/front.png and /dev/null differ diff --git a/graphics/pokemon/gothita/icon.png b/graphics/pokemon/gothita/icon.png index 19da4895bade..8d280f51746d 100644 Binary files a/graphics/pokemon/gothita/icon.png and b/graphics/pokemon/gothita/icon.png differ diff --git a/graphics/pokemon/gothitelle/footprint.png b/graphics/pokemon/gothitelle/footprint.png index 64886b8d38d6..83ea2d4d3386 100644 Binary files a/graphics/pokemon/gothitelle/footprint.png and b/graphics/pokemon/gothitelle/footprint.png differ diff --git a/graphics/pokemon/gothitelle/front.png b/graphics/pokemon/gothitelle/front.png deleted file mode 100644 index 7178f82fbdc3..000000000000 Binary files a/graphics/pokemon/gothitelle/front.png and /dev/null differ diff --git a/graphics/pokemon/gothorita/footprint.png b/graphics/pokemon/gothorita/footprint.png index e07adc3b06ce..90b49038e342 100644 Binary files a/graphics/pokemon/gothorita/footprint.png and b/graphics/pokemon/gothorita/footprint.png differ diff --git a/graphics/pokemon/gothorita/front.png b/graphics/pokemon/gothorita/front.png deleted file mode 100644 index 7f6f07418257..000000000000 Binary files a/graphics/pokemon/gothorita/front.png and /dev/null differ diff --git a/graphics/pokemon/gothorita/icon.png b/graphics/pokemon/gothorita/icon.png index d48dfbc966ce..9036dc6fc568 100644 Binary files a/graphics/pokemon/gothorita/icon.png and b/graphics/pokemon/gothorita/icon.png differ diff --git a/graphics/pokemon/gourgeist/back.png b/graphics/pokemon/gourgeist/back.png index b572c429baf2..76da39f2278e 100644 Binary files a/graphics/pokemon/gourgeist/back.png and b/graphics/pokemon/gourgeist/back.png differ diff --git a/graphics/pokemon/gourgeist/footprint.png b/graphics/pokemon/gourgeist/footprint.png index 847f141b3752..a9b0e33c2899 100644 Binary files a/graphics/pokemon/gourgeist/footprint.png and b/graphics/pokemon/gourgeist/footprint.png differ diff --git a/graphics/pokemon/gourgeist/front.png b/graphics/pokemon/gourgeist/front.png deleted file mode 100644 index 577d182b4e94..000000000000 Binary files a/graphics/pokemon/gourgeist/front.png and /dev/null differ diff --git a/graphics/pokemon/gourgeist/large/back.png b/graphics/pokemon/gourgeist/large/back.png index 2d0751fa74b9..a84d9aa5161b 100644 Binary files a/graphics/pokemon/gourgeist/large/back.png and b/graphics/pokemon/gourgeist/large/back.png differ diff --git a/graphics/pokemon/gourgeist/large/front.png b/graphics/pokemon/gourgeist/large/front.png deleted file mode 100644 index 552cd4b88139..000000000000 Binary files a/graphics/pokemon/gourgeist/large/front.png and /dev/null differ diff --git a/graphics/pokemon/gourgeist/small/back.png b/graphics/pokemon/gourgeist/small/back.png index 1865e7c27eaf..97a44f72bf63 100644 Binary files a/graphics/pokemon/gourgeist/small/back.png and b/graphics/pokemon/gourgeist/small/back.png differ diff --git a/graphics/pokemon/gourgeist/small/front.png b/graphics/pokemon/gourgeist/small/front.png deleted file mode 100644 index b3b659bdf103..000000000000 Binary files a/graphics/pokemon/gourgeist/small/front.png and /dev/null differ diff --git a/graphics/pokemon/gourgeist/super/back.png b/graphics/pokemon/gourgeist/super/back.png index f669c4987f5b..3d6a97ef5fc3 100644 Binary files a/graphics/pokemon/gourgeist/super/back.png and b/graphics/pokemon/gourgeist/super/back.png differ diff --git a/graphics/pokemon/gourgeist/super/front.png b/graphics/pokemon/gourgeist/super/front.png deleted file mode 100644 index 14c8143d2516..000000000000 Binary files a/graphics/pokemon/gourgeist/super/front.png and /dev/null differ diff --git a/graphics/pokemon/granbull/footprint.png b/graphics/pokemon/granbull/footprint.png index 010b5fb67c1f..23e71ed4dcfd 100644 Binary files a/graphics/pokemon/granbull/footprint.png and b/graphics/pokemon/granbull/footprint.png differ diff --git a/graphics/pokemon/granbull/front.png b/graphics/pokemon/granbull/front.png deleted file mode 100644 index 9ad102c742c5..000000000000 Binary files a/graphics/pokemon/granbull/front.png and /dev/null differ diff --git a/graphics/pokemon/grapploct/footprint.png b/graphics/pokemon/grapploct/footprint.png index ea3c59c40e35..2306c5b0bef5 100644 Binary files a/graphics/pokemon/grapploct/footprint.png and b/graphics/pokemon/grapploct/footprint.png differ diff --git a/graphics/pokemon/graveler/footprint.png b/graphics/pokemon/graveler/footprint.png index c836ad3f4d09..c3aacfe36b13 100644 Binary files a/graphics/pokemon/graveler/footprint.png and b/graphics/pokemon/graveler/footprint.png differ diff --git a/graphics/pokemon/graveler/front.png b/graphics/pokemon/graveler/front.png deleted file mode 100644 index c6dcfbe9fb7b..000000000000 Binary files a/graphics/pokemon/graveler/front.png and /dev/null differ diff --git a/graphics/pokemon/greedent/footprint.png b/graphics/pokemon/greedent/footprint.png index d2e45203a067..631f795dd28e 100644 Binary files a/graphics/pokemon/greedent/footprint.png and b/graphics/pokemon/greedent/footprint.png differ diff --git a/graphics/pokemon/greninja/ash/front.png b/graphics/pokemon/greninja/ash/front.png deleted file mode 100644 index a76b97dca9c8..000000000000 Binary files a/graphics/pokemon/greninja/ash/front.png and /dev/null differ diff --git a/graphics/pokemon/greninja/ash/icon.png b/graphics/pokemon/greninja/ash/icon.png index 5c096c165239..ac461847cc18 100644 Binary files a/graphics/pokemon/greninja/ash/icon.png and b/graphics/pokemon/greninja/ash/icon.png differ diff --git a/graphics/pokemon/greninja/footprint.png b/graphics/pokemon/greninja/footprint.png index c567377eaa05..de1657ccdc21 100644 Binary files a/graphics/pokemon/greninja/footprint.png and b/graphics/pokemon/greninja/footprint.png differ diff --git a/graphics/pokemon/greninja/front.png b/graphics/pokemon/greninja/front.png deleted file mode 100644 index 81faac3bf777..000000000000 Binary files a/graphics/pokemon/greninja/front.png and /dev/null differ diff --git a/graphics/pokemon/grimer/footprint.png b/graphics/pokemon/grimer/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/grimer/footprint.png and b/graphics/pokemon/grimer/footprint.png differ diff --git a/graphics/pokemon/grimer/front.png b/graphics/pokemon/grimer/front.png deleted file mode 100644 index b99fbb299c7c..000000000000 Binary files a/graphics/pokemon/grimer/front.png and /dev/null differ diff --git a/graphics/pokemon/grimmsnarl/footprint.png b/graphics/pokemon/grimmsnarl/footprint.png index a3776b2382ab..d28f2a5295d9 100644 Binary files a/graphics/pokemon/grimmsnarl/footprint.png and b/graphics/pokemon/grimmsnarl/footprint.png differ diff --git a/graphics/pokemon/grookey/footprint.png b/graphics/pokemon/grookey/footprint.png index 836738bc0e49..631f795dd28e 100644 Binary files a/graphics/pokemon/grookey/footprint.png and b/graphics/pokemon/grookey/footprint.png differ diff --git a/graphics/pokemon/grotle/footprint.png b/graphics/pokemon/grotle/footprint.png index d72c05265c8b..7d99e95ba9e4 100644 Binary files a/graphics/pokemon/grotle/footprint.png and b/graphics/pokemon/grotle/footprint.png differ diff --git a/graphics/pokemon/grotle/front.png b/graphics/pokemon/grotle/front.png deleted file mode 100644 index f52ebe6d63a3..000000000000 Binary files a/graphics/pokemon/grotle/front.png and /dev/null differ diff --git a/graphics/pokemon/groudon/footprint.png b/graphics/pokemon/groudon/footprint.png index cb80ba48d503..a7eaa14c98e3 100644 Binary files a/graphics/pokemon/groudon/footprint.png and b/graphics/pokemon/groudon/footprint.png differ diff --git a/graphics/pokemon/groudon/front.png b/graphics/pokemon/groudon/front.png deleted file mode 100644 index 56e10fbccb11..000000000000 Binary files a/graphics/pokemon/groudon/front.png and /dev/null differ diff --git a/graphics/pokemon/groudon/icon.png b/graphics/pokemon/groudon/icon.png index 1c237537b6e8..69326145ca14 100644 Binary files a/graphics/pokemon/groudon/icon.png and b/graphics/pokemon/groudon/icon.png differ diff --git a/graphics/pokemon/grovyle/footprint.png b/graphics/pokemon/grovyle/footprint.png index c78ea507c9d1..149efec284ef 100644 Binary files a/graphics/pokemon/grovyle/footprint.png and b/graphics/pokemon/grovyle/footprint.png differ diff --git a/graphics/pokemon/grovyle/front.png b/graphics/pokemon/grovyle/front.png deleted file mode 100644 index 810306218539..000000000000 Binary files a/graphics/pokemon/grovyle/front.png and /dev/null differ diff --git a/graphics/pokemon/growlithe/footprint.png b/graphics/pokemon/growlithe/footprint.png index 2517cdcbadab..b9af4c119c79 100644 Binary files a/graphics/pokemon/growlithe/footprint.png and b/graphics/pokemon/growlithe/footprint.png differ diff --git a/graphics/pokemon/growlithe/front.png b/graphics/pokemon/growlithe/front.png deleted file mode 100644 index b16a79c7bb27..000000000000 Binary files a/graphics/pokemon/growlithe/front.png and /dev/null differ diff --git a/graphics/pokemon/growlithe/hisuian/back.png b/graphics/pokemon/growlithe/hisuian/back.png old mode 100644 new mode 100755 index 0ed279c6a54a..16dcaefc3846 Binary files a/graphics/pokemon/growlithe/hisuian/back.png and b/graphics/pokemon/growlithe/hisuian/back.png differ diff --git a/graphics/pokemon/growlithe/hisuian/front.png b/graphics/pokemon/growlithe/hisuian/front.png old mode 100644 new mode 100755 index c0d6232a95a5..7eea5e1cb329 Binary files a/graphics/pokemon/growlithe/hisuian/front.png and b/graphics/pokemon/growlithe/hisuian/front.png differ diff --git a/graphics/pokemon/growlithe/hisuian/normal.pal b/graphics/pokemon/growlithe/hisuian/normal.pal old mode 100644 new mode 100755 index e6d97462b50b..da791d1d648f --- a/graphics/pokemon/growlithe/hisuian/normal.pal +++ b/graphics/pokemon/growlithe/hisuian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 72 88 -200 192 184 +88 72 64 +240 232 224 +208 208 200 +168 156 144 16 16 16 -120 104 128 -104 16 8 -248 80 48 -184 32 32 -160 144 160 -112 96 32 -208 128 112 -184 152 120 -224 200 160 -72 72 72 -0 0 0 -16 0 0 +184 176 168 +184 64 56 +120 48 8 +208 104 64 +112 84 56 +48 60 64 +192 160 120 +248 252 240 +232 208 176 +216 220 208 diff --git a/graphics/pokemon/growlithe/hisuian/shiny.pal b/graphics/pokemon/growlithe/hisuian/shiny.pal old mode 100644 new mode 100755 index 3406fee673c5..e61a65a7a813 --- a/graphics/pokemon/growlithe/hisuian/shiny.pal +++ b/graphics/pokemon/growlithe/hisuian/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 104 96 -232 232 232 +88 72 64 +240 232 224 +208 208 200 +168 156 144 16 16 16 -160 152 144 -88 72 40 -232 184 128 -168 136 48 -208 200 192 -112 96 32 -208 128 112 -184 152 120 -224 200 160 -72 72 72 -0 0 0 -16 0 0 +184 176 168 +189 110 57 +120 48 8 +226 163 52 +112 84 56 +48 60 64 +192 160 120 +248 252 240 +232 208 176 +216 220 208 diff --git a/graphics/pokemon/grubbin/footprint.png b/graphics/pokemon/grubbin/footprint.png index aeac35bc5906..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/grubbin/footprint.png and b/graphics/pokemon/grubbin/footprint.png differ diff --git a/graphics/pokemon/grumpig/footprint.png b/graphics/pokemon/grumpig/footprint.png index ddff0e500170..deea6043407a 100644 Binary files a/graphics/pokemon/grumpig/footprint.png and b/graphics/pokemon/grumpig/footprint.png differ diff --git a/graphics/pokemon/grumpig/front.png b/graphics/pokemon/grumpig/front.png deleted file mode 100644 index c5b65ca3b3c4..000000000000 Binary files a/graphics/pokemon/grumpig/front.png and /dev/null differ diff --git a/graphics/pokemon/gulpin/footprint.png b/graphics/pokemon/gulpin/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/gulpin/footprint.png and b/graphics/pokemon/gulpin/footprint.png differ diff --git a/graphics/pokemon/gulpin/front.png b/graphics/pokemon/gulpin/front.png deleted file mode 100644 index d1efac94dc98..000000000000 Binary files a/graphics/pokemon/gulpin/front.png and /dev/null differ diff --git a/graphics/pokemon/gumshoos/footprint.png b/graphics/pokemon/gumshoos/footprint.png index abc07274b5ab..e1462e71a47f 100644 Binary files a/graphics/pokemon/gumshoos/footprint.png and b/graphics/pokemon/gumshoos/footprint.png differ diff --git a/graphics/pokemon/gurdurr/back.png b/graphics/pokemon/gurdurr/back.png index 0230e7f88870..9888f01b5983 100644 Binary files a/graphics/pokemon/gurdurr/back.png and b/graphics/pokemon/gurdurr/back.png differ diff --git a/graphics/pokemon/gurdurr/footprint.png b/graphics/pokemon/gurdurr/footprint.png index e85ff35cc81d..48bcbe11073a 100644 Binary files a/graphics/pokemon/gurdurr/footprint.png and b/graphics/pokemon/gurdurr/footprint.png differ diff --git a/graphics/pokemon/gurdurr/front.png b/graphics/pokemon/gurdurr/front.png deleted file mode 100644 index 710ec3b85e3f..000000000000 Binary files a/graphics/pokemon/gurdurr/front.png and /dev/null differ diff --git a/graphics/pokemon/gurdurr/icon.png b/graphics/pokemon/gurdurr/icon.png index 5808e6c6a7f1..b445d735c203 100644 Binary files a/graphics/pokemon/gurdurr/icon.png and b/graphics/pokemon/gurdurr/icon.png differ diff --git a/graphics/pokemon/guzzlord/footprint.png b/graphics/pokemon/guzzlord/footprint.png index 9184adb9b902..82befefa60f0 100644 Binary files a/graphics/pokemon/guzzlord/footprint.png and b/graphics/pokemon/guzzlord/footprint.png differ diff --git a/graphics/pokemon/gyarados/footprint.png b/graphics/pokemon/gyarados/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/gyarados/footprint.png and b/graphics/pokemon/gyarados/footprint.png differ diff --git a/graphics/pokemon/gyarados/front.png b/graphics/pokemon/gyarados/front.png deleted file mode 100644 index 3c0edf57d6ff..000000000000 Binary files a/graphics/pokemon/gyarados/front.png and /dev/null differ diff --git a/graphics/pokemon/gyarados/icon.png b/graphics/pokemon/gyarados/icon.png index 889943b04f4b..41ccb5aee2ad 100644 Binary files a/graphics/pokemon/gyarados/icon.png and b/graphics/pokemon/gyarados/icon.png differ diff --git a/graphics/pokemon/hakamo_o/footprint.png b/graphics/pokemon/hakamo_o/footprint.png index 137c8c5d7cb6..e3e1b0a9c096 100644 Binary files a/graphics/pokemon/hakamo_o/footprint.png and b/graphics/pokemon/hakamo_o/footprint.png differ diff --git a/graphics/pokemon/happiny/footprint.png b/graphics/pokemon/happiny/footprint.png index 54aff9113dc8..fb5442036c51 100644 Binary files a/graphics/pokemon/happiny/footprint.png and b/graphics/pokemon/happiny/footprint.png differ diff --git a/graphics/pokemon/happiny/front.png b/graphics/pokemon/happiny/front.png deleted file mode 100644 index 547c652edfee..000000000000 Binary files a/graphics/pokemon/happiny/front.png and /dev/null differ diff --git a/graphics/pokemon/hariyama/anim_front.png b/graphics/pokemon/hariyama/anim_front.png index 7b55b728e8ea..751b2cac4d8a 100644 Binary files a/graphics/pokemon/hariyama/anim_front.png and b/graphics/pokemon/hariyama/anim_front.png differ diff --git a/graphics/pokemon/hariyama/footprint.png b/graphics/pokemon/hariyama/footprint.png index ab5d9f3697bd..4c0cd23d3160 100644 Binary files a/graphics/pokemon/hariyama/footprint.png and b/graphics/pokemon/hariyama/footprint.png differ diff --git a/graphics/pokemon/hariyama/front.png b/graphics/pokemon/hariyama/front.png deleted file mode 100644 index 4a21a2a0b146..000000000000 Binary files a/graphics/pokemon/hariyama/front.png and /dev/null differ diff --git a/graphics/pokemon/hariyama/normal.pal b/graphics/pokemon/hariyama/normal.pal index 6ed66591279c..c6cfb9da7ab0 100644 --- a/graphics/pokemon/hariyama/normal.pal +++ b/graphics/pokemon/hariyama/normal.pal @@ -11,8 +11,8 @@ JASC-PAL 246 230 197 230 213 164 57 65 106 -139 106 82 98 98 148 +139 106 82 255 255 255 172 123 74 255 213 123 diff --git a/graphics/pokemon/hatenna/footprint.png b/graphics/pokemon/hatenna/footprint.png index c133d134baa7..5d01e97d6962 100644 Binary files a/graphics/pokemon/hatenna/footprint.png and b/graphics/pokemon/hatenna/footprint.png differ diff --git a/graphics/pokemon/hatterene/footprint.png b/graphics/pokemon/hatterene/footprint.png index bfb754ec34b2..2449369fd6b8 100644 Binary files a/graphics/pokemon/hatterene/footprint.png and b/graphics/pokemon/hatterene/footprint.png differ diff --git a/graphics/pokemon/hattrem/footprint.png b/graphics/pokemon/hattrem/footprint.png index 83360f473272..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/hattrem/footprint.png and b/graphics/pokemon/hattrem/footprint.png differ diff --git a/graphics/pokemon/haunter/footprint.png b/graphics/pokemon/haunter/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/haunter/footprint.png and b/graphics/pokemon/haunter/footprint.png differ diff --git a/graphics/pokemon/haunter/front.png b/graphics/pokemon/haunter/front.png deleted file mode 100644 index f9434ad095ad..000000000000 Binary files a/graphics/pokemon/haunter/front.png and /dev/null differ diff --git a/graphics/pokemon/haunter/icon.png b/graphics/pokemon/haunter/icon.png index 6de8948505ae..ea52910dd724 100644 Binary files a/graphics/pokemon/haunter/icon.png and b/graphics/pokemon/haunter/icon.png differ diff --git a/graphics/pokemon/hawlucha/footprint.png b/graphics/pokemon/hawlucha/footprint.png index 830e2271006b..0c3a89ce3c16 100644 Binary files a/graphics/pokemon/hawlucha/footprint.png and b/graphics/pokemon/hawlucha/footprint.png differ diff --git a/graphics/pokemon/hawlucha/front.png b/graphics/pokemon/hawlucha/front.png deleted file mode 100644 index 5293bee35719..000000000000 Binary files a/graphics/pokemon/hawlucha/front.png and /dev/null differ diff --git a/graphics/pokemon/haxorus/footprint.png b/graphics/pokemon/haxorus/footprint.png index f54f3d5f3a63..e444b5cbe613 100644 Binary files a/graphics/pokemon/haxorus/footprint.png and b/graphics/pokemon/haxorus/footprint.png differ diff --git a/graphics/pokemon/haxorus/front.png b/graphics/pokemon/haxorus/front.png deleted file mode 100644 index e5c216c13082..000000000000 Binary files a/graphics/pokemon/haxorus/front.png and /dev/null differ diff --git a/graphics/pokemon/heatmor/footprint.png b/graphics/pokemon/heatmor/footprint.png index ee94b3107fb6..53ff821e9bc9 100644 Binary files a/graphics/pokemon/heatmor/footprint.png and b/graphics/pokemon/heatmor/footprint.png differ diff --git a/graphics/pokemon/heatmor/front.png b/graphics/pokemon/heatmor/front.png deleted file mode 100644 index 0b912da48b18..000000000000 Binary files a/graphics/pokemon/heatmor/front.png and /dev/null differ diff --git a/graphics/pokemon/heatran/footprint.png b/graphics/pokemon/heatran/footprint.png index 8e7258666545..d19690143b60 100644 Binary files a/graphics/pokemon/heatran/footprint.png and b/graphics/pokemon/heatran/footprint.png differ diff --git a/graphics/pokemon/heatran/front.png b/graphics/pokemon/heatran/front.png deleted file mode 100644 index e446b445dc12..000000000000 Binary files a/graphics/pokemon/heatran/front.png and /dev/null differ diff --git a/graphics/pokemon/heliolisk/footprint.png b/graphics/pokemon/heliolisk/footprint.png index 583bc7062ec5..837c9a0a882b 100644 Binary files a/graphics/pokemon/heliolisk/footprint.png and b/graphics/pokemon/heliolisk/footprint.png differ diff --git a/graphics/pokemon/heliolisk/front.png b/graphics/pokemon/heliolisk/front.png deleted file mode 100644 index 4ec5b5c22b9b..000000000000 Binary files a/graphics/pokemon/heliolisk/front.png and /dev/null differ diff --git a/graphics/pokemon/helioptile/footprint.png b/graphics/pokemon/helioptile/footprint.png index 40dddcd79893..02d909c726d7 100644 Binary files a/graphics/pokemon/helioptile/footprint.png and b/graphics/pokemon/helioptile/footprint.png differ diff --git a/graphics/pokemon/helioptile/front.png b/graphics/pokemon/helioptile/front.png deleted file mode 100644 index a4871798019c..000000000000 Binary files a/graphics/pokemon/helioptile/front.png and /dev/null differ diff --git a/graphics/pokemon/heracross/footprint.png b/graphics/pokemon/heracross/footprint.png index a740a17c9f28..42bc4e3a0cca 100644 Binary files a/graphics/pokemon/heracross/footprint.png and b/graphics/pokemon/heracross/footprint.png differ diff --git a/graphics/pokemon/heracross/front.png b/graphics/pokemon/heracross/front.png deleted file mode 100644 index db9b244da3e6..000000000000 Binary files a/graphics/pokemon/heracross/front.png and /dev/null differ diff --git a/graphics/pokemon/herdier/footprint.png b/graphics/pokemon/herdier/footprint.png index c618cf6d7391..c2c45ebec4d0 100644 Binary files a/graphics/pokemon/herdier/footprint.png and b/graphics/pokemon/herdier/footprint.png differ diff --git a/graphics/pokemon/herdier/front.png b/graphics/pokemon/herdier/front.png deleted file mode 100644 index b28db7c31971..000000000000 Binary files a/graphics/pokemon/herdier/front.png and /dev/null differ diff --git a/graphics/pokemon/hippopotas/footprint.png b/graphics/pokemon/hippopotas/footprint.png index 0993b7f1be52..7230929c747e 100644 Binary files a/graphics/pokemon/hippopotas/footprint.png and b/graphics/pokemon/hippopotas/footprint.png differ diff --git a/graphics/pokemon/hippopotas/front.png b/graphics/pokemon/hippopotas/front.png deleted file mode 100644 index ea6fc85848c6..000000000000 Binary files a/graphics/pokemon/hippopotas/front.png and /dev/null differ diff --git a/graphics/pokemon/hippowdon/back.png b/graphics/pokemon/hippowdon/back.png index f6a4cbf28c76..b2f8daff3825 100644 Binary files a/graphics/pokemon/hippowdon/back.png and b/graphics/pokemon/hippowdon/back.png differ diff --git a/graphics/pokemon/hippowdon/footprint.png b/graphics/pokemon/hippowdon/footprint.png index ef52705edbdf..9c24e50bc6ce 100644 Binary files a/graphics/pokemon/hippowdon/footprint.png and b/graphics/pokemon/hippowdon/footprint.png differ diff --git a/graphics/pokemon/hippowdon/front.png b/graphics/pokemon/hippowdon/front.png deleted file mode 100644 index 3dd7b8f84c4e..000000000000 Binary files a/graphics/pokemon/hippowdon/front.png and /dev/null differ diff --git a/graphics/pokemon/hitmonchan/back.png b/graphics/pokemon/hitmonchan/back.png index 229bf0da8931..d87ab20f740f 100644 Binary files a/graphics/pokemon/hitmonchan/back.png and b/graphics/pokemon/hitmonchan/back.png differ diff --git a/graphics/pokemon/hitmonchan/footprint.png b/graphics/pokemon/hitmonchan/footprint.png index cfd1efd54a09..4a185f878a35 100644 Binary files a/graphics/pokemon/hitmonchan/footprint.png and b/graphics/pokemon/hitmonchan/footprint.png differ diff --git a/graphics/pokemon/hitmonchan/front.png b/graphics/pokemon/hitmonchan/front.png deleted file mode 100644 index 0721d04c05ae..000000000000 Binary files a/graphics/pokemon/hitmonchan/front.png and /dev/null differ diff --git a/graphics/pokemon/hitmonlee/footprint.png b/graphics/pokemon/hitmonlee/footprint.png index 505120110705..466e6f81b42e 100644 Binary files a/graphics/pokemon/hitmonlee/footprint.png and b/graphics/pokemon/hitmonlee/footprint.png differ diff --git a/graphics/pokemon/hitmonlee/front.png b/graphics/pokemon/hitmonlee/front.png deleted file mode 100644 index 080b6fd7bf5e..000000000000 Binary files a/graphics/pokemon/hitmonlee/front.png and /dev/null differ diff --git a/graphics/pokemon/hitmontop/footprint.png b/graphics/pokemon/hitmontop/footprint.png index ba8c1cca2a11..16e5173ce4a5 100644 Binary files a/graphics/pokemon/hitmontop/footprint.png and b/graphics/pokemon/hitmontop/footprint.png differ diff --git a/graphics/pokemon/hitmontop/front.png b/graphics/pokemon/hitmontop/front.png deleted file mode 100644 index 28118af282cf..000000000000 Binary files a/graphics/pokemon/hitmontop/front.png and /dev/null differ diff --git a/graphics/pokemon/hitmontop/icon.png b/graphics/pokemon/hitmontop/icon.png index a2af3bd2484a..7f8d63f91561 100644 Binary files a/graphics/pokemon/hitmontop/icon.png and b/graphics/pokemon/hitmontop/icon.png differ diff --git a/graphics/pokemon/ho_oh/footprint.png b/graphics/pokemon/ho_oh/footprint.png index adceb38787b4..a6cfc377d555 100644 Binary files a/graphics/pokemon/ho_oh/footprint.png and b/graphics/pokemon/ho_oh/footprint.png differ diff --git a/graphics/pokemon/ho_oh/front.png b/graphics/pokemon/ho_oh/front.png deleted file mode 100644 index 4c32adca93bf..000000000000 Binary files a/graphics/pokemon/ho_oh/front.png and /dev/null differ diff --git a/graphics/pokemon/ho_oh/icon.png b/graphics/pokemon/ho_oh/icon.png index 7a7ce8af6136..315683cc5e8e 100644 Binary files a/graphics/pokemon/ho_oh/icon.png and b/graphics/pokemon/ho_oh/icon.png differ diff --git a/graphics/pokemon/honchkrow/footprint.png b/graphics/pokemon/honchkrow/footprint.png index d988cc84a21a..79c4f66437f5 100644 Binary files a/graphics/pokemon/honchkrow/footprint.png and b/graphics/pokemon/honchkrow/footprint.png differ diff --git a/graphics/pokemon/honchkrow/front.png b/graphics/pokemon/honchkrow/front.png deleted file mode 100644 index 9681f682fb7c..000000000000 Binary files a/graphics/pokemon/honchkrow/front.png and /dev/null differ diff --git a/graphics/pokemon/honedge/footprint.png b/graphics/pokemon/honedge/footprint.png index 8b00665b79ad..2449369fd6b8 100644 Binary files a/graphics/pokemon/honedge/footprint.png and b/graphics/pokemon/honedge/footprint.png differ diff --git a/graphics/pokemon/honedge/front.png b/graphics/pokemon/honedge/front.png deleted file mode 100644 index 923e4563dc17..000000000000 Binary files a/graphics/pokemon/honedge/front.png and /dev/null differ diff --git a/graphics/pokemon/hoopa/back.png b/graphics/pokemon/hoopa/back.png index a3d76883c79d..64912b323617 100644 Binary files a/graphics/pokemon/hoopa/back.png and b/graphics/pokemon/hoopa/back.png differ diff --git a/graphics/pokemon/hoopa/footprint.png b/graphics/pokemon/hoopa/footprint.png index b7c5cea6a783..2449369fd6b8 100644 Binary files a/graphics/pokemon/hoopa/footprint.png and b/graphics/pokemon/hoopa/footprint.png differ diff --git a/graphics/pokemon/hoopa/front.png b/graphics/pokemon/hoopa/front.png deleted file mode 100644 index 2f463cdbc766..000000000000 Binary files a/graphics/pokemon/hoopa/front.png and /dev/null differ diff --git a/graphics/pokemon/hoopa/unbound/front.png b/graphics/pokemon/hoopa/unbound/front.png deleted file mode 100644 index 2df1d6a20378..000000000000 Binary files a/graphics/pokemon/hoopa/unbound/front.png and /dev/null differ diff --git a/graphics/pokemon/hoopa/unbound/icon.png b/graphics/pokemon/hoopa/unbound/icon.png index ca3bd77644fb..4c77ca1e2cc9 100644 Binary files a/graphics/pokemon/hoopa/unbound/icon.png and b/graphics/pokemon/hoopa/unbound/icon.png differ diff --git a/graphics/pokemon/hoothoot/anim_front.png b/graphics/pokemon/hoothoot/anim_front.png index 585fc6518a63..e25d4a4fc7cf 100644 Binary files a/graphics/pokemon/hoothoot/anim_front.png and b/graphics/pokemon/hoothoot/anim_front.png differ diff --git a/graphics/pokemon/hoothoot/footprint.png b/graphics/pokemon/hoothoot/footprint.png index 1eacf9116c83..8be22e121f24 100644 Binary files a/graphics/pokemon/hoothoot/footprint.png and b/graphics/pokemon/hoothoot/footprint.png differ diff --git a/graphics/pokemon/hoothoot/front.png b/graphics/pokemon/hoothoot/front.png deleted file mode 100644 index 0cc0353801b4..000000000000 Binary files a/graphics/pokemon/hoothoot/front.png and /dev/null differ diff --git a/graphics/pokemon/hoothoot/normal.pal b/graphics/pokemon/hoothoot/normal.pal index 213e6acaa0ee..725429834363 100644 --- a/graphics/pokemon/hoothoot/normal.pal +++ b/graphics/pokemon/hoothoot/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -64 64 64 -152 104 48 -120 88 80 -80 48 0 -184 136 64 -200 160 120 -104 48 24 -184 88 40 -240 96 48 -232 168 144 -216 184 152 -248 224 192 -248 248 248 -120 120 120 +65 65 65 +156 106 49 +115 74 24 +82 49 0 +189 139 65 +205 164 123 +106 49 24 +189 90 41 +246 98 49 +238 172 148 +222 189 156 +255 230 197 +255 255 255 +123 123 123 diff --git a/graphics/pokemon/hoppip/footprint.png b/graphics/pokemon/hoppip/footprint.png index 0be22ed86982..d482d69e5ea2 100644 Binary files a/graphics/pokemon/hoppip/footprint.png and b/graphics/pokemon/hoppip/footprint.png differ diff --git a/graphics/pokemon/hoppip/front.png b/graphics/pokemon/hoppip/front.png deleted file mode 100644 index 42f0e5c8e632..000000000000 Binary files a/graphics/pokemon/hoppip/front.png and /dev/null differ diff --git a/graphics/pokemon/hoppip/icon.png b/graphics/pokemon/hoppip/icon.png index 8a9b70834363..ba010a365321 100644 Binary files a/graphics/pokemon/hoppip/icon.png and b/graphics/pokemon/hoppip/icon.png differ diff --git a/graphics/pokemon/horsea/footprint.png b/graphics/pokemon/horsea/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/horsea/footprint.png and b/graphics/pokemon/horsea/footprint.png differ diff --git a/graphics/pokemon/horsea/front.png b/graphics/pokemon/horsea/front.png deleted file mode 100644 index 5ea743f224f6..000000000000 Binary files a/graphics/pokemon/horsea/front.png and /dev/null differ diff --git a/graphics/pokemon/houndoom/footprint.png b/graphics/pokemon/houndoom/footprint.png index b1f2c80f42b3..f2ba4670a4a1 100644 Binary files a/graphics/pokemon/houndoom/footprint.png and b/graphics/pokemon/houndoom/footprint.png differ diff --git a/graphics/pokemon/houndoom/front.png b/graphics/pokemon/houndoom/front.png deleted file mode 100644 index 8ebef8181f3e..000000000000 Binary files a/graphics/pokemon/houndoom/front.png and /dev/null differ diff --git a/graphics/pokemon/houndour/footprint.png b/graphics/pokemon/houndour/footprint.png index 3f81614316c2..bbc1115d75b4 100644 Binary files a/graphics/pokemon/houndour/footprint.png and b/graphics/pokemon/houndour/footprint.png differ diff --git a/graphics/pokemon/houndour/front.png b/graphics/pokemon/houndour/front.png deleted file mode 100644 index 39d1ce974229..000000000000 Binary files a/graphics/pokemon/houndour/front.png and /dev/null differ diff --git a/graphics/pokemon/huntail/footprint.png b/graphics/pokemon/huntail/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/huntail/footprint.png and b/graphics/pokemon/huntail/footprint.png differ diff --git a/graphics/pokemon/huntail/front.png b/graphics/pokemon/huntail/front.png deleted file mode 100644 index 9a5c28850be1..000000000000 Binary files a/graphics/pokemon/huntail/front.png and /dev/null differ diff --git a/graphics/pokemon/huntail/icon.png b/graphics/pokemon/huntail/icon.png index 0aa9a4055f0d..42a800657e49 100644 Binary files a/graphics/pokemon/huntail/icon.png and b/graphics/pokemon/huntail/icon.png differ diff --git a/graphics/pokemon/hydreigon/footprint.png b/graphics/pokemon/hydreigon/footprint.png index 694b0c1b7b58..2449369fd6b8 100644 Binary files a/graphics/pokemon/hydreigon/footprint.png and b/graphics/pokemon/hydreigon/footprint.png differ diff --git a/graphics/pokemon/hydreigon/front.png b/graphics/pokemon/hydreigon/front.png deleted file mode 100644 index 68aa66cd87f3..000000000000 Binary files a/graphics/pokemon/hydreigon/front.png and /dev/null differ diff --git a/graphics/pokemon/hydreigon/icon.png b/graphics/pokemon/hydreigon/icon.png index 50e9b60a95bd..540b136372cf 100644 Binary files a/graphics/pokemon/hydreigon/icon.png and b/graphics/pokemon/hydreigon/icon.png differ diff --git a/graphics/pokemon/hypno/footprint.png b/graphics/pokemon/hypno/footprint.png index 51f734973878..173db7238f6f 100644 Binary files a/graphics/pokemon/hypno/footprint.png and b/graphics/pokemon/hypno/footprint.png differ diff --git a/graphics/pokemon/hypno/front.png b/graphics/pokemon/hypno/front.png deleted file mode 100644 index 391eaba23088..000000000000 Binary files a/graphics/pokemon/hypno/front.png and /dev/null differ diff --git a/graphics/pokemon/hypno/icon.png b/graphics/pokemon/hypno/icon.png index d9e0d8334167..647e829d3f39 100644 Binary files a/graphics/pokemon/hypno/icon.png and b/graphics/pokemon/hypno/icon.png differ diff --git a/graphics/pokemon/igglybuff/anim_front.png b/graphics/pokemon/igglybuff/anim_front.png index e96608aa13ed..79068d36f631 100644 Binary files a/graphics/pokemon/igglybuff/anim_front.png and b/graphics/pokemon/igglybuff/anim_front.png differ diff --git a/graphics/pokemon/igglybuff/footprint.png b/graphics/pokemon/igglybuff/footprint.png index bbb7352a6016..d24c1760df92 100644 Binary files a/graphics/pokemon/igglybuff/footprint.png and b/graphics/pokemon/igglybuff/footprint.png differ diff --git a/graphics/pokemon/igglybuff/front.png b/graphics/pokemon/igglybuff/front.png deleted file mode 100644 index 2d0dad2a891e..000000000000 Binary files a/graphics/pokemon/igglybuff/front.png and /dev/null differ diff --git a/graphics/pokemon/igglybuff/normal.pal b/graphics/pokemon/igglybuff/normal.pal index 4bf00fcd7991..c0e93f53e7f6 100644 --- a/graphics/pokemon/igglybuff/normal.pal +++ b/graphics/pokemon/igglybuff/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -136 64 64 -248 200 208 -248 168 184 -200 104 96 +156 24 82 +255 205 213 +255 172 189 +180 82 115 16 16 16 -240 120 144 -224 40 16 -136 0 0 -248 248 248 -184 0 0 -128 0 0 +230 131 156 +230 41 16 +139 0 0 +255 255 255 +189 0 0 +139 0 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/illumise/footprint.png b/graphics/pokemon/illumise/footprint.png index 451d532b2f44..d39b4f00541e 100644 Binary files a/graphics/pokemon/illumise/footprint.png and b/graphics/pokemon/illumise/footprint.png differ diff --git a/graphics/pokemon/illumise/front.png b/graphics/pokemon/illumise/front.png deleted file mode 100644 index f91f5c93559b..000000000000 Binary files a/graphics/pokemon/illumise/front.png and /dev/null differ diff --git a/graphics/pokemon/illumise/normal.pal b/graphics/pokemon/illumise/normal.pal index b1f415775ad5..71e5ab84d8ba 100644 --- a/graphics/pokemon/illumise/normal.pal +++ b/graphics/pokemon/illumise/normal.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -256 +16 152 208 160 152 128 80 224 176 72 @@ -17,243 +17,3 @@ JASC-PAL 0 88 208 56 56 56 120 120 120 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/impidimp/footprint.png b/graphics/pokemon/impidimp/footprint.png index 8ff5f9113d8e..5d01e97d6962 100644 Binary files a/graphics/pokemon/impidimp/footprint.png and b/graphics/pokemon/impidimp/footprint.png differ diff --git a/graphics/pokemon/incineroar/footprint.png b/graphics/pokemon/incineroar/footprint.png index 269a337d652c..7e40d8198eac 100644 Binary files a/graphics/pokemon/incineroar/footprint.png and b/graphics/pokemon/incineroar/footprint.png differ diff --git a/graphics/pokemon/indeedee/footprint.png b/graphics/pokemon/indeedee/footprint.png index d406d05d9215..b02522c6e263 100644 Binary files a/graphics/pokemon/indeedee/footprint.png and b/graphics/pokemon/indeedee/footprint.png differ diff --git a/graphics/pokemon/infernape/footprint.png b/graphics/pokemon/infernape/footprint.png index 9465afb87b55..b0e3b25775d6 100644 Binary files a/graphics/pokemon/infernape/footprint.png and b/graphics/pokemon/infernape/footprint.png differ diff --git a/graphics/pokemon/infernape/front.png b/graphics/pokemon/infernape/front.png deleted file mode 100644 index 6bb4d332cfde..000000000000 Binary files a/graphics/pokemon/infernape/front.png and /dev/null differ diff --git a/graphics/pokemon/infernape/icon.png b/graphics/pokemon/infernape/icon.png index 6c166986462f..8eb9e955c604 100644 Binary files a/graphics/pokemon/infernape/icon.png and b/graphics/pokemon/infernape/icon.png differ diff --git a/graphics/pokemon/inkay/footprint.png b/graphics/pokemon/inkay/footprint.png index 479353ffc3b5..2449369fd6b8 100644 Binary files a/graphics/pokemon/inkay/footprint.png and b/graphics/pokemon/inkay/footprint.png differ diff --git a/graphics/pokemon/inkay/front.png b/graphics/pokemon/inkay/front.png deleted file mode 100644 index 2fca9044a22a..000000000000 Binary files a/graphics/pokemon/inkay/front.png and /dev/null differ diff --git a/graphics/pokemon/inteleon/footprint.png b/graphics/pokemon/inteleon/footprint.png index 7ea7d445f806..fa14226f7b33 100644 Binary files a/graphics/pokemon/inteleon/footprint.png and b/graphics/pokemon/inteleon/footprint.png differ diff --git a/graphics/pokemon/ivysaur/footprint.png b/graphics/pokemon/ivysaur/footprint.png index 29206b935ee1..d837294f9db2 100644 Binary files a/graphics/pokemon/ivysaur/footprint.png and b/graphics/pokemon/ivysaur/footprint.png differ diff --git a/graphics/pokemon/ivysaur/front.png b/graphics/pokemon/ivysaur/front.png deleted file mode 100644 index 4259abad05e7..000000000000 Binary files a/graphics/pokemon/ivysaur/front.png and /dev/null differ diff --git a/graphics/pokemon/jangmo_o/footprint.png b/graphics/pokemon/jangmo_o/footprint.png index 87c5900ebca4..9f0bcbdd913c 100644 Binary files a/graphics/pokemon/jangmo_o/footprint.png and b/graphics/pokemon/jangmo_o/footprint.png differ diff --git a/graphics/pokemon/jellicent/backf.png b/graphics/pokemon/jellicent/backf.png index 6471d3bacb01..f6f0b060582a 100644 Binary files a/graphics/pokemon/jellicent/backf.png and b/graphics/pokemon/jellicent/backf.png differ diff --git a/graphics/pokemon/jellicent/footprint.png b/graphics/pokemon/jellicent/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/jellicent/footprint.png and b/graphics/pokemon/jellicent/footprint.png differ diff --git a/graphics/pokemon/jellicent/front.png b/graphics/pokemon/jellicent/front.png deleted file mode 100644 index 584c7f09b8e7..000000000000 Binary files a/graphics/pokemon/jellicent/front.png and /dev/null differ diff --git a/graphics/pokemon/jellicent/icon.png b/graphics/pokemon/jellicent/icon.png index 3b508d92ca65..0a6f313cec9e 100644 Binary files a/graphics/pokemon/jellicent/icon.png and b/graphics/pokemon/jellicent/icon.png differ diff --git a/graphics/pokemon/jellicent/iconf.png b/graphics/pokemon/jellicent/iconf.png index a6abfa5ce5b4..f9caf9f13f12 100644 Binary files a/graphics/pokemon/jellicent/iconf.png and b/graphics/pokemon/jellicent/iconf.png differ diff --git a/graphics/pokemon/jigglypuff/back.png b/graphics/pokemon/jigglypuff/back.png index a51544283b3c..1cf980c173d2 100644 Binary files a/graphics/pokemon/jigglypuff/back.png and b/graphics/pokemon/jigglypuff/back.png differ diff --git a/graphics/pokemon/jigglypuff/footprint.png b/graphics/pokemon/jigglypuff/footprint.png index 59b5f1171b3c..b6d981b10489 100644 Binary files a/graphics/pokemon/jigglypuff/footprint.png and b/graphics/pokemon/jigglypuff/footprint.png differ diff --git a/graphics/pokemon/jigglypuff/front.png b/graphics/pokemon/jigglypuff/front.png deleted file mode 100644 index af3a2d78bdab..000000000000 Binary files a/graphics/pokemon/jigglypuff/front.png and /dev/null differ diff --git a/graphics/pokemon/jirachi/footprint.png b/graphics/pokemon/jirachi/footprint.png index 856bb5faafd2..1153c76dfef3 100644 Binary files a/graphics/pokemon/jirachi/footprint.png and b/graphics/pokemon/jirachi/footprint.png differ diff --git a/graphics/pokemon/jirachi/front.png b/graphics/pokemon/jirachi/front.png deleted file mode 100644 index 0d94f9c43565..000000000000 Binary files a/graphics/pokemon/jirachi/front.png and /dev/null differ diff --git a/graphics/pokemon/jolteon/footprint.png b/graphics/pokemon/jolteon/footprint.png index d1e9477b3d0c..450c3c4953d2 100644 Binary files a/graphics/pokemon/jolteon/footprint.png and b/graphics/pokemon/jolteon/footprint.png differ diff --git a/graphics/pokemon/jolteon/front.png b/graphics/pokemon/jolteon/front.png deleted file mode 100644 index 92ee1f72cc67..000000000000 Binary files a/graphics/pokemon/jolteon/front.png and /dev/null differ diff --git a/graphics/pokemon/joltik/footprint.png b/graphics/pokemon/joltik/footprint.png index fdd7cd4d364a..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/joltik/footprint.png and b/graphics/pokemon/joltik/footprint.png differ diff --git a/graphics/pokemon/joltik/front.png b/graphics/pokemon/joltik/front.png deleted file mode 100644 index 845a9a104745..000000000000 Binary files a/graphics/pokemon/joltik/front.png and /dev/null differ diff --git a/graphics/pokemon/jumpluff/footprint.png b/graphics/pokemon/jumpluff/footprint.png index 9cd0f5938386..5d01e97d6962 100644 Binary files a/graphics/pokemon/jumpluff/footprint.png and b/graphics/pokemon/jumpluff/footprint.png differ diff --git a/graphics/pokemon/jumpluff/front.png b/graphics/pokemon/jumpluff/front.png deleted file mode 100644 index 3a092274185d..000000000000 Binary files a/graphics/pokemon/jumpluff/front.png and /dev/null differ diff --git a/graphics/pokemon/jynx/footprint.png b/graphics/pokemon/jynx/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/jynx/footprint.png and b/graphics/pokemon/jynx/footprint.png differ diff --git a/graphics/pokemon/jynx/front.png b/graphics/pokemon/jynx/front.png deleted file mode 100644 index 430f9ad28ff5..000000000000 Binary files a/graphics/pokemon/jynx/front.png and /dev/null differ diff --git a/graphics/pokemon/kabuto/footprint.png b/graphics/pokemon/kabuto/footprint.png index 6965dbe60faf..a9b0e33c2899 100644 Binary files a/graphics/pokemon/kabuto/footprint.png and b/graphics/pokemon/kabuto/footprint.png differ diff --git a/graphics/pokemon/kabuto/front.png b/graphics/pokemon/kabuto/front.png deleted file mode 100644 index 47d4d3df8941..000000000000 Binary files a/graphics/pokemon/kabuto/front.png and /dev/null differ diff --git a/graphics/pokemon/kabutops/footprint.png b/graphics/pokemon/kabutops/footprint.png index 127b741d827a..54f193c502e7 100644 Binary files a/graphics/pokemon/kabutops/footprint.png and b/graphics/pokemon/kabutops/footprint.png differ diff --git a/graphics/pokemon/kabutops/front.png b/graphics/pokemon/kabutops/front.png deleted file mode 100644 index d89cb33cae9c..000000000000 Binary files a/graphics/pokemon/kabutops/front.png and /dev/null differ diff --git a/graphics/pokemon/kadabra/footprint.png b/graphics/pokemon/kadabra/footprint.png index a699f29879c7..8cbac4eddc77 100644 Binary files a/graphics/pokemon/kadabra/footprint.png and b/graphics/pokemon/kadabra/footprint.png differ diff --git a/graphics/pokemon/kadabra/front.png b/graphics/pokemon/kadabra/front.png deleted file mode 100644 index db50edf46eab..000000000000 Binary files a/graphics/pokemon/kadabra/front.png and /dev/null differ diff --git a/graphics/pokemon/kakuna/footprint.png b/graphics/pokemon/kakuna/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/kakuna/footprint.png and b/graphics/pokemon/kakuna/footprint.png differ diff --git a/graphics/pokemon/kakuna/front.png b/graphics/pokemon/kakuna/front.png deleted file mode 100644 index 0115ad4f9f6d..000000000000 Binary files a/graphics/pokemon/kakuna/front.png and /dev/null differ diff --git a/graphics/pokemon/kangaskhan/footprint.png b/graphics/pokemon/kangaskhan/footprint.png index 7753a4a71b3e..05b12acf9318 100644 Binary files a/graphics/pokemon/kangaskhan/footprint.png and b/graphics/pokemon/kangaskhan/footprint.png differ diff --git a/graphics/pokemon/kangaskhan/front.png b/graphics/pokemon/kangaskhan/front.png deleted file mode 100644 index ba1d27af6925..000000000000 Binary files a/graphics/pokemon/kangaskhan/front.png and /dev/null differ diff --git a/graphics/pokemon/karrablast/footprint.png b/graphics/pokemon/karrablast/footprint.png index bc2765e42c4e..b15fbf9eaa5a 100644 Binary files a/graphics/pokemon/karrablast/footprint.png and b/graphics/pokemon/karrablast/footprint.png differ diff --git a/graphics/pokemon/karrablast/front.png b/graphics/pokemon/karrablast/front.png deleted file mode 100644 index 4d2edf923b30..000000000000 Binary files a/graphics/pokemon/karrablast/front.png and /dev/null differ diff --git a/graphics/pokemon/karrablast/icon.png b/graphics/pokemon/karrablast/icon.png index f155236f285b..9db6f2f4d390 100644 Binary files a/graphics/pokemon/karrablast/icon.png and b/graphics/pokemon/karrablast/icon.png differ diff --git a/graphics/pokemon/kartana/footprint.png b/graphics/pokemon/kartana/footprint.png index 9910a09ec6b3..2449369fd6b8 100644 Binary files a/graphics/pokemon/kartana/footprint.png and b/graphics/pokemon/kartana/footprint.png differ diff --git a/graphics/pokemon/kecleon/footprint.png b/graphics/pokemon/kecleon/footprint.png index 3c6968437997..986c726fa044 100644 Binary files a/graphics/pokemon/kecleon/footprint.png and b/graphics/pokemon/kecleon/footprint.png differ diff --git a/graphics/pokemon/kecleon/front.png b/graphics/pokemon/kecleon/front.png deleted file mode 100644 index 2674a0d165ed..000000000000 Binary files a/graphics/pokemon/kecleon/front.png and /dev/null differ diff --git a/graphics/pokemon/keldeo/footprint.png b/graphics/pokemon/keldeo/footprint.png index 3148e719b812..8c0eec06ebda 100644 Binary files a/graphics/pokemon/keldeo/footprint.png and b/graphics/pokemon/keldeo/footprint.png differ diff --git a/graphics/pokemon/keldeo/front.png b/graphics/pokemon/keldeo/front.png deleted file mode 100644 index ffc17bf57c70..000000000000 Binary files a/graphics/pokemon/keldeo/front.png and /dev/null differ diff --git a/graphics/pokemon/keldeo/icon.png b/graphics/pokemon/keldeo/icon.png index 4d8c580f2296..a7b3f96ab5d9 100644 Binary files a/graphics/pokemon/keldeo/icon.png and b/graphics/pokemon/keldeo/icon.png differ diff --git a/graphics/pokemon/keldeo/resolute/back.png b/graphics/pokemon/keldeo/resolute/back.png index bce78acd9a62..28654de7dd7e 100644 Binary files a/graphics/pokemon/keldeo/resolute/back.png and b/graphics/pokemon/keldeo/resolute/back.png differ diff --git a/graphics/pokemon/keldeo/resolute/icon.png b/graphics/pokemon/keldeo/resolute/icon.png index 71709729027a..8da8ea26c874 100644 Binary files a/graphics/pokemon/keldeo/resolute/icon.png and b/graphics/pokemon/keldeo/resolute/icon.png differ diff --git a/graphics/pokemon/kingdra/footprint.png b/graphics/pokemon/kingdra/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/kingdra/footprint.png and b/graphics/pokemon/kingdra/footprint.png differ diff --git a/graphics/pokemon/kingdra/front.png b/graphics/pokemon/kingdra/front.png deleted file mode 100644 index bdce13253dd5..000000000000 Binary files a/graphics/pokemon/kingdra/front.png and /dev/null differ diff --git a/graphics/pokemon/kingdra/icon.png b/graphics/pokemon/kingdra/icon.png index 02fdc7125217..0873dedb4fa0 100644 Binary files a/graphics/pokemon/kingdra/icon.png and b/graphics/pokemon/kingdra/icon.png differ diff --git a/graphics/pokemon/kingler/footprint.png b/graphics/pokemon/kingler/footprint.png index b75db30dc4e3..d1db4154e9c9 100644 Binary files a/graphics/pokemon/kingler/footprint.png and b/graphics/pokemon/kingler/footprint.png differ diff --git a/graphics/pokemon/kingler/front.png b/graphics/pokemon/kingler/front.png deleted file mode 100644 index 50c9aa102edb..000000000000 Binary files a/graphics/pokemon/kingler/front.png and /dev/null differ diff --git a/graphics/pokemon/kingler/icon.png b/graphics/pokemon/kingler/icon.png index 34a72990600a..3f9d0b8b78e4 100644 Binary files a/graphics/pokemon/kingler/icon.png and b/graphics/pokemon/kingler/icon.png differ diff --git a/graphics/pokemon/kirlia/footprint.png b/graphics/pokemon/kirlia/footprint.png index c1c0058e74e9..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/kirlia/footprint.png and b/graphics/pokemon/kirlia/footprint.png differ diff --git a/graphics/pokemon/kirlia/front.png b/graphics/pokemon/kirlia/front.png deleted file mode 100644 index c1858f769715..000000000000 Binary files a/graphics/pokemon/kirlia/front.png and /dev/null differ diff --git a/graphics/pokemon/klang/footprint.png b/graphics/pokemon/klang/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/klang/footprint.png and b/graphics/pokemon/klang/footprint.png differ diff --git a/graphics/pokemon/klang/front.png b/graphics/pokemon/klang/front.png deleted file mode 100644 index 6cfd82984db1..000000000000 Binary files a/graphics/pokemon/klang/front.png and /dev/null differ diff --git a/graphics/pokemon/klefki/footprint.png b/graphics/pokemon/klefki/footprint.png index b0616c0ffc8c..2449369fd6b8 100644 Binary files a/graphics/pokemon/klefki/footprint.png and b/graphics/pokemon/klefki/footprint.png differ diff --git a/graphics/pokemon/klefki/front.png b/graphics/pokemon/klefki/front.png deleted file mode 100644 index 3f3e4db3b0a1..000000000000 Binary files a/graphics/pokemon/klefki/front.png and /dev/null differ diff --git a/graphics/pokemon/klink/footprint.png b/graphics/pokemon/klink/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/klink/footprint.png and b/graphics/pokemon/klink/footprint.png differ diff --git a/graphics/pokemon/klink/front.png b/graphics/pokemon/klink/front.png deleted file mode 100644 index 3af6a70b0b4a..000000000000 Binary files a/graphics/pokemon/klink/front.png and /dev/null differ diff --git a/graphics/pokemon/klinklang/footprint.png b/graphics/pokemon/klinklang/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/klinklang/footprint.png and b/graphics/pokemon/klinklang/footprint.png differ diff --git a/graphics/pokemon/klinklang/front.png b/graphics/pokemon/klinklang/front.png deleted file mode 100644 index f49e126ee421..000000000000 Binary files a/graphics/pokemon/klinklang/front.png and /dev/null differ diff --git a/graphics/pokemon/koffing/footprint.png b/graphics/pokemon/koffing/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/koffing/footprint.png and b/graphics/pokemon/koffing/footprint.png differ diff --git a/graphics/pokemon/koffing/front.png b/graphics/pokemon/koffing/front.png deleted file mode 100644 index 621724a6ed01..000000000000 Binary files a/graphics/pokemon/koffing/front.png and /dev/null differ diff --git a/graphics/pokemon/koffing/icon.png b/graphics/pokemon/koffing/icon.png index dbd1d77c8c6a..0c5b36150286 100644 Binary files a/graphics/pokemon/koffing/icon.png and b/graphics/pokemon/koffing/icon.png differ diff --git a/graphics/pokemon/komala/footprint.png b/graphics/pokemon/komala/footprint.png index 6c8921c31ca5..fb5f9743e92b 100644 Binary files a/graphics/pokemon/komala/footprint.png and b/graphics/pokemon/komala/footprint.png differ diff --git a/graphics/pokemon/kommo_o/footprint.png b/graphics/pokemon/kommo_o/footprint.png index 4f14bd48258d..917f42197789 100644 Binary files a/graphics/pokemon/kommo_o/footprint.png and b/graphics/pokemon/kommo_o/footprint.png differ diff --git a/graphics/pokemon/krabby/footprint.png b/graphics/pokemon/krabby/footprint.png index eae28fe5ee21..1b70f1bdffe3 100644 Binary files a/graphics/pokemon/krabby/footprint.png and b/graphics/pokemon/krabby/footprint.png differ diff --git a/graphics/pokemon/krabby/front.png b/graphics/pokemon/krabby/front.png deleted file mode 100644 index 31b8a2215cb6..000000000000 Binary files a/graphics/pokemon/krabby/front.png and /dev/null differ diff --git a/graphics/pokemon/krabby/icon.png b/graphics/pokemon/krabby/icon.png index 46eff557d9e1..8cedc348d056 100644 Binary files a/graphics/pokemon/krabby/icon.png and b/graphics/pokemon/krabby/icon.png differ diff --git a/graphics/pokemon/kricketot/anim_frontf.png b/graphics/pokemon/kricketot/anim_frontf.png index 86b2f773a54a..f7403b91c83f 100644 Binary files a/graphics/pokemon/kricketot/anim_frontf.png and b/graphics/pokemon/kricketot/anim_frontf.png differ diff --git a/graphics/pokemon/kricketot/backf.png b/graphics/pokemon/kricketot/backf.png index 9bafab87968d..7726df0d680a 100644 Binary files a/graphics/pokemon/kricketot/backf.png and b/graphics/pokemon/kricketot/backf.png differ diff --git a/graphics/pokemon/kricketot/footprint.png b/graphics/pokemon/kricketot/footprint.png index 503a7a1ee480..7a76910d989a 100644 Binary files a/graphics/pokemon/kricketot/footprint.png and b/graphics/pokemon/kricketot/footprint.png differ diff --git a/graphics/pokemon/kricketot/front.png b/graphics/pokemon/kricketot/front.png deleted file mode 100644 index e158a0a796fd..000000000000 Binary files a/graphics/pokemon/kricketot/front.png and /dev/null differ diff --git a/graphics/pokemon/kricketune/footprint.png b/graphics/pokemon/kricketune/footprint.png index 6ab75a826143..a9b0e33c2899 100644 Binary files a/graphics/pokemon/kricketune/footprint.png and b/graphics/pokemon/kricketune/footprint.png differ diff --git a/graphics/pokemon/kricketune/front.png b/graphics/pokemon/kricketune/front.png deleted file mode 100644 index 65de302a5371..000000000000 Binary files a/graphics/pokemon/kricketune/front.png and /dev/null differ diff --git a/graphics/pokemon/krokorok/footprint.png b/graphics/pokemon/krokorok/footprint.png index 58af3f0835fc..e9296356f1d9 100644 Binary files a/graphics/pokemon/krokorok/footprint.png and b/graphics/pokemon/krokorok/footprint.png differ diff --git a/graphics/pokemon/krokorok/front.png b/graphics/pokemon/krokorok/front.png deleted file mode 100644 index ab3c240f1725..000000000000 Binary files a/graphics/pokemon/krokorok/front.png and /dev/null differ diff --git a/graphics/pokemon/krookodile/footprint.png b/graphics/pokemon/krookodile/footprint.png index 1a68d923ade8..abd3e30a24b3 100644 Binary files a/graphics/pokemon/krookodile/footprint.png and b/graphics/pokemon/krookodile/footprint.png differ diff --git a/graphics/pokemon/krookodile/front.png b/graphics/pokemon/krookodile/front.png deleted file mode 100644 index 3654e8360b16..000000000000 Binary files a/graphics/pokemon/krookodile/front.png and /dev/null differ diff --git a/graphics/pokemon/kubfu/footprint.png b/graphics/pokemon/kubfu/footprint.png index cb372f7d20d6..9576d0bf5c1f 100644 Binary files a/graphics/pokemon/kubfu/footprint.png and b/graphics/pokemon/kubfu/footprint.png differ diff --git a/graphics/pokemon/kyogre/footprint.png b/graphics/pokemon/kyogre/footprint.png index 8d58ee4621ff..de1ea4d0d068 100644 Binary files a/graphics/pokemon/kyogre/footprint.png and b/graphics/pokemon/kyogre/footprint.png differ diff --git a/graphics/pokemon/kyogre/front.png b/graphics/pokemon/kyogre/front.png deleted file mode 100644 index 59ceadbf77e3..000000000000 Binary files a/graphics/pokemon/kyogre/front.png and /dev/null differ diff --git a/graphics/pokemon/kyurem/black/front.png b/graphics/pokemon/kyurem/black/front.png deleted file mode 100644 index 45b31238fde4..000000000000 Binary files a/graphics/pokemon/kyurem/black/front.png and /dev/null differ diff --git a/graphics/pokemon/kyurem/footprint.png b/graphics/pokemon/kyurem/footprint.png index 7a23f0d13543..b63fed15ba32 100644 Binary files a/graphics/pokemon/kyurem/footprint.png and b/graphics/pokemon/kyurem/footprint.png differ diff --git a/graphics/pokemon/kyurem/front.png b/graphics/pokemon/kyurem/front.png deleted file mode 100644 index c558f9172309..000000000000 Binary files a/graphics/pokemon/kyurem/front.png and /dev/null differ diff --git a/graphics/pokemon/kyurem/icon.png b/graphics/pokemon/kyurem/icon.png index 6e7f6c7842cc..9883000b012b 100644 Binary files a/graphics/pokemon/kyurem/icon.png and b/graphics/pokemon/kyurem/icon.png differ diff --git a/graphics/pokemon/kyurem/white/front.png b/graphics/pokemon/kyurem/white/front.png deleted file mode 100644 index 7b587c7d2099..000000000000 Binary files a/graphics/pokemon/kyurem/white/front.png and /dev/null differ diff --git a/graphics/pokemon/lairon/footprint.png b/graphics/pokemon/lairon/footprint.png index 9a6527c1c98c..e465f42d51ca 100644 Binary files a/graphics/pokemon/lairon/footprint.png and b/graphics/pokemon/lairon/footprint.png differ diff --git a/graphics/pokemon/lairon/front.png b/graphics/pokemon/lairon/front.png deleted file mode 100644 index de830e3064f6..000000000000 Binary files a/graphics/pokemon/lairon/front.png and /dev/null differ diff --git a/graphics/pokemon/lairon/icon.png b/graphics/pokemon/lairon/icon.png index 24bea9dfdc19..27cb6edaa3ed 100644 Binary files a/graphics/pokemon/lairon/icon.png and b/graphics/pokemon/lairon/icon.png differ diff --git a/graphics/pokemon/lampent/footprint.png b/graphics/pokemon/lampent/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/lampent/footprint.png and b/graphics/pokemon/lampent/footprint.png differ diff --git a/graphics/pokemon/lampent/front.png b/graphics/pokemon/lampent/front.png deleted file mode 100644 index 2d249ae93ec9..000000000000 Binary files a/graphics/pokemon/lampent/front.png and /dev/null differ diff --git a/graphics/pokemon/landorus/footprint.png b/graphics/pokemon/landorus/footprint.png index 694b0c1b7b58..2449369fd6b8 100644 Binary files a/graphics/pokemon/landorus/footprint.png and b/graphics/pokemon/landorus/footprint.png differ diff --git a/graphics/pokemon/landorus/front.png b/graphics/pokemon/landorus/front.png deleted file mode 100644 index e16bea46b676..000000000000 Binary files a/graphics/pokemon/landorus/front.png and /dev/null differ diff --git a/graphics/pokemon/landorus/icon.png b/graphics/pokemon/landorus/icon.png index b86a7cf7a84c..4b2ec8d4f791 100644 Binary files a/graphics/pokemon/landorus/icon.png and b/graphics/pokemon/landorus/icon.png differ diff --git a/graphics/pokemon/landorus/therian/front.png b/graphics/pokemon/landorus/therian/front.png deleted file mode 100644 index 47f617e4f04a..000000000000 Binary files a/graphics/pokemon/landorus/therian/front.png and /dev/null differ diff --git a/graphics/pokemon/lanturn/anim_front.png b/graphics/pokemon/lanturn/anim_front.png index 69166b66bc60..b84c0a77fddd 100644 Binary files a/graphics/pokemon/lanturn/anim_front.png and b/graphics/pokemon/lanturn/anim_front.png differ diff --git a/graphics/pokemon/lanturn/footprint.png b/graphics/pokemon/lanturn/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/lanturn/footprint.png and b/graphics/pokemon/lanturn/footprint.png differ diff --git a/graphics/pokemon/lanturn/front.png b/graphics/pokemon/lanturn/front.png deleted file mode 100644 index d17887059057..000000000000 Binary files a/graphics/pokemon/lanturn/front.png and /dev/null differ diff --git a/graphics/pokemon/lanturn/normal.pal b/graphics/pokemon/lanturn/normal.pal index 792d90f29ee8..377916306e8c 100644 --- a/graphics/pokemon/lanturn/normal.pal +++ b/graphics/pokemon/lanturn/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 120 88 -248 216 96 -224 184 48 -88 112 192 -144 160 224 -176 136 32 -48 56 96 -120 152 216 -16 16 16 -248 248 248 -80 64 40 -184 192 232 -160 48 72 -232 96 88 -168 0 0 +123 98 74 +255 222 98 +230 180 82 +74 123 205 +123 172 238 +172 148 65 +41 49 115 +98 148 230 +0 0 0 +255 255 255 +65 49 16 +164 205 255 +164 49 74 +238 98 90 +164 49 74 diff --git a/graphics/pokemon/lapras/back.png b/graphics/pokemon/lapras/back.png index 3d336d51a7a0..60d5f840d3bd 100644 Binary files a/graphics/pokemon/lapras/back.png and b/graphics/pokemon/lapras/back.png differ diff --git a/graphics/pokemon/lapras/footprint.png b/graphics/pokemon/lapras/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/lapras/footprint.png and b/graphics/pokemon/lapras/footprint.png differ diff --git a/graphics/pokemon/lapras/front.png b/graphics/pokemon/lapras/front.png deleted file mode 100644 index d02409eb99a3..000000000000 Binary files a/graphics/pokemon/lapras/front.png and /dev/null differ diff --git a/graphics/pokemon/larvesta/footprint.png b/graphics/pokemon/larvesta/footprint.png index d6264f26b954..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/larvesta/footprint.png and b/graphics/pokemon/larvesta/footprint.png differ diff --git a/graphics/pokemon/larvesta/front.png b/graphics/pokemon/larvesta/front.png deleted file mode 100644 index b2e83baacfcf..000000000000 Binary files a/graphics/pokemon/larvesta/front.png and /dev/null differ diff --git a/graphics/pokemon/larvesta/icon.png b/graphics/pokemon/larvesta/icon.png index 1a710b252263..8050f8bfdf77 100644 Binary files a/graphics/pokemon/larvesta/icon.png and b/graphics/pokemon/larvesta/icon.png differ diff --git a/graphics/pokemon/larvitar/back.png b/graphics/pokemon/larvitar/back.png index 1a05a964ad68..2facd5cb5e2f 100644 Binary files a/graphics/pokemon/larvitar/back.png and b/graphics/pokemon/larvitar/back.png differ diff --git a/graphics/pokemon/larvitar/footprint.png b/graphics/pokemon/larvitar/footprint.png index a31e8d7f3615..52d2eaab9c73 100644 Binary files a/graphics/pokemon/larvitar/footprint.png and b/graphics/pokemon/larvitar/footprint.png differ diff --git a/graphics/pokemon/larvitar/front.png b/graphics/pokemon/larvitar/front.png deleted file mode 100644 index 1974d284314b..000000000000 Binary files a/graphics/pokemon/larvitar/front.png and /dev/null differ diff --git a/graphics/pokemon/latias/footprint.png b/graphics/pokemon/latias/footprint.png index 0419630c1521..f0f34c50042e 100644 Binary files a/graphics/pokemon/latias/footprint.png and b/graphics/pokemon/latias/footprint.png differ diff --git a/graphics/pokemon/latias/front.png b/graphics/pokemon/latias/front.png deleted file mode 100644 index cb84e81c036c..000000000000 Binary files a/graphics/pokemon/latias/front.png and /dev/null differ diff --git a/graphics/pokemon/latias/icon.png b/graphics/pokemon/latias/icon.png index d67b91b85806..9c79f1e187c2 100644 Binary files a/graphics/pokemon/latias/icon.png and b/graphics/pokemon/latias/icon.png differ diff --git a/graphics/pokemon/latios/footprint.png b/graphics/pokemon/latios/footprint.png index f77d0fa867c5..7c22956b66b0 100644 Binary files a/graphics/pokemon/latios/footprint.png and b/graphics/pokemon/latios/footprint.png differ diff --git a/graphics/pokemon/latios/front.png b/graphics/pokemon/latios/front.png deleted file mode 100644 index 283e968b7066..000000000000 Binary files a/graphics/pokemon/latios/front.png and /dev/null differ diff --git a/graphics/pokemon/latios/icon.png b/graphics/pokemon/latios/icon.png index 95590eb52d69..d63fb4710ea4 100644 Binary files a/graphics/pokemon/latios/icon.png and b/graphics/pokemon/latios/icon.png differ diff --git a/graphics/pokemon/leafeon/footprint.png b/graphics/pokemon/leafeon/footprint.png index d176ea9fd1e0..43b2a5a65ed8 100644 Binary files a/graphics/pokemon/leafeon/footprint.png and b/graphics/pokemon/leafeon/footprint.png differ diff --git a/graphics/pokemon/leafeon/front.png b/graphics/pokemon/leafeon/front.png deleted file mode 100644 index 7ea19f1b55a0..000000000000 Binary files a/graphics/pokemon/leafeon/front.png and /dev/null differ diff --git a/graphics/pokemon/leafeon/icon.png b/graphics/pokemon/leafeon/icon.png index dd446932beef..2aabf8025716 100644 Binary files a/graphics/pokemon/leafeon/icon.png and b/graphics/pokemon/leafeon/icon.png differ diff --git a/graphics/pokemon/leavanny/footprint.png b/graphics/pokemon/leavanny/footprint.png index c4fdc5673e1c..a9b0e33c2899 100644 Binary files a/graphics/pokemon/leavanny/footprint.png and b/graphics/pokemon/leavanny/footprint.png differ diff --git a/graphics/pokemon/leavanny/front.png b/graphics/pokemon/leavanny/front.png deleted file mode 100644 index fe45f277dbfd..000000000000 Binary files a/graphics/pokemon/leavanny/front.png and /dev/null differ diff --git a/graphics/pokemon/ledian/anim_front.png b/graphics/pokemon/ledian/anim_front.png index 57d90f93be59..c866d2769f9d 100644 Binary files a/graphics/pokemon/ledian/anim_front.png and b/graphics/pokemon/ledian/anim_front.png differ diff --git a/graphics/pokemon/ledian/footprint.png b/graphics/pokemon/ledian/footprint.png index 5c2d6221f68f..640bea34cfb4 100644 Binary files a/graphics/pokemon/ledian/footprint.png and b/graphics/pokemon/ledian/footprint.png differ diff --git a/graphics/pokemon/ledian/front.png b/graphics/pokemon/ledian/front.png deleted file mode 100644 index a51f2884e99b..000000000000 Binary files a/graphics/pokemon/ledian/front.png and /dev/null differ diff --git a/graphics/pokemon/ledian/normal.pal b/graphics/pokemon/ledian/normal.pal index 370e37e2c590..8e4f8a63afb0 100644 --- a/graphics/pokemon/ledian/normal.pal +++ b/graphics/pokemon/ledian/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -80 80 80 -192 56 88 -248 128 128 -112 32 16 -248 72 64 -0 64 112 +82 82 82 +197 57 90 +255 131 131 +115 32 16 +255 74 65 +0 16 90 248 248 248 -0 128 184 -176 176 176 -160 120 0 -200 176 56 -240 224 112 -208 208 208 +0 106 222 +180 180 180 +164 123 0 +205 180 57 +246 230 115 +213 213 213 80 80 80 diff --git a/graphics/pokemon/ledyba/anim_front.png b/graphics/pokemon/ledyba/anim_front.png index 38bdd1df2e74..4239a277602d 100644 Binary files a/graphics/pokemon/ledyba/anim_front.png and b/graphics/pokemon/ledyba/anim_front.png differ diff --git a/graphics/pokemon/ledyba/footprint.png b/graphics/pokemon/ledyba/footprint.png index a52ed256063b..1ec169c42fc5 100644 Binary files a/graphics/pokemon/ledyba/footprint.png and b/graphics/pokemon/ledyba/footprint.png differ diff --git a/graphics/pokemon/ledyba/front.png b/graphics/pokemon/ledyba/front.png deleted file mode 100644 index 10e52bbc70c4..000000000000 Binary files a/graphics/pokemon/ledyba/front.png and /dev/null differ diff --git a/graphics/pokemon/ledyba/normal.pal b/graphics/pokemon/ledyba/normal.pal index eb13383dae62..cb287fc017c1 100644 --- a/graphics/pokemon/ledyba/normal.pal +++ b/graphics/pokemon/ledyba/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -88 80 80 -104 40 24 -176 64 48 -240 88 24 -248 152 32 -208 200 200 -248 248 248 -168 160 160 -208 176 120 -248 224 152 -248 248 184 -160 120 0 -104 96 176 -72 48 112 +90 82 82 +106 41 24 +180 65 49 +246 90 24 +255 156 32 +213 205 205 +255 255 255 +172 164 164 +213 180 123 +255 230 156 +255 255 189 +164 123 0 +106 98 180 +74 49 115 diff --git a/graphics/pokemon/lickilicky/footprint.png b/graphics/pokemon/lickilicky/footprint.png index d1fbb2f9d61e..f95bb0b1814f 100644 Binary files a/graphics/pokemon/lickilicky/footprint.png and b/graphics/pokemon/lickilicky/footprint.png differ diff --git a/graphics/pokemon/lickilicky/front.png b/graphics/pokemon/lickilicky/front.png deleted file mode 100644 index e9905f1a650d..000000000000 Binary files a/graphics/pokemon/lickilicky/front.png and /dev/null differ diff --git a/graphics/pokemon/lickitung/footprint.png b/graphics/pokemon/lickitung/footprint.png index 1f88f23fc620..fb9200103593 100644 Binary files a/graphics/pokemon/lickitung/footprint.png and b/graphics/pokemon/lickitung/footprint.png differ diff --git a/graphics/pokemon/lickitung/front.png b/graphics/pokemon/lickitung/front.png deleted file mode 100644 index 6a7177e793cc..000000000000 Binary files a/graphics/pokemon/lickitung/front.png and /dev/null differ diff --git a/graphics/pokemon/liepard/footprint.png b/graphics/pokemon/liepard/footprint.png index 47f7eaee4f81..7c0499f09f0b 100644 Binary files a/graphics/pokemon/liepard/footprint.png and b/graphics/pokemon/liepard/footprint.png differ diff --git a/graphics/pokemon/liepard/front.png b/graphics/pokemon/liepard/front.png deleted file mode 100644 index 2a9d2abca2d0..000000000000 Binary files a/graphics/pokemon/liepard/front.png and /dev/null differ diff --git a/graphics/pokemon/lileep/footprint.png b/graphics/pokemon/lileep/footprint.png index ce6b2790e138..ee68853045d8 100644 Binary files a/graphics/pokemon/lileep/footprint.png and b/graphics/pokemon/lileep/footprint.png differ diff --git a/graphics/pokemon/lileep/front.png b/graphics/pokemon/lileep/front.png deleted file mode 100644 index 21f36a6ea4c8..000000000000 Binary files a/graphics/pokemon/lileep/front.png and /dev/null differ diff --git a/graphics/pokemon/lileep/icon.png b/graphics/pokemon/lileep/icon.png index 0f3132ed4324..034453bf99a5 100644 Binary files a/graphics/pokemon/lileep/icon.png and b/graphics/pokemon/lileep/icon.png differ diff --git a/graphics/pokemon/lilligant/footprint.png b/graphics/pokemon/lilligant/footprint.png index 30a2d5fd2cbc..cd8a8d590b7e 100644 Binary files a/graphics/pokemon/lilligant/footprint.png and b/graphics/pokemon/lilligant/footprint.png differ diff --git a/graphics/pokemon/lilligant/front.png b/graphics/pokemon/lilligant/front.png deleted file mode 100644 index 170a97c17059..000000000000 Binary files a/graphics/pokemon/lilligant/front.png and /dev/null differ diff --git a/graphics/pokemon/lillipup/footprint.png b/graphics/pokemon/lillipup/footprint.png index 56f7c151a00a..6b114835073d 100644 Binary files a/graphics/pokemon/lillipup/footprint.png and b/graphics/pokemon/lillipup/footprint.png differ diff --git a/graphics/pokemon/lillipup/front.png b/graphics/pokemon/lillipup/front.png deleted file mode 100644 index 50bf52ed1565..000000000000 Binary files a/graphics/pokemon/lillipup/front.png and /dev/null differ diff --git a/graphics/pokemon/linoone/footprint.png b/graphics/pokemon/linoone/footprint.png index 8d83166d3e8e..ff6019b7bc24 100644 Binary files a/graphics/pokemon/linoone/footprint.png and b/graphics/pokemon/linoone/footprint.png differ diff --git a/graphics/pokemon/linoone/front.png b/graphics/pokemon/linoone/front.png deleted file mode 100644 index 955510bdd5c0..000000000000 Binary files a/graphics/pokemon/linoone/front.png and /dev/null differ diff --git a/graphics/pokemon/litleo/footprint.png b/graphics/pokemon/litleo/footprint.png index 586e858ad8a7..3660eb4fd7fb 100644 Binary files a/graphics/pokemon/litleo/footprint.png and b/graphics/pokemon/litleo/footprint.png differ diff --git a/graphics/pokemon/litleo/front.png b/graphics/pokemon/litleo/front.png deleted file mode 100644 index c34e0b74b216..000000000000 Binary files a/graphics/pokemon/litleo/front.png and /dev/null differ diff --git a/graphics/pokemon/litten/footprint.png b/graphics/pokemon/litten/footprint.png index 8c7c5b067192..ca1472dc82a8 100644 Binary files a/graphics/pokemon/litten/footprint.png and b/graphics/pokemon/litten/footprint.png differ diff --git a/graphics/pokemon/litwick/footprint.png b/graphics/pokemon/litwick/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/litwick/footprint.png and b/graphics/pokemon/litwick/footprint.png differ diff --git a/graphics/pokemon/litwick/front.png b/graphics/pokemon/litwick/front.png deleted file mode 100644 index e0b19ccb67b3..000000000000 Binary files a/graphics/pokemon/litwick/front.png and /dev/null differ diff --git a/graphics/pokemon/lombre/footprint.png b/graphics/pokemon/lombre/footprint.png index 051e5ab55025..333b1c7b4481 100644 Binary files a/graphics/pokemon/lombre/footprint.png and b/graphics/pokemon/lombre/footprint.png differ diff --git a/graphics/pokemon/lombre/front.png b/graphics/pokemon/lombre/front.png deleted file mode 100644 index 022c1c0081be..000000000000 Binary files a/graphics/pokemon/lombre/front.png and /dev/null differ diff --git a/graphics/pokemon/lopunny/footprint.png b/graphics/pokemon/lopunny/footprint.png index 3fbbfd61df69..71ca6189dc3f 100644 Binary files a/graphics/pokemon/lopunny/footprint.png and b/graphics/pokemon/lopunny/footprint.png differ diff --git a/graphics/pokemon/lopunny/front.png b/graphics/pokemon/lopunny/front.png deleted file mode 100644 index 44e188d0fd9c..000000000000 Binary files a/graphics/pokemon/lopunny/front.png and /dev/null differ diff --git a/graphics/pokemon/lotad/footprint.png b/graphics/pokemon/lotad/footprint.png index caac6945f11c..1e075c103b0b 100644 Binary files a/graphics/pokemon/lotad/footprint.png and b/graphics/pokemon/lotad/footprint.png differ diff --git a/graphics/pokemon/lotad/front.png b/graphics/pokemon/lotad/front.png deleted file mode 100644 index efc92a04b843..000000000000 Binary files a/graphics/pokemon/lotad/front.png and /dev/null differ diff --git a/graphics/pokemon/loudred/footprint.png b/graphics/pokemon/loudred/footprint.png index 604af9000499..8468d3ea6cb1 100644 Binary files a/graphics/pokemon/loudred/footprint.png and b/graphics/pokemon/loudred/footprint.png differ diff --git a/graphics/pokemon/loudred/front.png b/graphics/pokemon/loudred/front.png deleted file mode 100644 index 29c1e1bafdcb..000000000000 Binary files a/graphics/pokemon/loudred/front.png and /dev/null differ diff --git a/graphics/pokemon/lucario/back.png b/graphics/pokemon/lucario/back.png index d8063193d674..24e8a6023612 100644 Binary files a/graphics/pokemon/lucario/back.png and b/graphics/pokemon/lucario/back.png differ diff --git a/graphics/pokemon/lucario/footprint.png b/graphics/pokemon/lucario/footprint.png index 1b78e62cf67c..da160c970add 100644 Binary files a/graphics/pokemon/lucario/footprint.png and b/graphics/pokemon/lucario/footprint.png differ diff --git a/graphics/pokemon/lucario/front.png b/graphics/pokemon/lucario/front.png deleted file mode 100644 index c4b7a41c2dbf..000000000000 Binary files a/graphics/pokemon/lucario/front.png and /dev/null differ diff --git a/graphics/pokemon/ludicolo/footprint.png b/graphics/pokemon/ludicolo/footprint.png index 23163f358cdc..e5aa759abcd6 100644 Binary files a/graphics/pokemon/ludicolo/footprint.png and b/graphics/pokemon/ludicolo/footprint.png differ diff --git a/graphics/pokemon/ludicolo/front.png b/graphics/pokemon/ludicolo/front.png deleted file mode 100644 index 98ac42818610..000000000000 Binary files a/graphics/pokemon/ludicolo/front.png and /dev/null differ diff --git a/graphics/pokemon/lugia/footprint.png b/graphics/pokemon/lugia/footprint.png index e6642ed07f1c..bb807c6dd543 100644 Binary files a/graphics/pokemon/lugia/footprint.png and b/graphics/pokemon/lugia/footprint.png differ diff --git a/graphics/pokemon/lugia/front.png b/graphics/pokemon/lugia/front.png deleted file mode 100644 index 124a6f626ee8..000000000000 Binary files a/graphics/pokemon/lugia/front.png and /dev/null differ diff --git a/graphics/pokemon/lugia/icon.png b/graphics/pokemon/lugia/icon.png index 17a3aaf7466b..fda93844eecf 100644 Binary files a/graphics/pokemon/lugia/icon.png and b/graphics/pokemon/lugia/icon.png differ diff --git a/graphics/pokemon/lumineon/footprint.png b/graphics/pokemon/lumineon/footprint.png index 0a5cb2bb4382..2449369fd6b8 100644 Binary files a/graphics/pokemon/lumineon/footprint.png and b/graphics/pokemon/lumineon/footprint.png differ diff --git a/graphics/pokemon/lumineon/front.png b/graphics/pokemon/lumineon/front.png deleted file mode 100644 index 3aae9837fd0e..000000000000 Binary files a/graphics/pokemon/lumineon/front.png and /dev/null differ diff --git a/graphics/pokemon/lunala/footprint.png b/graphics/pokemon/lunala/footprint.png index d9a4ff1d4d7e..2449369fd6b8 100644 Binary files a/graphics/pokemon/lunala/footprint.png and b/graphics/pokemon/lunala/footprint.png differ diff --git a/graphics/pokemon/lunatone/footprint.png b/graphics/pokemon/lunatone/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/lunatone/footprint.png and b/graphics/pokemon/lunatone/footprint.png differ diff --git a/graphics/pokemon/lunatone/front.png b/graphics/pokemon/lunatone/front.png deleted file mode 100644 index 279f1578d141..000000000000 Binary files a/graphics/pokemon/lunatone/front.png and /dev/null differ diff --git a/graphics/pokemon/lurantis/footprint.png b/graphics/pokemon/lurantis/footprint.png index c6733b612251..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/lurantis/footprint.png and b/graphics/pokemon/lurantis/footprint.png differ diff --git a/graphics/pokemon/luvdisc/footprint.png b/graphics/pokemon/luvdisc/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/luvdisc/footprint.png and b/graphics/pokemon/luvdisc/footprint.png differ diff --git a/graphics/pokemon/luvdisc/front.png b/graphics/pokemon/luvdisc/front.png deleted file mode 100644 index 24ac5a6f933e..000000000000 Binary files a/graphics/pokemon/luvdisc/front.png and /dev/null differ diff --git a/graphics/pokemon/luxio/back.png b/graphics/pokemon/luxio/back.png index b86883b1f4b0..8ee3ca65bbf8 100644 Binary files a/graphics/pokemon/luxio/back.png and b/graphics/pokemon/luxio/back.png differ diff --git a/graphics/pokemon/luxio/footprint.png b/graphics/pokemon/luxio/footprint.png index 3745562421aa..17ccb25e9793 100644 Binary files a/graphics/pokemon/luxio/footprint.png and b/graphics/pokemon/luxio/footprint.png differ diff --git a/graphics/pokemon/luxio/front.png b/graphics/pokemon/luxio/front.png deleted file mode 100644 index f8a883afcb0e..000000000000 Binary files a/graphics/pokemon/luxio/front.png and /dev/null differ diff --git a/graphics/pokemon/luxray/back.png b/graphics/pokemon/luxray/back.png index 005e8e5a58ca..b8625a41a015 100644 Binary files a/graphics/pokemon/luxray/back.png and b/graphics/pokemon/luxray/back.png differ diff --git a/graphics/pokemon/luxray/footprint.png b/graphics/pokemon/luxray/footprint.png index be6f8bb9f087..8ce9f9cb475b 100644 Binary files a/graphics/pokemon/luxray/footprint.png and b/graphics/pokemon/luxray/footprint.png differ diff --git a/graphics/pokemon/luxray/front.png b/graphics/pokemon/luxray/front.png deleted file mode 100644 index 12381ea362b6..000000000000 Binary files a/graphics/pokemon/luxray/front.png and /dev/null differ diff --git a/graphics/pokemon/luxray/icon.png b/graphics/pokemon/luxray/icon.png index 20d02d897a13..9514dbc9b212 100644 Binary files a/graphics/pokemon/luxray/icon.png and b/graphics/pokemon/luxray/icon.png differ diff --git a/graphics/pokemon/lycanroc/dusk/front.png b/graphics/pokemon/lycanroc/dusk/front.png index 772f59c6a80d..0784c7bafde0 100644 Binary files a/graphics/pokemon/lycanroc/dusk/front.png and b/graphics/pokemon/lycanroc/dusk/front.png differ diff --git a/graphics/pokemon/lycanroc/footprint.png b/graphics/pokemon/lycanroc/footprint.png index 7e69bd83eb72..5257ec3e01ba 100644 Binary files a/graphics/pokemon/lycanroc/footprint.png and b/graphics/pokemon/lycanroc/footprint.png differ diff --git a/graphics/pokemon/lycanroc/midnight/front.png b/graphics/pokemon/lycanroc/midnight/front.png index 1c4059d90327..2a792d2afbfc 100644 Binary files a/graphics/pokemon/lycanroc/midnight/front.png and b/graphics/pokemon/lycanroc/midnight/front.png differ diff --git a/graphics/pokemon/machamp/footprint.png b/graphics/pokemon/machamp/footprint.png index e562fd08cb75..bfccf5bdb028 100644 Binary files a/graphics/pokemon/machamp/footprint.png and b/graphics/pokemon/machamp/footprint.png differ diff --git a/graphics/pokemon/machamp/front.png b/graphics/pokemon/machamp/front.png deleted file mode 100644 index 205ae8640225..000000000000 Binary files a/graphics/pokemon/machamp/front.png and /dev/null differ diff --git a/graphics/pokemon/machoke/footprint.png b/graphics/pokemon/machoke/footprint.png index d9009d3e19cc..5cde0083d574 100644 Binary files a/graphics/pokemon/machoke/footprint.png and b/graphics/pokemon/machoke/footprint.png differ diff --git a/graphics/pokemon/machoke/front.png b/graphics/pokemon/machoke/front.png deleted file mode 100644 index 509b980e29e8..000000000000 Binary files a/graphics/pokemon/machoke/front.png and /dev/null differ diff --git a/graphics/pokemon/machop/footprint.png b/graphics/pokemon/machop/footprint.png index 8b2808553b54..9bb3ae06333f 100644 Binary files a/graphics/pokemon/machop/footprint.png and b/graphics/pokemon/machop/footprint.png differ diff --git a/graphics/pokemon/machop/front.png b/graphics/pokemon/machop/front.png deleted file mode 100644 index 867cb8c3fc40..000000000000 Binary files a/graphics/pokemon/machop/front.png and /dev/null differ diff --git a/graphics/pokemon/magby/footprint.png b/graphics/pokemon/magby/footprint.png index 655d0ca2b844..45e1a343e083 100644 Binary files a/graphics/pokemon/magby/footprint.png and b/graphics/pokemon/magby/footprint.png differ diff --git a/graphics/pokemon/magby/front.png b/graphics/pokemon/magby/front.png deleted file mode 100644 index 389af0d033c0..000000000000 Binary files a/graphics/pokemon/magby/front.png and /dev/null differ diff --git a/graphics/pokemon/magcargo/footprint.png b/graphics/pokemon/magcargo/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/magcargo/footprint.png and b/graphics/pokemon/magcargo/footprint.png differ diff --git a/graphics/pokemon/magcargo/front.png b/graphics/pokemon/magcargo/front.png deleted file mode 100644 index dda50c3f80f2..000000000000 Binary files a/graphics/pokemon/magcargo/front.png and /dev/null differ diff --git a/graphics/pokemon/magearna/back.png b/graphics/pokemon/magearna/back.png index c66e5f3a8f33..e29c4ad6c572 100644 Binary files a/graphics/pokemon/magearna/back.png and b/graphics/pokemon/magearna/back.png differ diff --git a/graphics/pokemon/magearna/footprint.png b/graphics/pokemon/magearna/footprint.png index 0f2f2d308c50..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/magearna/footprint.png and b/graphics/pokemon/magearna/footprint.png differ diff --git a/graphics/pokemon/magearna/front.png b/graphics/pokemon/magearna/front.png index 18e73e31a0e1..20db67ab6ed5 100644 Binary files a/graphics/pokemon/magearna/front.png and b/graphics/pokemon/magearna/front.png differ diff --git a/graphics/pokemon/magearna/original_color/back.png b/graphics/pokemon/magearna/original_color/back.png index 7472bcbace6c..cf9c0e3236ea 100644 Binary files a/graphics/pokemon/magearna/original_color/back.png and b/graphics/pokemon/magearna/original_color/back.png differ diff --git a/graphics/pokemon/magearna/original_color/front.png b/graphics/pokemon/magearna/original_color/front.png index 4cc57d909e9b..afeb78daed2f 100644 Binary files a/graphics/pokemon/magearna/original_color/front.png and b/graphics/pokemon/magearna/original_color/front.png differ diff --git a/graphics/pokemon/magearna/original_color/icon.png b/graphics/pokemon/magearna/original_color/icon.png index a51a74e11e37..057698e414a0 100644 Binary files a/graphics/pokemon/magearna/original_color/icon.png and b/graphics/pokemon/magearna/original_color/icon.png differ diff --git a/graphics/pokemon/magikarp/footprint.png b/graphics/pokemon/magikarp/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/magikarp/footprint.png and b/graphics/pokemon/magikarp/footprint.png differ diff --git a/graphics/pokemon/magikarp/front.png b/graphics/pokemon/magikarp/front.png deleted file mode 100644 index 198730e7e0fb..000000000000 Binary files a/graphics/pokemon/magikarp/front.png and /dev/null differ diff --git a/graphics/pokemon/magmar/footprint.png b/graphics/pokemon/magmar/footprint.png index 17de53a46429..328f67d2efe4 100644 Binary files a/graphics/pokemon/magmar/footprint.png and b/graphics/pokemon/magmar/footprint.png differ diff --git a/graphics/pokemon/magmar/front.png b/graphics/pokemon/magmar/front.png deleted file mode 100644 index 85c08d04fdbc..000000000000 Binary files a/graphics/pokemon/magmar/front.png and /dev/null differ diff --git a/graphics/pokemon/magmortar/footprint.png b/graphics/pokemon/magmortar/footprint.png index a15ffc7c7632..7aa0b82c3786 100644 Binary files a/graphics/pokemon/magmortar/footprint.png and b/graphics/pokemon/magmortar/footprint.png differ diff --git a/graphics/pokemon/magmortar/front.png b/graphics/pokemon/magmortar/front.png deleted file mode 100644 index 38f46e85e5c6..000000000000 Binary files a/graphics/pokemon/magmortar/front.png and /dev/null differ diff --git a/graphics/pokemon/magnemite/footprint.png b/graphics/pokemon/magnemite/footprint.png index f710e5028320..3f8f930cbee4 100644 Binary files a/graphics/pokemon/magnemite/footprint.png and b/graphics/pokemon/magnemite/footprint.png differ diff --git a/graphics/pokemon/magnemite/front.png b/graphics/pokemon/magnemite/front.png deleted file mode 100644 index b1e7dad9f0eb..000000000000 Binary files a/graphics/pokemon/magnemite/front.png and /dev/null differ diff --git a/graphics/pokemon/magnemite/icon.png b/graphics/pokemon/magnemite/icon.png index ffefd1a45b9e..95b81cae03d1 100644 Binary files a/graphics/pokemon/magnemite/icon.png and b/graphics/pokemon/magnemite/icon.png differ diff --git a/graphics/pokemon/magneton/footprint.png b/graphics/pokemon/magneton/footprint.png index 00b8b0ebf42d..aa37675775c7 100644 Binary files a/graphics/pokemon/magneton/footprint.png and b/graphics/pokemon/magneton/footprint.png differ diff --git a/graphics/pokemon/magneton/front.png b/graphics/pokemon/magneton/front.png deleted file mode 100644 index 89642398acc8..000000000000 Binary files a/graphics/pokemon/magneton/front.png and /dev/null differ diff --git a/graphics/pokemon/magneton/icon.png b/graphics/pokemon/magneton/icon.png index 733049b1d68e..bde234ea1132 100644 Binary files a/graphics/pokemon/magneton/icon.png and b/graphics/pokemon/magneton/icon.png differ diff --git a/graphics/pokemon/magnezone/footprint.png b/graphics/pokemon/magnezone/footprint.png index 0a5cb2bb4382..2449369fd6b8 100644 Binary files a/graphics/pokemon/magnezone/footprint.png and b/graphics/pokemon/magnezone/footprint.png differ diff --git a/graphics/pokemon/magnezone/front.png b/graphics/pokemon/magnezone/front.png deleted file mode 100644 index 1a2b3ff38079..000000000000 Binary files a/graphics/pokemon/magnezone/front.png and /dev/null differ diff --git a/graphics/pokemon/makuhita/footprint.png b/graphics/pokemon/makuhita/footprint.png index 3da20ccb3171..4f2aca69ec30 100644 Binary files a/graphics/pokemon/makuhita/footprint.png and b/graphics/pokemon/makuhita/footprint.png differ diff --git a/graphics/pokemon/makuhita/front.png b/graphics/pokemon/makuhita/front.png deleted file mode 100644 index 438ac8283e94..000000000000 Binary files a/graphics/pokemon/makuhita/front.png and /dev/null differ diff --git a/graphics/pokemon/malamar/footprint.png b/graphics/pokemon/malamar/footprint.png index 9987a2282f32..45b1e5b7579d 100644 Binary files a/graphics/pokemon/malamar/footprint.png and b/graphics/pokemon/malamar/footprint.png differ diff --git a/graphics/pokemon/malamar/front.png b/graphics/pokemon/malamar/front.png deleted file mode 100644 index bbb95da6c597..000000000000 Binary files a/graphics/pokemon/malamar/front.png and /dev/null differ diff --git a/graphics/pokemon/mamoswine/footprint.png b/graphics/pokemon/mamoswine/footprint.png index a593d179ab4d..9d3bd7e33d7d 100644 Binary files a/graphics/pokemon/mamoswine/footprint.png and b/graphics/pokemon/mamoswine/footprint.png differ diff --git a/graphics/pokemon/mamoswine/front.png b/graphics/pokemon/mamoswine/front.png deleted file mode 100644 index 2b7945603019..000000000000 Binary files a/graphics/pokemon/mamoswine/front.png and /dev/null differ diff --git a/graphics/pokemon/manaphy/footprint.png b/graphics/pokemon/manaphy/footprint.png index 57a2be0b3725..2449369fd6b8 100644 Binary files a/graphics/pokemon/manaphy/footprint.png and b/graphics/pokemon/manaphy/footprint.png differ diff --git a/graphics/pokemon/manaphy/front.png b/graphics/pokemon/manaphy/front.png deleted file mode 100644 index ed6a5e4b27e9..000000000000 Binary files a/graphics/pokemon/manaphy/front.png and /dev/null differ diff --git a/graphics/pokemon/manaphy/icon.png b/graphics/pokemon/manaphy/icon.png index 4c491d4865c5..97dbb79c00f1 100644 Binary files a/graphics/pokemon/manaphy/icon.png and b/graphics/pokemon/manaphy/icon.png differ diff --git a/graphics/pokemon/mandibuzz/footprint.png b/graphics/pokemon/mandibuzz/footprint.png index c029d5794780..5a31495e8996 100644 Binary files a/graphics/pokemon/mandibuzz/footprint.png and b/graphics/pokemon/mandibuzz/footprint.png differ diff --git a/graphics/pokemon/mandibuzz/front.png b/graphics/pokemon/mandibuzz/front.png deleted file mode 100644 index acd99e1e3042..000000000000 Binary files a/graphics/pokemon/mandibuzz/front.png and /dev/null differ diff --git a/graphics/pokemon/manectric/footprint.png b/graphics/pokemon/manectric/footprint.png index 4f4903bf9428..a3ab1c56cb96 100644 Binary files a/graphics/pokemon/manectric/footprint.png and b/graphics/pokemon/manectric/footprint.png differ diff --git a/graphics/pokemon/manectric/front.png b/graphics/pokemon/manectric/front.png deleted file mode 100644 index c82e63447c20..000000000000 Binary files a/graphics/pokemon/manectric/front.png and /dev/null differ diff --git a/graphics/pokemon/manectric/icon.png b/graphics/pokemon/manectric/icon.png index 5379bbafa1a5..5d7f3e950852 100644 Binary files a/graphics/pokemon/manectric/icon.png and b/graphics/pokemon/manectric/icon.png differ diff --git a/graphics/pokemon/mankey/footprint.png b/graphics/pokemon/mankey/footprint.png index f02036af503a..4881d17c33cf 100644 Binary files a/graphics/pokemon/mankey/footprint.png and b/graphics/pokemon/mankey/footprint.png differ diff --git a/graphics/pokemon/mankey/front.png b/graphics/pokemon/mankey/front.png deleted file mode 100644 index 576a813eb7e2..000000000000 Binary files a/graphics/pokemon/mankey/front.png and /dev/null differ diff --git a/graphics/pokemon/mantine/footprint.png b/graphics/pokemon/mantine/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/mantine/footprint.png and b/graphics/pokemon/mantine/footprint.png differ diff --git a/graphics/pokemon/mantine/front.png b/graphics/pokemon/mantine/front.png deleted file mode 100644 index ed3bd56b13f3..000000000000 Binary files a/graphics/pokemon/mantine/front.png and /dev/null differ diff --git a/graphics/pokemon/mantyke/footprint.png b/graphics/pokemon/mantyke/footprint.png index fc1f2f3089ab..2449369fd6b8 100644 Binary files a/graphics/pokemon/mantyke/footprint.png and b/graphics/pokemon/mantyke/footprint.png differ diff --git a/graphics/pokemon/mantyke/front.png b/graphics/pokemon/mantyke/front.png deleted file mode 100644 index b06a66d0a4cf..000000000000 Binary files a/graphics/pokemon/mantyke/front.png and /dev/null differ diff --git a/graphics/pokemon/maractus/footprint.png b/graphics/pokemon/maractus/footprint.png index e6ba8642c585..65322f2673c6 100644 Binary files a/graphics/pokemon/maractus/footprint.png and b/graphics/pokemon/maractus/footprint.png differ diff --git a/graphics/pokemon/maractus/front.png b/graphics/pokemon/maractus/front.png deleted file mode 100644 index 3ba7400be962..000000000000 Binary files a/graphics/pokemon/maractus/front.png and /dev/null differ diff --git a/graphics/pokemon/mareanie/footprint.png b/graphics/pokemon/mareanie/footprint.png index b851ca0ca0b5..2449369fd6b8 100644 Binary files a/graphics/pokemon/mareanie/footprint.png and b/graphics/pokemon/mareanie/footprint.png differ diff --git a/graphics/pokemon/mareep/anim_front.png b/graphics/pokemon/mareep/anim_front.png index 5c67de509447..47961b201aa0 100644 Binary files a/graphics/pokemon/mareep/anim_front.png and b/graphics/pokemon/mareep/anim_front.png differ diff --git a/graphics/pokemon/mareep/back.png b/graphics/pokemon/mareep/back.png index 027ad17ce9a0..c0d26a07b66d 100644 Binary files a/graphics/pokemon/mareep/back.png and b/graphics/pokemon/mareep/back.png differ diff --git a/graphics/pokemon/mareep/footprint.png b/graphics/pokemon/mareep/footprint.png index 2913a4c48405..8e89572b4a7c 100644 Binary files a/graphics/pokemon/mareep/footprint.png and b/graphics/pokemon/mareep/footprint.png differ diff --git a/graphics/pokemon/mareep/front.png b/graphics/pokemon/mareep/front.png deleted file mode 100644 index 703f09066289..000000000000 Binary files a/graphics/pokemon/mareep/front.png and /dev/null differ diff --git a/graphics/pokemon/mareep/normal.pal b/graphics/pokemon/mareep/normal.pal index eaefbe9350d8..c8e45e1a4d3e 100644 --- a/graphics/pokemon/mareep/normal.pal +++ b/graphics/pokemon/mareep/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -224 168 0 -200 176 136 -248 248 248 -248 216 0 -128 112 80 +230 172 0 +205 156 82 +255 255 255 +255 222 0 +156 98 32 16 16 16 -248 224 184 -224 200 160 -56 64 64 -224 168 16 -248 216 8 -136 144 144 -0 72 144 -80 128 184 -112 160 240 +255 255 189 +238 205 115 +82 82 82 +164 164 164 +180 123 0 +82 131 189 +0 74 148 +115 164 246 +98 148 222 diff --git a/graphics/pokemon/mareep/shiny.pal b/graphics/pokemon/mareep/shiny.pal index caa76333c17c..de18d5b3bcca 100644 --- a/graphics/pokemon/mareep/shiny.pal +++ b/graphics/pokemon/mareep/shiny.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 216 168 0 -200 144 176 +208 96 184 248 248 248 240 216 0 -152 80 120 +168 24 136 16 16 16 248 200 248 -224 176 216 +232 152 216 80 80 80 -216 168 0 -240 216 0 160 160 160 +168 120 0 +48 136 184 16 72 144 -48 144 192 -112 192 240 +128 192 240 +80 168 224 diff --git a/graphics/pokemon/marill/footprint.png b/graphics/pokemon/marill/footprint.png index a09d8f2c0187..f70b3ea55d54 100644 Binary files a/graphics/pokemon/marill/footprint.png and b/graphics/pokemon/marill/footprint.png differ diff --git a/graphics/pokemon/marill/front.png b/graphics/pokemon/marill/front.png deleted file mode 100644 index d56a82fc4d0a..000000000000 Binary files a/graphics/pokemon/marill/front.png and /dev/null differ diff --git a/graphics/pokemon/marowak/footprint.png b/graphics/pokemon/marowak/footprint.png index fbde41d04b5a..e05d5d0005f6 100644 Binary files a/graphics/pokemon/marowak/footprint.png and b/graphics/pokemon/marowak/footprint.png differ diff --git a/graphics/pokemon/marowak/front.png b/graphics/pokemon/marowak/front.png deleted file mode 100644 index 8d9488612deb..000000000000 Binary files a/graphics/pokemon/marowak/front.png and /dev/null differ diff --git a/graphics/pokemon/marowak/icon.png b/graphics/pokemon/marowak/icon.png index a9738970562a..af56d377c599 100644 Binary files a/graphics/pokemon/marowak/icon.png and b/graphics/pokemon/marowak/icon.png differ diff --git a/graphics/pokemon/marshadow/footprint.png b/graphics/pokemon/marshadow/footprint.png index 6d82d60bbec4..a52d267bd65c 100644 Binary files a/graphics/pokemon/marshadow/footprint.png and b/graphics/pokemon/marshadow/footprint.png differ diff --git a/graphics/pokemon/marshadow/front.png b/graphics/pokemon/marshadow/front.png deleted file mode 100644 index 14a1503bdaa4..000000000000 Binary files a/graphics/pokemon/marshadow/front.png and /dev/null differ diff --git a/graphics/pokemon/marshtomp/back.png b/graphics/pokemon/marshtomp/back.png index b04c6cc5cb6d..baa4e481b4c8 100644 Binary files a/graphics/pokemon/marshtomp/back.png and b/graphics/pokemon/marshtomp/back.png differ diff --git a/graphics/pokemon/marshtomp/footprint.png b/graphics/pokemon/marshtomp/footprint.png index 3c232ccad8f7..6ea1827142b2 100644 Binary files a/graphics/pokemon/marshtomp/footprint.png and b/graphics/pokemon/marshtomp/footprint.png differ diff --git a/graphics/pokemon/marshtomp/front.png b/graphics/pokemon/marshtomp/front.png deleted file mode 100644 index ead3658eda44..000000000000 Binary files a/graphics/pokemon/marshtomp/front.png and /dev/null differ diff --git a/graphics/pokemon/masquerain/anim_front.png b/graphics/pokemon/masquerain/anim_front.png index 7508ae76d6c9..190c8d079d24 100644 Binary files a/graphics/pokemon/masquerain/anim_front.png and b/graphics/pokemon/masquerain/anim_front.png differ diff --git a/graphics/pokemon/masquerain/footprint.png b/graphics/pokemon/masquerain/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/masquerain/footprint.png and b/graphics/pokemon/masquerain/footprint.png differ diff --git a/graphics/pokemon/masquerain/front.png b/graphics/pokemon/masquerain/front.png deleted file mode 100644 index 853e08a17202..000000000000 Binary files a/graphics/pokemon/masquerain/front.png and /dev/null differ diff --git a/graphics/pokemon/masquerain/normal.pal b/graphics/pokemon/masquerain/normal.pal index bd8d9c4c7cd9..3d0291badccb 100644 --- a/graphics/pokemon/masquerain/normal.pal +++ b/graphics/pokemon/masquerain/normal.pal @@ -14,6 +14,6 @@ JASC-PAL 136 32 72 136 160 200 192 200 224 -16 16 16 224 104 40 248 144 96 +16 16 16 diff --git a/graphics/pokemon/mawile/front.png b/graphics/pokemon/mawile/front.png deleted file mode 100644 index 9f8bddbfd539..000000000000 Binary files a/graphics/pokemon/mawile/front.png and /dev/null differ diff --git a/graphics/pokemon/mawile/icon.png b/graphics/pokemon/mawile/icon.png index ea60047c8a48..f6605a6470c7 100644 Binary files a/graphics/pokemon/mawile/icon.png and b/graphics/pokemon/mawile/icon.png differ diff --git a/graphics/pokemon/medicham/footprint.png b/graphics/pokemon/medicham/footprint.png index 804e8c1d8504..da5cdd23bd84 100644 Binary files a/graphics/pokemon/medicham/footprint.png and b/graphics/pokemon/medicham/footprint.png differ diff --git a/graphics/pokemon/medicham/front.png b/graphics/pokemon/medicham/front.png deleted file mode 100644 index 63734b124bd3..000000000000 Binary files a/graphics/pokemon/medicham/front.png and /dev/null differ diff --git a/graphics/pokemon/medicham/icon.png b/graphics/pokemon/medicham/icon.png index 9e4bbc27cd9c..79883928382f 100644 Binary files a/graphics/pokemon/medicham/icon.png and b/graphics/pokemon/medicham/icon.png differ diff --git a/graphics/pokemon/meditite/footprint.png b/graphics/pokemon/meditite/footprint.png index 034cb0df8db2..4cf72d9aef9c 100644 Binary files a/graphics/pokemon/meditite/footprint.png and b/graphics/pokemon/meditite/footprint.png differ diff --git a/graphics/pokemon/meditite/front.png b/graphics/pokemon/meditite/front.png deleted file mode 100644 index c1c0dcd06fb1..000000000000 Binary files a/graphics/pokemon/meditite/front.png and /dev/null differ diff --git a/graphics/pokemon/meganium/anim_front.png b/graphics/pokemon/meganium/anim_front.png index 6352e96e29e1..b89016f3c32f 100644 Binary files a/graphics/pokemon/meganium/anim_front.png and b/graphics/pokemon/meganium/anim_front.png differ diff --git a/graphics/pokemon/meganium/footprint.png b/graphics/pokemon/meganium/footprint.png index 39303ac4fa06..1592e145c051 100644 Binary files a/graphics/pokemon/meganium/footprint.png and b/graphics/pokemon/meganium/footprint.png differ diff --git a/graphics/pokemon/meganium/front.png b/graphics/pokemon/meganium/front.png deleted file mode 100644 index 2a813e11888c..000000000000 Binary files a/graphics/pokemon/meganium/front.png and /dev/null differ diff --git a/graphics/pokemon/meganium/icon.png b/graphics/pokemon/meganium/icon.png index e05a33daf875..d7d390fe9c13 100644 Binary files a/graphics/pokemon/meganium/icon.png and b/graphics/pokemon/meganium/icon.png differ diff --git a/graphics/pokemon/meganium/normal.pal b/graphics/pokemon/meganium/normal.pal index d594136b80c5..75da9204bb18 100644 --- a/graphics/pokemon/meganium/normal.pal +++ b/graphics/pokemon/meganium/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 192 248 -248 216 32 -96 72 0 -224 168 0 -152 168 80 -80 104 24 -208 232 136 -184 208 104 +255 222 32 +98 74 0 +230 172 0 +106 172 65 +16 115 41 +189 255 123 +139 222 49 16 16 16 -248 248 248 -248 56 88 -120 16 56 -240 160 152 -200 32 56 -200 200 200 -104 104 104 +255 255 255 +255 57 90 +123 16 57 +246 164 156 +205 32 57 +205 205 205 +106 106 106 diff --git a/graphics/pokemon/melmetal/footprint.png b/graphics/pokemon/melmetal/footprint.png index 982753a19c5e..1c45302d3f3c 100644 Binary files a/graphics/pokemon/melmetal/footprint.png and b/graphics/pokemon/melmetal/footprint.png differ diff --git a/graphics/pokemon/meloetta/footprint.png b/graphics/pokemon/meloetta/footprint.png index 220e4350a8a3..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/meloetta/footprint.png and b/graphics/pokemon/meloetta/footprint.png differ diff --git a/graphics/pokemon/meloetta/front.png b/graphics/pokemon/meloetta/front.png deleted file mode 100644 index fad54a0b0bd8..000000000000 Binary files a/graphics/pokemon/meloetta/front.png and /dev/null differ diff --git a/graphics/pokemon/meloetta/icon.png b/graphics/pokemon/meloetta/icon.png index 376f3953a2f4..f640f80999ea 100644 Binary files a/graphics/pokemon/meloetta/icon.png and b/graphics/pokemon/meloetta/icon.png differ diff --git a/graphics/pokemon/meltan/footprint.png b/graphics/pokemon/meltan/footprint.png index 37b4e1d3ec7c..2449369fd6b8 100644 Binary files a/graphics/pokemon/meltan/footprint.png and b/graphics/pokemon/meltan/footprint.png differ diff --git a/graphics/pokemon/meowstic/female/front.png b/graphics/pokemon/meowstic/female/front.png deleted file mode 100644 index d65446893454..000000000000 Binary files a/graphics/pokemon/meowstic/female/front.png and /dev/null differ diff --git a/graphics/pokemon/meowstic/footprint.png b/graphics/pokemon/meowstic/footprint.png index 7570dd40167c..a9b0e33c2899 100644 Binary files a/graphics/pokemon/meowstic/footprint.png and b/graphics/pokemon/meowstic/footprint.png differ diff --git a/graphics/pokemon/meowstic/front.png b/graphics/pokemon/meowstic/front.png deleted file mode 100644 index 5ec230fb75f9..000000000000 Binary files a/graphics/pokemon/meowstic/front.png and /dev/null differ diff --git a/graphics/pokemon/meowth/footprint.png b/graphics/pokemon/meowth/footprint.png index 7dc20ada7815..d7283ba439f3 100644 Binary files a/graphics/pokemon/meowth/footprint.png and b/graphics/pokemon/meowth/footprint.png differ diff --git a/graphics/pokemon/meowth/front.png b/graphics/pokemon/meowth/front.png deleted file mode 100644 index 2b450d3dc7cb..000000000000 Binary files a/graphics/pokemon/meowth/front.png and /dev/null differ diff --git a/graphics/pokemon/meowth/icon.png b/graphics/pokemon/meowth/icon.png index b0a11aaddb38..b721e3440e81 100644 Binary files a/graphics/pokemon/meowth/icon.png and b/graphics/pokemon/meowth/icon.png differ diff --git a/graphics/pokemon/mesprit/footprint.png b/graphics/pokemon/mesprit/footprint.png index 613b898a6428..f1b5a7a094fd 100644 Binary files a/graphics/pokemon/mesprit/footprint.png and b/graphics/pokemon/mesprit/footprint.png differ diff --git a/graphics/pokemon/mesprit/front.png b/graphics/pokemon/mesprit/front.png deleted file mode 100644 index 0ca08f734d97..000000000000 Binary files a/graphics/pokemon/mesprit/front.png and /dev/null differ diff --git a/graphics/pokemon/mesprit/icon.png b/graphics/pokemon/mesprit/icon.png index 86368bae24c3..2e5343d28541 100644 Binary files a/graphics/pokemon/mesprit/icon.png and b/graphics/pokemon/mesprit/icon.png differ diff --git a/graphics/pokemon/metagross/footprint.png b/graphics/pokemon/metagross/footprint.png index 07f91d604f6d..fd7039efd32d 100644 Binary files a/graphics/pokemon/metagross/footprint.png and b/graphics/pokemon/metagross/footprint.png differ diff --git a/graphics/pokemon/metagross/front.png b/graphics/pokemon/metagross/front.png deleted file mode 100644 index 43a762538075..000000000000 Binary files a/graphics/pokemon/metagross/front.png and /dev/null differ diff --git a/graphics/pokemon/metagross/mega/back.png b/graphics/pokemon/metagross/mega/back.png index 00bfdd18181e..86c2b6e14565 100644 Binary files a/graphics/pokemon/metagross/mega/back.png and b/graphics/pokemon/metagross/mega/back.png differ diff --git a/graphics/pokemon/metagross/mega/front.png b/graphics/pokemon/metagross/mega/front.png index 6ed2cfbebc30..1ebb0470aad1 100644 Binary files a/graphics/pokemon/metagross/mega/front.png and b/graphics/pokemon/metagross/mega/front.png differ diff --git a/graphics/pokemon/metang/footprint.png b/graphics/pokemon/metang/footprint.png index 5b0f8f5b0517..a91a3d532941 100644 Binary files a/graphics/pokemon/metang/footprint.png and b/graphics/pokemon/metang/footprint.png differ diff --git a/graphics/pokemon/metang/front.png b/graphics/pokemon/metang/front.png deleted file mode 100644 index da3998543111..000000000000 Binary files a/graphics/pokemon/metang/front.png and /dev/null differ diff --git a/graphics/pokemon/metang/icon.png b/graphics/pokemon/metang/icon.png index 3916b65310dc..8d27afff4f3f 100644 Binary files a/graphics/pokemon/metang/icon.png and b/graphics/pokemon/metang/icon.png differ diff --git a/graphics/pokemon/metapod/footprint.png b/graphics/pokemon/metapod/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/metapod/footprint.png and b/graphics/pokemon/metapod/footprint.png differ diff --git a/graphics/pokemon/metapod/front.png b/graphics/pokemon/metapod/front.png deleted file mode 100644 index cde83b1f0fca..000000000000 Binary files a/graphics/pokemon/metapod/front.png and /dev/null differ diff --git a/graphics/pokemon/mew/footprint.png b/graphics/pokemon/mew/footprint.png index afbba43acc3f..e380642b80ec 100644 Binary files a/graphics/pokemon/mew/footprint.png and b/graphics/pokemon/mew/footprint.png differ diff --git a/graphics/pokemon/mew/front.png b/graphics/pokemon/mew/front.png deleted file mode 100644 index 9451dacfab1f..000000000000 Binary files a/graphics/pokemon/mew/front.png and /dev/null differ diff --git a/graphics/pokemon/mew/icon.png b/graphics/pokemon/mew/icon.png index 6e7175f43739..d4b6ec9a72ce 100644 Binary files a/graphics/pokemon/mew/icon.png and b/graphics/pokemon/mew/icon.png differ diff --git a/graphics/pokemon/mewtwo/footprint.png b/graphics/pokemon/mewtwo/footprint.png index 0f7573dd3b96..bedffad65db4 100644 Binary files a/graphics/pokemon/mewtwo/footprint.png and b/graphics/pokemon/mewtwo/footprint.png differ diff --git a/graphics/pokemon/mewtwo/front.png b/graphics/pokemon/mewtwo/front.png deleted file mode 100644 index a725bdb4ab72..000000000000 Binary files a/graphics/pokemon/mewtwo/front.png and /dev/null differ diff --git a/graphics/pokemon/mewtwo/icon.png b/graphics/pokemon/mewtwo/icon.png index 8463a04ddc33..b0dc901658c6 100644 Binary files a/graphics/pokemon/mewtwo/icon.png and b/graphics/pokemon/mewtwo/icon.png differ diff --git a/graphics/pokemon/mienfoo/footprint.png b/graphics/pokemon/mienfoo/footprint.png index 3ed8b350bb8d..90b49038e342 100644 Binary files a/graphics/pokemon/mienfoo/footprint.png and b/graphics/pokemon/mienfoo/footprint.png differ diff --git a/graphics/pokemon/mienfoo/front.png b/graphics/pokemon/mienfoo/front.png deleted file mode 100644 index 51cc46adaf42..000000000000 Binary files a/graphics/pokemon/mienfoo/front.png and /dev/null differ diff --git a/graphics/pokemon/mienfoo/icon.png b/graphics/pokemon/mienfoo/icon.png index b0a6ecf41f1a..e5c5367eeff7 100644 Binary files a/graphics/pokemon/mienfoo/icon.png and b/graphics/pokemon/mienfoo/icon.png differ diff --git a/graphics/pokemon/mienshao/footprint.png b/graphics/pokemon/mienshao/footprint.png index 2b22b099bfee..bb731abaa3e1 100644 Binary files a/graphics/pokemon/mienshao/footprint.png and b/graphics/pokemon/mienshao/footprint.png differ diff --git a/graphics/pokemon/mienshao/front.png b/graphics/pokemon/mienshao/front.png deleted file mode 100644 index 6c1ca33a3714..000000000000 Binary files a/graphics/pokemon/mienshao/front.png and /dev/null differ diff --git a/graphics/pokemon/mienshao/icon.png b/graphics/pokemon/mienshao/icon.png index d73849304a5d..ff001b212fc4 100644 Binary files a/graphics/pokemon/mienshao/icon.png and b/graphics/pokemon/mienshao/icon.png differ diff --git a/graphics/pokemon/mightyena/footprint.png b/graphics/pokemon/mightyena/footprint.png index b39af65bc021..f7693643515a 100644 Binary files a/graphics/pokemon/mightyena/footprint.png and b/graphics/pokemon/mightyena/footprint.png differ diff --git a/graphics/pokemon/mightyena/front.png b/graphics/pokemon/mightyena/front.png deleted file mode 100644 index e7ddfbcf7775..000000000000 Binary files a/graphics/pokemon/mightyena/front.png and /dev/null differ diff --git a/graphics/pokemon/milcery/footprint.png b/graphics/pokemon/milcery/footprint.png index fd3ee498d692..2449369fd6b8 100644 Binary files a/graphics/pokemon/milcery/footprint.png and b/graphics/pokemon/milcery/footprint.png differ diff --git a/graphics/pokemon/milotic/footprint.png b/graphics/pokemon/milotic/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/milotic/footprint.png and b/graphics/pokemon/milotic/footprint.png differ diff --git a/graphics/pokemon/milotic/front.png b/graphics/pokemon/milotic/front.png deleted file mode 100644 index 08f338984f2b..000000000000 Binary files a/graphics/pokemon/milotic/front.png and /dev/null differ diff --git a/graphics/pokemon/milotic/icon.png b/graphics/pokemon/milotic/icon.png index 5caf28bad0df..f67de29314da 100644 Binary files a/graphics/pokemon/milotic/icon.png and b/graphics/pokemon/milotic/icon.png differ diff --git a/graphics/pokemon/miltank/footprint.png b/graphics/pokemon/miltank/footprint.png index a7162cd21151..4f3d0e6968bd 100644 Binary files a/graphics/pokemon/miltank/footprint.png and b/graphics/pokemon/miltank/footprint.png differ diff --git a/graphics/pokemon/miltank/front.png b/graphics/pokemon/miltank/front.png deleted file mode 100644 index 4ac2687e133c..000000000000 Binary files a/graphics/pokemon/miltank/front.png and /dev/null differ diff --git a/graphics/pokemon/mime_jr/footprint.png b/graphics/pokemon/mime_jr/footprint.png index e4abbcc18785..458777edeb8d 100644 Binary files a/graphics/pokemon/mime_jr/footprint.png and b/graphics/pokemon/mime_jr/footprint.png differ diff --git a/graphics/pokemon/mime_jr/front.png b/graphics/pokemon/mime_jr/front.png deleted file mode 100644 index c3519f6c9f08..000000000000 Binary files a/graphics/pokemon/mime_jr/front.png and /dev/null differ diff --git a/graphics/pokemon/mimikyu/busted/back.png b/graphics/pokemon/mimikyu/busted/back.png index 732fe12341b3..1d18044351be 100644 Binary files a/graphics/pokemon/mimikyu/busted/back.png and b/graphics/pokemon/mimikyu/busted/back.png differ diff --git a/graphics/pokemon/mimikyu/busted/front.png b/graphics/pokemon/mimikyu/busted/front.png index c9c36c1f4eda..09e78fac9093 100644 Binary files a/graphics/pokemon/mimikyu/busted/front.png and b/graphics/pokemon/mimikyu/busted/front.png differ diff --git a/graphics/pokemon/mimikyu/busted/icon.png b/graphics/pokemon/mimikyu/busted/icon.png index 9a1cf38c4a34..3ba567ab3be3 100644 Binary files a/graphics/pokemon/mimikyu/busted/icon.png and b/graphics/pokemon/mimikyu/busted/icon.png differ diff --git a/graphics/pokemon/mimikyu/footprint.png b/graphics/pokemon/mimikyu/footprint.png index 00eff81a99a2..2449369fd6b8 100644 Binary files a/graphics/pokemon/mimikyu/footprint.png and b/graphics/pokemon/mimikyu/footprint.png differ diff --git a/graphics/pokemon/minccino/back.png b/graphics/pokemon/minccino/back.png index c2b32adba2e9..92eb266fd132 100644 Binary files a/graphics/pokemon/minccino/back.png and b/graphics/pokemon/minccino/back.png differ diff --git a/graphics/pokemon/minccino/footprint.png b/graphics/pokemon/minccino/footprint.png index 572e5bbf19b0..58fed7be9b74 100644 Binary files a/graphics/pokemon/minccino/footprint.png and b/graphics/pokemon/minccino/footprint.png differ diff --git a/graphics/pokemon/minccino/front.png b/graphics/pokemon/minccino/front.png deleted file mode 100644 index a9b05cdc0460..000000000000 Binary files a/graphics/pokemon/minccino/front.png and /dev/null differ diff --git a/graphics/pokemon/minccino/icon.png b/graphics/pokemon/minccino/icon.png index 27dd5405deb2..fbddf0e08a90 100644 Binary files a/graphics/pokemon/minccino/icon.png and b/graphics/pokemon/minccino/icon.png differ diff --git a/graphics/pokemon/minior/core/back.png b/graphics/pokemon/minior/core/back.png index 6b0b565f427a..af768d469c18 100644 Binary files a/graphics/pokemon/minior/core/back.png and b/graphics/pokemon/minior/core/back.png differ diff --git a/graphics/pokemon/minior/core/blue/icon.png b/graphics/pokemon/minior/core/blue/icon.png index bda398288b55..0dbb8fe0e71d 100644 Binary files a/graphics/pokemon/minior/core/blue/icon.png and b/graphics/pokemon/minior/core/blue/icon.png differ diff --git a/graphics/pokemon/minior/core/front.png b/graphics/pokemon/minior/core/front.png index e9dba883a1ea..ab7e8961565a 100644 Binary files a/graphics/pokemon/minior/core/front.png and b/graphics/pokemon/minior/core/front.png differ diff --git a/graphics/pokemon/minior/core/green/icon.png b/graphics/pokemon/minior/core/green/icon.png index 529e6052025d..dc36402deb0a 100644 Binary files a/graphics/pokemon/minior/core/green/icon.png and b/graphics/pokemon/minior/core/green/icon.png differ diff --git a/graphics/pokemon/minior/core/indigo/icon.png b/graphics/pokemon/minior/core/indigo/icon.png index f24a887bf242..a27482ea1154 100644 Binary files a/graphics/pokemon/minior/core/indigo/icon.png and b/graphics/pokemon/minior/core/indigo/icon.png differ diff --git a/graphics/pokemon/minior/core/orange/icon.png b/graphics/pokemon/minior/core/orange/icon.png index c588e1dd72df..6dea4aca6f32 100644 Binary files a/graphics/pokemon/minior/core/orange/icon.png and b/graphics/pokemon/minior/core/orange/icon.png differ diff --git a/graphics/pokemon/minior/core/violet/icon.png b/graphics/pokemon/minior/core/violet/icon.png index 207c3f455cab..609ace524c68 100644 Binary files a/graphics/pokemon/minior/core/violet/icon.png and b/graphics/pokemon/minior/core/violet/icon.png differ diff --git a/graphics/pokemon/minior/core/yellow/icon.png b/graphics/pokemon/minior/core/yellow/icon.png index 270115f6807b..b0cfaa1c3985 100644 Binary files a/graphics/pokemon/minior/core/yellow/icon.png and b/graphics/pokemon/minior/core/yellow/icon.png differ diff --git a/graphics/pokemon/minior/footprint.png b/graphics/pokemon/minior/footprint.png index 2e1ee7994156..2449369fd6b8 100644 Binary files a/graphics/pokemon/minior/footprint.png and b/graphics/pokemon/minior/footprint.png differ diff --git a/graphics/pokemon/minun/back.png b/graphics/pokemon/minun/back.png index 1e9d01ea3cd8..f8b11aba90b7 100644 Binary files a/graphics/pokemon/minun/back.png and b/graphics/pokemon/minun/back.png differ diff --git a/graphics/pokemon/minun/footprint.png b/graphics/pokemon/minun/footprint.png index 1071b8069e0e..3a2365e16857 100644 Binary files a/graphics/pokemon/minun/footprint.png and b/graphics/pokemon/minun/footprint.png differ diff --git a/graphics/pokemon/minun/front.png b/graphics/pokemon/minun/front.png deleted file mode 100644 index fa72433dc2be..000000000000 Binary files a/graphics/pokemon/minun/front.png and /dev/null differ diff --git a/graphics/pokemon/misdreavus/footprint.png b/graphics/pokemon/misdreavus/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/misdreavus/footprint.png and b/graphics/pokemon/misdreavus/footprint.png differ diff --git a/graphics/pokemon/misdreavus/front.png b/graphics/pokemon/misdreavus/front.png deleted file mode 100644 index b46d709a9694..000000000000 Binary files a/graphics/pokemon/misdreavus/front.png and /dev/null differ diff --git a/graphics/pokemon/mismagius/footprint.png b/graphics/pokemon/mismagius/footprint.png index 5c72b7dd2947..2449369fd6b8 100644 Binary files a/graphics/pokemon/mismagius/footprint.png and b/graphics/pokemon/mismagius/footprint.png differ diff --git a/graphics/pokemon/mismagius/front.png b/graphics/pokemon/mismagius/front.png deleted file mode 100644 index 5d68e8b7042b..000000000000 Binary files a/graphics/pokemon/mismagius/front.png and /dev/null differ diff --git a/graphics/pokemon/mismagius/icon.png b/graphics/pokemon/mismagius/icon.png index ad707f8cdd93..07e075c1e88c 100644 Binary files a/graphics/pokemon/mismagius/icon.png and b/graphics/pokemon/mismagius/icon.png differ diff --git a/graphics/pokemon/moltres/footprint.png b/graphics/pokemon/moltres/footprint.png index 3900403bd9e8..6c590ccda7b1 100644 Binary files a/graphics/pokemon/moltres/footprint.png and b/graphics/pokemon/moltres/footprint.png differ diff --git a/graphics/pokemon/moltres/front.png b/graphics/pokemon/moltres/front.png deleted file mode 100644 index e8d2f0e43c48..000000000000 Binary files a/graphics/pokemon/moltres/front.png and /dev/null differ diff --git a/graphics/pokemon/moltres/icon.png b/graphics/pokemon/moltres/icon.png index 99affaa0b2ca..70de8545068f 100644 Binary files a/graphics/pokemon/moltres/icon.png and b/graphics/pokemon/moltres/icon.png differ diff --git a/graphics/pokemon/monferno/footprint.png b/graphics/pokemon/monferno/footprint.png index a268058ae130..04016972ce00 100644 Binary files a/graphics/pokemon/monferno/footprint.png and b/graphics/pokemon/monferno/footprint.png differ diff --git a/graphics/pokemon/monferno/front.png b/graphics/pokemon/monferno/front.png deleted file mode 100644 index 08ac29b532a9..000000000000 Binary files a/graphics/pokemon/monferno/front.png and /dev/null differ diff --git a/graphics/pokemon/monferno/icon.png b/graphics/pokemon/monferno/icon.png index 8a01ec5155ca..9fbfd125584f 100644 Binary files a/graphics/pokemon/monferno/icon.png and b/graphics/pokemon/monferno/icon.png differ diff --git a/graphics/pokemon/morelull/footprint.png b/graphics/pokemon/morelull/footprint.png index a5658a3197a2..e54ebd4375e2 100644 Binary files a/graphics/pokemon/morelull/footprint.png and b/graphics/pokemon/morelull/footprint.png differ diff --git a/graphics/pokemon/morgrem/footprint.png b/graphics/pokemon/morgrem/footprint.png index 241717eade90..92e75f36bf38 100644 Binary files a/graphics/pokemon/morgrem/footprint.png and b/graphics/pokemon/morgrem/footprint.png differ diff --git a/graphics/pokemon/morpeko/footprint.png b/graphics/pokemon/morpeko/footprint.png index 398d437f0cd9..5d01e97d6962 100644 Binary files a/graphics/pokemon/morpeko/footprint.png and b/graphics/pokemon/morpeko/footprint.png differ diff --git a/graphics/pokemon/mothim/footprint.png b/graphics/pokemon/mothim/footprint.png index 4a533b580488..a9b0e33c2899 100644 Binary files a/graphics/pokemon/mothim/footprint.png and b/graphics/pokemon/mothim/footprint.png differ diff --git a/graphics/pokemon/mothim/front.png b/graphics/pokemon/mothim/front.png deleted file mode 100644 index b18fffe171cb..000000000000 Binary files a/graphics/pokemon/mothim/front.png and /dev/null differ diff --git a/graphics/pokemon/mothim/icon.png b/graphics/pokemon/mothim/icon.png index ce6f8f0f6f33..33124586818e 100644 Binary files a/graphics/pokemon/mothim/icon.png and b/graphics/pokemon/mothim/icon.png differ diff --git a/graphics/pokemon/mr_mime/back.png b/graphics/pokemon/mr_mime/back.png index d5fbd0396b4b..b9e15eacf68d 100644 Binary files a/graphics/pokemon/mr_mime/back.png and b/graphics/pokemon/mr_mime/back.png differ diff --git a/graphics/pokemon/mr_mime/footprint.png b/graphics/pokemon/mr_mime/footprint.png index cb0aff1a3b9d..6e8b15e7e60d 100644 Binary files a/graphics/pokemon/mr_mime/footprint.png and b/graphics/pokemon/mr_mime/footprint.png differ diff --git a/graphics/pokemon/mr_mime/front.png b/graphics/pokemon/mr_mime/front.png deleted file mode 100644 index 1ea6f3cbab57..000000000000 Binary files a/graphics/pokemon/mr_mime/front.png and /dev/null differ diff --git a/graphics/pokemon/mr_rime/footprint.png b/graphics/pokemon/mr_rime/footprint.png index 5b8cc5c93943..990fa7960707 100644 Binary files a/graphics/pokemon/mr_rime/footprint.png and b/graphics/pokemon/mr_rime/footprint.png differ diff --git a/graphics/pokemon/mudbray/footprint.png b/graphics/pokemon/mudbray/footprint.png index c334a7facdc5..f48aa905391e 100644 Binary files a/graphics/pokemon/mudbray/footprint.png and b/graphics/pokemon/mudbray/footprint.png differ diff --git a/graphics/pokemon/mudkip/footprint.png b/graphics/pokemon/mudkip/footprint.png index 490db6e25738..f06163ae0aca 100644 Binary files a/graphics/pokemon/mudkip/footprint.png and b/graphics/pokemon/mudkip/footprint.png differ diff --git a/graphics/pokemon/mudkip/front.png b/graphics/pokemon/mudkip/front.png deleted file mode 100644 index 7c83c421f115..000000000000 Binary files a/graphics/pokemon/mudkip/front.png and /dev/null differ diff --git a/graphics/pokemon/mudsdale/footprint.png b/graphics/pokemon/mudsdale/footprint.png index 16a9b40aeff2..e1ac51592a2b 100644 Binary files a/graphics/pokemon/mudsdale/footprint.png and b/graphics/pokemon/mudsdale/footprint.png differ diff --git a/graphics/pokemon/muk/footprint.png b/graphics/pokemon/muk/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/muk/footprint.png and b/graphics/pokemon/muk/footprint.png differ diff --git a/graphics/pokemon/muk/front.png b/graphics/pokemon/muk/front.png deleted file mode 100644 index 4bb6d0a84e86..000000000000 Binary files a/graphics/pokemon/muk/front.png and /dev/null differ diff --git a/graphics/pokemon/muk/icon.png b/graphics/pokemon/muk/icon.png index f56a9b367d8b..3168d1be4642 100644 Binary files a/graphics/pokemon/muk/icon.png and b/graphics/pokemon/muk/icon.png differ diff --git a/graphics/pokemon/munchlax/footprint.png b/graphics/pokemon/munchlax/footprint.png index 462e2dac8c03..ab6416ccde12 100644 Binary files a/graphics/pokemon/munchlax/footprint.png and b/graphics/pokemon/munchlax/footprint.png differ diff --git a/graphics/pokemon/munchlax/front.png b/graphics/pokemon/munchlax/front.png deleted file mode 100644 index 243df8dd060a..000000000000 Binary files a/graphics/pokemon/munchlax/front.png and /dev/null differ diff --git a/graphics/pokemon/munna/footprint.png b/graphics/pokemon/munna/footprint.png index 29f37f3c7d37..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/munna/footprint.png and b/graphics/pokemon/munna/footprint.png differ diff --git a/graphics/pokemon/munna/front.png b/graphics/pokemon/munna/front.png deleted file mode 100644 index 3abe09025e01..000000000000 Binary files a/graphics/pokemon/munna/front.png and /dev/null differ diff --git a/graphics/pokemon/munna/icon.png b/graphics/pokemon/munna/icon.png index c7b2a7b04de9..c97d44e6d62c 100644 Binary files a/graphics/pokemon/munna/icon.png and b/graphics/pokemon/munna/icon.png differ diff --git a/graphics/pokemon/murkrow/footprint.png b/graphics/pokemon/murkrow/footprint.png index 0f0566834480..901413be8fbe 100644 Binary files a/graphics/pokemon/murkrow/footprint.png and b/graphics/pokemon/murkrow/footprint.png differ diff --git a/graphics/pokemon/murkrow/front.png b/graphics/pokemon/murkrow/front.png deleted file mode 100644 index de8f7cd5d2bc..000000000000 Binary files a/graphics/pokemon/murkrow/front.png and /dev/null differ diff --git a/graphics/pokemon/musharna/footprint.png b/graphics/pokemon/musharna/footprint.png index 29f37f3c7d37..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/musharna/footprint.png and b/graphics/pokemon/musharna/footprint.png differ diff --git a/graphics/pokemon/musharna/front.png b/graphics/pokemon/musharna/front.png deleted file mode 100644 index 75addd0950be..000000000000 Binary files a/graphics/pokemon/musharna/front.png and /dev/null differ diff --git a/graphics/pokemon/musharna/icon.png b/graphics/pokemon/musharna/icon.png index 4dfba9d12758..c51d8ade6462 100644 Binary files a/graphics/pokemon/musharna/icon.png and b/graphics/pokemon/musharna/icon.png differ diff --git a/graphics/pokemon/naganadel/footprint.png b/graphics/pokemon/naganadel/footprint.png index 78250a3d527a..2449369fd6b8 100644 Binary files a/graphics/pokemon/naganadel/footprint.png and b/graphics/pokemon/naganadel/footprint.png differ diff --git a/graphics/pokemon/natu/anim_front.png b/graphics/pokemon/natu/anim_front.png index 4ba2a6eee529..8ac7b53c0243 100644 Binary files a/graphics/pokemon/natu/anim_front.png and b/graphics/pokemon/natu/anim_front.png differ diff --git a/graphics/pokemon/natu/footprint.png b/graphics/pokemon/natu/footprint.png index f17821fc00dc..348068d1c534 100644 Binary files a/graphics/pokemon/natu/footprint.png and b/graphics/pokemon/natu/footprint.png differ diff --git a/graphics/pokemon/natu/front.png b/graphics/pokemon/natu/front.png deleted file mode 100644 index c77e0f9bd7a5..000000000000 Binary files a/graphics/pokemon/natu/front.png and /dev/null differ diff --git a/graphics/pokemon/natu/normal.pal b/graphics/pokemon/natu/normal.pal index 0d9796fa5f04..1b1f57e13cca 100644 --- a/graphics/pokemon/natu/normal.pal +++ b/graphics/pokemon/natu/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -128 40 0 -248 88 88 -216 40 88 -72 144 64 -40 104 40 -112 184 64 -144 216 64 -16 16 16 -128 96 32 -248 224 40 -216 168 40 -248 248 248 -80 80 80 -200 200 200 -144 144 144 +131 41 0 +246 90 90 +213 41 90 +74 148 65 +41 106 41 +115 189 65 +148 213 65 +41 41 41 +131 98 32 +255 222 41 +213 172 41 +255 255 255 +82 82 82 +205 205 205 +148 148 148 diff --git a/graphics/pokemon/necrozma/dawn_wings/back.png b/graphics/pokemon/necrozma/dawn_wings/back.png index 2c3fcb400265..be258fb089c2 100644 Binary files a/graphics/pokemon/necrozma/dawn_wings/back.png and b/graphics/pokemon/necrozma/dawn_wings/back.png differ diff --git a/graphics/pokemon/necrozma/dawn_wings/front.png b/graphics/pokemon/necrozma/dawn_wings/front.png index e8f31dc49302..a5c75ea2b5b7 100644 Binary files a/graphics/pokemon/necrozma/dawn_wings/front.png and b/graphics/pokemon/necrozma/dawn_wings/front.png differ diff --git a/graphics/pokemon/necrozma/dawn_wings/icon.png b/graphics/pokemon/necrozma/dawn_wings/icon.png index 558ff60884d5..c5fde92c441b 100644 Binary files a/graphics/pokemon/necrozma/dawn_wings/icon.png and b/graphics/pokemon/necrozma/dawn_wings/icon.png differ diff --git a/graphics/pokemon/necrozma/dusk_mane/back.png b/graphics/pokemon/necrozma/dusk_mane/back.png index 1a1b9e07e124..96621697c5d4 100644 Binary files a/graphics/pokemon/necrozma/dusk_mane/back.png and b/graphics/pokemon/necrozma/dusk_mane/back.png differ diff --git a/graphics/pokemon/necrozma/dusk_mane/front.png b/graphics/pokemon/necrozma/dusk_mane/front.png index c9a72135e8f6..f2b88ee0c565 100644 Binary files a/graphics/pokemon/necrozma/dusk_mane/front.png and b/graphics/pokemon/necrozma/dusk_mane/front.png differ diff --git a/graphics/pokemon/necrozma/dusk_mane/icon.png b/graphics/pokemon/necrozma/dusk_mane/icon.png index 90c74736eacf..e0e4ef479e9e 100644 Binary files a/graphics/pokemon/necrozma/dusk_mane/icon.png and b/graphics/pokemon/necrozma/dusk_mane/icon.png differ diff --git a/graphics/pokemon/necrozma/footprint.png b/graphics/pokemon/necrozma/footprint.png index baad92198e3c..2449369fd6b8 100644 Binary files a/graphics/pokemon/necrozma/footprint.png and b/graphics/pokemon/necrozma/footprint.png differ diff --git a/graphics/pokemon/necrozma/ultra/back.png b/graphics/pokemon/necrozma/ultra/back.png index 798e1290f4be..1dcdc3835c09 100644 Binary files a/graphics/pokemon/necrozma/ultra/back.png and b/graphics/pokemon/necrozma/ultra/back.png differ diff --git a/graphics/pokemon/necrozma/ultra/front.png b/graphics/pokemon/necrozma/ultra/front.png index fc57cce63787..0eac6b0fe58e 100644 Binary files a/graphics/pokemon/necrozma/ultra/front.png and b/graphics/pokemon/necrozma/ultra/front.png differ diff --git a/graphics/pokemon/necrozma/ultra/icon.png b/graphics/pokemon/necrozma/ultra/icon.png index e41c58de6d60..8adcbb3f53b3 100644 Binary files a/graphics/pokemon/necrozma/ultra/icon.png and b/graphics/pokemon/necrozma/ultra/icon.png differ diff --git a/graphics/pokemon/nickit/footprint.png b/graphics/pokemon/nickit/footprint.png index 480c8f267439..ec73b2332efc 100644 Binary files a/graphics/pokemon/nickit/footprint.png and b/graphics/pokemon/nickit/footprint.png differ diff --git a/graphics/pokemon/nidoking/footprint.png b/graphics/pokemon/nidoking/footprint.png index 577e14f302b4..c0e6690e10e6 100644 Binary files a/graphics/pokemon/nidoking/footprint.png and b/graphics/pokemon/nidoking/footprint.png differ diff --git a/graphics/pokemon/nidoking/front.png b/graphics/pokemon/nidoking/front.png deleted file mode 100644 index e230190a25ff..000000000000 Binary files a/graphics/pokemon/nidoking/front.png and /dev/null differ diff --git a/graphics/pokemon/nidoking/icon.png b/graphics/pokemon/nidoking/icon.png index 377cb6672e54..93d0b5f80e5f 100644 Binary files a/graphics/pokemon/nidoking/icon.png and b/graphics/pokemon/nidoking/icon.png differ diff --git a/graphics/pokemon/nidoqueen/back.png b/graphics/pokemon/nidoqueen/back.png index e983016e2def..90a8cca1cd22 100644 Binary files a/graphics/pokemon/nidoqueen/back.png and b/graphics/pokemon/nidoqueen/back.png differ diff --git a/graphics/pokemon/nidoqueen/footprint.png b/graphics/pokemon/nidoqueen/footprint.png index c3156e6215e1..a5b255592946 100644 Binary files a/graphics/pokemon/nidoqueen/footprint.png and b/graphics/pokemon/nidoqueen/footprint.png differ diff --git a/graphics/pokemon/nidoqueen/front.png b/graphics/pokemon/nidoqueen/front.png deleted file mode 100644 index f4592932e07a..000000000000 Binary files a/graphics/pokemon/nidoqueen/front.png and /dev/null differ diff --git a/graphics/pokemon/nidoran_f/footprint.png b/graphics/pokemon/nidoran_f/footprint.png index f673df1128c0..d0111077b5e1 100644 Binary files a/graphics/pokemon/nidoran_f/footprint.png and b/graphics/pokemon/nidoran_f/footprint.png differ diff --git a/graphics/pokemon/nidoran_f/front.png b/graphics/pokemon/nidoran_f/front.png deleted file mode 100644 index d47802a0da7a..000000000000 Binary files a/graphics/pokemon/nidoran_f/front.png and /dev/null differ diff --git a/graphics/pokemon/nidoran_m/footprint.png b/graphics/pokemon/nidoran_m/footprint.png index 874c60781729..a6b3e3b4ad55 100644 Binary files a/graphics/pokemon/nidoran_m/footprint.png and b/graphics/pokemon/nidoran_m/footprint.png differ diff --git a/graphics/pokemon/nidoran_m/front.png b/graphics/pokemon/nidoran_m/front.png deleted file mode 100644 index 3b1084e3dcf6..000000000000 Binary files a/graphics/pokemon/nidoran_m/front.png and /dev/null differ diff --git a/graphics/pokemon/nidorina/footprint.png b/graphics/pokemon/nidorina/footprint.png index 94553054a571..922ef8dbd16c 100644 Binary files a/graphics/pokemon/nidorina/footprint.png and b/graphics/pokemon/nidorina/footprint.png differ diff --git a/graphics/pokemon/nidorina/front.png b/graphics/pokemon/nidorina/front.png deleted file mode 100644 index 957a5d3aeea6..000000000000 Binary files a/graphics/pokemon/nidorina/front.png and /dev/null differ diff --git a/graphics/pokemon/nidorino/back.png b/graphics/pokemon/nidorino/back.png index e5868c58e183..a7078074e43c 100644 Binary files a/graphics/pokemon/nidorino/back.png and b/graphics/pokemon/nidorino/back.png differ diff --git a/graphics/pokemon/nidorino/footprint.png b/graphics/pokemon/nidorino/footprint.png index eaa67b3791b4..9ab80e766aa0 100644 Binary files a/graphics/pokemon/nidorino/footprint.png and b/graphics/pokemon/nidorino/footprint.png differ diff --git a/graphics/pokemon/nidorino/front.png b/graphics/pokemon/nidorino/front.png deleted file mode 100644 index 16b304216e80..000000000000 Binary files a/graphics/pokemon/nidorino/front.png and /dev/null differ diff --git a/graphics/pokemon/nihilego/footprint.png b/graphics/pokemon/nihilego/footprint.png index 09c582c425c3..2449369fd6b8 100644 Binary files a/graphics/pokemon/nihilego/footprint.png and b/graphics/pokemon/nihilego/footprint.png differ diff --git a/graphics/pokemon/nincada/footprint.png b/graphics/pokemon/nincada/footprint.png index deea05721e66..69d2b0491dd0 100644 Binary files a/graphics/pokemon/nincada/footprint.png and b/graphics/pokemon/nincada/footprint.png differ diff --git a/graphics/pokemon/nincada/front.png b/graphics/pokemon/nincada/front.png deleted file mode 100644 index 1c408a81d256..000000000000 Binary files a/graphics/pokemon/nincada/front.png and /dev/null differ diff --git a/graphics/pokemon/ninetales/back.png b/graphics/pokemon/ninetales/back.png index 5507f9e37cac..507b278595de 100644 Binary files a/graphics/pokemon/ninetales/back.png and b/graphics/pokemon/ninetales/back.png differ diff --git a/graphics/pokemon/ninetales/footprint.png b/graphics/pokemon/ninetales/footprint.png index 3f1f0247e57c..51eb9f83b8d6 100644 Binary files a/graphics/pokemon/ninetales/footprint.png and b/graphics/pokemon/ninetales/footprint.png differ diff --git a/graphics/pokemon/ninetales/front.png b/graphics/pokemon/ninetales/front.png deleted file mode 100644 index 4c14bd887c11..000000000000 Binary files a/graphics/pokemon/ninetales/front.png and /dev/null differ diff --git a/graphics/pokemon/ninjask/footprint.png b/graphics/pokemon/ninjask/footprint.png index eacba16dc870..f582fcc058c4 100644 Binary files a/graphics/pokemon/ninjask/footprint.png and b/graphics/pokemon/ninjask/footprint.png differ diff --git a/graphics/pokemon/ninjask/front.png b/graphics/pokemon/ninjask/front.png deleted file mode 100644 index f7c0d20dc49d..000000000000 Binary files a/graphics/pokemon/ninjask/front.png and /dev/null differ diff --git a/graphics/pokemon/noctowl/anim_front.png b/graphics/pokemon/noctowl/anim_front.png index e6ff6d21061b..751b21e93163 100644 Binary files a/graphics/pokemon/noctowl/anim_front.png and b/graphics/pokemon/noctowl/anim_front.png differ diff --git a/graphics/pokemon/noctowl/footprint.png b/graphics/pokemon/noctowl/footprint.png index 89ed409e986e..0386b465ac01 100644 Binary files a/graphics/pokemon/noctowl/footprint.png and b/graphics/pokemon/noctowl/footprint.png differ diff --git a/graphics/pokemon/noctowl/front.png b/graphics/pokemon/noctowl/front.png deleted file mode 100644 index 6665234c049e..000000000000 Binary files a/graphics/pokemon/noctowl/front.png and /dev/null differ diff --git a/graphics/pokemon/noctowl/normal.pal b/graphics/pokemon/noctowl/normal.pal index cf763b733f73..0e4e0b0775d9 100644 --- a/graphics/pokemon/noctowl/normal.pal +++ b/graphics/pokemon/noctowl/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 120 80 -96 64 48 -240 224 168 -120 88 72 -216 184 144 -64 40 32 -200 144 112 +172 123 74 +98 65 49 +255 246 180 +123 90 74 +222 205 90 +65 41 32 +213 148 98 16 16 16 -96 96 96 -248 248 248 -192 48 24 -152 0 0 -192 192 192 -144 88 56 -160 128 104 +98 98 98 +255 255 255 +197 49 24 +156 0 0 +197 197 197 +148 90 57 +164 131 106 diff --git a/graphics/pokemon/noibat/footprint.png b/graphics/pokemon/noibat/footprint.png index f89c16499627..5abe864e7b81 100644 Binary files a/graphics/pokemon/noibat/footprint.png and b/graphics/pokemon/noibat/footprint.png differ diff --git a/graphics/pokemon/noibat/front.png b/graphics/pokemon/noibat/front.png deleted file mode 100644 index 6934317f20b7..000000000000 Binary files a/graphics/pokemon/noibat/front.png and /dev/null differ diff --git a/graphics/pokemon/noivern/footprint.png b/graphics/pokemon/noivern/footprint.png index f83fb1d3e91e..f579ea94ce64 100644 Binary files a/graphics/pokemon/noivern/footprint.png and b/graphics/pokemon/noivern/footprint.png differ diff --git a/graphics/pokemon/noivern/front.png b/graphics/pokemon/noivern/front.png deleted file mode 100644 index 252a56fb46cd..000000000000 Binary files a/graphics/pokemon/noivern/front.png and /dev/null differ diff --git a/graphics/pokemon/nosepass/footprint.png b/graphics/pokemon/nosepass/footprint.png index 9b9ad27082eb..ad8673add303 100644 Binary files a/graphics/pokemon/nosepass/footprint.png and b/graphics/pokemon/nosepass/footprint.png differ diff --git a/graphics/pokemon/nosepass/front.png b/graphics/pokemon/nosepass/front.png deleted file mode 100644 index 695577233002..000000000000 Binary files a/graphics/pokemon/nosepass/front.png and /dev/null differ diff --git a/graphics/pokemon/numel/footprint.png b/graphics/pokemon/numel/footprint.png index 6238f94004d4..f01ad1592792 100644 Binary files a/graphics/pokemon/numel/footprint.png and b/graphics/pokemon/numel/footprint.png differ diff --git a/graphics/pokemon/numel/front.png b/graphics/pokemon/numel/front.png deleted file mode 100644 index 2df10f3c71b9..000000000000 Binary files a/graphics/pokemon/numel/front.png and /dev/null differ diff --git a/graphics/pokemon/nuzleaf/footprint.png b/graphics/pokemon/nuzleaf/footprint.png index b35288e05947..bd9be6170957 100644 Binary files a/graphics/pokemon/nuzleaf/footprint.png and b/graphics/pokemon/nuzleaf/footprint.png differ diff --git a/graphics/pokemon/nuzleaf/front.png b/graphics/pokemon/nuzleaf/front.png deleted file mode 100644 index 173398f52818..000000000000 Binary files a/graphics/pokemon/nuzleaf/front.png and /dev/null differ diff --git a/graphics/pokemon/obstagoon/footprint.png b/graphics/pokemon/obstagoon/footprint.png index dbfcda463a6b..914d309c7880 100644 Binary files a/graphics/pokemon/obstagoon/footprint.png and b/graphics/pokemon/obstagoon/footprint.png differ diff --git a/graphics/pokemon/octillery/footprint.png b/graphics/pokemon/octillery/footprint.png index afa1f5433c3e..2306c5b0bef5 100644 Binary files a/graphics/pokemon/octillery/footprint.png and b/graphics/pokemon/octillery/footprint.png differ diff --git a/graphics/pokemon/octillery/front.png b/graphics/pokemon/octillery/front.png deleted file mode 100644 index 2fc250c8d162..000000000000 Binary files a/graphics/pokemon/octillery/front.png and /dev/null differ diff --git a/graphics/pokemon/oddish/back.png b/graphics/pokemon/oddish/back.png index 21a343a9df84..7d96a680fa93 100644 Binary files a/graphics/pokemon/oddish/back.png and b/graphics/pokemon/oddish/back.png differ diff --git a/graphics/pokemon/oddish/footprint.png b/graphics/pokemon/oddish/footprint.png index d38175273578..e5c7eed223ec 100644 Binary files a/graphics/pokemon/oddish/footprint.png and b/graphics/pokemon/oddish/footprint.png differ diff --git a/graphics/pokemon/oddish/front.png b/graphics/pokemon/oddish/front.png deleted file mode 100644 index 3ced8e7058e7..000000000000 Binary files a/graphics/pokemon/oddish/front.png and /dev/null differ diff --git a/graphics/pokemon/oddish/icon.png b/graphics/pokemon/oddish/icon.png index 32515b89f955..bef94316f2fb 100644 Binary files a/graphics/pokemon/oddish/icon.png and b/graphics/pokemon/oddish/icon.png differ diff --git a/graphics/pokemon/omanyte/footprint.png b/graphics/pokemon/omanyte/footprint.png index f5eb9fdba0aa..ec2dde19c666 100644 Binary files a/graphics/pokemon/omanyte/footprint.png and b/graphics/pokemon/omanyte/footprint.png differ diff --git a/graphics/pokemon/omanyte/front.png b/graphics/pokemon/omanyte/front.png deleted file mode 100644 index 177d0f0b66bc..000000000000 Binary files a/graphics/pokemon/omanyte/front.png and /dev/null differ diff --git a/graphics/pokemon/omastar/footprint.png b/graphics/pokemon/omastar/footprint.png index fdd911ecf7c7..e587f45031f2 100644 Binary files a/graphics/pokemon/omastar/footprint.png and b/graphics/pokemon/omastar/footprint.png differ diff --git a/graphics/pokemon/omastar/front.png b/graphics/pokemon/omastar/front.png deleted file mode 100644 index 87796c37d589..000000000000 Binary files a/graphics/pokemon/omastar/front.png and /dev/null differ diff --git a/graphics/pokemon/onix/footprint.png b/graphics/pokemon/onix/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/onix/footprint.png and b/graphics/pokemon/onix/footprint.png differ diff --git a/graphics/pokemon/onix/front.png b/graphics/pokemon/onix/front.png deleted file mode 100644 index 6cba5adc4d0d..000000000000 Binary files a/graphics/pokemon/onix/front.png and /dev/null differ diff --git a/graphics/pokemon/onix/icon.png b/graphics/pokemon/onix/icon.png index 947ead4ee25a..b4de2a1cd226 100644 Binary files a/graphics/pokemon/onix/icon.png and b/graphics/pokemon/onix/icon.png differ diff --git a/graphics/pokemon/oranguru/footprint.png b/graphics/pokemon/oranguru/footprint.png index 294a56389b23..30c807de4bb5 100644 Binary files a/graphics/pokemon/oranguru/footprint.png and b/graphics/pokemon/oranguru/footprint.png differ diff --git a/graphics/pokemon/orbeetle/footprint.png b/graphics/pokemon/orbeetle/footprint.png index 57dc260a97d6..475d5235a5af 100644 Binary files a/graphics/pokemon/orbeetle/footprint.png and b/graphics/pokemon/orbeetle/footprint.png differ diff --git a/graphics/pokemon/oricorio/footprint.png b/graphics/pokemon/oricorio/footprint.png index bb9cc0114ebf..ef4ad1a916e0 100644 Binary files a/graphics/pokemon/oricorio/footprint.png and b/graphics/pokemon/oricorio/footprint.png differ diff --git a/graphics/pokemon/oricorio/pau/back.png b/graphics/pokemon/oricorio/pau/back.png index f2771b8b5147..7969b5019f8d 100644 Binary files a/graphics/pokemon/oricorio/pau/back.png and b/graphics/pokemon/oricorio/pau/back.png differ diff --git a/graphics/pokemon/oricorio/pau/front.png b/graphics/pokemon/oricorio/pau/front.png index b6c6f6733215..004b8cc9cc87 100644 Binary files a/graphics/pokemon/oricorio/pau/front.png and b/graphics/pokemon/oricorio/pau/front.png differ diff --git a/graphics/pokemon/oricorio/pau/icon.png b/graphics/pokemon/oricorio/pau/icon.png index a4ba46d2bafd..c3353a92493b 100644 Binary files a/graphics/pokemon/oricorio/pau/icon.png and b/graphics/pokemon/oricorio/pau/icon.png differ diff --git a/graphics/pokemon/oricorio/pom_pom/back.png b/graphics/pokemon/oricorio/pom_pom/back.png index 78eadc3fe0a3..f6f22ae1be88 100644 Binary files a/graphics/pokemon/oricorio/pom_pom/back.png and b/graphics/pokemon/oricorio/pom_pom/back.png differ diff --git a/graphics/pokemon/oricorio/pom_pom/front.png b/graphics/pokemon/oricorio/pom_pom/front.png index 44deb56e8ed0..5ed6c71b5611 100644 Binary files a/graphics/pokemon/oricorio/pom_pom/front.png and b/graphics/pokemon/oricorio/pom_pom/front.png differ diff --git a/graphics/pokemon/oricorio/pom_pom/icon.png b/graphics/pokemon/oricorio/pom_pom/icon.png index ead80b6a2385..9f83917ba16f 100644 Binary files a/graphics/pokemon/oricorio/pom_pom/icon.png and b/graphics/pokemon/oricorio/pom_pom/icon.png differ diff --git a/graphics/pokemon/oricorio/sensu/back.png b/graphics/pokemon/oricorio/sensu/back.png index 694e30afd739..25ed57b0cd41 100644 Binary files a/graphics/pokemon/oricorio/sensu/back.png and b/graphics/pokemon/oricorio/sensu/back.png differ diff --git a/graphics/pokemon/oricorio/sensu/front.png b/graphics/pokemon/oricorio/sensu/front.png index 470f684713af..5abc5e547ef1 100644 Binary files a/graphics/pokemon/oricorio/sensu/front.png and b/graphics/pokemon/oricorio/sensu/front.png differ diff --git a/graphics/pokemon/oricorio/sensu/icon.png b/graphics/pokemon/oricorio/sensu/icon.png index 1bbb78de1134..9828bb2067e4 100644 Binary files a/graphics/pokemon/oricorio/sensu/icon.png and b/graphics/pokemon/oricorio/sensu/icon.png differ diff --git a/graphics/pokemon/oshawott/footprint.png b/graphics/pokemon/oshawott/footprint.png index ec6a9341eef2..d96ed0e2bee0 100644 Binary files a/graphics/pokemon/oshawott/footprint.png and b/graphics/pokemon/oshawott/footprint.png differ diff --git a/graphics/pokemon/oshawott/front.png b/graphics/pokemon/oshawott/front.png deleted file mode 100644 index 4a0a0004aa5b..000000000000 Binary files a/graphics/pokemon/oshawott/front.png and /dev/null differ diff --git a/graphics/pokemon/pachirisu/footprint.png b/graphics/pokemon/pachirisu/footprint.png index 3edc42ff3ec8..2e51e1df7bb9 100644 Binary files a/graphics/pokemon/pachirisu/footprint.png and b/graphics/pokemon/pachirisu/footprint.png differ diff --git a/graphics/pokemon/pachirisu/front.png b/graphics/pokemon/pachirisu/front.png deleted file mode 100644 index 7d60cf8dfb55..000000000000 Binary files a/graphics/pokemon/pachirisu/front.png and /dev/null differ diff --git a/graphics/pokemon/palkia/footprint.png b/graphics/pokemon/palkia/footprint.png index 9a96e5769313..4d5030e1fc79 100644 Binary files a/graphics/pokemon/palkia/footprint.png and b/graphics/pokemon/palkia/footprint.png differ diff --git a/graphics/pokemon/palkia/front.png b/graphics/pokemon/palkia/front.png deleted file mode 100644 index 4e2d3f513cc4..000000000000 Binary files a/graphics/pokemon/palkia/front.png and /dev/null differ diff --git a/graphics/pokemon/palkia/icon.png b/graphics/pokemon/palkia/icon.png index d84e9b8c3efa..1476f20af5f8 100644 Binary files a/graphics/pokemon/palkia/icon.png and b/graphics/pokemon/palkia/icon.png differ diff --git a/graphics/pokemon/palossand/footprint.png b/graphics/pokemon/palossand/footprint.png index f0c03ad35cb1..2449369fd6b8 100644 Binary files a/graphics/pokemon/palossand/footprint.png and b/graphics/pokemon/palossand/footprint.png differ diff --git a/graphics/pokemon/palpitoad/footprint.png b/graphics/pokemon/palpitoad/footprint.png index 7d8bf2a810b3..9a95c0a571ef 100644 Binary files a/graphics/pokemon/palpitoad/footprint.png and b/graphics/pokemon/palpitoad/footprint.png differ diff --git a/graphics/pokemon/palpitoad/front.png b/graphics/pokemon/palpitoad/front.png deleted file mode 100644 index 05b2a8b24cdc..000000000000 Binary files a/graphics/pokemon/palpitoad/front.png and /dev/null differ diff --git a/graphics/pokemon/pancham/footprint.png b/graphics/pokemon/pancham/footprint.png index afb5d279db43..6df5cc7b3d2b 100644 Binary files a/graphics/pokemon/pancham/footprint.png and b/graphics/pokemon/pancham/footprint.png differ diff --git a/graphics/pokemon/pancham/front.png b/graphics/pokemon/pancham/front.png deleted file mode 100644 index 79cd40df43d4..000000000000 Binary files a/graphics/pokemon/pancham/front.png and /dev/null differ diff --git a/graphics/pokemon/pangoro/footprint.png b/graphics/pokemon/pangoro/footprint.png index ddc474878ccc..97297536bd92 100644 Binary files a/graphics/pokemon/pangoro/footprint.png and b/graphics/pokemon/pangoro/footprint.png differ diff --git a/graphics/pokemon/pangoro/front.png b/graphics/pokemon/pangoro/front.png deleted file mode 100644 index 9de90108a402..000000000000 Binary files a/graphics/pokemon/pangoro/front.png and /dev/null differ diff --git a/graphics/pokemon/panpour/footprint.png b/graphics/pokemon/panpour/footprint.png index 0291825c95d2..9a064a0ceb52 100644 Binary files a/graphics/pokemon/panpour/footprint.png and b/graphics/pokemon/panpour/footprint.png differ diff --git a/graphics/pokemon/panpour/front.png b/graphics/pokemon/panpour/front.png deleted file mode 100644 index bc17b1fbcb20..000000000000 Binary files a/graphics/pokemon/panpour/front.png and /dev/null differ diff --git a/graphics/pokemon/pansage/footprint.png b/graphics/pokemon/pansage/footprint.png index fa4b5d56a1f1..9a064a0ceb52 100644 Binary files a/graphics/pokemon/pansage/footprint.png and b/graphics/pokemon/pansage/footprint.png differ diff --git a/graphics/pokemon/pansage/front.png b/graphics/pokemon/pansage/front.png deleted file mode 100644 index 63e3125ca28d..000000000000 Binary files a/graphics/pokemon/pansage/front.png and /dev/null differ diff --git a/graphics/pokemon/pansear/footprint.png b/graphics/pokemon/pansear/footprint.png index 0291825c95d2..9a064a0ceb52 100644 Binary files a/graphics/pokemon/pansear/footprint.png and b/graphics/pokemon/pansear/footprint.png differ diff --git a/graphics/pokemon/pansear/front.png b/graphics/pokemon/pansear/front.png deleted file mode 100644 index c7dc3a5b8fce..000000000000 Binary files a/graphics/pokemon/pansear/front.png and /dev/null differ diff --git a/graphics/pokemon/paras/footprint.png b/graphics/pokemon/paras/footprint.png index f8d7574d2e6d..01abc74f100e 100644 Binary files a/graphics/pokemon/paras/footprint.png and b/graphics/pokemon/paras/footprint.png differ diff --git a/graphics/pokemon/paras/front.png b/graphics/pokemon/paras/front.png deleted file mode 100644 index b79705ba5486..000000000000 Binary files a/graphics/pokemon/paras/front.png and /dev/null differ diff --git a/graphics/pokemon/paras/icon.png b/graphics/pokemon/paras/icon.png index 26d937231fe5..6bc817d0be64 100644 Binary files a/graphics/pokemon/paras/icon.png and b/graphics/pokemon/paras/icon.png differ diff --git a/graphics/pokemon/parasect/footprint.png b/graphics/pokemon/parasect/footprint.png index e0f1715f2f04..ed9221adef53 100644 Binary files a/graphics/pokemon/parasect/footprint.png and b/graphics/pokemon/parasect/footprint.png differ diff --git a/graphics/pokemon/parasect/front.png b/graphics/pokemon/parasect/front.png deleted file mode 100644 index 5a841ffbcc85..000000000000 Binary files a/graphics/pokemon/parasect/front.png and /dev/null differ diff --git a/graphics/pokemon/parasect/icon.png b/graphics/pokemon/parasect/icon.png index c6aaff12d702..27b8e098932c 100644 Binary files a/graphics/pokemon/parasect/icon.png and b/graphics/pokemon/parasect/icon.png differ diff --git a/graphics/pokemon/passimian/footprint.png b/graphics/pokemon/passimian/footprint.png index efd96aa1028e..916c2e1c1a15 100644 Binary files a/graphics/pokemon/passimian/footprint.png and b/graphics/pokemon/passimian/footprint.png differ diff --git a/graphics/pokemon/patrat/footprint.png b/graphics/pokemon/patrat/footprint.png index 7a16633e68be..029b00e952b0 100644 Binary files a/graphics/pokemon/patrat/footprint.png and b/graphics/pokemon/patrat/footprint.png differ diff --git a/graphics/pokemon/patrat/front.png b/graphics/pokemon/patrat/front.png deleted file mode 100644 index 3bc72d582fa2..000000000000 Binary files a/graphics/pokemon/patrat/front.png and /dev/null differ diff --git a/graphics/pokemon/pawniard/footprint.png b/graphics/pokemon/pawniard/footprint.png index 76dfefdf2694..702a14a5a3ef 100644 Binary files a/graphics/pokemon/pawniard/footprint.png and b/graphics/pokemon/pawniard/footprint.png differ diff --git a/graphics/pokemon/pawniard/front.png b/graphics/pokemon/pawniard/front.png deleted file mode 100644 index 4d5434548ed7..000000000000 Binary files a/graphics/pokemon/pawniard/front.png and /dev/null differ diff --git a/graphics/pokemon/pelipper/footprint.png b/graphics/pokemon/pelipper/footprint.png index 54718d259e56..bfb9703f55f6 100644 Binary files a/graphics/pokemon/pelipper/footprint.png and b/graphics/pokemon/pelipper/footprint.png differ diff --git a/graphics/pokemon/pelipper/front.png b/graphics/pokemon/pelipper/front.png deleted file mode 100644 index 145bb8e25bd5..000000000000 Binary files a/graphics/pokemon/pelipper/front.png and /dev/null differ diff --git a/graphics/pokemon/pelipper/icon.png b/graphics/pokemon/pelipper/icon.png index 43ae7c276080..49debae71774 100644 Binary files a/graphics/pokemon/pelipper/icon.png and b/graphics/pokemon/pelipper/icon.png differ diff --git a/graphics/pokemon/perrserker/footprint.png b/graphics/pokemon/perrserker/footprint.png index c2bce6fde56e..28b958969a0a 100644 Binary files a/graphics/pokemon/perrserker/footprint.png and b/graphics/pokemon/perrserker/footprint.png differ diff --git a/graphics/pokemon/persian/back.png b/graphics/pokemon/persian/back.png index ad7a9d4a6557..1ec5e999399f 100644 Binary files a/graphics/pokemon/persian/back.png and b/graphics/pokemon/persian/back.png differ diff --git a/graphics/pokemon/persian/footprint.png b/graphics/pokemon/persian/footprint.png index 33f25f0aa85a..99a567fc1b7f 100644 Binary files a/graphics/pokemon/persian/footprint.png and b/graphics/pokemon/persian/footprint.png differ diff --git a/graphics/pokemon/persian/front.png b/graphics/pokemon/persian/front.png deleted file mode 100644 index 650de8dd74ed..000000000000 Binary files a/graphics/pokemon/persian/front.png and /dev/null differ diff --git a/graphics/pokemon/petilil/footprint.png b/graphics/pokemon/petilil/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/petilil/footprint.png and b/graphics/pokemon/petilil/footprint.png differ diff --git a/graphics/pokemon/petilil/front.png b/graphics/pokemon/petilil/front.png deleted file mode 100644 index 735abb0fc26e..000000000000 Binary files a/graphics/pokemon/petilil/front.png and /dev/null differ diff --git a/graphics/pokemon/phanpy/back.png b/graphics/pokemon/phanpy/back.png index 65e0f1d513dd..a46f6d774952 100644 Binary files a/graphics/pokemon/phanpy/back.png and b/graphics/pokemon/phanpy/back.png differ diff --git a/graphics/pokemon/phanpy/footprint.png b/graphics/pokemon/phanpy/footprint.png index 70498b18f6b2..61eb3ebac37c 100644 Binary files a/graphics/pokemon/phanpy/footprint.png and b/graphics/pokemon/phanpy/footprint.png differ diff --git a/graphics/pokemon/phanpy/front.png b/graphics/pokemon/phanpy/front.png deleted file mode 100644 index 22ef30963160..000000000000 Binary files a/graphics/pokemon/phanpy/front.png and /dev/null differ diff --git a/graphics/pokemon/phantump/footprint.png b/graphics/pokemon/phantump/footprint.png index bd256edcd8e9..2449369fd6b8 100644 Binary files a/graphics/pokemon/phantump/footprint.png and b/graphics/pokemon/phantump/footprint.png differ diff --git a/graphics/pokemon/phantump/front.png b/graphics/pokemon/phantump/front.png deleted file mode 100644 index 2471e23010c6..000000000000 Binary files a/graphics/pokemon/phantump/front.png and /dev/null differ diff --git a/graphics/pokemon/pheromosa/footprint.png b/graphics/pokemon/pheromosa/footprint.png index b1a57f94e835..ac32e76492ba 100644 Binary files a/graphics/pokemon/pheromosa/footprint.png and b/graphics/pokemon/pheromosa/footprint.png differ diff --git a/graphics/pokemon/phione/footprint.png b/graphics/pokemon/phione/footprint.png index 83d5b970e7bb..2449369fd6b8 100644 Binary files a/graphics/pokemon/phione/footprint.png and b/graphics/pokemon/phione/footprint.png differ diff --git a/graphics/pokemon/phione/front.png b/graphics/pokemon/phione/front.png deleted file mode 100644 index 10f7d01b5203..000000000000 Binary files a/graphics/pokemon/phione/front.png and /dev/null differ diff --git a/graphics/pokemon/phione/icon.png b/graphics/pokemon/phione/icon.png index 1bfec4bbdd98..c24a936ffcdf 100644 Binary files a/graphics/pokemon/phione/icon.png and b/graphics/pokemon/phione/icon.png differ diff --git a/graphics/pokemon/pichu/footprint.png b/graphics/pokemon/pichu/footprint.png index 823c7e32d4a4..62d82450417c 100644 Binary files a/graphics/pokemon/pichu/footprint.png and b/graphics/pokemon/pichu/footprint.png differ diff --git a/graphics/pokemon/pichu/front.png b/graphics/pokemon/pichu/front.png deleted file mode 100644 index f8974c37b8ee..000000000000 Binary files a/graphics/pokemon/pichu/front.png and /dev/null differ diff --git a/graphics/pokemon/pichu/icon.png b/graphics/pokemon/pichu/icon.png index 5e3de4b990dd..d29fa7fb4a57 100644 Binary files a/graphics/pokemon/pichu/icon.png and b/graphics/pokemon/pichu/icon.png differ diff --git a/graphics/pokemon/pichu/spiky_eared/icon.png b/graphics/pokemon/pichu/spiky_eared/icon.png index 93107b1d3a26..3a407bc6cb2d 100644 Binary files a/graphics/pokemon/pichu/spiky_eared/icon.png and b/graphics/pokemon/pichu/spiky_eared/icon.png differ diff --git a/graphics/pokemon/pidgeot/footprint.png b/graphics/pokemon/pidgeot/footprint.png index 025341554c1c..ef4ad1a916e0 100644 Binary files a/graphics/pokemon/pidgeot/footprint.png and b/graphics/pokemon/pidgeot/footprint.png differ diff --git a/graphics/pokemon/pidgeot/front.png b/graphics/pokemon/pidgeot/front.png deleted file mode 100644 index 0efed3108f98..000000000000 Binary files a/graphics/pokemon/pidgeot/front.png and /dev/null differ diff --git a/graphics/pokemon/pidgeotto/footprint.png b/graphics/pokemon/pidgeotto/footprint.png index c507f72b8308..8d9cd78e0d83 100644 Binary files a/graphics/pokemon/pidgeotto/footprint.png and b/graphics/pokemon/pidgeotto/footprint.png differ diff --git a/graphics/pokemon/pidgeotto/front.png b/graphics/pokemon/pidgeotto/front.png deleted file mode 100644 index aecc7f2422ee..000000000000 Binary files a/graphics/pokemon/pidgeotto/front.png and /dev/null differ diff --git a/graphics/pokemon/pidgey/footprint.png b/graphics/pokemon/pidgey/footprint.png index 6fe6e42824fd..3422576beca8 100644 Binary files a/graphics/pokemon/pidgey/footprint.png and b/graphics/pokemon/pidgey/footprint.png differ diff --git a/graphics/pokemon/pidgey/front.png b/graphics/pokemon/pidgey/front.png deleted file mode 100644 index 44cddf449b25..000000000000 Binary files a/graphics/pokemon/pidgey/front.png and /dev/null differ diff --git a/graphics/pokemon/pidove/footprint.png b/graphics/pokemon/pidove/footprint.png index d4bb5a283c61..d3fd3bec88ed 100644 Binary files a/graphics/pokemon/pidove/footprint.png and b/graphics/pokemon/pidove/footprint.png differ diff --git a/graphics/pokemon/pidove/front.png b/graphics/pokemon/pidove/front.png deleted file mode 100644 index 590619087540..000000000000 Binary files a/graphics/pokemon/pidove/front.png and /dev/null differ diff --git a/graphics/pokemon/pignite/footprint.png b/graphics/pokemon/pignite/footprint.png index 3d1a0e608c25..d54116d77e73 100644 Binary files a/graphics/pokemon/pignite/footprint.png and b/graphics/pokemon/pignite/footprint.png differ diff --git a/graphics/pokemon/pignite/front.png b/graphics/pokemon/pignite/front.png deleted file mode 100644 index 39c020d57d6c..000000000000 Binary files a/graphics/pokemon/pignite/front.png and /dev/null differ diff --git a/graphics/pokemon/pignite/icon.png b/graphics/pokemon/pignite/icon.png index 78b1a8d72dfc..1190d639af41 100644 Binary files a/graphics/pokemon/pignite/icon.png and b/graphics/pokemon/pignite/icon.png differ diff --git a/graphics/pokemon/pikachu/alola_cap/back.png b/graphics/pokemon/pikachu/alola_cap/back.png index eb78995e333a..110eab45bfba 100644 Binary files a/graphics/pokemon/pikachu/alola_cap/back.png and b/graphics/pokemon/pikachu/alola_cap/back.png differ diff --git a/graphics/pokemon/pikachu/alola_cap/front.png b/graphics/pokemon/pikachu/alola_cap/front.png index 658157930e78..2de876f50076 100644 Binary files a/graphics/pokemon/pikachu/alola_cap/front.png and b/graphics/pokemon/pikachu/alola_cap/front.png differ diff --git a/graphics/pokemon/pikachu/alola_cap/icon.png b/graphics/pokemon/pikachu/alola_cap/icon.png index 8ebbfd5a3ab5..c2ad26a4be7d 100644 Binary files a/graphics/pokemon/pikachu/alola_cap/icon.png and b/graphics/pokemon/pikachu/alola_cap/icon.png differ diff --git a/graphics/pokemon/pikachu/belle/back.png b/graphics/pokemon/pikachu/belle/back.png index d90d9ba3b450..b9b18756583a 100644 Binary files a/graphics/pokemon/pikachu/belle/back.png and b/graphics/pokemon/pikachu/belle/back.png differ diff --git a/graphics/pokemon/pikachu/belle/front.png b/graphics/pokemon/pikachu/belle/front.png index 7f521f287375..27e11f42eb53 100644 Binary files a/graphics/pokemon/pikachu/belle/front.png and b/graphics/pokemon/pikachu/belle/front.png differ diff --git a/graphics/pokemon/pikachu/belle/icon.png b/graphics/pokemon/pikachu/belle/icon.png index 2263ec539e4f..c3374c4bb018 100644 Binary files a/graphics/pokemon/pikachu/belle/icon.png and b/graphics/pokemon/pikachu/belle/icon.png differ diff --git a/graphics/pokemon/pikachu/cosplay/back.png b/graphics/pokemon/pikachu/cosplay/back.png index d01bdd1f0825..524417f1cba3 100644 Binary files a/graphics/pokemon/pikachu/cosplay/back.png and b/graphics/pokemon/pikachu/cosplay/back.png differ diff --git a/graphics/pokemon/pikachu/cosplay/front.png b/graphics/pokemon/pikachu/cosplay/front.png index a59ab675a35c..bcbe13ee8f61 100644 Binary files a/graphics/pokemon/pikachu/cosplay/front.png and b/graphics/pokemon/pikachu/cosplay/front.png differ diff --git a/graphics/pokemon/pikachu/cosplay/icon.png b/graphics/pokemon/pikachu/cosplay/icon.png index ec128341e241..38d9443a453f 100644 Binary files a/graphics/pokemon/pikachu/cosplay/icon.png and b/graphics/pokemon/pikachu/cosplay/icon.png differ diff --git a/graphics/pokemon/pikachu/footprint.png b/graphics/pokemon/pikachu/footprint.png index a8ee2e4ac9a4..9145eff5b81e 100644 Binary files a/graphics/pokemon/pikachu/footprint.png and b/graphics/pokemon/pikachu/footprint.png differ diff --git a/graphics/pokemon/pikachu/front.png b/graphics/pokemon/pikachu/front.png deleted file mode 100644 index 9a320c286607..000000000000 Binary files a/graphics/pokemon/pikachu/front.png and /dev/null differ diff --git a/graphics/pokemon/pikachu/hoenn_cap/back.png b/graphics/pokemon/pikachu/hoenn_cap/back.png index a00abae9209f..a257b1e99425 100644 Binary files a/graphics/pokemon/pikachu/hoenn_cap/back.png and b/graphics/pokemon/pikachu/hoenn_cap/back.png differ diff --git a/graphics/pokemon/pikachu/hoenn_cap/front.png b/graphics/pokemon/pikachu/hoenn_cap/front.png index 19bbcdfe60c6..2c9749ee2e35 100644 Binary files a/graphics/pokemon/pikachu/hoenn_cap/front.png and b/graphics/pokemon/pikachu/hoenn_cap/front.png differ diff --git a/graphics/pokemon/pikachu/hoenn_cap/icon.png b/graphics/pokemon/pikachu/hoenn_cap/icon.png index 63ebc8d5a2eb..c9f88f5e3026 100644 Binary files a/graphics/pokemon/pikachu/hoenn_cap/icon.png and b/graphics/pokemon/pikachu/hoenn_cap/icon.png differ diff --git a/graphics/pokemon/pikachu/kalos_cap/back.png b/graphics/pokemon/pikachu/kalos_cap/back.png index 3623d801d67a..c0a4b7526186 100644 Binary files a/graphics/pokemon/pikachu/kalos_cap/back.png and b/graphics/pokemon/pikachu/kalos_cap/back.png differ diff --git a/graphics/pokemon/pikachu/kalos_cap/front.png b/graphics/pokemon/pikachu/kalos_cap/front.png index e03175dc41a6..b8d995d8794c 100644 Binary files a/graphics/pokemon/pikachu/kalos_cap/front.png and b/graphics/pokemon/pikachu/kalos_cap/front.png differ diff --git a/graphics/pokemon/pikachu/kalos_cap/icon.png b/graphics/pokemon/pikachu/kalos_cap/icon.png index 1d224061e131..0e93d93b74cb 100644 Binary files a/graphics/pokemon/pikachu/kalos_cap/icon.png and b/graphics/pokemon/pikachu/kalos_cap/icon.png differ diff --git a/graphics/pokemon/pikachu/libre/back.png b/graphics/pokemon/pikachu/libre/back.png index db535bbda910..f92d401f76af 100644 Binary files a/graphics/pokemon/pikachu/libre/back.png and b/graphics/pokemon/pikachu/libre/back.png differ diff --git a/graphics/pokemon/pikachu/libre/front.png b/graphics/pokemon/pikachu/libre/front.png index b83d135ace0c..234ad40f955e 100644 Binary files a/graphics/pokemon/pikachu/libre/front.png and b/graphics/pokemon/pikachu/libre/front.png differ diff --git a/graphics/pokemon/pikachu/libre/icon.png b/graphics/pokemon/pikachu/libre/icon.png index f7908eab3bd2..38ce2cc69b49 100644 Binary files a/graphics/pokemon/pikachu/libre/icon.png and b/graphics/pokemon/pikachu/libre/icon.png differ diff --git a/graphics/pokemon/pikachu/original_cap/back.png b/graphics/pokemon/pikachu/original_cap/back.png index c60155b42dad..4f5d09e274c8 100644 Binary files a/graphics/pokemon/pikachu/original_cap/back.png and b/graphics/pokemon/pikachu/original_cap/back.png differ diff --git a/graphics/pokemon/pikachu/original_cap/front.png b/graphics/pokemon/pikachu/original_cap/front.png index 1d265d0c989e..bb8d5931ec9d 100644 Binary files a/graphics/pokemon/pikachu/original_cap/front.png and b/graphics/pokemon/pikachu/original_cap/front.png differ diff --git a/graphics/pokemon/pikachu/original_cap/icon.png b/graphics/pokemon/pikachu/original_cap/icon.png index 68179437b49d..6a356991e95a 100644 Binary files a/graphics/pokemon/pikachu/original_cap/icon.png and b/graphics/pokemon/pikachu/original_cap/icon.png differ diff --git a/graphics/pokemon/pikachu/partner_cap/icon.png b/graphics/pokemon/pikachu/partner_cap/icon.png index eff6d7dcdc80..78630c66431e 100644 Binary files a/graphics/pokemon/pikachu/partner_cap/icon.png and b/graphics/pokemon/pikachu/partner_cap/icon.png differ diff --git a/graphics/pokemon/pikachu/ph_d/back.png b/graphics/pokemon/pikachu/ph_d/back.png index 568fbf91e726..83ee2a559694 100644 Binary files a/graphics/pokemon/pikachu/ph_d/back.png and b/graphics/pokemon/pikachu/ph_d/back.png differ diff --git a/graphics/pokemon/pikachu/ph_d/front.png b/graphics/pokemon/pikachu/ph_d/front.png index 0022376076b9..75034ed9ded3 100644 Binary files a/graphics/pokemon/pikachu/ph_d/front.png and b/graphics/pokemon/pikachu/ph_d/front.png differ diff --git a/graphics/pokemon/pikachu/ph_d/icon.png b/graphics/pokemon/pikachu/ph_d/icon.png index b6bff421642c..50357beb5b1f 100644 Binary files a/graphics/pokemon/pikachu/ph_d/icon.png and b/graphics/pokemon/pikachu/ph_d/icon.png differ diff --git a/graphics/pokemon/pikachu/pop_star/back.png b/graphics/pokemon/pikachu/pop_star/back.png index 8cfc7abe81b7..6840627cde25 100644 Binary files a/graphics/pokemon/pikachu/pop_star/back.png and b/graphics/pokemon/pikachu/pop_star/back.png differ diff --git a/graphics/pokemon/pikachu/pop_star/front.png b/graphics/pokemon/pikachu/pop_star/front.png index 550cb7ab658b..e092dfa5caac 100644 Binary files a/graphics/pokemon/pikachu/pop_star/front.png and b/graphics/pokemon/pikachu/pop_star/front.png differ diff --git a/graphics/pokemon/pikachu/pop_star/icon.png b/graphics/pokemon/pikachu/pop_star/icon.png index 04a399165b4a..c22ef85a4c1c 100644 Binary files a/graphics/pokemon/pikachu/pop_star/icon.png and b/graphics/pokemon/pikachu/pop_star/icon.png differ diff --git a/graphics/pokemon/pikachu/rock_star/back.png b/graphics/pokemon/pikachu/rock_star/back.png index 982fd0ba3e70..fd86f4d59ce7 100644 Binary files a/graphics/pokemon/pikachu/rock_star/back.png and b/graphics/pokemon/pikachu/rock_star/back.png differ diff --git a/graphics/pokemon/pikachu/rock_star/front.png b/graphics/pokemon/pikachu/rock_star/front.png index d8498a98170f..17a102c0b32f 100644 Binary files a/graphics/pokemon/pikachu/rock_star/front.png and b/graphics/pokemon/pikachu/rock_star/front.png differ diff --git a/graphics/pokemon/pikachu/rock_star/icon.png b/graphics/pokemon/pikachu/rock_star/icon.png index 46f106e4478c..96a73279067d 100644 Binary files a/graphics/pokemon/pikachu/rock_star/icon.png and b/graphics/pokemon/pikachu/rock_star/icon.png differ diff --git a/graphics/pokemon/pikachu/sinnoh_cap/back.png b/graphics/pokemon/pikachu/sinnoh_cap/back.png index f23a19428f51..24d429bc42e1 100644 Binary files a/graphics/pokemon/pikachu/sinnoh_cap/back.png and b/graphics/pokemon/pikachu/sinnoh_cap/back.png differ diff --git a/graphics/pokemon/pikachu/sinnoh_cap/front.png b/graphics/pokemon/pikachu/sinnoh_cap/front.png index dc2712fdfa83..91d91acc28c3 100644 Binary files a/graphics/pokemon/pikachu/sinnoh_cap/front.png and b/graphics/pokemon/pikachu/sinnoh_cap/front.png differ diff --git a/graphics/pokemon/pikachu/sinnoh_cap/icon.png b/graphics/pokemon/pikachu/sinnoh_cap/icon.png index e53e37cd4ae1..a127ebcb3a04 100644 Binary files a/graphics/pokemon/pikachu/sinnoh_cap/icon.png and b/graphics/pokemon/pikachu/sinnoh_cap/icon.png differ diff --git a/graphics/pokemon/pikachu/unova_cap/back.png b/graphics/pokemon/pikachu/unova_cap/back.png index d7947b57b9a7..2191a0f4c91a 100644 Binary files a/graphics/pokemon/pikachu/unova_cap/back.png and b/graphics/pokemon/pikachu/unova_cap/back.png differ diff --git a/graphics/pokemon/pikachu/unova_cap/front.png b/graphics/pokemon/pikachu/unova_cap/front.png index 6647c4686069..fbc8a3a6129c 100644 Binary files a/graphics/pokemon/pikachu/unova_cap/front.png and b/graphics/pokemon/pikachu/unova_cap/front.png differ diff --git a/graphics/pokemon/pikachu/unova_cap/icon.png b/graphics/pokemon/pikachu/unova_cap/icon.png index 6d4480928472..1dbc18cfae63 100644 Binary files a/graphics/pokemon/pikachu/unova_cap/icon.png and b/graphics/pokemon/pikachu/unova_cap/icon.png differ diff --git a/graphics/pokemon/pikipek/footprint.png b/graphics/pokemon/pikipek/footprint.png index 88ac9663c078..f4480a412064 100644 Binary files a/graphics/pokemon/pikipek/footprint.png and b/graphics/pokemon/pikipek/footprint.png differ diff --git a/graphics/pokemon/piloswine/footprint.png b/graphics/pokemon/piloswine/footprint.png index 0b7405eceb5d..122f3e3529ad 100644 Binary files a/graphics/pokemon/piloswine/footprint.png and b/graphics/pokemon/piloswine/footprint.png differ diff --git a/graphics/pokemon/piloswine/front.png b/graphics/pokemon/piloswine/front.png deleted file mode 100644 index 1969f28ae650..000000000000 Binary files a/graphics/pokemon/piloswine/front.png and /dev/null differ diff --git a/graphics/pokemon/pincurchin/footprint.png b/graphics/pokemon/pincurchin/footprint.png index 7a29a3a01f10..a9b0e33c2899 100644 Binary files a/graphics/pokemon/pincurchin/footprint.png and b/graphics/pokemon/pincurchin/footprint.png differ diff --git a/graphics/pokemon/pineco/footprint.png b/graphics/pokemon/pineco/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/pineco/footprint.png and b/graphics/pokemon/pineco/footprint.png differ diff --git a/graphics/pokemon/pineco/front.png b/graphics/pokemon/pineco/front.png deleted file mode 100644 index eec63a8ec7b1..000000000000 Binary files a/graphics/pokemon/pineco/front.png and /dev/null differ diff --git a/graphics/pokemon/pinsir/footprint.png b/graphics/pokemon/pinsir/footprint.png index ebd22101eed7..58c6540633c4 100644 Binary files a/graphics/pokemon/pinsir/footprint.png and b/graphics/pokemon/pinsir/footprint.png differ diff --git a/graphics/pokemon/pinsir/front.png b/graphics/pokemon/pinsir/front.png deleted file mode 100644 index 6ef852cffb71..000000000000 Binary files a/graphics/pokemon/pinsir/front.png and /dev/null differ diff --git a/graphics/pokemon/piplup/footprint.png b/graphics/pokemon/piplup/footprint.png index c65cd18c7ae1..8471dc553912 100644 Binary files a/graphics/pokemon/piplup/footprint.png and b/graphics/pokemon/piplup/footprint.png differ diff --git a/graphics/pokemon/piplup/front.png b/graphics/pokemon/piplup/front.png deleted file mode 100644 index c2ce15cdc70e..000000000000 Binary files a/graphics/pokemon/piplup/front.png and /dev/null differ diff --git a/graphics/pokemon/plusle/footprint.png b/graphics/pokemon/plusle/footprint.png index 1071b8069e0e..3a2365e16857 100644 Binary files a/graphics/pokemon/plusle/footprint.png and b/graphics/pokemon/plusle/footprint.png differ diff --git a/graphics/pokemon/plusle/front.png b/graphics/pokemon/plusle/front.png deleted file mode 100644 index 87b7612197d7..000000000000 Binary files a/graphics/pokemon/plusle/front.png and /dev/null differ diff --git a/graphics/pokemon/poipole/footprint.png b/graphics/pokemon/poipole/footprint.png index 249c47e08823..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/poipole/footprint.png and b/graphics/pokemon/poipole/footprint.png differ diff --git a/graphics/pokemon/politoed/footprint.png b/graphics/pokemon/politoed/footprint.png index f97b78994990..9499c60ecc1a 100644 Binary files a/graphics/pokemon/politoed/footprint.png and b/graphics/pokemon/politoed/footprint.png differ diff --git a/graphics/pokemon/politoed/front.png b/graphics/pokemon/politoed/front.png deleted file mode 100644 index 74d705c1060b..000000000000 Binary files a/graphics/pokemon/politoed/front.png and /dev/null differ diff --git a/graphics/pokemon/politoed/icon.png b/graphics/pokemon/politoed/icon.png index 8ea308aa3556..ffc6a38a4862 100644 Binary files a/graphics/pokemon/politoed/icon.png and b/graphics/pokemon/politoed/icon.png differ diff --git a/graphics/pokemon/poliwag/footprint.png b/graphics/pokemon/poliwag/footprint.png index 04e411726ba1..adf2d1a6c844 100644 Binary files a/graphics/pokemon/poliwag/footprint.png and b/graphics/pokemon/poliwag/footprint.png differ diff --git a/graphics/pokemon/poliwag/front.png b/graphics/pokemon/poliwag/front.png deleted file mode 100644 index ebfcf3350f90..000000000000 Binary files a/graphics/pokemon/poliwag/front.png and /dev/null differ diff --git a/graphics/pokemon/poliwhirl/footprint.png b/graphics/pokemon/poliwhirl/footprint.png index 14f6c2ea9133..e058bb601e55 100644 Binary files a/graphics/pokemon/poliwhirl/footprint.png and b/graphics/pokemon/poliwhirl/footprint.png differ diff --git a/graphics/pokemon/poliwhirl/front.png b/graphics/pokemon/poliwhirl/front.png deleted file mode 100644 index 38ae21a4be10..000000000000 Binary files a/graphics/pokemon/poliwhirl/front.png and /dev/null differ diff --git a/graphics/pokemon/poliwrath/footprint.png b/graphics/pokemon/poliwrath/footprint.png index 8f562fcef69f..393f8191c863 100644 Binary files a/graphics/pokemon/poliwrath/footprint.png and b/graphics/pokemon/poliwrath/footprint.png differ diff --git a/graphics/pokemon/poliwrath/front.png b/graphics/pokemon/poliwrath/front.png deleted file mode 100644 index dfe5bd56e7dc..000000000000 Binary files a/graphics/pokemon/poliwrath/front.png and /dev/null differ diff --git a/graphics/pokemon/polteageist/footprint.png b/graphics/pokemon/polteageist/footprint.png index 619fab987740..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/polteageist/footprint.png and b/graphics/pokemon/polteageist/footprint.png differ diff --git a/graphics/pokemon/ponyta/footprint.png b/graphics/pokemon/ponyta/footprint.png index 906ee7a5b530..593b4eae8155 100644 Binary files a/graphics/pokemon/ponyta/footprint.png and b/graphics/pokemon/ponyta/footprint.png differ diff --git a/graphics/pokemon/ponyta/front.png b/graphics/pokemon/ponyta/front.png deleted file mode 100644 index 5e60ecaecb2d..000000000000 Binary files a/graphics/pokemon/ponyta/front.png and /dev/null differ diff --git a/graphics/pokemon/poochyena/footprint.png b/graphics/pokemon/poochyena/footprint.png index c4afe995f028..820645c7cd1f 100644 Binary files a/graphics/pokemon/poochyena/footprint.png and b/graphics/pokemon/poochyena/footprint.png differ diff --git a/graphics/pokemon/poochyena/front.png b/graphics/pokemon/poochyena/front.png deleted file mode 100644 index 03cc345b06c9..000000000000 Binary files a/graphics/pokemon/poochyena/front.png and /dev/null differ diff --git a/graphics/pokemon/popplio/footprint.png b/graphics/pokemon/popplio/footprint.png index 3f266693266e..2449369fd6b8 100644 Binary files a/graphics/pokemon/popplio/footprint.png and b/graphics/pokemon/popplio/footprint.png differ diff --git a/graphics/pokemon/porygon/footprint.png b/graphics/pokemon/porygon/footprint.png index 02243e3bc455..39764c24a40a 100644 Binary files a/graphics/pokemon/porygon/footprint.png and b/graphics/pokemon/porygon/footprint.png differ diff --git a/graphics/pokemon/porygon/front.png b/graphics/pokemon/porygon/front.png deleted file mode 100644 index 52d47ce11b97..000000000000 Binary files a/graphics/pokemon/porygon/front.png and /dev/null differ diff --git a/graphics/pokemon/porygon2/footprint.png b/graphics/pokemon/porygon2/footprint.png index f92224af35c4..40f947b46355 100644 Binary files a/graphics/pokemon/porygon2/footprint.png and b/graphics/pokemon/porygon2/footprint.png differ diff --git a/graphics/pokemon/porygon2/front.png b/graphics/pokemon/porygon2/front.png deleted file mode 100644 index 84f153fc72d9..000000000000 Binary files a/graphics/pokemon/porygon2/front.png and /dev/null differ diff --git a/graphics/pokemon/porygon_z/footprint.png b/graphics/pokemon/porygon_z/footprint.png index d62460ec0437..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/porygon_z/footprint.png and b/graphics/pokemon/porygon_z/footprint.png differ diff --git a/graphics/pokemon/porygon_z/front.png b/graphics/pokemon/porygon_z/front.png deleted file mode 100644 index 1f39bffa578b..000000000000 Binary files a/graphics/pokemon/porygon_z/front.png and /dev/null differ diff --git a/graphics/pokemon/primarina/footprint.png b/graphics/pokemon/primarina/footprint.png index 53b9f28d45bb..2449369fd6b8 100644 Binary files a/graphics/pokemon/primarina/footprint.png and b/graphics/pokemon/primarina/footprint.png differ diff --git a/graphics/pokemon/primeape/footprint.png b/graphics/pokemon/primeape/footprint.png index f4c90ee17574..76f77d387ec8 100644 Binary files a/graphics/pokemon/primeape/footprint.png and b/graphics/pokemon/primeape/footprint.png differ diff --git a/graphics/pokemon/primeape/front.png b/graphics/pokemon/primeape/front.png deleted file mode 100644 index 199c8ff23da9..000000000000 Binary files a/graphics/pokemon/primeape/front.png and /dev/null differ diff --git a/graphics/pokemon/prinplup/footprint.png b/graphics/pokemon/prinplup/footprint.png index 97c0d23c5de1..ce7d3a216c9a 100644 Binary files a/graphics/pokemon/prinplup/footprint.png and b/graphics/pokemon/prinplup/footprint.png differ diff --git a/graphics/pokemon/prinplup/front.png b/graphics/pokemon/prinplup/front.png deleted file mode 100644 index a4b84554dda4..000000000000 Binary files a/graphics/pokemon/prinplup/front.png and /dev/null differ diff --git a/graphics/pokemon/probopass/footprint.png b/graphics/pokemon/probopass/footprint.png index 80d818f62cab..9ed1a5fb47ce 100644 Binary files a/graphics/pokemon/probopass/footprint.png and b/graphics/pokemon/probopass/footprint.png differ diff --git a/graphics/pokemon/probopass/front.png b/graphics/pokemon/probopass/front.png deleted file mode 100644 index 21916b3762d0..000000000000 Binary files a/graphics/pokemon/probopass/front.png and /dev/null differ diff --git a/graphics/pokemon/probopass/icon.png b/graphics/pokemon/probopass/icon.png index fe2df5f2e9db..dbbe9c16a367 100644 Binary files a/graphics/pokemon/probopass/icon.png and b/graphics/pokemon/probopass/icon.png differ diff --git a/graphics/pokemon/psyduck/footprint.png b/graphics/pokemon/psyduck/footprint.png index 4dff448005cd..fc06dcd4f6a7 100644 Binary files a/graphics/pokemon/psyduck/footprint.png and b/graphics/pokemon/psyduck/footprint.png differ diff --git a/graphics/pokemon/psyduck/front.png b/graphics/pokemon/psyduck/front.png deleted file mode 100644 index 523d33781499..000000000000 Binary files a/graphics/pokemon/psyduck/front.png and /dev/null differ diff --git a/graphics/pokemon/pumpkaboo/back.png b/graphics/pokemon/pumpkaboo/back.png index 586016235d7f..9744f396645c 100644 Binary files a/graphics/pokemon/pumpkaboo/back.png and b/graphics/pokemon/pumpkaboo/back.png differ diff --git a/graphics/pokemon/pumpkaboo/footprint.png b/graphics/pokemon/pumpkaboo/footprint.png index adb8b164d9a2..a9b0e33c2899 100644 Binary files a/graphics/pokemon/pumpkaboo/footprint.png and b/graphics/pokemon/pumpkaboo/footprint.png differ diff --git a/graphics/pokemon/pumpkaboo/front.png b/graphics/pokemon/pumpkaboo/front.png deleted file mode 100644 index d55ed24ab8b5..000000000000 Binary files a/graphics/pokemon/pumpkaboo/front.png and /dev/null differ diff --git a/graphics/pokemon/pumpkaboo/large/back.png b/graphics/pokemon/pumpkaboo/large/back.png index 571144ecf900..e5deba0d7d62 100644 Binary files a/graphics/pokemon/pumpkaboo/large/back.png and b/graphics/pokemon/pumpkaboo/large/back.png differ diff --git a/graphics/pokemon/pumpkaboo/large/front.png b/graphics/pokemon/pumpkaboo/large/front.png deleted file mode 100644 index d3df6bca4b8d..000000000000 Binary files a/graphics/pokemon/pumpkaboo/large/front.png and /dev/null differ diff --git a/graphics/pokemon/pumpkaboo/small/back.png b/graphics/pokemon/pumpkaboo/small/back.png index 23283b1b3043..5d7c21e3465d 100644 Binary files a/graphics/pokemon/pumpkaboo/small/back.png and b/graphics/pokemon/pumpkaboo/small/back.png differ diff --git a/graphics/pokemon/pumpkaboo/small/front.png b/graphics/pokemon/pumpkaboo/small/front.png deleted file mode 100644 index 8f22eea38907..000000000000 Binary files a/graphics/pokemon/pumpkaboo/small/front.png and /dev/null differ diff --git a/graphics/pokemon/pumpkaboo/super/back.png b/graphics/pokemon/pumpkaboo/super/back.png index f14291657eff..85cc83e2c0cf 100644 Binary files a/graphics/pokemon/pumpkaboo/super/back.png and b/graphics/pokemon/pumpkaboo/super/back.png differ diff --git a/graphics/pokemon/pumpkaboo/super/front.png b/graphics/pokemon/pumpkaboo/super/front.png deleted file mode 100644 index 3a5d1c1d2db1..000000000000 Binary files a/graphics/pokemon/pumpkaboo/super/front.png and /dev/null differ diff --git a/graphics/pokemon/pupitar/footprint.png b/graphics/pokemon/pupitar/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/pupitar/footprint.png and b/graphics/pokemon/pupitar/footprint.png differ diff --git a/graphics/pokemon/pupitar/front.png b/graphics/pokemon/pupitar/front.png deleted file mode 100644 index cc7fda7150e1..000000000000 Binary files a/graphics/pokemon/pupitar/front.png and /dev/null differ diff --git a/graphics/pokemon/purrloin/footprint.png b/graphics/pokemon/purrloin/footprint.png index cf38aac05c4b..360b77387bf3 100644 Binary files a/graphics/pokemon/purrloin/footprint.png and b/graphics/pokemon/purrloin/footprint.png differ diff --git a/graphics/pokemon/purrloin/front.png b/graphics/pokemon/purrloin/front.png deleted file mode 100644 index 0d329d15c920..000000000000 Binary files a/graphics/pokemon/purrloin/front.png and /dev/null differ diff --git a/graphics/pokemon/purugly/footprint.png b/graphics/pokemon/purugly/footprint.png index 7c8583beb42e..2d5278482e75 100644 Binary files a/graphics/pokemon/purugly/footprint.png and b/graphics/pokemon/purugly/footprint.png differ diff --git a/graphics/pokemon/purugly/front.png b/graphics/pokemon/purugly/front.png deleted file mode 100644 index 4d8a5da49de4..000000000000 Binary files a/graphics/pokemon/purugly/front.png and /dev/null differ diff --git a/graphics/pokemon/pyroar/footprint.png b/graphics/pokemon/pyroar/footprint.png index 6cf1f3c1542a..7e99c4051f16 100644 Binary files a/graphics/pokemon/pyroar/footprint.png and b/graphics/pokemon/pyroar/footprint.png differ diff --git a/graphics/pokemon/pyroar/front.png b/graphics/pokemon/pyroar/front.png deleted file mode 100644 index a7e266167bab..000000000000 Binary files a/graphics/pokemon/pyroar/front.png and /dev/null differ diff --git a/graphics/pokemon/pyroar/icon.png b/graphics/pokemon/pyroar/icon.png index cd0b94401f9d..e00595a15955 100644 Binary files a/graphics/pokemon/pyroar/icon.png and b/graphics/pokemon/pyroar/icon.png differ diff --git a/graphics/pokemon/pyukumuku/footprint.png b/graphics/pokemon/pyukumuku/footprint.png index fa1ffd4ac6b4..2449369fd6b8 100644 Binary files a/graphics/pokemon/pyukumuku/footprint.png and b/graphics/pokemon/pyukumuku/footprint.png differ diff --git a/graphics/pokemon/quagsire/footprint.png b/graphics/pokemon/quagsire/footprint.png index d04039763dcd..5d84baf3d0b9 100644 Binary files a/graphics/pokemon/quagsire/footprint.png and b/graphics/pokemon/quagsire/footprint.png differ diff --git a/graphics/pokemon/quagsire/front.png b/graphics/pokemon/quagsire/front.png deleted file mode 100644 index 41b4ad26b3e7..000000000000 Binary files a/graphics/pokemon/quagsire/front.png and /dev/null differ diff --git a/graphics/pokemon/question_mark/circled/front.png b/graphics/pokemon/question_mark/circled/front.png deleted file mode 100644 index 3056402db40a..000000000000 Binary files a/graphics/pokemon/question_mark/circled/front.png and /dev/null differ diff --git a/graphics/pokemon/question_mark/double/front.png b/graphics/pokemon/question_mark/double/front.png deleted file mode 100644 index f23b08476d7b..000000000000 Binary files a/graphics/pokemon/question_mark/double/front.png and /dev/null differ diff --git a/graphics/pokemon/question_mark/footprint.png b/graphics/pokemon/question_mark/footprint.png index 7c4f45eaad89..8da752a46b30 100644 Binary files a/graphics/pokemon/question_mark/footprint.png and b/graphics/pokemon/question_mark/footprint.png differ diff --git a/graphics/pokemon/quilava/anim_front.png b/graphics/pokemon/quilava/anim_front.png index 1c2709eb4fa1..e65df16880e2 100644 Binary files a/graphics/pokemon/quilava/anim_front.png and b/graphics/pokemon/quilava/anim_front.png differ diff --git a/graphics/pokemon/quilava/back.png b/graphics/pokemon/quilava/back.png index e6911c2b8152..282cfea2094f 100644 Binary files a/graphics/pokemon/quilava/back.png and b/graphics/pokemon/quilava/back.png differ diff --git a/graphics/pokemon/quilava/footprint.png b/graphics/pokemon/quilava/footprint.png index 28324dd7c98b..46c185bffe9e 100644 Binary files a/graphics/pokemon/quilava/footprint.png and b/graphics/pokemon/quilava/footprint.png differ diff --git a/graphics/pokemon/quilava/front.png b/graphics/pokemon/quilava/front.png deleted file mode 100644 index 061f319982b8..000000000000 Binary files a/graphics/pokemon/quilava/front.png and /dev/null differ diff --git a/graphics/pokemon/quilava/normal.pal b/graphics/pokemon/quilava/normal.pal index c6f175d1e4ff..c59061cc849b 100644 --- a/graphics/pokemon/quilava/normal.pal +++ b/graphics/pokemon/quilava/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -216 0 0 -248 88 0 -248 208 0 -248 152 0 -40 104 104 -40 64 96 -56 136 144 +222 0 0 +255 90 0 +255 213 0 +255 156 0 +24 98 131 +49 65 106 +65 156 172 16 16 16 168 0 0 248 248 248 -176 152 80 -248 232 160 -224 200 104 -136 96 32 +180 156 82 +255 238 164 +230 205 106 +139 98 32 16 48 56 diff --git a/graphics/pokemon/quilladin/footprint.png b/graphics/pokemon/quilladin/footprint.png index 0c1295e1f009..f9537696ef9c 100644 Binary files a/graphics/pokemon/quilladin/footprint.png and b/graphics/pokemon/quilladin/footprint.png differ diff --git a/graphics/pokemon/quilladin/front.png b/graphics/pokemon/quilladin/front.png deleted file mode 100644 index 4a6264fa475e..000000000000 Binary files a/graphics/pokemon/quilladin/front.png and /dev/null differ diff --git a/graphics/pokemon/qwilfish/footprint.png b/graphics/pokemon/qwilfish/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/qwilfish/footprint.png and b/graphics/pokemon/qwilfish/footprint.png differ diff --git a/graphics/pokemon/qwilfish/front.png b/graphics/pokemon/qwilfish/front.png deleted file mode 100644 index 6fd19c1346fb..000000000000 Binary files a/graphics/pokemon/qwilfish/front.png and /dev/null differ diff --git a/graphics/pokemon/qwilfish/hisuian/back.png b/graphics/pokemon/qwilfish/hisuian/back.png old mode 100644 new mode 100755 index 48a01e06f23f..7504a692af0e Binary files a/graphics/pokemon/qwilfish/hisuian/back.png and b/graphics/pokemon/qwilfish/hisuian/back.png differ diff --git a/graphics/pokemon/qwilfish/hisuian/front.png b/graphics/pokemon/qwilfish/hisuian/front.png old mode 100644 new mode 100755 index a32988cf7d8f..0de50b786090 Binary files a/graphics/pokemon/qwilfish/hisuian/front.png and b/graphics/pokemon/qwilfish/hisuian/front.png differ diff --git a/graphics/pokemon/qwilfish/hisuian/normal.pal b/graphics/pokemon/qwilfish/hisuian/normal.pal old mode 100644 new mode 100755 index b1a2bcd32b35..91f73ab4d420 --- a/graphics/pokemon/qwilfish/hisuian/normal.pal +++ b/graphics/pokemon/qwilfish/hisuian/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 120 32 96 -240 64 208 +240 68 208 16 16 16 -184 48 152 -128 128 128 -64 64 72 -40 40 48 -88 88 96 +56 56 64 +40 44 48 +80 84 96 +184 52 152 152 136 80 -176 160 120 -184 192 192 +184 180 144 +112 116 128 +168 172 168 +248 252 248 88 80 40 -248 248 248 -184 176 144 +0 0 0 0 0 0 diff --git a/graphics/pokemon/qwilfish/hisuian/shiny.pal b/graphics/pokemon/qwilfish/hisuian/shiny.pal old mode 100644 new mode 100755 index 79d490248c92..06729e52ae5f --- a/graphics/pokemon/qwilfish/hisuian/shiny.pal +++ b/graphics/pokemon/qwilfish/hisuian/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 48 128 -120 112 208 +88 68 192 +128 92 240 16 16 16 -96 88 184 -208 224 240 -136 136 152 -80 80 96 -168 184 208 -168 160 136 -184 184 168 -184 192 192 -96 96 80 -248 248 248 -200 192 184 +128 128 144 +40 44 48 +168 168 184 +88 68 192 +152 136 80 +184 180 144 +200 200 208 +168 172 168 +248 252 248 +88 80 40 +0 0 0 0 0 0 diff --git a/graphics/pokemon/raboot/footprint.png b/graphics/pokemon/raboot/footprint.png index e8e0f26b65ef..7325ba1e6c9a 100644 Binary files a/graphics/pokemon/raboot/footprint.png and b/graphics/pokemon/raboot/footprint.png differ diff --git a/graphics/pokemon/raichu/footprint.png b/graphics/pokemon/raichu/footprint.png index 9f2ac3993eae..3f631ab87441 100644 Binary files a/graphics/pokemon/raichu/footprint.png and b/graphics/pokemon/raichu/footprint.png differ diff --git a/graphics/pokemon/raichu/front.png b/graphics/pokemon/raichu/front.png deleted file mode 100644 index 3b50a2318422..000000000000 Binary files a/graphics/pokemon/raichu/front.png and /dev/null differ diff --git a/graphics/pokemon/raikou/footprint.png b/graphics/pokemon/raikou/footprint.png index b7081dcd35bb..b7cd9c7dbf4d 100644 Binary files a/graphics/pokemon/raikou/footprint.png and b/graphics/pokemon/raikou/footprint.png differ diff --git a/graphics/pokemon/raikou/front.png b/graphics/pokemon/raikou/front.png deleted file mode 100644 index b729a2c3758f..000000000000 Binary files a/graphics/pokemon/raikou/front.png and /dev/null differ diff --git a/graphics/pokemon/raikou/icon.png b/graphics/pokemon/raikou/icon.png index fb0d48a5fd4a..77cc29d7e9f2 100644 Binary files a/graphics/pokemon/raikou/icon.png and b/graphics/pokemon/raikou/icon.png differ diff --git a/graphics/pokemon/ralts/footprint.png b/graphics/pokemon/ralts/footprint.png index 6965dbe60faf..a9b0e33c2899 100644 Binary files a/graphics/pokemon/ralts/footprint.png and b/graphics/pokemon/ralts/footprint.png differ diff --git a/graphics/pokemon/ralts/front.png b/graphics/pokemon/ralts/front.png deleted file mode 100644 index 6831c3897e27..000000000000 Binary files a/graphics/pokemon/ralts/front.png and /dev/null differ diff --git a/graphics/pokemon/rampardos/footprint.png b/graphics/pokemon/rampardos/footprint.png index b866c2b7f68a..3d47521830b4 100644 Binary files a/graphics/pokemon/rampardos/footprint.png and b/graphics/pokemon/rampardos/footprint.png differ diff --git a/graphics/pokemon/rampardos/front.png b/graphics/pokemon/rampardos/front.png deleted file mode 100644 index 09fa06dfbabc..000000000000 Binary files a/graphics/pokemon/rampardos/front.png and /dev/null differ diff --git a/graphics/pokemon/rapidash/footprint.png b/graphics/pokemon/rapidash/footprint.png index 3361489fd9fe..ffa2c80a9f23 100644 Binary files a/graphics/pokemon/rapidash/footprint.png and b/graphics/pokemon/rapidash/footprint.png differ diff --git a/graphics/pokemon/rapidash/front.png b/graphics/pokemon/rapidash/front.png deleted file mode 100644 index d0fb296f50a2..000000000000 Binary files a/graphics/pokemon/rapidash/front.png and /dev/null differ diff --git a/graphics/pokemon/rapidash/icon.png b/graphics/pokemon/rapidash/icon.png index 92dae70a64c0..a15a0a18a207 100644 Binary files a/graphics/pokemon/rapidash/icon.png and b/graphics/pokemon/rapidash/icon.png differ diff --git a/graphics/pokemon/raticate/footprint.png b/graphics/pokemon/raticate/footprint.png index 6628cfdd7563..e1462e71a47f 100644 Binary files a/graphics/pokemon/raticate/footprint.png and b/graphics/pokemon/raticate/footprint.png differ diff --git a/graphics/pokemon/raticate/front.png b/graphics/pokemon/raticate/front.png deleted file mode 100644 index 3d2d33ea5c7d..000000000000 Binary files a/graphics/pokemon/raticate/front.png and /dev/null differ diff --git a/graphics/pokemon/rattata/footprint.png b/graphics/pokemon/rattata/footprint.png index 008b1ddc004d..2f8e0312a5c7 100644 Binary files a/graphics/pokemon/rattata/footprint.png and b/graphics/pokemon/rattata/footprint.png differ diff --git a/graphics/pokemon/rattata/front.png b/graphics/pokemon/rattata/front.png deleted file mode 100644 index eebe101f9a38..000000000000 Binary files a/graphics/pokemon/rattata/front.png and /dev/null differ diff --git a/graphics/pokemon/rayquaza/footprint.png b/graphics/pokemon/rayquaza/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/rayquaza/footprint.png and b/graphics/pokemon/rayquaza/footprint.png differ diff --git a/graphics/pokemon/rayquaza/front.png b/graphics/pokemon/rayquaza/front.png deleted file mode 100644 index 57123a773dc9..000000000000 Binary files a/graphics/pokemon/rayquaza/front.png and /dev/null differ diff --git a/graphics/pokemon/regice/footprint.png b/graphics/pokemon/regice/footprint.png index 6965dbe60faf..a9b0e33c2899 100644 Binary files a/graphics/pokemon/regice/footprint.png and b/graphics/pokemon/regice/footprint.png differ diff --git a/graphics/pokemon/regice/front.png b/graphics/pokemon/regice/front.png deleted file mode 100644 index e369c63446ed..000000000000 Binary files a/graphics/pokemon/regice/front.png and /dev/null differ diff --git a/graphics/pokemon/regidrago/footprint.png b/graphics/pokemon/regidrago/footprint.png index 616bef0ded08..c902ede82398 100644 Binary files a/graphics/pokemon/regidrago/footprint.png and b/graphics/pokemon/regidrago/footprint.png differ diff --git a/graphics/pokemon/regieleki/footprint.png b/graphics/pokemon/regieleki/footprint.png index f64e6d1b9660..a9b0e33c2899 100644 Binary files a/graphics/pokemon/regieleki/footprint.png and b/graphics/pokemon/regieleki/footprint.png differ diff --git a/graphics/pokemon/regigigas/footprint.png b/graphics/pokemon/regigigas/footprint.png index 25900cf29dd2..2f191eb0c915 100644 Binary files a/graphics/pokemon/regigigas/footprint.png and b/graphics/pokemon/regigigas/footprint.png differ diff --git a/graphics/pokemon/regigigas/front.png b/graphics/pokemon/regigigas/front.png deleted file mode 100644 index 7cb87a1ccf84..000000000000 Binary files a/graphics/pokemon/regigigas/front.png and /dev/null differ diff --git a/graphics/pokemon/regirock/footprint.png b/graphics/pokemon/regirock/footprint.png index 44da2a57fd99..d7a4380a77ee 100644 Binary files a/graphics/pokemon/regirock/footprint.png and b/graphics/pokemon/regirock/footprint.png differ diff --git a/graphics/pokemon/regirock/front.png b/graphics/pokemon/regirock/front.png deleted file mode 100644 index 4ba1f41d8005..000000000000 Binary files a/graphics/pokemon/regirock/front.png and /dev/null differ diff --git a/graphics/pokemon/registeel/footprint.png b/graphics/pokemon/registeel/footprint.png index e191faabc874..7f4ee5797017 100644 Binary files a/graphics/pokemon/registeel/footprint.png and b/graphics/pokemon/registeel/footprint.png differ diff --git a/graphics/pokemon/registeel/front.png b/graphics/pokemon/registeel/front.png deleted file mode 100644 index 844ab20c0788..000000000000 Binary files a/graphics/pokemon/registeel/front.png and /dev/null differ diff --git a/graphics/pokemon/relicanth/back.png b/graphics/pokemon/relicanth/back.png index cf4886a6b77d..678602343ae7 100644 Binary files a/graphics/pokemon/relicanth/back.png and b/graphics/pokemon/relicanth/back.png differ diff --git a/graphics/pokemon/relicanth/footprint.png b/graphics/pokemon/relicanth/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/relicanth/footprint.png and b/graphics/pokemon/relicanth/footprint.png differ diff --git a/graphics/pokemon/relicanth/front.png b/graphics/pokemon/relicanth/front.png deleted file mode 100644 index 552b2421d56e..000000000000 Binary files a/graphics/pokemon/relicanth/front.png and /dev/null differ diff --git a/graphics/pokemon/remoraid/footprint.png b/graphics/pokemon/remoraid/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/remoraid/footprint.png and b/graphics/pokemon/remoraid/footprint.png differ diff --git a/graphics/pokemon/remoraid/front.png b/graphics/pokemon/remoraid/front.png deleted file mode 100644 index 8cf4b866415b..000000000000 Binary files a/graphics/pokemon/remoraid/front.png and /dev/null differ diff --git a/graphics/pokemon/reshiram/back.png b/graphics/pokemon/reshiram/back.png index d62cdbdb5b79..2738d144eede 100644 Binary files a/graphics/pokemon/reshiram/back.png and b/graphics/pokemon/reshiram/back.png differ diff --git a/graphics/pokemon/reshiram/footprint.png b/graphics/pokemon/reshiram/footprint.png index d0adc93b773e..4ddbf3ad5078 100644 Binary files a/graphics/pokemon/reshiram/footprint.png and b/graphics/pokemon/reshiram/footprint.png differ diff --git a/graphics/pokemon/reshiram/front.png b/graphics/pokemon/reshiram/front.png deleted file mode 100644 index 22d7be6e50c2..000000000000 Binary files a/graphics/pokemon/reshiram/front.png and /dev/null differ diff --git a/graphics/pokemon/reshiram/icon.png b/graphics/pokemon/reshiram/icon.png index 721b3a70fea1..9bd6457f3ea9 100644 Binary files a/graphics/pokemon/reshiram/icon.png and b/graphics/pokemon/reshiram/icon.png differ diff --git a/graphics/pokemon/reuniclus/anim_front.png b/graphics/pokemon/reuniclus/anim_front.png index 9f9f38975cf4..c635f0befa06 100644 Binary files a/graphics/pokemon/reuniclus/anim_front.png and b/graphics/pokemon/reuniclus/anim_front.png differ diff --git a/graphics/pokemon/reuniclus/footprint.png b/graphics/pokemon/reuniclus/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/reuniclus/footprint.png and b/graphics/pokemon/reuniclus/footprint.png differ diff --git a/graphics/pokemon/reuniclus/front.png b/graphics/pokemon/reuniclus/front.png deleted file mode 100644 index d189c0bf4002..000000000000 Binary files a/graphics/pokemon/reuniclus/front.png and /dev/null differ diff --git a/graphics/pokemon/rhydon/footprint.png b/graphics/pokemon/rhydon/footprint.png index df6d8fced901..cd8a9952d870 100644 Binary files a/graphics/pokemon/rhydon/footprint.png and b/graphics/pokemon/rhydon/footprint.png differ diff --git a/graphics/pokemon/rhydon/front.png b/graphics/pokemon/rhydon/front.png deleted file mode 100644 index 3c71e500efb6..000000000000 Binary files a/graphics/pokemon/rhydon/front.png and /dev/null differ diff --git a/graphics/pokemon/rhyhorn/footprint.png b/graphics/pokemon/rhyhorn/footprint.png index 632b753c24f6..84e88598c7bb 100644 Binary files a/graphics/pokemon/rhyhorn/footprint.png and b/graphics/pokemon/rhyhorn/footprint.png differ diff --git a/graphics/pokemon/rhyhorn/front.png b/graphics/pokemon/rhyhorn/front.png deleted file mode 100644 index 78cb30c3ff4c..000000000000 Binary files a/graphics/pokemon/rhyhorn/front.png and /dev/null differ diff --git a/graphics/pokemon/rhyperior/footprint.png b/graphics/pokemon/rhyperior/footprint.png index 6747036a69fe..b8a66cd9d1ab 100644 Binary files a/graphics/pokemon/rhyperior/footprint.png and b/graphics/pokemon/rhyperior/footprint.png differ diff --git a/graphics/pokemon/rhyperior/front.png b/graphics/pokemon/rhyperior/front.png deleted file mode 100644 index 7c20072cf7ae..000000000000 Binary files a/graphics/pokemon/rhyperior/front.png and /dev/null differ diff --git a/graphics/pokemon/ribombee/footprint.png b/graphics/pokemon/ribombee/footprint.png index 5f908e974569..7c0499f09f0b 100644 Binary files a/graphics/pokemon/ribombee/footprint.png and b/graphics/pokemon/ribombee/footprint.png differ diff --git a/graphics/pokemon/rillaboom/footprint.png b/graphics/pokemon/rillaboom/footprint.png index 2711be60ca5a..57fa8220f4fc 100644 Binary files a/graphics/pokemon/rillaboom/footprint.png and b/graphics/pokemon/rillaboom/footprint.png differ diff --git a/graphics/pokemon/riolu/back.png b/graphics/pokemon/riolu/back.png index ebb100ba15fc..10d47dfd5835 100644 Binary files a/graphics/pokemon/riolu/back.png and b/graphics/pokemon/riolu/back.png differ diff --git a/graphics/pokemon/riolu/footprint.png b/graphics/pokemon/riolu/footprint.png index 4ee490c0e563..a011d5c509b4 100644 Binary files a/graphics/pokemon/riolu/footprint.png and b/graphics/pokemon/riolu/footprint.png differ diff --git a/graphics/pokemon/riolu/front.png b/graphics/pokemon/riolu/front.png deleted file mode 100644 index fbba5f54b6d8..000000000000 Binary files a/graphics/pokemon/riolu/front.png and /dev/null differ diff --git a/graphics/pokemon/rockruff/footprint.png b/graphics/pokemon/rockruff/footprint.png index 486ec0623932..da66d0739fb2 100644 Binary files a/graphics/pokemon/rockruff/footprint.png and b/graphics/pokemon/rockruff/footprint.png differ diff --git a/graphics/pokemon/roggenrola/footprint.png b/graphics/pokemon/roggenrola/footprint.png index f9f68c09fa7f..2f4f594ad5ac 100644 Binary files a/graphics/pokemon/roggenrola/footprint.png and b/graphics/pokemon/roggenrola/footprint.png differ diff --git a/graphics/pokemon/roggenrola/front.png b/graphics/pokemon/roggenrola/front.png deleted file mode 100644 index b63929ad291e..000000000000 Binary files a/graphics/pokemon/roggenrola/front.png and /dev/null differ diff --git a/graphics/pokemon/rolycoly/footprint.png b/graphics/pokemon/rolycoly/footprint.png index d33007c580be..5abe864e7b81 100644 Binary files a/graphics/pokemon/rolycoly/footprint.png and b/graphics/pokemon/rolycoly/footprint.png differ diff --git a/graphics/pokemon/rookidee/footprint.png b/graphics/pokemon/rookidee/footprint.png index 82cf54523d40..3422576beca8 100644 Binary files a/graphics/pokemon/rookidee/footprint.png and b/graphics/pokemon/rookidee/footprint.png differ diff --git a/graphics/pokemon/roselia/footprint.png b/graphics/pokemon/roselia/footprint.png index bedf2ab695d1..6ea3494a033b 100644 Binary files a/graphics/pokemon/roselia/footprint.png and b/graphics/pokemon/roselia/footprint.png differ diff --git a/graphics/pokemon/roselia/front.png b/graphics/pokemon/roselia/front.png deleted file mode 100644 index ea92a4474cc7..000000000000 Binary files a/graphics/pokemon/roselia/front.png and /dev/null differ diff --git a/graphics/pokemon/roserade/footprint.png b/graphics/pokemon/roserade/footprint.png index f0c9e0209e60..b15fbf9eaa5a 100644 Binary files a/graphics/pokemon/roserade/footprint.png and b/graphics/pokemon/roserade/footprint.png differ diff --git a/graphics/pokemon/roserade/front.png b/graphics/pokemon/roserade/front.png deleted file mode 100644 index 34c283b96777..000000000000 Binary files a/graphics/pokemon/roserade/front.png and /dev/null differ diff --git a/graphics/pokemon/rotom/fan/front.png b/graphics/pokemon/rotom/fan/front.png deleted file mode 100644 index 30f58175ea80..000000000000 Binary files a/graphics/pokemon/rotom/fan/front.png and /dev/null differ diff --git a/graphics/pokemon/rotom/front.png b/graphics/pokemon/rotom/front.png deleted file mode 100644 index f6141a7097e2..000000000000 Binary files a/graphics/pokemon/rotom/front.png and /dev/null differ diff --git a/graphics/pokemon/rotom/frost/front.png b/graphics/pokemon/rotom/frost/front.png deleted file mode 100644 index d94fd9376bb1..000000000000 Binary files a/graphics/pokemon/rotom/frost/front.png and /dev/null differ diff --git a/graphics/pokemon/rotom/heat/front.png b/graphics/pokemon/rotom/heat/front.png deleted file mode 100644 index 59878b8bb889..000000000000 Binary files a/graphics/pokemon/rotom/heat/front.png and /dev/null differ diff --git a/graphics/pokemon/rotom/icon.png b/graphics/pokemon/rotom/icon.png index 354b6fd3dc92..e2ecc8b804e0 100644 Binary files a/graphics/pokemon/rotom/icon.png and b/graphics/pokemon/rotom/icon.png differ diff --git a/graphics/pokemon/rotom/mow/front.png b/graphics/pokemon/rotom/mow/front.png deleted file mode 100644 index 41031736f68e..000000000000 Binary files a/graphics/pokemon/rotom/mow/front.png and /dev/null differ diff --git a/graphics/pokemon/rotom/normal/footprint.png b/graphics/pokemon/rotom/normal/footprint.png index 56707bd4e204..2449369fd6b8 100644 Binary files a/graphics/pokemon/rotom/normal/footprint.png and b/graphics/pokemon/rotom/normal/footprint.png differ diff --git a/graphics/pokemon/rotom/wash/front.png b/graphics/pokemon/rotom/wash/front.png deleted file mode 100644 index 5313d0302c21..000000000000 Binary files a/graphics/pokemon/rotom/wash/front.png and /dev/null differ diff --git a/graphics/pokemon/rowlet/footprint.png b/graphics/pokemon/rowlet/footprint.png index a67af910f46c..3422576beca8 100644 Binary files a/graphics/pokemon/rowlet/footprint.png and b/graphics/pokemon/rowlet/footprint.png differ diff --git a/graphics/pokemon/rufflet/footprint.png b/graphics/pokemon/rufflet/footprint.png index 83b0235ae7b0..b31131033cd0 100644 Binary files a/graphics/pokemon/rufflet/footprint.png and b/graphics/pokemon/rufflet/footprint.png differ diff --git a/graphics/pokemon/rufflet/front.png b/graphics/pokemon/rufflet/front.png deleted file mode 100644 index b3e83329b02a..000000000000 Binary files a/graphics/pokemon/rufflet/front.png and /dev/null differ diff --git a/graphics/pokemon/rufflet/icon.png b/graphics/pokemon/rufflet/icon.png index 331e60465a70..f9129355a3bb 100644 Binary files a/graphics/pokemon/rufflet/icon.png and b/graphics/pokemon/rufflet/icon.png differ diff --git a/graphics/pokemon/runerigus/footprint.png b/graphics/pokemon/runerigus/footprint.png index 4c2de9222552..2449369fd6b8 100644 Binary files a/graphics/pokemon/runerigus/footprint.png and b/graphics/pokemon/runerigus/footprint.png differ diff --git a/graphics/pokemon/sableye/footprint.png b/graphics/pokemon/sableye/footprint.png index 204d8da54da9..45f0e8bfe959 100644 Binary files a/graphics/pokemon/sableye/footprint.png and b/graphics/pokemon/sableye/footprint.png differ diff --git a/graphics/pokemon/sableye/front.png b/graphics/pokemon/sableye/front.png deleted file mode 100644 index 02d95cca08df..000000000000 Binary files a/graphics/pokemon/sableye/front.png and /dev/null differ diff --git a/graphics/pokemon/salamence/footprint.png b/graphics/pokemon/salamence/footprint.png index 2440a370fd6a..b943d076537f 100644 Binary files a/graphics/pokemon/salamence/footprint.png and b/graphics/pokemon/salamence/footprint.png differ diff --git a/graphics/pokemon/salamence/front.png b/graphics/pokemon/salamence/front.png deleted file mode 100644 index 6f1a13419d2b..000000000000 Binary files a/graphics/pokemon/salamence/front.png and /dev/null differ diff --git a/graphics/pokemon/salamence/icon.png b/graphics/pokemon/salamence/icon.png index 16cdf981f492..74b4ae776abf 100644 Binary files a/graphics/pokemon/salamence/icon.png and b/graphics/pokemon/salamence/icon.png differ diff --git a/graphics/pokemon/salandit/footprint.png b/graphics/pokemon/salandit/footprint.png index 3490ad768511..3a4bf8294629 100644 Binary files a/graphics/pokemon/salandit/footprint.png and b/graphics/pokemon/salandit/footprint.png differ diff --git a/graphics/pokemon/salazzle/footprint.png b/graphics/pokemon/salazzle/footprint.png index c8eb90af924f..c97e78b3a1b4 100644 Binary files a/graphics/pokemon/salazzle/footprint.png and b/graphics/pokemon/salazzle/footprint.png differ diff --git a/graphics/pokemon/samurott/footprint.png b/graphics/pokemon/samurott/footprint.png index afb85761be96..5c195e72c0b8 100644 Binary files a/graphics/pokemon/samurott/footprint.png and b/graphics/pokemon/samurott/footprint.png differ diff --git a/graphics/pokemon/samurott/front.png b/graphics/pokemon/samurott/front.png deleted file mode 100644 index ceef8bab9da2..000000000000 Binary files a/graphics/pokemon/samurott/front.png and /dev/null differ diff --git a/graphics/pokemon/samurott/hisuian/back.png b/graphics/pokemon/samurott/hisuian/back.png new file mode 100755 index 000000000000..36ed737d3e1c Binary files /dev/null and b/graphics/pokemon/samurott/hisuian/back.png differ diff --git a/graphics/pokemon/samurott/hisuian/front.png b/graphics/pokemon/samurott/hisuian/front.png new file mode 100755 index 000000000000..65e62201c5a3 Binary files /dev/null and b/graphics/pokemon/samurott/hisuian/front.png differ diff --git a/graphics/pokemon/samurott/hisuian/normal.pal b/graphics/pokemon/samurott/hisuian/normal.pal new file mode 100755 index 000000000000..b74abccb9357 --- /dev/null +++ b/graphics/pokemon/samurott/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 164 160 +168 44 64 +72 72 72 +248 252 248 +104 28 48 +16 16 16 +40 44 96 +88 112 112 +32 88 152 +208 80 96 +24 20 48 +192 196 200 +28 56 96 +20 32 72 +0 0 0 diff --git a/graphics/pokemon/samurott/hisuian/shiny.pal b/graphics/pokemon/samurott/hisuian/shiny.pal new file mode 100755 index 000000000000..c2afba6f47a9 --- /dev/null +++ b/graphics/pokemon/samurott/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 164 160 +200 172 152 +72 72 72 +248 252 248 +168 116 96 +16 16 16 +224 220 224 +88 112 112 +32 88 152 +208 80 96 +24 20 48 +192 196 200 +28 56 96 +168 156 168 +0 0 0 diff --git a/graphics/pokemon/sandaconda/footprint.png b/graphics/pokemon/sandaconda/footprint.png index 9de287226355..2449369fd6b8 100644 Binary files a/graphics/pokemon/sandaconda/footprint.png and b/graphics/pokemon/sandaconda/footprint.png differ diff --git a/graphics/pokemon/sandile/footprint.png b/graphics/pokemon/sandile/footprint.png index 3465dd0d0dd9..c12ab089034d 100644 Binary files a/graphics/pokemon/sandile/footprint.png and b/graphics/pokemon/sandile/footprint.png differ diff --git a/graphics/pokemon/sandile/front.png b/graphics/pokemon/sandile/front.png deleted file mode 100644 index 21ff3c968a3c..000000000000 Binary files a/graphics/pokemon/sandile/front.png and /dev/null differ diff --git a/graphics/pokemon/sandshrew/footprint.png b/graphics/pokemon/sandshrew/footprint.png index 481de0993e99..030c4165d759 100644 Binary files a/graphics/pokemon/sandshrew/footprint.png and b/graphics/pokemon/sandshrew/footprint.png differ diff --git a/graphics/pokemon/sandshrew/front.png b/graphics/pokemon/sandshrew/front.png deleted file mode 100644 index a3a6ea88f65a..000000000000 Binary files a/graphics/pokemon/sandshrew/front.png and /dev/null differ diff --git a/graphics/pokemon/sandslash/footprint.png b/graphics/pokemon/sandslash/footprint.png index 431ca99be621..231e78e9fa84 100644 Binary files a/graphics/pokemon/sandslash/footprint.png and b/graphics/pokemon/sandslash/footprint.png differ diff --git a/graphics/pokemon/sandslash/front.png b/graphics/pokemon/sandslash/front.png deleted file mode 100644 index bbbf311b5e0f..000000000000 Binary files a/graphics/pokemon/sandslash/front.png and /dev/null differ diff --git a/graphics/pokemon/sandslash/icon.png b/graphics/pokemon/sandslash/icon.png index a1d72a1ba7cb..18970df1555d 100644 Binary files a/graphics/pokemon/sandslash/icon.png and b/graphics/pokemon/sandslash/icon.png differ diff --git a/graphics/pokemon/sandygast/footprint.png b/graphics/pokemon/sandygast/footprint.png index 87078a7b461a..2449369fd6b8 100644 Binary files a/graphics/pokemon/sandygast/footprint.png and b/graphics/pokemon/sandygast/footprint.png differ diff --git a/graphics/pokemon/sawk/footprint.png b/graphics/pokemon/sawk/footprint.png index d4a0af888625..3543fa37bd32 100644 Binary files a/graphics/pokemon/sawk/footprint.png and b/graphics/pokemon/sawk/footprint.png differ diff --git a/graphics/pokemon/sawk/front.png b/graphics/pokemon/sawk/front.png deleted file mode 100644 index a3ab005487ad..000000000000 Binary files a/graphics/pokemon/sawk/front.png and /dev/null differ diff --git a/graphics/pokemon/sawsbuck/autumn/back.png b/graphics/pokemon/sawsbuck/autumn/back.png index 029ddf1d6f18..3d32c819b4b6 100644 Binary files a/graphics/pokemon/sawsbuck/autumn/back.png and b/graphics/pokemon/sawsbuck/autumn/back.png differ diff --git a/graphics/pokemon/sawsbuck/autumn/icon.png b/graphics/pokemon/sawsbuck/autumn/icon.png index 082cb94eadac..bbbabecf1eb1 100644 Binary files a/graphics/pokemon/sawsbuck/autumn/icon.png and b/graphics/pokemon/sawsbuck/autumn/icon.png differ diff --git a/graphics/pokemon/sawsbuck/footprint.png b/graphics/pokemon/sawsbuck/footprint.png index 39a7b0bf9b87..57877ad88a04 100644 Binary files a/graphics/pokemon/sawsbuck/footprint.png and b/graphics/pokemon/sawsbuck/footprint.png differ diff --git a/graphics/pokemon/sawsbuck/front.png b/graphics/pokemon/sawsbuck/front.png deleted file mode 100644 index 71aed05e3793..000000000000 Binary files a/graphics/pokemon/sawsbuck/front.png and /dev/null differ diff --git a/graphics/pokemon/sawsbuck/summer/back.png b/graphics/pokemon/sawsbuck/summer/back.png index dc4071e2ea17..aee6937c4bd5 100644 Binary files a/graphics/pokemon/sawsbuck/summer/back.png and b/graphics/pokemon/sawsbuck/summer/back.png differ diff --git a/graphics/pokemon/sawsbuck/summer/icon.png b/graphics/pokemon/sawsbuck/summer/icon.png index e699823cd691..6d46101dd17c 100644 Binary files a/graphics/pokemon/sawsbuck/summer/icon.png and b/graphics/pokemon/sawsbuck/summer/icon.png differ diff --git a/graphics/pokemon/sawsbuck/winter/icon.png b/graphics/pokemon/sawsbuck/winter/icon.png index b7e7a3600d05..ecb6ce1adef5 100644 Binary files a/graphics/pokemon/sawsbuck/winter/icon.png and b/graphics/pokemon/sawsbuck/winter/icon.png differ diff --git a/graphics/pokemon/scatterbug/footprint.png b/graphics/pokemon/scatterbug/footprint.png index a62c12a81042..a9b0e33c2899 100644 Binary files a/graphics/pokemon/scatterbug/footprint.png and b/graphics/pokemon/scatterbug/footprint.png differ diff --git a/graphics/pokemon/scatterbug/front.png b/graphics/pokemon/scatterbug/front.png deleted file mode 100644 index 0a8f680cac85..000000000000 Binary files a/graphics/pokemon/scatterbug/front.png and /dev/null differ diff --git a/graphics/pokemon/sceptile/footprint.png b/graphics/pokemon/sceptile/footprint.png index 1958a47780b2..fb829943fc20 100644 Binary files a/graphics/pokemon/sceptile/footprint.png and b/graphics/pokemon/sceptile/footprint.png differ diff --git a/graphics/pokemon/sceptile/front.png b/graphics/pokemon/sceptile/front.png deleted file mode 100644 index f49aef7653b9..000000000000 Binary files a/graphics/pokemon/sceptile/front.png and /dev/null differ diff --git a/graphics/pokemon/scizor/footprint.png b/graphics/pokemon/scizor/footprint.png index 00824374adc2..9ab66e47e3c6 100644 Binary files a/graphics/pokemon/scizor/footprint.png and b/graphics/pokemon/scizor/footprint.png differ diff --git a/graphics/pokemon/scizor/front.png b/graphics/pokemon/scizor/front.png deleted file mode 100644 index f872c488b4e7..000000000000 Binary files a/graphics/pokemon/scizor/front.png and /dev/null differ diff --git a/graphics/pokemon/scolipede/footprint.png b/graphics/pokemon/scolipede/footprint.png index d87da5cd6364..5446956b9a3f 100644 Binary files a/graphics/pokemon/scolipede/footprint.png and b/graphics/pokemon/scolipede/footprint.png differ diff --git a/graphics/pokemon/scolipede/front.png b/graphics/pokemon/scolipede/front.png deleted file mode 100644 index 7d254636f9ec..000000000000 Binary files a/graphics/pokemon/scolipede/front.png and /dev/null differ diff --git a/graphics/pokemon/scorbunny/footprint.png b/graphics/pokemon/scorbunny/footprint.png index 03b76efa17f4..9723a82456f4 100644 Binary files a/graphics/pokemon/scorbunny/footprint.png and b/graphics/pokemon/scorbunny/footprint.png differ diff --git a/graphics/pokemon/scrafty/footprint.png b/graphics/pokemon/scrafty/footprint.png index 49d7901106d9..ea80f8f896cb 100644 Binary files a/graphics/pokemon/scrafty/footprint.png and b/graphics/pokemon/scrafty/footprint.png differ diff --git a/graphics/pokemon/scrafty/front.png b/graphics/pokemon/scrafty/front.png deleted file mode 100644 index 642dcb966519..000000000000 Binary files a/graphics/pokemon/scrafty/front.png and /dev/null differ diff --git a/graphics/pokemon/scraggy/footprint.png b/graphics/pokemon/scraggy/footprint.png index 422b9a2b88e1..c2c45ebec4d0 100644 Binary files a/graphics/pokemon/scraggy/footprint.png and b/graphics/pokemon/scraggy/footprint.png differ diff --git a/graphics/pokemon/scraggy/front.png b/graphics/pokemon/scraggy/front.png deleted file mode 100644 index 1cade69cc91c..000000000000 Binary files a/graphics/pokemon/scraggy/front.png and /dev/null differ diff --git a/graphics/pokemon/scraggy/icon.png b/graphics/pokemon/scraggy/icon.png index e63301f36bcf..f1baf8d0783d 100644 Binary files a/graphics/pokemon/scraggy/icon.png and b/graphics/pokemon/scraggy/icon.png differ diff --git a/graphics/pokemon/scyther/footprint.png b/graphics/pokemon/scyther/footprint.png index c6b7730285ad..e12c46d3c8dd 100644 Binary files a/graphics/pokemon/scyther/footprint.png and b/graphics/pokemon/scyther/footprint.png differ diff --git a/graphics/pokemon/scyther/front.png b/graphics/pokemon/scyther/front.png deleted file mode 100644 index af7420c5614d..000000000000 Binary files a/graphics/pokemon/scyther/front.png and /dev/null differ diff --git a/graphics/pokemon/seadra/footprint.png b/graphics/pokemon/seadra/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/seadra/footprint.png and b/graphics/pokemon/seadra/footprint.png differ diff --git a/graphics/pokemon/seadra/front.png b/graphics/pokemon/seadra/front.png deleted file mode 100644 index c782ae3e1516..000000000000 Binary files a/graphics/pokemon/seadra/front.png and /dev/null differ diff --git a/graphics/pokemon/seaking/footprint.png b/graphics/pokemon/seaking/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/seaking/footprint.png and b/graphics/pokemon/seaking/footprint.png differ diff --git a/graphics/pokemon/seaking/front.png b/graphics/pokemon/seaking/front.png deleted file mode 100644 index f61a6a0fc2c1..000000000000 Binary files a/graphics/pokemon/seaking/front.png and /dev/null differ diff --git a/graphics/pokemon/sealeo/back.png b/graphics/pokemon/sealeo/back.png index 162838a2c8b9..84a89788b3f7 100644 Binary files a/graphics/pokemon/sealeo/back.png and b/graphics/pokemon/sealeo/back.png differ diff --git a/graphics/pokemon/sealeo/footprint.png b/graphics/pokemon/sealeo/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/sealeo/footprint.png and b/graphics/pokemon/sealeo/footprint.png differ diff --git a/graphics/pokemon/sealeo/front.png b/graphics/pokemon/sealeo/front.png deleted file mode 100644 index 87d8fdb2fc3d..000000000000 Binary files a/graphics/pokemon/sealeo/front.png and /dev/null differ diff --git a/graphics/pokemon/seedot/footprint.png b/graphics/pokemon/seedot/footprint.png index 9b41f13eda53..ef9f52256b9b 100644 Binary files a/graphics/pokemon/seedot/footprint.png and b/graphics/pokemon/seedot/footprint.png differ diff --git a/graphics/pokemon/seedot/front.png b/graphics/pokemon/seedot/front.png deleted file mode 100644 index 2ffd8d6668c8..000000000000 Binary files a/graphics/pokemon/seedot/front.png and /dev/null differ diff --git a/graphics/pokemon/seel/footprint.png b/graphics/pokemon/seel/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/seel/footprint.png and b/graphics/pokemon/seel/footprint.png differ diff --git a/graphics/pokemon/seel/front.png b/graphics/pokemon/seel/front.png deleted file mode 100644 index d2cc2bc3148a..000000000000 Binary files a/graphics/pokemon/seel/front.png and /dev/null differ diff --git a/graphics/pokemon/seismitoad/footprint.png b/graphics/pokemon/seismitoad/footprint.png index 2a5908b21676..703432bae585 100644 Binary files a/graphics/pokemon/seismitoad/footprint.png and b/graphics/pokemon/seismitoad/footprint.png differ diff --git a/graphics/pokemon/seismitoad/front.png b/graphics/pokemon/seismitoad/front.png deleted file mode 100644 index e87b7a4a0475..000000000000 Binary files a/graphics/pokemon/seismitoad/front.png and /dev/null differ diff --git a/graphics/pokemon/sentret/anim_front.png b/graphics/pokemon/sentret/anim_front.png index 820a036ac72b..9986d9d940e0 100644 Binary files a/graphics/pokemon/sentret/anim_front.png and b/graphics/pokemon/sentret/anim_front.png differ diff --git a/graphics/pokemon/sentret/footprint.png b/graphics/pokemon/sentret/footprint.png index 49ab94c0b537..398cdb462363 100644 Binary files a/graphics/pokemon/sentret/footprint.png and b/graphics/pokemon/sentret/footprint.png differ diff --git a/graphics/pokemon/sentret/front.png b/graphics/pokemon/sentret/front.png deleted file mode 100644 index 6505891305bd..000000000000 Binary files a/graphics/pokemon/sentret/front.png and /dev/null differ diff --git a/graphics/pokemon/sentret/icon.png b/graphics/pokemon/sentret/icon.png index 9a8040833bee..e95d75ccd41e 100644 Binary files a/graphics/pokemon/sentret/icon.png and b/graphics/pokemon/sentret/icon.png differ diff --git a/graphics/pokemon/sentret/normal.pal b/graphics/pokemon/sentret/normal.pal index 1e09bf2d7d81..093a3581db95 100644 --- a/graphics/pokemon/sentret/normal.pal +++ b/graphics/pokemon/sentret/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 48 32 -56 8 0 -96 64 48 +74 49 32 +57 8 0 +98 65 49 16 16 16 -176 32 64 -216 64 72 -136 88 64 -200 160 128 -184 128 88 -248 248 248 -160 112 72 -56 24 16 -200 200 192 +180 32 65 +222 65 74 +139 90 65 +205 164 131 +189 131 90 +255 255 255 +164 115 74 +57 24 16 +205 205 197 0 0 0 0 0 0 diff --git a/graphics/pokemon/serperior/footprint.png b/graphics/pokemon/serperior/footprint.png index ed7c15888ec9..2449369fd6b8 100644 Binary files a/graphics/pokemon/serperior/footprint.png and b/graphics/pokemon/serperior/footprint.png differ diff --git a/graphics/pokemon/serperior/front.png b/graphics/pokemon/serperior/front.png deleted file mode 100644 index 8f26506a6ced..000000000000 Binary files a/graphics/pokemon/serperior/front.png and /dev/null differ diff --git a/graphics/pokemon/servine/footprint.png b/graphics/pokemon/servine/footprint.png index 53cebf08a5dd..d1454a5f12cf 100644 Binary files a/graphics/pokemon/servine/footprint.png and b/graphics/pokemon/servine/footprint.png differ diff --git a/graphics/pokemon/servine/front.png b/graphics/pokemon/servine/front.png deleted file mode 100644 index ab5a141b957c..000000000000 Binary files a/graphics/pokemon/servine/front.png and /dev/null differ diff --git a/graphics/pokemon/seviper/footprint.png b/graphics/pokemon/seviper/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/seviper/footprint.png and b/graphics/pokemon/seviper/footprint.png differ diff --git a/graphics/pokemon/seviper/front.png b/graphics/pokemon/seviper/front.png deleted file mode 100644 index c80d9c80fd70..000000000000 Binary files a/graphics/pokemon/seviper/front.png and /dev/null differ diff --git a/graphics/pokemon/seviper/icon.png b/graphics/pokemon/seviper/icon.png index 192e40a16785..f6beb9f8561b 100644 Binary files a/graphics/pokemon/seviper/icon.png and b/graphics/pokemon/seviper/icon.png differ diff --git a/graphics/pokemon/sewaddle/footprint.png b/graphics/pokemon/sewaddle/footprint.png index 4cc2972cf28e..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/sewaddle/footprint.png and b/graphics/pokemon/sewaddle/footprint.png differ diff --git a/graphics/pokemon/sewaddle/front.png b/graphics/pokemon/sewaddle/front.png deleted file mode 100644 index 7f01fe90c945..000000000000 Binary files a/graphics/pokemon/sewaddle/front.png and /dev/null differ diff --git a/graphics/pokemon/sewaddle/icon.png b/graphics/pokemon/sewaddle/icon.png index 755c745d726e..ae517307b41e 100644 Binary files a/graphics/pokemon/sewaddle/icon.png and b/graphics/pokemon/sewaddle/icon.png differ diff --git a/graphics/pokemon/sharpedo/footprint.png b/graphics/pokemon/sharpedo/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/sharpedo/footprint.png and b/graphics/pokemon/sharpedo/footprint.png differ diff --git a/graphics/pokemon/sharpedo/front.png b/graphics/pokemon/sharpedo/front.png deleted file mode 100644 index 67db44c34fad..000000000000 Binary files a/graphics/pokemon/sharpedo/front.png and /dev/null differ diff --git a/graphics/pokemon/sharpedo/icon.png b/graphics/pokemon/sharpedo/icon.png index 2782511a3a57..87a1c7e40948 100644 Binary files a/graphics/pokemon/sharpedo/icon.png and b/graphics/pokemon/sharpedo/icon.png differ diff --git a/graphics/pokemon/shaymin/footprint.png b/graphics/pokemon/shaymin/footprint.png index 7095c2c43f1d..6163774b5c45 100644 Binary files a/graphics/pokemon/shaymin/footprint.png and b/graphics/pokemon/shaymin/footprint.png differ diff --git a/graphics/pokemon/shaymin/front.png b/graphics/pokemon/shaymin/front.png deleted file mode 100644 index f8e316903569..000000000000 Binary files a/graphics/pokemon/shaymin/front.png and /dev/null differ diff --git a/graphics/pokemon/shaymin/sky/front.png b/graphics/pokemon/shaymin/sky/front.png deleted file mode 100644 index 190c4ebf69b3..000000000000 Binary files a/graphics/pokemon/shaymin/sky/front.png and /dev/null differ diff --git a/graphics/pokemon/shedinja/footprint.png b/graphics/pokemon/shedinja/footprint.png index d4118d5e6ee8..928f915e9668 100644 Binary files a/graphics/pokemon/shedinja/footprint.png and b/graphics/pokemon/shedinja/footprint.png differ diff --git a/graphics/pokemon/shedinja/front.png b/graphics/pokemon/shedinja/front.png deleted file mode 100644 index 9c217d773865..000000000000 Binary files a/graphics/pokemon/shedinja/front.png and /dev/null differ diff --git a/graphics/pokemon/shelgon/footprint.png b/graphics/pokemon/shelgon/footprint.png index e2d61b9bc8d6..5c7a6ab3f042 100644 Binary files a/graphics/pokemon/shelgon/footprint.png and b/graphics/pokemon/shelgon/footprint.png differ diff --git a/graphics/pokemon/shelgon/front.png b/graphics/pokemon/shelgon/front.png deleted file mode 100644 index 713ba522690f..000000000000 Binary files a/graphics/pokemon/shelgon/front.png and /dev/null differ diff --git a/graphics/pokemon/shellder/footprint.png b/graphics/pokemon/shellder/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/shellder/footprint.png and b/graphics/pokemon/shellder/footprint.png differ diff --git a/graphics/pokemon/shellder/front.png b/graphics/pokemon/shellder/front.png deleted file mode 100644 index 4c3e7f5228d0..000000000000 Binary files a/graphics/pokemon/shellder/front.png and /dev/null differ diff --git a/graphics/pokemon/shellder/icon.png b/graphics/pokemon/shellder/icon.png index 8d74f82624c8..8ffeb3edfa95 100644 Binary files a/graphics/pokemon/shellder/icon.png and b/graphics/pokemon/shellder/icon.png differ diff --git a/graphics/pokemon/shellos/east_sea/back.png b/graphics/pokemon/shellos/east_sea/back.png index 0613c7a58a62..2cb650a28c56 100644 Binary files a/graphics/pokemon/shellos/east_sea/back.png and b/graphics/pokemon/shellos/east_sea/back.png differ diff --git a/graphics/pokemon/shellos/east_sea/front.png b/graphics/pokemon/shellos/east_sea/front.png deleted file mode 100644 index 79d1c97cc6e6..000000000000 Binary files a/graphics/pokemon/shellos/east_sea/front.png and /dev/null differ diff --git a/graphics/pokemon/shellos/east_sea/icon.png b/graphics/pokemon/shellos/east_sea/icon.png index befc659c1c32..35610eb27c3f 100644 Binary files a/graphics/pokemon/shellos/east_sea/icon.png and b/graphics/pokemon/shellos/east_sea/icon.png differ diff --git a/graphics/pokemon/shellos/footprint.png b/graphics/pokemon/shellos/footprint.png index 760c80223c6f..750b1114f43a 100644 Binary files a/graphics/pokemon/shellos/footprint.png and b/graphics/pokemon/shellos/footprint.png differ diff --git a/graphics/pokemon/shellos/front.png b/graphics/pokemon/shellos/front.png deleted file mode 100644 index 0d1be14f6a07..000000000000 Binary files a/graphics/pokemon/shellos/front.png and /dev/null differ diff --git a/graphics/pokemon/shelmet/footprint.png b/graphics/pokemon/shelmet/footprint.png index fdd7cd4d364a..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/shelmet/footprint.png and b/graphics/pokemon/shelmet/footprint.png differ diff --git a/graphics/pokemon/shelmet/front.png b/graphics/pokemon/shelmet/front.png deleted file mode 100644 index e881e714955f..000000000000 Binary files a/graphics/pokemon/shelmet/front.png and /dev/null differ diff --git a/graphics/pokemon/shieldon/footprint.png b/graphics/pokemon/shieldon/footprint.png index 2bce4070eded..d3adb6470f2f 100644 Binary files a/graphics/pokemon/shieldon/footprint.png and b/graphics/pokemon/shieldon/footprint.png differ diff --git a/graphics/pokemon/shieldon/front.png b/graphics/pokemon/shieldon/front.png deleted file mode 100644 index d668a7b76aeb..000000000000 Binary files a/graphics/pokemon/shieldon/front.png and /dev/null differ diff --git a/graphics/pokemon/shiftry/footprint.png b/graphics/pokemon/shiftry/footprint.png index 3ea82a3daba0..3b3a4f53d332 100644 Binary files a/graphics/pokemon/shiftry/footprint.png and b/graphics/pokemon/shiftry/footprint.png differ diff --git a/graphics/pokemon/shiftry/front.png b/graphics/pokemon/shiftry/front.png deleted file mode 100644 index 15e263cb9436..000000000000 Binary files a/graphics/pokemon/shiftry/front.png and /dev/null differ diff --git a/graphics/pokemon/shiftry/icon.png b/graphics/pokemon/shiftry/icon.png index 14b4bdab6ab7..3d2be13a6852 100644 Binary files a/graphics/pokemon/shiftry/icon.png and b/graphics/pokemon/shiftry/icon.png differ diff --git a/graphics/pokemon/shiinotic/footprint.png b/graphics/pokemon/shiinotic/footprint.png index b2db8ea721de..5d01e97d6962 100644 Binary files a/graphics/pokemon/shiinotic/footprint.png and b/graphics/pokemon/shiinotic/footprint.png differ diff --git a/graphics/pokemon/shinx/anim_frontf.png b/graphics/pokemon/shinx/anim_frontf.png index 226c6f3bda3f..2ee34f09682b 100644 Binary files a/graphics/pokemon/shinx/anim_frontf.png and b/graphics/pokemon/shinx/anim_frontf.png differ diff --git a/graphics/pokemon/shinx/backf.png b/graphics/pokemon/shinx/backf.png index 24108fbf300a..805ee62ee39b 100644 Binary files a/graphics/pokemon/shinx/backf.png and b/graphics/pokemon/shinx/backf.png differ diff --git a/graphics/pokemon/shinx/footprint.png b/graphics/pokemon/shinx/footprint.png index 4cdcd74886e5..8551a61490fa 100644 Binary files a/graphics/pokemon/shinx/footprint.png and b/graphics/pokemon/shinx/footprint.png differ diff --git a/graphics/pokemon/shinx/front.png b/graphics/pokemon/shinx/front.png deleted file mode 100644 index f6d437c6e55f..000000000000 Binary files a/graphics/pokemon/shinx/front.png and /dev/null differ diff --git a/graphics/pokemon/shroomish/footprint.png b/graphics/pokemon/shroomish/footprint.png index d3a5986ce431..1187f2d5e784 100644 Binary files a/graphics/pokemon/shroomish/footprint.png and b/graphics/pokemon/shroomish/footprint.png differ diff --git a/graphics/pokemon/shroomish/front.png b/graphics/pokemon/shroomish/front.png deleted file mode 100644 index 0a4389204629..000000000000 Binary files a/graphics/pokemon/shroomish/front.png and /dev/null differ diff --git a/graphics/pokemon/shuckle/footprint.png b/graphics/pokemon/shuckle/footprint.png index e26b60bcd352..169bb4cf5b13 100644 Binary files a/graphics/pokemon/shuckle/footprint.png and b/graphics/pokemon/shuckle/footprint.png differ diff --git a/graphics/pokemon/shuckle/front.png b/graphics/pokemon/shuckle/front.png deleted file mode 100644 index 0b00c414d1de..000000000000 Binary files a/graphics/pokemon/shuckle/front.png and /dev/null differ diff --git a/graphics/pokemon/shuppet/back.png b/graphics/pokemon/shuppet/back.png index 61efa5110d54..c25c8567e03b 100644 Binary files a/graphics/pokemon/shuppet/back.png and b/graphics/pokemon/shuppet/back.png differ diff --git a/graphics/pokemon/shuppet/footprint.png b/graphics/pokemon/shuppet/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/shuppet/footprint.png and b/graphics/pokemon/shuppet/footprint.png differ diff --git a/graphics/pokemon/shuppet/front.png b/graphics/pokemon/shuppet/front.png deleted file mode 100644 index e2633121a5cc..000000000000 Binary files a/graphics/pokemon/shuppet/front.png and /dev/null differ diff --git a/graphics/pokemon/sigilyph/footprint.png b/graphics/pokemon/sigilyph/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/sigilyph/footprint.png and b/graphics/pokemon/sigilyph/footprint.png differ diff --git a/graphics/pokemon/sigilyph/front.png b/graphics/pokemon/sigilyph/front.png deleted file mode 100644 index 8ce63b8376d2..000000000000 Binary files a/graphics/pokemon/sigilyph/front.png and /dev/null differ diff --git a/graphics/pokemon/sigilyph/icon.png b/graphics/pokemon/sigilyph/icon.png index c599ce22a251..afaf880d5401 100644 Binary files a/graphics/pokemon/sigilyph/icon.png and b/graphics/pokemon/sigilyph/icon.png differ diff --git a/graphics/pokemon/silcoon/footprint.png b/graphics/pokemon/silcoon/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/silcoon/footprint.png and b/graphics/pokemon/silcoon/footprint.png differ diff --git a/graphics/pokemon/silcoon/front.png b/graphics/pokemon/silcoon/front.png deleted file mode 100644 index e6f2a614cd4e..000000000000 Binary files a/graphics/pokemon/silcoon/front.png and /dev/null differ diff --git a/graphics/pokemon/silicobra/footprint.png b/graphics/pokemon/silicobra/footprint.png index f16726255964..2449369fd6b8 100644 Binary files a/graphics/pokemon/silicobra/footprint.png and b/graphics/pokemon/silicobra/footprint.png differ diff --git a/graphics/pokemon/silvally/back.png b/graphics/pokemon/silvally/back.png index 3994f8bf2091..94c3826cbd69 100644 Binary files a/graphics/pokemon/silvally/back.png and b/graphics/pokemon/silvally/back.png differ diff --git a/graphics/pokemon/silvally/footprint.png b/graphics/pokemon/silvally/footprint.png index b5542742f223..e01a0a96249f 100644 Binary files a/graphics/pokemon/silvally/footprint.png and b/graphics/pokemon/silvally/footprint.png differ diff --git a/graphics/pokemon/silvally/front.png b/graphics/pokemon/silvally/front.png index a0caf35b63e5..01d9f14a9c39 100644 Binary files a/graphics/pokemon/silvally/front.png and b/graphics/pokemon/silvally/front.png differ diff --git a/graphics/pokemon/simipour/footprint.png b/graphics/pokemon/simipour/footprint.png index 4c2d69b9a45a..69e56396c0f9 100644 Binary files a/graphics/pokemon/simipour/footprint.png and b/graphics/pokemon/simipour/footprint.png differ diff --git a/graphics/pokemon/simipour/front.png b/graphics/pokemon/simipour/front.png deleted file mode 100644 index 3ea50454c9d7..000000000000 Binary files a/graphics/pokemon/simipour/front.png and /dev/null differ diff --git a/graphics/pokemon/simisage/footprint.png b/graphics/pokemon/simisage/footprint.png index 4c2d69b9a45a..69e56396c0f9 100644 Binary files a/graphics/pokemon/simisage/footprint.png and b/graphics/pokemon/simisage/footprint.png differ diff --git a/graphics/pokemon/simisage/front.png b/graphics/pokemon/simisage/front.png deleted file mode 100644 index 22e5dff398f1..000000000000 Binary files a/graphics/pokemon/simisage/front.png and /dev/null differ diff --git a/graphics/pokemon/simisear/footprint.png b/graphics/pokemon/simisear/footprint.png index 4c2d69b9a45a..69e56396c0f9 100644 Binary files a/graphics/pokemon/simisear/footprint.png and b/graphics/pokemon/simisear/footprint.png differ diff --git a/graphics/pokemon/simisear/front.png b/graphics/pokemon/simisear/front.png deleted file mode 100644 index c8ce5ef588a8..000000000000 Binary files a/graphics/pokemon/simisear/front.png and /dev/null differ diff --git a/graphics/pokemon/sinistea/footprint.png b/graphics/pokemon/sinistea/footprint.png index dcea8100bd08..2449369fd6b8 100644 Binary files a/graphics/pokemon/sinistea/footprint.png and b/graphics/pokemon/sinistea/footprint.png differ diff --git a/graphics/pokemon/sirfetchd/footprint.png b/graphics/pokemon/sirfetchd/footprint.png index 78a8ecb4f781..cbfca034d5ee 100644 Binary files a/graphics/pokemon/sirfetchd/footprint.png and b/graphics/pokemon/sirfetchd/footprint.png differ diff --git a/graphics/pokemon/sirfetchd/front.png b/graphics/pokemon/sirfetchd/front.png index a7ac2a974a3a..3ae79de6e604 100644 Binary files a/graphics/pokemon/sirfetchd/front.png and b/graphics/pokemon/sirfetchd/front.png differ diff --git a/graphics/pokemon/sizzlipede/footprint.png b/graphics/pokemon/sizzlipede/footprint.png index 44b5823d235b..a9b0e33c2899 100644 Binary files a/graphics/pokemon/sizzlipede/footprint.png and b/graphics/pokemon/sizzlipede/footprint.png differ diff --git a/graphics/pokemon/skarmory/footprint.png b/graphics/pokemon/skarmory/footprint.png index 1134fec29456..3f0b2d311993 100644 Binary files a/graphics/pokemon/skarmory/footprint.png and b/graphics/pokemon/skarmory/footprint.png differ diff --git a/graphics/pokemon/skarmory/front.png b/graphics/pokemon/skarmory/front.png deleted file mode 100644 index 719acd0f8f7c..000000000000 Binary files a/graphics/pokemon/skarmory/front.png and /dev/null differ diff --git a/graphics/pokemon/skiddo/footprint.png b/graphics/pokemon/skiddo/footprint.png index ddbc09b2cb24..a487ee98c3cc 100644 Binary files a/graphics/pokemon/skiddo/footprint.png and b/graphics/pokemon/skiddo/footprint.png differ diff --git a/graphics/pokemon/skiddo/front.png b/graphics/pokemon/skiddo/front.png deleted file mode 100644 index 1f7d3545ecf4..000000000000 Binary files a/graphics/pokemon/skiddo/front.png and /dev/null differ diff --git a/graphics/pokemon/skiploom/footprint.png b/graphics/pokemon/skiploom/footprint.png index efa7f5034220..544ef0ea6da3 100644 Binary files a/graphics/pokemon/skiploom/footprint.png and b/graphics/pokemon/skiploom/footprint.png differ diff --git a/graphics/pokemon/skiploom/front.png b/graphics/pokemon/skiploom/front.png deleted file mode 100644 index 8bbabfd30b26..000000000000 Binary files a/graphics/pokemon/skiploom/front.png and /dev/null differ diff --git a/graphics/pokemon/skitty/footprint.png b/graphics/pokemon/skitty/footprint.png index 355153dcb506..2e78b5093e9e 100644 Binary files a/graphics/pokemon/skitty/footprint.png and b/graphics/pokemon/skitty/footprint.png differ diff --git a/graphics/pokemon/skitty/front.png b/graphics/pokemon/skitty/front.png deleted file mode 100644 index 2a7321c26823..000000000000 Binary files a/graphics/pokemon/skitty/front.png and /dev/null differ diff --git a/graphics/pokemon/skorupi/footprint.png b/graphics/pokemon/skorupi/footprint.png index 19a3aceeab2f..a9b0e33c2899 100644 Binary files a/graphics/pokemon/skorupi/footprint.png and b/graphics/pokemon/skorupi/footprint.png differ diff --git a/graphics/pokemon/skorupi/front.png b/graphics/pokemon/skorupi/front.png deleted file mode 100644 index 480051932f5c..000000000000 Binary files a/graphics/pokemon/skorupi/front.png and /dev/null differ diff --git a/graphics/pokemon/skrelp/footprint.png b/graphics/pokemon/skrelp/footprint.png index 4320ad16da4a..2449369fd6b8 100644 Binary files a/graphics/pokemon/skrelp/footprint.png and b/graphics/pokemon/skrelp/footprint.png differ diff --git a/graphics/pokemon/skrelp/front.png b/graphics/pokemon/skrelp/front.png deleted file mode 100644 index 91991a86cdb6..000000000000 Binary files a/graphics/pokemon/skrelp/front.png and /dev/null differ diff --git a/graphics/pokemon/skuntank/footprint.png b/graphics/pokemon/skuntank/footprint.png index ae5f11111204..859fbc883620 100644 Binary files a/graphics/pokemon/skuntank/footprint.png and b/graphics/pokemon/skuntank/footprint.png differ diff --git a/graphics/pokemon/skuntank/front.png b/graphics/pokemon/skuntank/front.png deleted file mode 100644 index d188535e26b7..000000000000 Binary files a/graphics/pokemon/skuntank/front.png and /dev/null differ diff --git a/graphics/pokemon/skwovet/footprint.png b/graphics/pokemon/skwovet/footprint.png index d60ef0d6b6cf..2e51e1df7bb9 100644 Binary files a/graphics/pokemon/skwovet/footprint.png and b/graphics/pokemon/skwovet/footprint.png differ diff --git a/graphics/pokemon/slaking/footprint.png b/graphics/pokemon/slaking/footprint.png index c2c20413baa9..68e966d7d542 100644 Binary files a/graphics/pokemon/slaking/footprint.png and b/graphics/pokemon/slaking/footprint.png differ diff --git a/graphics/pokemon/slaking/front.png b/graphics/pokemon/slaking/front.png deleted file mode 100644 index bc7ed93b02e7..000000000000 Binary files a/graphics/pokemon/slaking/front.png and /dev/null differ diff --git a/graphics/pokemon/slakoth/footprint.png b/graphics/pokemon/slakoth/footprint.png index ec258f41b022..8aedbd79ed14 100644 Binary files a/graphics/pokemon/slakoth/footprint.png and b/graphics/pokemon/slakoth/footprint.png differ diff --git a/graphics/pokemon/slakoth/front.png b/graphics/pokemon/slakoth/front.png deleted file mode 100644 index e40b34fb2761..000000000000 Binary files a/graphics/pokemon/slakoth/front.png and /dev/null differ diff --git a/graphics/pokemon/slakoth/icon.png b/graphics/pokemon/slakoth/icon.png index 3b408571f1fe..e11811efe10b 100644 Binary files a/graphics/pokemon/slakoth/icon.png and b/graphics/pokemon/slakoth/icon.png differ diff --git a/graphics/pokemon/sliggoo/footprint.png b/graphics/pokemon/sliggoo/footprint.png index f709e0796e03..2449369fd6b8 100644 Binary files a/graphics/pokemon/sliggoo/footprint.png and b/graphics/pokemon/sliggoo/footprint.png differ diff --git a/graphics/pokemon/sliggoo/front.png b/graphics/pokemon/sliggoo/front.png deleted file mode 100644 index 1a7f094cd464..000000000000 Binary files a/graphics/pokemon/sliggoo/front.png and /dev/null differ diff --git a/graphics/pokemon/sliggoo/hisuian/back.png b/graphics/pokemon/sliggoo/hisuian/back.png old mode 100644 new mode 100755 index ad4289b1b2c3..276ac9915232 Binary files a/graphics/pokemon/sliggoo/hisuian/back.png and b/graphics/pokemon/sliggoo/hisuian/back.png differ diff --git a/graphics/pokemon/sliggoo/hisuian/front.png b/graphics/pokemon/sliggoo/hisuian/front.png old mode 100644 new mode 100755 index 81322c48564d..3b9edc41cfba Binary files a/graphics/pokemon/sliggoo/hisuian/front.png and b/graphics/pokemon/sliggoo/hisuian/front.png differ diff --git a/graphics/pokemon/sliggoo/hisuian/normal.pal b/graphics/pokemon/sliggoo/hisuian/normal.pal old mode 100644 new mode 100755 index 5f3e5ae0cd02..13ef27a9ccac --- a/graphics/pokemon/sliggoo/hisuian/normal.pal +++ b/graphics/pokemon/sliggoo/hisuian/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -232 224 176 -128 96 112 -240 240 240 -216 192 208 -168 152 168 -8 8 8 -136 136 136 -72 152 80 +152 208 160 +96 72 88 +192 160 192 +16 16 16 +232 216 232 +144 120 136 +64 108 96 +96 156 144 +128 128 128 +72 76 72 +168 168 168 200 200 200 -64 64 64 -88 200 80 -176 176 176 -168 152 192 -64 56 88 -136 104 168 -104 96 104 +128 92 152 +168 128 192 +88 48 96 +0 0 0 diff --git a/graphics/pokemon/sliggoo/hisuian/shiny.pal b/graphics/pokemon/sliggoo/hisuian/shiny.pal old mode 100644 new mode 100755 index 9cccd5d39125..69d4e4fbe1c6 --- a/graphics/pokemon/sliggoo/hisuian/shiny.pal +++ b/graphics/pokemon/sliggoo/hisuian/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -232 224 176 -128 96 112 -240 240 240 -216 192 208 -168 152 168 -8 8 8 -120 104 56 -72 152 80 -200 176 88 -56 40 32 -88 200 80 -160 136 72 -168 152 192 -64 56 88 -136 104 168 -104 96 104 +152 208 160 +101 73 92 +197 162 197 +16 16 16 +237 218 237 +144 120 136 +134 124 71 +170 171 96 +134 97 62 +72 76 72 +181 153 103 +200 200 200 +128 92 152 +168 128 192 +88 48 96 +0 0 0 diff --git a/graphics/pokemon/slowbro/footprint.png b/graphics/pokemon/slowbro/footprint.png index c4f82e40585e..0bcb0789c422 100644 Binary files a/graphics/pokemon/slowbro/footprint.png and b/graphics/pokemon/slowbro/footprint.png differ diff --git a/graphics/pokemon/slowbro/front.png b/graphics/pokemon/slowbro/front.png deleted file mode 100644 index c0d69e069dbc..000000000000 Binary files a/graphics/pokemon/slowbro/front.png and /dev/null differ diff --git a/graphics/pokemon/slowking/footprint.png b/graphics/pokemon/slowking/footprint.png index 52593624a24e..e85d1307c4d8 100644 Binary files a/graphics/pokemon/slowking/footprint.png and b/graphics/pokemon/slowking/footprint.png differ diff --git a/graphics/pokemon/slowking/front.png b/graphics/pokemon/slowking/front.png deleted file mode 100644 index d9af555c2570..000000000000 Binary files a/graphics/pokemon/slowking/front.png and /dev/null differ diff --git a/graphics/pokemon/slowking/icon.png b/graphics/pokemon/slowking/icon.png index c4d5bdbe7aae..8527e8982de1 100644 Binary files a/graphics/pokemon/slowking/icon.png and b/graphics/pokemon/slowking/icon.png differ diff --git a/graphics/pokemon/slowpoke/footprint.png b/graphics/pokemon/slowpoke/footprint.png index a66ebbc32e0f..f3330b57f658 100644 Binary files a/graphics/pokemon/slowpoke/footprint.png and b/graphics/pokemon/slowpoke/footprint.png differ diff --git a/graphics/pokemon/slowpoke/front.png b/graphics/pokemon/slowpoke/front.png deleted file mode 100644 index aa53f9c55500..000000000000 Binary files a/graphics/pokemon/slowpoke/front.png and /dev/null differ diff --git a/graphics/pokemon/slugma/footprint.png b/graphics/pokemon/slugma/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/slugma/footprint.png and b/graphics/pokemon/slugma/footprint.png differ diff --git a/graphics/pokemon/slugma/front.png b/graphics/pokemon/slugma/front.png deleted file mode 100644 index a64ce0042ae8..000000000000 Binary files a/graphics/pokemon/slugma/front.png and /dev/null differ diff --git a/graphics/pokemon/slurpuff/footprint.png b/graphics/pokemon/slurpuff/footprint.png index 4d9cf0915999..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/slurpuff/footprint.png and b/graphics/pokemon/slurpuff/footprint.png differ diff --git a/graphics/pokemon/slurpuff/front.png b/graphics/pokemon/slurpuff/front.png deleted file mode 100644 index fab831b363ca..000000000000 Binary files a/graphics/pokemon/slurpuff/front.png and /dev/null differ diff --git a/graphics/pokemon/smeargle/footprint.png b/graphics/pokemon/smeargle/footprint.png index b946130cdf0b..8521b26fea8f 100644 Binary files a/graphics/pokemon/smeargle/footprint.png and b/graphics/pokemon/smeargle/footprint.png differ diff --git a/graphics/pokemon/smeargle/front.png b/graphics/pokemon/smeargle/front.png deleted file mode 100644 index 1804f2514c01..000000000000 Binary files a/graphics/pokemon/smeargle/front.png and /dev/null differ diff --git a/graphics/pokemon/smoochum/footprint.png b/graphics/pokemon/smoochum/footprint.png index e901d9334cf4..15461e49a3b7 100644 Binary files a/graphics/pokemon/smoochum/footprint.png and b/graphics/pokemon/smoochum/footprint.png differ diff --git a/graphics/pokemon/smoochum/front.png b/graphics/pokemon/smoochum/front.png deleted file mode 100644 index 6f492748097e..000000000000 Binary files a/graphics/pokemon/smoochum/front.png and /dev/null differ diff --git a/graphics/pokemon/sneasel/footprint.png b/graphics/pokemon/sneasel/footprint.png index 2159ef3dcfaa..c3472d32a684 100644 Binary files a/graphics/pokemon/sneasel/footprint.png and b/graphics/pokemon/sneasel/footprint.png differ diff --git a/graphics/pokemon/sneasel/front.png b/graphics/pokemon/sneasel/front.png deleted file mode 100644 index d422fe52e447..000000000000 Binary files a/graphics/pokemon/sneasel/front.png and /dev/null differ diff --git a/graphics/pokemon/sneasel/hisuian/back.png b/graphics/pokemon/sneasel/hisuian/back.png old mode 100644 new mode 100755 index ea1be20c8515..b37d22011839 Binary files a/graphics/pokemon/sneasel/hisuian/back.png and b/graphics/pokemon/sneasel/hisuian/back.png differ diff --git a/graphics/pokemon/sneasel/hisuian/front.png b/graphics/pokemon/sneasel/hisuian/front.png old mode 100644 new mode 100755 index 75e3872b15cc..75f42547e2b1 Binary files a/graphics/pokemon/sneasel/hisuian/front.png and b/graphics/pokemon/sneasel/hisuian/front.png differ diff --git a/graphics/pokemon/sneasel/hisuian/normal.pal b/graphics/pokemon/sneasel/hisuian/normal.pal old mode 100644 new mode 100755 index 2e28acaaca50..47e254a81b62 --- a/graphics/pokemon/sneasel/hisuian/normal.pal +++ b/graphics/pokemon/sneasel/hisuian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 88 176 -80 48 104 -160 120 216 -56 40 64 -152 152 160 +192 136 8 +152 152 200 +72 72 72 16 16 16 -216 216 224 -184 184 192 -128 96 160 -160 120 56 -232 192 48 -88 56 120 -240 240 248 -120 120 120 -232 56 64 +192 40 112 +248 220 120 +112 76 160 +40 32 72 +216 216 240 +184 188 192 +120 108 160 +84 74 128 +240 244 248 +80 52 120 +144 108 184 diff --git a/graphics/pokemon/sneasel/hisuian/shiny.pal b/graphics/pokemon/sneasel/hisuian/shiny.pal old mode 100644 new mode 100755 index b57227c93023..7d598844947f --- a/graphics/pokemon/sneasel/hisuian/shiny.pal +++ b/graphics/pokemon/sneasel/hisuian/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -248 144 40 -168 72 16 -248 200 80 -32 24 32 -64 88 80 +28 136 168 +77 106 105 +72 72 72 16 16 16 -112 160 120 -88 128 104 -80 72 88 -64 112 224 -136 160 240 -48 40 48 -240 240 248 -120 120 120 -72 176 96 +222 222 71 +121 197 217 +204 155 40 +40 32 72 +117 149 149 +184 188 192 +84 75 107 +64 58 80 +240 244 248 +119 92 49 +235 201 84 diff --git a/graphics/pokemon/sneasler/back.png b/graphics/pokemon/sneasler/back.png new file mode 100755 index 000000000000..b39320894ca8 Binary files /dev/null and b/graphics/pokemon/sneasler/back.png differ diff --git a/graphics/pokemon/sneasler/front.png b/graphics/pokemon/sneasler/front.png new file mode 100755 index 000000000000..67159da6bc97 Binary files /dev/null and b/graphics/pokemon/sneasler/front.png differ diff --git a/graphics/pokemon/sneasler/normal.pal b/graphics/pokemon/sneasler/normal.pal new file mode 100755 index 000000000000..5cc13df59221 --- /dev/null +++ b/graphics/pokemon/sneasler/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 213 164 +49 41 49 +74 74 98 +74 57 82 +123 139 180 +16 16 16 +164 189 222 +164 123 57 +123 98 189 +238 197 49 +255 255 255 +255 32 65 +90 65 131 +255 41 41 +189 41 41 +139 24 24 diff --git a/graphics/pokemon/sneasler/shiny.pal b/graphics/pokemon/sneasler/shiny.pal new file mode 100755 index 000000000000..b3bc5103e3c1 --- /dev/null +++ b/graphics/pokemon/sneasler/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 213 164 +49 41 49 +106 90 41 +74 57 82 +156 148 82 +16 16 16 +238 213 131 +74 148 156 +106 74 98 +123 213 230 +255 255 255 +90 172 32 +74 49 74 +246 189 8 +213 148 24 +213 148 24 diff --git a/graphics/pokemon/snivy/footprint.png b/graphics/pokemon/snivy/footprint.png index bffe242b8c64..9a2e338014fc 100644 Binary files a/graphics/pokemon/snivy/footprint.png and b/graphics/pokemon/snivy/footprint.png differ diff --git a/graphics/pokemon/snivy/front.png b/graphics/pokemon/snivy/front.png deleted file mode 100644 index 040a32f832c3..000000000000 Binary files a/graphics/pokemon/snivy/front.png and /dev/null differ diff --git a/graphics/pokemon/snom/footprint.png b/graphics/pokemon/snom/footprint.png index 077d6677346b..2449369fd6b8 100644 Binary files a/graphics/pokemon/snom/footprint.png and b/graphics/pokemon/snom/footprint.png differ diff --git a/graphics/pokemon/snorlax/footprint.png b/graphics/pokemon/snorlax/footprint.png index d3d25c4bc806..d7f605b5e00d 100644 Binary files a/graphics/pokemon/snorlax/footprint.png and b/graphics/pokemon/snorlax/footprint.png differ diff --git a/graphics/pokemon/snorlax/front.png b/graphics/pokemon/snorlax/front.png deleted file mode 100644 index 62b04645a558..000000000000 Binary files a/graphics/pokemon/snorlax/front.png and /dev/null differ diff --git a/graphics/pokemon/snorlax/icon.png b/graphics/pokemon/snorlax/icon.png index efb140e8637f..36aeeabee2f6 100644 Binary files a/graphics/pokemon/snorlax/icon.png and b/graphics/pokemon/snorlax/icon.png differ diff --git a/graphics/pokemon/snorunt/footprint.png b/graphics/pokemon/snorunt/footprint.png index 14277b50686d..31a4ac394f59 100644 Binary files a/graphics/pokemon/snorunt/footprint.png and b/graphics/pokemon/snorunt/footprint.png differ diff --git a/graphics/pokemon/snorunt/front.png b/graphics/pokemon/snorunt/front.png deleted file mode 100644 index 02c9560981d5..000000000000 Binary files a/graphics/pokemon/snorunt/front.png and /dev/null differ diff --git a/graphics/pokemon/snover/footprint.png b/graphics/pokemon/snover/footprint.png index 25c418faecef..43231ba10da0 100644 Binary files a/graphics/pokemon/snover/footprint.png and b/graphics/pokemon/snover/footprint.png differ diff --git a/graphics/pokemon/snover/front.png b/graphics/pokemon/snover/front.png deleted file mode 100644 index 9dff7b2a51dd..000000000000 Binary files a/graphics/pokemon/snover/front.png and /dev/null differ diff --git a/graphics/pokemon/snubbull/back.png b/graphics/pokemon/snubbull/back.png index 3cd368840523..fa403eba3e7e 100644 Binary files a/graphics/pokemon/snubbull/back.png and b/graphics/pokemon/snubbull/back.png differ diff --git a/graphics/pokemon/snubbull/footprint.png b/graphics/pokemon/snubbull/footprint.png index 443847cdd4ce..b7eb2028c898 100644 Binary files a/graphics/pokemon/snubbull/footprint.png and b/graphics/pokemon/snubbull/footprint.png differ diff --git a/graphics/pokemon/snubbull/front.png b/graphics/pokemon/snubbull/front.png deleted file mode 100644 index fa6456d891f2..000000000000 Binary files a/graphics/pokemon/snubbull/front.png and /dev/null differ diff --git a/graphics/pokemon/sobble/footprint.png b/graphics/pokemon/sobble/footprint.png index 7cca4a4c55a4..1ef1bf2f9f8d 100644 Binary files a/graphics/pokemon/sobble/footprint.png and b/graphics/pokemon/sobble/footprint.png differ diff --git a/graphics/pokemon/solgaleo/footprint.png b/graphics/pokemon/solgaleo/footprint.png index 4ad6b8551818..2b0b63056365 100644 Binary files a/graphics/pokemon/solgaleo/footprint.png and b/graphics/pokemon/solgaleo/footprint.png differ diff --git a/graphics/pokemon/solosis/footprint.png b/graphics/pokemon/solosis/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/solosis/footprint.png and b/graphics/pokemon/solosis/footprint.png differ diff --git a/graphics/pokemon/solosis/front.png b/graphics/pokemon/solosis/front.png deleted file mode 100644 index 6be1e5a0685a..000000000000 Binary files a/graphics/pokemon/solosis/front.png and /dev/null differ diff --git a/graphics/pokemon/solrock/footprint.png b/graphics/pokemon/solrock/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/solrock/footprint.png and b/graphics/pokemon/solrock/footprint.png differ diff --git a/graphics/pokemon/solrock/front.png b/graphics/pokemon/solrock/front.png deleted file mode 100644 index 24336f16be3a..000000000000 Binary files a/graphics/pokemon/solrock/front.png and /dev/null differ diff --git a/graphics/pokemon/solrock/icon.png b/graphics/pokemon/solrock/icon.png index 4a0410cb55d9..07a416c28324 100644 Binary files a/graphics/pokemon/solrock/icon.png and b/graphics/pokemon/solrock/icon.png differ diff --git a/graphics/pokemon/spearow/footprint.png b/graphics/pokemon/spearow/footprint.png index 6fe6e42824fd..3422576beca8 100644 Binary files a/graphics/pokemon/spearow/footprint.png and b/graphics/pokemon/spearow/footprint.png differ diff --git a/graphics/pokemon/spearow/front.png b/graphics/pokemon/spearow/front.png deleted file mode 100644 index 052422e9ad18..000000000000 Binary files a/graphics/pokemon/spearow/front.png and /dev/null differ diff --git a/graphics/pokemon/spectrier/footprint.png b/graphics/pokemon/spectrier/footprint.png index 9383b36a75eb..ffa2c80a9f23 100644 Binary files a/graphics/pokemon/spectrier/footprint.png and b/graphics/pokemon/spectrier/footprint.png differ diff --git a/graphics/pokemon/spewpa/footprint.png b/graphics/pokemon/spewpa/footprint.png index 3d8347d75e67..2449369fd6b8 100644 Binary files a/graphics/pokemon/spewpa/footprint.png and b/graphics/pokemon/spewpa/footprint.png differ diff --git a/graphics/pokemon/spewpa/front.png b/graphics/pokemon/spewpa/front.png deleted file mode 100644 index 4f6a6269efeb..000000000000 Binary files a/graphics/pokemon/spewpa/front.png and /dev/null differ diff --git a/graphics/pokemon/spheal/back.png b/graphics/pokemon/spheal/back.png index e859b980fd92..5c23636edef6 100644 Binary files a/graphics/pokemon/spheal/back.png and b/graphics/pokemon/spheal/back.png differ diff --git a/graphics/pokemon/spheal/footprint.png b/graphics/pokemon/spheal/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/spheal/footprint.png and b/graphics/pokemon/spheal/footprint.png differ diff --git a/graphics/pokemon/spheal/front.png b/graphics/pokemon/spheal/front.png deleted file mode 100644 index 2063a772bd86..000000000000 Binary files a/graphics/pokemon/spheal/front.png and /dev/null differ diff --git a/graphics/pokemon/spinarak/anim_front.png b/graphics/pokemon/spinarak/anim_front.png index d5837da994cc..0e2d525c4d70 100644 Binary files a/graphics/pokemon/spinarak/anim_front.png and b/graphics/pokemon/spinarak/anim_front.png differ diff --git a/graphics/pokemon/spinarak/footprint.png b/graphics/pokemon/spinarak/footprint.png index 6965dbe60faf..a9b0e33c2899 100644 Binary files a/graphics/pokemon/spinarak/footprint.png and b/graphics/pokemon/spinarak/footprint.png differ diff --git a/graphics/pokemon/spinarak/front.png b/graphics/pokemon/spinarak/front.png deleted file mode 100644 index 36c6e8f60d4b..000000000000 Binary files a/graphics/pokemon/spinarak/front.png and /dev/null differ diff --git a/graphics/pokemon/spinarak/normal.pal b/graphics/pokemon/spinarak/normal.pal index 22db1c2ce942..ccdc73a40d28 100644 --- a/graphics/pokemon/spinarak/normal.pal +++ b/graphics/pokemon/spinarak/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 0 176 232 16 16 16 48 72 16 -40 96 96 +16 16 16 136 224 48 168 240 96 80 176 104 96 152 160 -112 88 32 -192 176 24 -72 72 72 +131 106 41 +197 180 24 +106 106 115 248 248 248 -248 224 72 -200 192 192 -144 48 40 -248 88 72 +255 230 74 +189 197 197 +123 49 65 +238 90 90 diff --git a/graphics/pokemon/spinarak/shiny.pal b/graphics/pokemon/spinarak/shiny.pal index 970ece98de54..9c966c9e6e8d 100644 --- a/graphics/pokemon/spinarak/shiny.pal +++ b/graphics/pokemon/spinarak/shiny.pal @@ -4,7 +4,7 @@ JASC-PAL 168 224 24 16 16 16 40 56 104 -32 56 96 +16 16 16 136 176 232 176 216 248 104 128 184 diff --git a/graphics/pokemon/spinda/footprint.png b/graphics/pokemon/spinda/footprint.png index 7be943a892aa..688e1ec1e3de 100644 Binary files a/graphics/pokemon/spinda/footprint.png and b/graphics/pokemon/spinda/footprint.png differ diff --git a/graphics/pokemon/spinda/front.png b/graphics/pokemon/spinda/front.png deleted file mode 100644 index 4d298366f020..000000000000 Binary files a/graphics/pokemon/spinda/front.png and /dev/null differ diff --git a/graphics/pokemon/spiritomb/footprint.png b/graphics/pokemon/spiritomb/footprint.png index 48ca15ef64be..2449369fd6b8 100644 Binary files a/graphics/pokemon/spiritomb/footprint.png and b/graphics/pokemon/spiritomb/footprint.png differ diff --git a/graphics/pokemon/spiritomb/front.png b/graphics/pokemon/spiritomb/front.png deleted file mode 100644 index bcfd704f6363..000000000000 Binary files a/graphics/pokemon/spiritomb/front.png and /dev/null differ diff --git a/graphics/pokemon/spoink/footprint.png b/graphics/pokemon/spoink/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/spoink/footprint.png and b/graphics/pokemon/spoink/footprint.png differ diff --git a/graphics/pokemon/spoink/front.png b/graphics/pokemon/spoink/front.png deleted file mode 100644 index 4d5e236fe3fd..000000000000 Binary files a/graphics/pokemon/spoink/front.png and /dev/null differ diff --git a/graphics/pokemon/spritzee/footprint.png b/graphics/pokemon/spritzee/footprint.png index 5fa3920400de..a9b0e33c2899 100644 Binary files a/graphics/pokemon/spritzee/footprint.png and b/graphics/pokemon/spritzee/footprint.png differ diff --git a/graphics/pokemon/spritzee/front.png b/graphics/pokemon/spritzee/front.png deleted file mode 100644 index 76f1554b856c..000000000000 Binary files a/graphics/pokemon/spritzee/front.png and /dev/null differ diff --git a/graphics/pokemon/squirtle/footprint.png b/graphics/pokemon/squirtle/footprint.png index 696cd6d42183..82e01756ce29 100644 Binary files a/graphics/pokemon/squirtle/footprint.png and b/graphics/pokemon/squirtle/footprint.png differ diff --git a/graphics/pokemon/squirtle/front.png b/graphics/pokemon/squirtle/front.png deleted file mode 100644 index 2148e227fdcc..000000000000 Binary files a/graphics/pokemon/squirtle/front.png and /dev/null differ diff --git a/graphics/pokemon/stakataka/footprint.png b/graphics/pokemon/stakataka/footprint.png index 70757fc3f098..2449369fd6b8 100644 Binary files a/graphics/pokemon/stakataka/footprint.png and b/graphics/pokemon/stakataka/footprint.png differ diff --git a/graphics/pokemon/stantler/footprint.png b/graphics/pokemon/stantler/footprint.png index 7f2b0f5325ae..62e2eb062db4 100644 Binary files a/graphics/pokemon/stantler/footprint.png and b/graphics/pokemon/stantler/footprint.png differ diff --git a/graphics/pokemon/stantler/front.png b/graphics/pokemon/stantler/front.png deleted file mode 100644 index 3c4e0b08f806..000000000000 Binary files a/graphics/pokemon/stantler/front.png and /dev/null differ diff --git a/graphics/pokemon/staraptor/footprint.png b/graphics/pokemon/staraptor/footprint.png index 2ac19fbcaeef..a678ebcdba98 100644 Binary files a/graphics/pokemon/staraptor/footprint.png and b/graphics/pokemon/staraptor/footprint.png differ diff --git a/graphics/pokemon/staraptor/front.png b/graphics/pokemon/staraptor/front.png deleted file mode 100644 index dbb5a2f9592f..000000000000 Binary files a/graphics/pokemon/staraptor/front.png and /dev/null differ diff --git a/graphics/pokemon/staraptor/icon.png b/graphics/pokemon/staraptor/icon.png index 1116f07df04b..ecad4e21bf6a 100644 Binary files a/graphics/pokemon/staraptor/icon.png and b/graphics/pokemon/staraptor/icon.png differ diff --git a/graphics/pokemon/staravia/back.png b/graphics/pokemon/staravia/back.png index 6d24ce4126a1..672f9ca5605e 100644 Binary files a/graphics/pokemon/staravia/back.png and b/graphics/pokemon/staravia/back.png differ diff --git a/graphics/pokemon/staravia/footprint.png b/graphics/pokemon/staravia/footprint.png index e62001058639..91c824e74120 100644 Binary files a/graphics/pokemon/staravia/footprint.png and b/graphics/pokemon/staravia/footprint.png differ diff --git a/graphics/pokemon/staravia/front.png b/graphics/pokemon/staravia/front.png deleted file mode 100644 index bd7c8ab4f143..000000000000 Binary files a/graphics/pokemon/staravia/front.png and /dev/null differ diff --git a/graphics/pokemon/staravia/icon.png b/graphics/pokemon/staravia/icon.png index 468f38dd2f34..8fcb75d87903 100644 Binary files a/graphics/pokemon/staravia/icon.png and b/graphics/pokemon/staravia/icon.png differ diff --git a/graphics/pokemon/starly/footprint.png b/graphics/pokemon/starly/footprint.png index 1dec150e763e..3c6a106617a8 100644 Binary files a/graphics/pokemon/starly/footprint.png and b/graphics/pokemon/starly/footprint.png differ diff --git a/graphics/pokemon/starly/front.png b/graphics/pokemon/starly/front.png deleted file mode 100644 index c188a7ff5a01..000000000000 Binary files a/graphics/pokemon/starly/front.png and /dev/null differ diff --git a/graphics/pokemon/starmie/footprint.png b/graphics/pokemon/starmie/footprint.png index c1c0058e74e9..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/starmie/footprint.png and b/graphics/pokemon/starmie/footprint.png differ diff --git a/graphics/pokemon/starmie/front.png b/graphics/pokemon/starmie/front.png deleted file mode 100644 index b3c4861d7301..000000000000 Binary files a/graphics/pokemon/starmie/front.png and /dev/null differ diff --git a/graphics/pokemon/staryu/footprint.png b/graphics/pokemon/staryu/footprint.png index c1c0058e74e9..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/staryu/footprint.png and b/graphics/pokemon/staryu/footprint.png differ diff --git a/graphics/pokemon/staryu/front.png b/graphics/pokemon/staryu/front.png deleted file mode 100644 index 6739b8cb7024..000000000000 Binary files a/graphics/pokemon/staryu/front.png and /dev/null differ diff --git a/graphics/pokemon/steelix/footprint.png b/graphics/pokemon/steelix/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/steelix/footprint.png and b/graphics/pokemon/steelix/footprint.png differ diff --git a/graphics/pokemon/steelix/front.png b/graphics/pokemon/steelix/front.png deleted file mode 100644 index a00376baf4c1..000000000000 Binary files a/graphics/pokemon/steelix/front.png and /dev/null differ diff --git a/graphics/pokemon/steelix/icon.png b/graphics/pokemon/steelix/icon.png index 2cceec69a9d8..defe78d7d6f5 100644 Binary files a/graphics/pokemon/steelix/icon.png and b/graphics/pokemon/steelix/icon.png differ diff --git a/graphics/pokemon/steenee/footprint.png b/graphics/pokemon/steenee/footprint.png index a699802b1df7..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/steenee/footprint.png and b/graphics/pokemon/steenee/footprint.png differ diff --git a/graphics/pokemon/stonjourner/footprint.png b/graphics/pokemon/stonjourner/footprint.png index 15adc25514d4..b26759031de8 100644 Binary files a/graphics/pokemon/stonjourner/footprint.png and b/graphics/pokemon/stonjourner/footprint.png differ diff --git a/graphics/pokemon/stoutland/footprint.png b/graphics/pokemon/stoutland/footprint.png index a0709ec8534d..0855dd35c93e 100644 Binary files a/graphics/pokemon/stoutland/footprint.png and b/graphics/pokemon/stoutland/footprint.png differ diff --git a/graphics/pokemon/stoutland/front.png b/graphics/pokemon/stoutland/front.png deleted file mode 100644 index bd5570182730..000000000000 Binary files a/graphics/pokemon/stoutland/front.png and /dev/null differ diff --git a/graphics/pokemon/stufful/footprint.png b/graphics/pokemon/stufful/footprint.png index 1e41dad790b9..9b9dad7eefbf 100644 Binary files a/graphics/pokemon/stufful/footprint.png and b/graphics/pokemon/stufful/footprint.png differ diff --git a/graphics/pokemon/stunfisk/footprint.png b/graphics/pokemon/stunfisk/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/stunfisk/footprint.png and b/graphics/pokemon/stunfisk/footprint.png differ diff --git a/graphics/pokemon/stunfisk/front.png b/graphics/pokemon/stunfisk/front.png deleted file mode 100644 index 4e46cfa8f64d..000000000000 Binary files a/graphics/pokemon/stunfisk/front.png and /dev/null differ diff --git a/graphics/pokemon/stunky/footprint.png b/graphics/pokemon/stunky/footprint.png index b39437ae3d02..ca513495203c 100644 Binary files a/graphics/pokemon/stunky/footprint.png and b/graphics/pokemon/stunky/footprint.png differ diff --git a/graphics/pokemon/stunky/front.png b/graphics/pokemon/stunky/front.png deleted file mode 100644 index da228e831ad1..000000000000 Binary files a/graphics/pokemon/stunky/front.png and /dev/null differ diff --git a/graphics/pokemon/sudowoodo/footprint.png b/graphics/pokemon/sudowoodo/footprint.png index 4ed751a79427..560ef5e60edb 100644 Binary files a/graphics/pokemon/sudowoodo/footprint.png and b/graphics/pokemon/sudowoodo/footprint.png differ diff --git a/graphics/pokemon/sudowoodo/front.png b/graphics/pokemon/sudowoodo/front.png deleted file mode 100644 index df699a5c7cc7..000000000000 Binary files a/graphics/pokemon/sudowoodo/front.png and /dev/null differ diff --git a/graphics/pokemon/suicune/footprint.png b/graphics/pokemon/suicune/footprint.png index 946c35dd0efa..57258fb0c328 100644 Binary files a/graphics/pokemon/suicune/footprint.png and b/graphics/pokemon/suicune/footprint.png differ diff --git a/graphics/pokemon/suicune/front.png b/graphics/pokemon/suicune/front.png deleted file mode 100644 index b1ff2a84191d..000000000000 Binary files a/graphics/pokemon/suicune/front.png and /dev/null differ diff --git a/graphics/pokemon/suicune/icon.png b/graphics/pokemon/suicune/icon.png index 48a3d97fb465..fbaff5a8cd76 100644 Binary files a/graphics/pokemon/suicune/icon.png and b/graphics/pokemon/suicune/icon.png differ diff --git a/graphics/pokemon/sunflora/footprint.png b/graphics/pokemon/sunflora/footprint.png index f6de3ca9f5a0..fbc42e7a60a1 100644 Binary files a/graphics/pokemon/sunflora/footprint.png and b/graphics/pokemon/sunflora/footprint.png differ diff --git a/graphics/pokemon/sunflora/front.png b/graphics/pokemon/sunflora/front.png deleted file mode 100644 index ebdac3a02bb0..000000000000 Binary files a/graphics/pokemon/sunflora/front.png and /dev/null differ diff --git a/graphics/pokemon/sunkern/footprint.png b/graphics/pokemon/sunkern/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/sunkern/footprint.png and b/graphics/pokemon/sunkern/footprint.png differ diff --git a/graphics/pokemon/sunkern/front.png b/graphics/pokemon/sunkern/front.png deleted file mode 100644 index 72c2510ce02a..000000000000 Binary files a/graphics/pokemon/sunkern/front.png and /dev/null differ diff --git a/graphics/pokemon/surskit/footprint.png b/graphics/pokemon/surskit/footprint.png index e4945976fc4d..bbaf5c68cd82 100644 Binary files a/graphics/pokemon/surskit/footprint.png and b/graphics/pokemon/surskit/footprint.png differ diff --git a/graphics/pokemon/surskit/front.png b/graphics/pokemon/surskit/front.png deleted file mode 100644 index 32508e31f5b0..000000000000 Binary files a/graphics/pokemon/surskit/front.png and /dev/null differ diff --git a/graphics/pokemon/swablu/back.png b/graphics/pokemon/swablu/back.png index 2bab92da674d..e146b2c0c5ac 100644 Binary files a/graphics/pokemon/swablu/back.png and b/graphics/pokemon/swablu/back.png differ diff --git a/graphics/pokemon/swablu/footprint.png b/graphics/pokemon/swablu/footprint.png index 7e71113c3aff..747e2caaa8b8 100644 Binary files a/graphics/pokemon/swablu/footprint.png and b/graphics/pokemon/swablu/footprint.png differ diff --git a/graphics/pokemon/swablu/front.png b/graphics/pokemon/swablu/front.png deleted file mode 100644 index b7d58d06b0e3..000000000000 Binary files a/graphics/pokemon/swablu/front.png and /dev/null differ diff --git a/graphics/pokemon/swablu/icon.png b/graphics/pokemon/swablu/icon.png index c1aa25e99642..46be1f4033f1 100644 Binary files a/graphics/pokemon/swablu/icon.png and b/graphics/pokemon/swablu/icon.png differ diff --git a/graphics/pokemon/swadloon/footprint.png b/graphics/pokemon/swadloon/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/swadloon/footprint.png and b/graphics/pokemon/swadloon/footprint.png differ diff --git a/graphics/pokemon/swadloon/front.png b/graphics/pokemon/swadloon/front.png deleted file mode 100644 index 1b7f74db5f76..000000000000 Binary files a/graphics/pokemon/swadloon/front.png and /dev/null differ diff --git a/graphics/pokemon/swalot/back.png b/graphics/pokemon/swalot/back.png index 487b4f88845b..ec9fdaef2c9d 100644 Binary files a/graphics/pokemon/swalot/back.png and b/graphics/pokemon/swalot/back.png differ diff --git a/graphics/pokemon/swalot/footprint.png b/graphics/pokemon/swalot/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/swalot/footprint.png and b/graphics/pokemon/swalot/footprint.png differ diff --git a/graphics/pokemon/swalot/front.png b/graphics/pokemon/swalot/front.png deleted file mode 100644 index 6ae76a4f36d8..000000000000 Binary files a/graphics/pokemon/swalot/front.png and /dev/null differ diff --git a/graphics/pokemon/swalot/icon.png b/graphics/pokemon/swalot/icon.png index 3611b27feea1..09f7162d2a33 100644 Binary files a/graphics/pokemon/swalot/icon.png and b/graphics/pokemon/swalot/icon.png differ diff --git a/graphics/pokemon/swampert/footprint.png b/graphics/pokemon/swampert/footprint.png index ed223e641de4..65f7d7e67cfa 100644 Binary files a/graphics/pokemon/swampert/footprint.png and b/graphics/pokemon/swampert/footprint.png differ diff --git a/graphics/pokemon/swampert/front.png b/graphics/pokemon/swampert/front.png deleted file mode 100644 index 7a86a418d8d1..000000000000 Binary files a/graphics/pokemon/swampert/front.png and /dev/null differ diff --git a/graphics/pokemon/swanna/footprint.png b/graphics/pokemon/swanna/footprint.png index faf4f9f45416..0662ed64acc3 100644 Binary files a/graphics/pokemon/swanna/footprint.png and b/graphics/pokemon/swanna/footprint.png differ diff --git a/graphics/pokemon/swanna/front.png b/graphics/pokemon/swanna/front.png deleted file mode 100644 index e1b58cf394ce..000000000000 Binary files a/graphics/pokemon/swanna/front.png and /dev/null differ diff --git a/graphics/pokemon/swellow/footprint.png b/graphics/pokemon/swellow/footprint.png index f44a71c29b41..9757114c0261 100644 Binary files a/graphics/pokemon/swellow/footprint.png and b/graphics/pokemon/swellow/footprint.png differ diff --git a/graphics/pokemon/swellow/front.png b/graphics/pokemon/swellow/front.png deleted file mode 100644 index 32345b406635..000000000000 Binary files a/graphics/pokemon/swellow/front.png and /dev/null differ diff --git a/graphics/pokemon/swinub/footprint.png b/graphics/pokemon/swinub/footprint.png index fb56709ec6e9..c1573fe84acd 100644 Binary files a/graphics/pokemon/swinub/footprint.png and b/graphics/pokemon/swinub/footprint.png differ diff --git a/graphics/pokemon/swinub/front.png b/graphics/pokemon/swinub/front.png deleted file mode 100644 index ec191500981b..000000000000 Binary files a/graphics/pokemon/swinub/front.png and /dev/null differ diff --git a/graphics/pokemon/swirlix/footprint.png b/graphics/pokemon/swirlix/footprint.png index 5fa0c68a561f..2449369fd6b8 100644 Binary files a/graphics/pokemon/swirlix/footprint.png and b/graphics/pokemon/swirlix/footprint.png differ diff --git a/graphics/pokemon/swirlix/front.png b/graphics/pokemon/swirlix/front.png deleted file mode 100644 index fb40d972f9e3..000000000000 Binary files a/graphics/pokemon/swirlix/front.png and /dev/null differ diff --git a/graphics/pokemon/swoobat/footprint.png b/graphics/pokemon/swoobat/footprint.png index 5d21e70ad7b1..ad62b014d69a 100644 Binary files a/graphics/pokemon/swoobat/footprint.png and b/graphics/pokemon/swoobat/footprint.png differ diff --git a/graphics/pokemon/swoobat/front.png b/graphics/pokemon/swoobat/front.png deleted file mode 100644 index 7a4ccae93c57..000000000000 Binary files a/graphics/pokemon/swoobat/front.png and /dev/null differ diff --git a/graphics/pokemon/sylveon/footprint.png b/graphics/pokemon/sylveon/footprint.png index 286aa0f56a4e..40d49e2b5ebe 100644 Binary files a/graphics/pokemon/sylveon/footprint.png and b/graphics/pokemon/sylveon/footprint.png differ diff --git a/graphics/pokemon/sylveon/front.png b/graphics/pokemon/sylveon/front.png deleted file mode 100644 index dbed23108326..000000000000 Binary files a/graphics/pokemon/sylveon/front.png and /dev/null differ diff --git a/graphics/pokemon/taillow/footprint.png b/graphics/pokemon/taillow/footprint.png index dbf5c5c6b4e8..a54a5c93fe45 100644 Binary files a/graphics/pokemon/taillow/footprint.png and b/graphics/pokemon/taillow/footprint.png differ diff --git a/graphics/pokemon/taillow/front.png b/graphics/pokemon/taillow/front.png deleted file mode 100644 index 3e4be10eaa94..000000000000 Binary files a/graphics/pokemon/taillow/front.png and /dev/null differ diff --git a/graphics/pokemon/talonflame/footprint.png b/graphics/pokemon/talonflame/footprint.png index 197f4f3e2fd2..ae932fe428ac 100644 Binary files a/graphics/pokemon/talonflame/footprint.png and b/graphics/pokemon/talonflame/footprint.png differ diff --git a/graphics/pokemon/talonflame/front.png b/graphics/pokemon/talonflame/front.png deleted file mode 100644 index 2fd619c53ece..000000000000 Binary files a/graphics/pokemon/talonflame/front.png and /dev/null differ diff --git a/graphics/pokemon/tangela/footprint.png b/graphics/pokemon/tangela/footprint.png index c05d3b4375c5..2b0c03fa5fe8 100644 Binary files a/graphics/pokemon/tangela/footprint.png and b/graphics/pokemon/tangela/footprint.png differ diff --git a/graphics/pokemon/tangela/front.png b/graphics/pokemon/tangela/front.png deleted file mode 100644 index 6115b5b62d4f..000000000000 Binary files a/graphics/pokemon/tangela/front.png and /dev/null differ diff --git a/graphics/pokemon/tangrowth/footprint.png b/graphics/pokemon/tangrowth/footprint.png index 27f8e0ddab76..dafc4fedf74d 100644 Binary files a/graphics/pokemon/tangrowth/footprint.png and b/graphics/pokemon/tangrowth/footprint.png differ diff --git a/graphics/pokemon/tangrowth/front.png b/graphics/pokemon/tangrowth/front.png deleted file mode 100644 index ae389e74a8e4..000000000000 Binary files a/graphics/pokemon/tangrowth/front.png and /dev/null differ diff --git a/graphics/pokemon/tapu_bulu/footprint.png b/graphics/pokemon/tapu_bulu/footprint.png index 73d94c7e58ec..2449369fd6b8 100644 Binary files a/graphics/pokemon/tapu_bulu/footprint.png and b/graphics/pokemon/tapu_bulu/footprint.png differ diff --git a/graphics/pokemon/tapu_bulu/front.png b/graphics/pokemon/tapu_bulu/front.png deleted file mode 100644 index ef0eb3357cc8..000000000000 Binary files a/graphics/pokemon/tapu_bulu/front.png and /dev/null differ diff --git a/graphics/pokemon/tapu_fini/footprint.png b/graphics/pokemon/tapu_fini/footprint.png index 5c9f78a24133..2449369fd6b8 100644 Binary files a/graphics/pokemon/tapu_fini/footprint.png and b/graphics/pokemon/tapu_fini/footprint.png differ diff --git a/graphics/pokemon/tapu_fini/front.png b/graphics/pokemon/tapu_fini/front.png deleted file mode 100644 index ccf8d39e9f3d..000000000000 Binary files a/graphics/pokemon/tapu_fini/front.png and /dev/null differ diff --git a/graphics/pokemon/tapu_koko/footprint.png b/graphics/pokemon/tapu_koko/footprint.png index a3357255cf9b..2449369fd6b8 100644 Binary files a/graphics/pokemon/tapu_koko/footprint.png and b/graphics/pokemon/tapu_koko/footprint.png differ diff --git a/graphics/pokemon/tapu_koko/front.png b/graphics/pokemon/tapu_koko/front.png deleted file mode 100644 index d6a5fd655ab7..000000000000 Binary files a/graphics/pokemon/tapu_koko/front.png and /dev/null differ diff --git a/graphics/pokemon/tapu_lele/footprint.png b/graphics/pokemon/tapu_lele/footprint.png index e6058f4c0b9c..2449369fd6b8 100644 Binary files a/graphics/pokemon/tapu_lele/footprint.png and b/graphics/pokemon/tapu_lele/footprint.png differ diff --git a/graphics/pokemon/tapu_lele/front.png b/graphics/pokemon/tapu_lele/front.png deleted file mode 100644 index 31f5d1c1ae46..000000000000 Binary files a/graphics/pokemon/tapu_lele/front.png and /dev/null differ diff --git a/graphics/pokemon/tauros/footprint.png b/graphics/pokemon/tauros/footprint.png index 602011c6d6c3..3ae3a980d1f4 100644 Binary files a/graphics/pokemon/tauros/footprint.png and b/graphics/pokemon/tauros/footprint.png differ diff --git a/graphics/pokemon/tauros/front.png b/graphics/pokemon/tauros/front.png deleted file mode 100644 index 0d47d8939b13..000000000000 Binary files a/graphics/pokemon/tauros/front.png and /dev/null differ diff --git a/graphics/pokemon/tauros/icon.png b/graphics/pokemon/tauros/icon.png index 08975b0bcedd..de4bdd330d43 100644 Binary files a/graphics/pokemon/tauros/icon.png and b/graphics/pokemon/tauros/icon.png differ diff --git a/graphics/pokemon/teddiursa/footprint.png b/graphics/pokemon/teddiursa/footprint.png index def88c323394..6e0bdfd17187 100644 Binary files a/graphics/pokemon/teddiursa/footprint.png and b/graphics/pokemon/teddiursa/footprint.png differ diff --git a/graphics/pokemon/teddiursa/front.png b/graphics/pokemon/teddiursa/front.png deleted file mode 100644 index 9412d0c7f3a6..000000000000 Binary files a/graphics/pokemon/teddiursa/front.png and /dev/null differ diff --git a/graphics/pokemon/tentacool/footprint.png b/graphics/pokemon/tentacool/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/tentacool/footprint.png and b/graphics/pokemon/tentacool/footprint.png differ diff --git a/graphics/pokemon/tentacool/front.png b/graphics/pokemon/tentacool/front.png deleted file mode 100644 index 6469576a4d2f..000000000000 Binary files a/graphics/pokemon/tentacool/front.png and /dev/null differ diff --git a/graphics/pokemon/tentacool/icon.png b/graphics/pokemon/tentacool/icon.png index 5870f50b8ec9..64a9ef364532 100644 Binary files a/graphics/pokemon/tentacool/icon.png and b/graphics/pokemon/tentacool/icon.png differ diff --git a/graphics/pokemon/tentacruel/footprint.png b/graphics/pokemon/tentacruel/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/tentacruel/footprint.png and b/graphics/pokemon/tentacruel/footprint.png differ diff --git a/graphics/pokemon/tentacruel/front.png b/graphics/pokemon/tentacruel/front.png deleted file mode 100644 index 52e70a7343ea..000000000000 Binary files a/graphics/pokemon/tentacruel/front.png and /dev/null differ diff --git a/graphics/pokemon/tentacruel/icon.png b/graphics/pokemon/tentacruel/icon.png index 60bfe216d0bd..e6a797e5291b 100644 Binary files a/graphics/pokemon/tentacruel/icon.png and b/graphics/pokemon/tentacruel/icon.png differ diff --git a/graphics/pokemon/tepig/footprint.png b/graphics/pokemon/tepig/footprint.png index a55f788c0b35..b939dcaa9647 100644 Binary files a/graphics/pokemon/tepig/footprint.png and b/graphics/pokemon/tepig/footprint.png differ diff --git a/graphics/pokemon/tepig/front.png b/graphics/pokemon/tepig/front.png deleted file mode 100644 index 0e706ecadc99..000000000000 Binary files a/graphics/pokemon/tepig/front.png and /dev/null differ diff --git a/graphics/pokemon/terrakion/footprint.png b/graphics/pokemon/terrakion/footprint.png index 4337c2e70d70..555032f2e597 100644 Binary files a/graphics/pokemon/terrakion/footprint.png and b/graphics/pokemon/terrakion/footprint.png differ diff --git a/graphics/pokemon/terrakion/front.png b/graphics/pokemon/terrakion/front.png deleted file mode 100644 index 53b731785005..000000000000 Binary files a/graphics/pokemon/terrakion/front.png and /dev/null differ diff --git a/graphics/pokemon/thievul/footprint.png b/graphics/pokemon/thievul/footprint.png index 530e57b35ead..1e826963eddd 100644 Binary files a/graphics/pokemon/thievul/footprint.png and b/graphics/pokemon/thievul/footprint.png differ diff --git a/graphics/pokemon/throh/footprint.png b/graphics/pokemon/throh/footprint.png index a2dcc6faa2bb..f93d5482b2bd 100644 Binary files a/graphics/pokemon/throh/footprint.png and b/graphics/pokemon/throh/footprint.png differ diff --git a/graphics/pokemon/throh/front.png b/graphics/pokemon/throh/front.png deleted file mode 100644 index 82351e40bd82..000000000000 Binary files a/graphics/pokemon/throh/front.png and /dev/null differ diff --git a/graphics/pokemon/thundurus/footprint.png b/graphics/pokemon/thundurus/footprint.png index 694b0c1b7b58..2449369fd6b8 100644 Binary files a/graphics/pokemon/thundurus/footprint.png and b/graphics/pokemon/thundurus/footprint.png differ diff --git a/graphics/pokemon/thundurus/front.png b/graphics/pokemon/thundurus/front.png deleted file mode 100644 index b8ff39958f1f..000000000000 Binary files a/graphics/pokemon/thundurus/front.png and /dev/null differ diff --git a/graphics/pokemon/thundurus/icon.png b/graphics/pokemon/thundurus/icon.png index 9295bb7526a9..9b1166511607 100644 Binary files a/graphics/pokemon/thundurus/icon.png and b/graphics/pokemon/thundurus/icon.png differ diff --git a/graphics/pokemon/thundurus/therian/front.png b/graphics/pokemon/thundurus/therian/front.png deleted file mode 100644 index 4d1543d595ce..000000000000 Binary files a/graphics/pokemon/thundurus/therian/front.png and /dev/null differ diff --git a/graphics/pokemon/thwackey/footprint.png b/graphics/pokemon/thwackey/footprint.png index a39e31bcf5d5..3dba04bc4cb6 100644 Binary files a/graphics/pokemon/thwackey/footprint.png and b/graphics/pokemon/thwackey/footprint.png differ diff --git a/graphics/pokemon/timburr/footprint.png b/graphics/pokemon/timburr/footprint.png index 64485605f20e..b2b80af66f88 100644 Binary files a/graphics/pokemon/timburr/footprint.png and b/graphics/pokemon/timburr/footprint.png differ diff --git a/graphics/pokemon/timburr/front.png b/graphics/pokemon/timburr/front.png deleted file mode 100644 index b79489a869fa..000000000000 Binary files a/graphics/pokemon/timburr/front.png and /dev/null differ diff --git a/graphics/pokemon/tirtouga/footprint.png b/graphics/pokemon/tirtouga/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/tirtouga/footprint.png and b/graphics/pokemon/tirtouga/footprint.png differ diff --git a/graphics/pokemon/tirtouga/front.png b/graphics/pokemon/tirtouga/front.png deleted file mode 100644 index 3228a2f66984..000000000000 Binary files a/graphics/pokemon/tirtouga/front.png and /dev/null differ diff --git a/graphics/pokemon/tirtouga/icon.png b/graphics/pokemon/tirtouga/icon.png index feb79c7d2fa2..dfb2983764bf 100644 Binary files a/graphics/pokemon/tirtouga/icon.png and b/graphics/pokemon/tirtouga/icon.png differ diff --git a/graphics/pokemon/togedemaru/footprint.png b/graphics/pokemon/togedemaru/footprint.png index 980843406f73..5d01e97d6962 100644 Binary files a/graphics/pokemon/togedemaru/footprint.png and b/graphics/pokemon/togedemaru/footprint.png differ diff --git a/graphics/pokemon/togekiss/footprint.png b/graphics/pokemon/togekiss/footprint.png index 4709234d374d..f210e3c968fc 100644 Binary files a/graphics/pokemon/togekiss/footprint.png and b/graphics/pokemon/togekiss/footprint.png differ diff --git a/graphics/pokemon/togekiss/front.png b/graphics/pokemon/togekiss/front.png deleted file mode 100644 index 0a699e780bbb..000000000000 Binary files a/graphics/pokemon/togekiss/front.png and /dev/null differ diff --git a/graphics/pokemon/togepi/anim_front.png b/graphics/pokemon/togepi/anim_front.png index 07d7f05b89cf..9fc22b9f843f 100644 Binary files a/graphics/pokemon/togepi/anim_front.png and b/graphics/pokemon/togepi/anim_front.png differ diff --git a/graphics/pokemon/togepi/footprint.png b/graphics/pokemon/togepi/footprint.png index 84e75101b1f6..cf50fcd8fdb6 100644 Binary files a/graphics/pokemon/togepi/footprint.png and b/graphics/pokemon/togepi/footprint.png differ diff --git a/graphics/pokemon/togepi/front.png b/graphics/pokemon/togepi/front.png deleted file mode 100644 index e6520872b575..000000000000 Binary files a/graphics/pokemon/togepi/front.png and /dev/null differ diff --git a/graphics/pokemon/togepi/normal.pal b/graphics/pokemon/togepi/normal.pal index 0fb20049a461..3d6967dcac25 100644 --- a/graphics/pokemon/togepi/normal.pal +++ b/graphics/pokemon/togepi/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 112 88 +148 115 90 0 0 0 -240 232 192 -200 176 112 -112 72 72 -240 208 160 -168 32 32 -248 248 248 -120 136 144 -208 216 216 -72 128 192 -216 112 104 -192 64 64 -176 176 192 -48 96 168 +246 238 197 +205 156 115 +115 74 74 +246 213 164 +172 32 32 +255 255 255 +123 139 148 +213 222 222 +74 131 197 +222 115 106 +197 65 65 +180 180 197 +49 98 172 diff --git a/graphics/pokemon/togetic/anim_front.png b/graphics/pokemon/togetic/anim_front.png index 1079c2b01488..c88c0e4d61ee 100644 Binary files a/graphics/pokemon/togetic/anim_front.png and b/graphics/pokemon/togetic/anim_front.png differ diff --git a/graphics/pokemon/togetic/back.png b/graphics/pokemon/togetic/back.png index 755fcf595042..76312f9b8257 100644 Binary files a/graphics/pokemon/togetic/back.png and b/graphics/pokemon/togetic/back.png differ diff --git a/graphics/pokemon/togetic/footprint.png b/graphics/pokemon/togetic/footprint.png index b15913fa81c9..239f42d98d43 100644 Binary files a/graphics/pokemon/togetic/footprint.png and b/graphics/pokemon/togetic/footprint.png differ diff --git a/graphics/pokemon/togetic/front.png b/graphics/pokemon/togetic/front.png deleted file mode 100644 index 0bacb627e76f..000000000000 Binary files a/graphics/pokemon/togetic/front.png and /dev/null differ diff --git a/graphics/pokemon/togetic/normal.pal b/graphics/pokemon/togetic/normal.pal index 0b17314592fb..951bc0f040e6 100644 --- a/graphics/pokemon/togetic/normal.pal +++ b/graphics/pokemon/togetic/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -112 120 128 -248 248 248 +115 123 131 +255 255 255 0 0 0 -168 192 184 -208 232 232 -216 64 56 -184 24 8 -40 144 224 -16 96 184 -192 48 32 -136 16 16 +172 197 189 +213 238 238 +222 65 57 +189 24 8 +41 148 230 +16 98 189 +222 65 57 +189 24 8 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/torchic/footprint.png b/graphics/pokemon/torchic/footprint.png index 955afa82accd..4149f9bb1fe1 100644 Binary files a/graphics/pokemon/torchic/footprint.png and b/graphics/pokemon/torchic/footprint.png differ diff --git a/graphics/pokemon/torchic/front.png b/graphics/pokemon/torchic/front.png deleted file mode 100644 index b4e2066d1884..000000000000 Binary files a/graphics/pokemon/torchic/front.png and /dev/null differ diff --git a/graphics/pokemon/torkoal/footprint.png b/graphics/pokemon/torkoal/footprint.png index 208f3bb7755d..35facf20e46c 100644 Binary files a/graphics/pokemon/torkoal/footprint.png and b/graphics/pokemon/torkoal/footprint.png differ diff --git a/graphics/pokemon/torkoal/front.png b/graphics/pokemon/torkoal/front.png deleted file mode 100644 index abe45c343231..000000000000 Binary files a/graphics/pokemon/torkoal/front.png and /dev/null differ diff --git a/graphics/pokemon/tornadus/footprint.png b/graphics/pokemon/tornadus/footprint.png index 694b0c1b7b58..2449369fd6b8 100644 Binary files a/graphics/pokemon/tornadus/footprint.png and b/graphics/pokemon/tornadus/footprint.png differ diff --git a/graphics/pokemon/tornadus/front.png b/graphics/pokemon/tornadus/front.png deleted file mode 100644 index b121301ddf99..000000000000 Binary files a/graphics/pokemon/tornadus/front.png and /dev/null differ diff --git a/graphics/pokemon/tornadus/icon.png b/graphics/pokemon/tornadus/icon.png index a95eccdb3098..271e4c6b691a 100644 Binary files a/graphics/pokemon/tornadus/icon.png and b/graphics/pokemon/tornadus/icon.png differ diff --git a/graphics/pokemon/tornadus/therian/front.png b/graphics/pokemon/tornadus/therian/front.png deleted file mode 100644 index b168d3bd95fc..000000000000 Binary files a/graphics/pokemon/tornadus/therian/front.png and /dev/null differ diff --git a/graphics/pokemon/tornadus/therian/icon.png b/graphics/pokemon/tornadus/therian/icon.png index dd6db6b5c04a..fea79288d249 100644 Binary files a/graphics/pokemon/tornadus/therian/icon.png and b/graphics/pokemon/tornadus/therian/icon.png differ diff --git a/graphics/pokemon/torracat/footprint.png b/graphics/pokemon/torracat/footprint.png index 0849f9a91ee0..3f806b400723 100644 Binary files a/graphics/pokemon/torracat/footprint.png and b/graphics/pokemon/torracat/footprint.png differ diff --git a/graphics/pokemon/torterra/footprint.png b/graphics/pokemon/torterra/footprint.png index 284d60c4e3e1..71340ac91f5e 100644 Binary files a/graphics/pokemon/torterra/footprint.png and b/graphics/pokemon/torterra/footprint.png differ diff --git a/graphics/pokemon/torterra/front.png b/graphics/pokemon/torterra/front.png deleted file mode 100644 index 2ef06d2f0a4d..000000000000 Binary files a/graphics/pokemon/torterra/front.png and /dev/null differ diff --git a/graphics/pokemon/totodile/anim_front.png b/graphics/pokemon/totodile/anim_front.png index 49e4fee75ad7..25e0a234e6d0 100644 Binary files a/graphics/pokemon/totodile/anim_front.png and b/graphics/pokemon/totodile/anim_front.png differ diff --git a/graphics/pokemon/totodile/footprint.png b/graphics/pokemon/totodile/footprint.png index 2102602737d5..dd3fd2e20914 100644 Binary files a/graphics/pokemon/totodile/footprint.png and b/graphics/pokemon/totodile/footprint.png differ diff --git a/graphics/pokemon/totodile/front.png b/graphics/pokemon/totodile/front.png deleted file mode 100644 index ba9c9994b010..000000000000 Binary files a/graphics/pokemon/totodile/front.png and /dev/null differ diff --git a/graphics/pokemon/totodile/normal.pal b/graphics/pokemon/totodile/normal.pal index bf7ef18aff0a..ce70fb2528c0 100644 --- a/graphics/pokemon/totodile/normal.pal +++ b/graphics/pokemon/totodile/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 208 152 184 -32 136 184 -40 88 128 -80 192 216 -152 224 248 +49 131 197 +49 90 131 +106 180 230 +148 213 255 16 16 16 -248 248 248 -64 64 72 -176 176 176 -120 24 0 -152 80 88 -200 64 32 -232 120 120 -144 128 32 -248 224 136 +255 255 255 +49 90 131 +180 180 180 +123 24 0 +180 74 82 +205 65 32 +230 123 123 +172 131 41 +255 197 82 184 104 104 diff --git a/graphics/pokemon/totodile/shiny.pal b/graphics/pokemon/totodile/shiny.pal index 6c3f512048ef..3bc0bc64c643 100644 --- a/graphics/pokemon/totodile/shiny.pal +++ b/graphics/pokemon/totodile/shiny.pal @@ -8,7 +8,7 @@ JASC-PAL 168 248 216 16 16 16 248 248 248 -56 56 56 +24 104 72 176 176 176 24 72 128 136 64 64 diff --git a/graphics/pokemon/toucannon/footprint.png b/graphics/pokemon/toucannon/footprint.png index d85988dbc1eb..4865f1192890 100644 Binary files a/graphics/pokemon/toucannon/footprint.png and b/graphics/pokemon/toucannon/footprint.png differ diff --git a/graphics/pokemon/toxapex/footprint.png b/graphics/pokemon/toxapex/footprint.png index 211e447c1b48..6cb6bad14e4e 100644 Binary files a/graphics/pokemon/toxapex/footprint.png and b/graphics/pokemon/toxapex/footprint.png differ diff --git a/graphics/pokemon/toxel/footprint.png b/graphics/pokemon/toxel/footprint.png index e89659880a9b..9d608f4b90ce 100644 Binary files a/graphics/pokemon/toxel/footprint.png and b/graphics/pokemon/toxel/footprint.png differ diff --git a/graphics/pokemon/toxicroak/footprint.png b/graphics/pokemon/toxicroak/footprint.png index 50e427cca021..ebd2ea0459ef 100644 Binary files a/graphics/pokemon/toxicroak/footprint.png and b/graphics/pokemon/toxicroak/footprint.png differ diff --git a/graphics/pokemon/toxicroak/front.png b/graphics/pokemon/toxicroak/front.png deleted file mode 100644 index 27acc59b7794..000000000000 Binary files a/graphics/pokemon/toxicroak/front.png and /dev/null differ diff --git a/graphics/pokemon/toxtricity/footprint.png b/graphics/pokemon/toxtricity/footprint.png index f9824a0885e9..50470342a1df 100644 Binary files a/graphics/pokemon/toxtricity/footprint.png and b/graphics/pokemon/toxtricity/footprint.png differ diff --git a/graphics/pokemon/tranquill/footprint.png b/graphics/pokemon/tranquill/footprint.png index eeb0c0d94009..549f607a4a54 100644 Binary files a/graphics/pokemon/tranquill/footprint.png and b/graphics/pokemon/tranquill/footprint.png differ diff --git a/graphics/pokemon/tranquill/front.png b/graphics/pokemon/tranquill/front.png deleted file mode 100644 index 2294a1f13ea1..000000000000 Binary files a/graphics/pokemon/tranquill/front.png and /dev/null differ diff --git a/graphics/pokemon/trapinch/footprint.png b/graphics/pokemon/trapinch/footprint.png index c3e6e785b207..be4eeb90ef76 100644 Binary files a/graphics/pokemon/trapinch/footprint.png and b/graphics/pokemon/trapinch/footprint.png differ diff --git a/graphics/pokemon/trapinch/front.png b/graphics/pokemon/trapinch/front.png deleted file mode 100644 index a74591721569..000000000000 Binary files a/graphics/pokemon/trapinch/front.png and /dev/null differ diff --git a/graphics/pokemon/treecko/footprint.png b/graphics/pokemon/treecko/footprint.png index ed3854702ecf..695c6a891d25 100644 Binary files a/graphics/pokemon/treecko/footprint.png and b/graphics/pokemon/treecko/footprint.png differ diff --git a/graphics/pokemon/treecko/front.png b/graphics/pokemon/treecko/front.png deleted file mode 100644 index 6869c279b36d..000000000000 Binary files a/graphics/pokemon/treecko/front.png and /dev/null differ diff --git a/graphics/pokemon/trevenant/footprint.png b/graphics/pokemon/trevenant/footprint.png index 97e1658e4af8..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/trevenant/footprint.png and b/graphics/pokemon/trevenant/footprint.png differ diff --git a/graphics/pokemon/trevenant/front.png b/graphics/pokemon/trevenant/front.png deleted file mode 100644 index 5dae0e09a4ed..000000000000 Binary files a/graphics/pokemon/trevenant/front.png and /dev/null differ diff --git a/graphics/pokemon/tropius/footprint.png b/graphics/pokemon/tropius/footprint.png index e6e7e8795a72..3aaaaaf67353 100644 Binary files a/graphics/pokemon/tropius/footprint.png and b/graphics/pokemon/tropius/footprint.png differ diff --git a/graphics/pokemon/tropius/front.png b/graphics/pokemon/tropius/front.png deleted file mode 100644 index 4bece6d4037c..000000000000 Binary files a/graphics/pokemon/tropius/front.png and /dev/null differ diff --git a/graphics/pokemon/tropius/icon.png b/graphics/pokemon/tropius/icon.png index 647767ca3de1..9e7b61b531a1 100644 Binary files a/graphics/pokemon/tropius/icon.png and b/graphics/pokemon/tropius/icon.png differ diff --git a/graphics/pokemon/trubbish/footprint.png b/graphics/pokemon/trubbish/footprint.png index 9358729f3efd..cf7fd0e37396 100644 Binary files a/graphics/pokemon/trubbish/footprint.png and b/graphics/pokemon/trubbish/footprint.png differ diff --git a/graphics/pokemon/trubbish/front.png b/graphics/pokemon/trubbish/front.png deleted file mode 100644 index 75fb61a266e0..000000000000 Binary files a/graphics/pokemon/trubbish/front.png and /dev/null differ diff --git a/graphics/pokemon/trubbish/icon.png b/graphics/pokemon/trubbish/icon.png index cbf0483f6605..b7fa282cd8f8 100644 Binary files a/graphics/pokemon/trubbish/icon.png and b/graphics/pokemon/trubbish/icon.png differ diff --git a/graphics/pokemon/trumbeak/footprint.png b/graphics/pokemon/trumbeak/footprint.png index d31c0fc031f6..6eeb95023e62 100644 Binary files a/graphics/pokemon/trumbeak/footprint.png and b/graphics/pokemon/trumbeak/footprint.png differ diff --git a/graphics/pokemon/tsareena/footprint.png b/graphics/pokemon/tsareena/footprint.png index 4a2618262750..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/tsareena/footprint.png and b/graphics/pokemon/tsareena/footprint.png differ diff --git a/graphics/pokemon/turtonator/footprint.png b/graphics/pokemon/turtonator/footprint.png index ee747e804e0a..bec8f1f1fa4f 100644 Binary files a/graphics/pokemon/turtonator/footprint.png and b/graphics/pokemon/turtonator/footprint.png differ diff --git a/graphics/pokemon/turtwig/footprint.png b/graphics/pokemon/turtwig/footprint.png index 94503f1195d3..0c987616f396 100644 Binary files a/graphics/pokemon/turtwig/footprint.png and b/graphics/pokemon/turtwig/footprint.png differ diff --git a/graphics/pokemon/turtwig/front.png b/graphics/pokemon/turtwig/front.png deleted file mode 100644 index 59d3efa89d40..000000000000 Binary files a/graphics/pokemon/turtwig/front.png and /dev/null differ diff --git a/graphics/pokemon/tympole/footprint.png b/graphics/pokemon/tympole/footprint.png index dde2b2638951..2449369fd6b8 100644 Binary files a/graphics/pokemon/tympole/footprint.png and b/graphics/pokemon/tympole/footprint.png differ diff --git a/graphics/pokemon/tympole/front.png b/graphics/pokemon/tympole/front.png deleted file mode 100644 index d1b5dfd48034..000000000000 Binary files a/graphics/pokemon/tympole/front.png and /dev/null differ diff --git a/graphics/pokemon/tynamo/footprint.png b/graphics/pokemon/tynamo/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/tynamo/footprint.png and b/graphics/pokemon/tynamo/footprint.png differ diff --git a/graphics/pokemon/tynamo/front.png b/graphics/pokemon/tynamo/front.png deleted file mode 100644 index 47d48757ef77..000000000000 Binary files a/graphics/pokemon/tynamo/front.png and /dev/null differ diff --git a/graphics/pokemon/type_null/footprint.png b/graphics/pokemon/type_null/footprint.png index 45cac97c90ad..e01a0a96249f 100644 Binary files a/graphics/pokemon/type_null/footprint.png and b/graphics/pokemon/type_null/footprint.png differ diff --git a/graphics/pokemon/typhlosion/anim_front.png b/graphics/pokemon/typhlosion/anim_front.png index a4f46ae24aad..bc4b7c45cccb 100644 Binary files a/graphics/pokemon/typhlosion/anim_front.png and b/graphics/pokemon/typhlosion/anim_front.png differ diff --git a/graphics/pokemon/typhlosion/back.png b/graphics/pokemon/typhlosion/back.png index 3252c26e906c..81bcbd42b6d1 100644 Binary files a/graphics/pokemon/typhlosion/back.png and b/graphics/pokemon/typhlosion/back.png differ diff --git a/graphics/pokemon/typhlosion/footprint.png b/graphics/pokemon/typhlosion/footprint.png index 1d4492cf1364..989b796e5e22 100644 Binary files a/graphics/pokemon/typhlosion/footprint.png and b/graphics/pokemon/typhlosion/footprint.png differ diff --git a/graphics/pokemon/typhlosion/front.png b/graphics/pokemon/typhlosion/front.png deleted file mode 100644 index 79830374f872..000000000000 Binary files a/graphics/pokemon/typhlosion/front.png and /dev/null differ diff --git a/graphics/pokemon/typhlosion/hisuian/back.png b/graphics/pokemon/typhlosion/hisuian/back.png old mode 100644 new mode 100755 index be0255b32619..8e808ecf6b0e Binary files a/graphics/pokemon/typhlosion/hisuian/back.png and b/graphics/pokemon/typhlosion/hisuian/back.png differ diff --git a/graphics/pokemon/typhlosion/hisuian/front.png b/graphics/pokemon/typhlosion/hisuian/front.png old mode 100644 new mode 100755 index 58c7f9e41755..0b1095e4d52f Binary files a/graphics/pokemon/typhlosion/hisuian/front.png and b/graphics/pokemon/typhlosion/hisuian/front.png differ diff --git a/graphics/pokemon/typhlosion/hisuian/normal.pal b/graphics/pokemon/typhlosion/hisuian/normal.pal old mode 100644 new mode 100755 index cb03a42bce7a..8a9fe94af055 --- a/graphics/pokemon/typhlosion/hisuian/normal.pal +++ b/graphics/pokemon/typhlosion/hisuian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -240 88 160 -232 96 224 -176 56 152 -240 72 104 -56 48 96 -88 72 152 -16 16 80 -96 80 176 -136 128 80 -216 216 168 +160 28 200 +216 60 224 +224 76 144 +216 52 48 +88 72 128 +40 28 72 +128 104 168 +56 44 88 +160 136 72 +248 236 144 16 16 16 -232 136 0 -248 248 248 -176 176 120 -80 64 48 +208 196 112 +104 80 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/typhlosion/hisuian/shiny.pal b/graphics/pokemon/typhlosion/hisuian/shiny.pal old mode 100644 new mode 100755 index c4892102fb59..71afe836b236 --- a/graphics/pokemon/typhlosion/hisuian/shiny.pal +++ b/graphics/pokemon/typhlosion/hisuian/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -240 88 160 -232 96 224 -176 56 152 -240 72 104 -40 64 96 -64 88 136 -8 32 88 -64 120 152 -136 128 80 -216 216 168 +160 28 200 +217 60 230 +224 76 144 +218 54 54 +65 89 152 +40 28 72 +128 104 168 +33 65 112 +164 139 74 +255 255 255 16 16 16 -232 136 0 -248 248 248 -176 176 120 -80 64 48 +213 197 115 +104 80 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/typhlosion/icon.png b/graphics/pokemon/typhlosion/icon.png index b69680648cb8..e5e5ea51c1b5 100644 Binary files a/graphics/pokemon/typhlosion/icon.png and b/graphics/pokemon/typhlosion/icon.png differ diff --git a/graphics/pokemon/typhlosion/normal.pal b/graphics/pokemon/typhlosion/normal.pal index 8315b8af8b55..b0b35155f5cc 100644 --- a/graphics/pokemon/typhlosion/normal.pal +++ b/graphics/pokemon/typhlosion/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -216 0 0 -248 96 0 -248 216 0 -248 152 0 -40 88 120 -24 40 48 -56 128 136 -160 136 72 -248 232 144 -104 80 40 +222 0 0 +255 98 0 +255 222 0 +255 156 0 +65 90 148 +8 32 90 +65 131 164 +164 139 74 +255 238 148 +106 82 41 16 16 16 -248 248 248 -208 192 112 -128 72 72 -48 64 112 +255 255 255 +213 197 115 +0 0 0 +32 65 106 diff --git a/graphics/pokemon/tyranitar/footprint.png b/graphics/pokemon/tyranitar/footprint.png index ea12c75b0876..c5e6dfdd7ff1 100644 Binary files a/graphics/pokemon/tyranitar/footprint.png and b/graphics/pokemon/tyranitar/footprint.png differ diff --git a/graphics/pokemon/tyranitar/front.png b/graphics/pokemon/tyranitar/front.png deleted file mode 100644 index 2032b956afb6..000000000000 Binary files a/graphics/pokemon/tyranitar/front.png and /dev/null differ diff --git a/graphics/pokemon/tyranitar/icon.png b/graphics/pokemon/tyranitar/icon.png index 3ab06613c99c..b692b9976967 100644 Binary files a/graphics/pokemon/tyranitar/icon.png and b/graphics/pokemon/tyranitar/icon.png differ diff --git a/graphics/pokemon/tyrantrum/footprint.png b/graphics/pokemon/tyrantrum/footprint.png index 77ac61310c53..51ff4443887c 100644 Binary files a/graphics/pokemon/tyrantrum/footprint.png and b/graphics/pokemon/tyrantrum/footprint.png differ diff --git a/graphics/pokemon/tyrantrum/front.png b/graphics/pokemon/tyrantrum/front.png deleted file mode 100644 index 3aa035a52133..000000000000 Binary files a/graphics/pokemon/tyrantrum/front.png and /dev/null differ diff --git a/graphics/pokemon/tyrogue/footprint.png b/graphics/pokemon/tyrogue/footprint.png index 0ef849eb894a..66cbd808060f 100644 Binary files a/graphics/pokemon/tyrogue/footprint.png and b/graphics/pokemon/tyrogue/footprint.png differ diff --git a/graphics/pokemon/tyrogue/front.png b/graphics/pokemon/tyrogue/front.png deleted file mode 100644 index 0fcc422d5a3b..000000000000 Binary files a/graphics/pokemon/tyrogue/front.png and /dev/null differ diff --git a/graphics/pokemon/tyrunt/footprint.png b/graphics/pokemon/tyrunt/footprint.png index 04157d186e91..388ad8e13c4c 100644 Binary files a/graphics/pokemon/tyrunt/footprint.png and b/graphics/pokemon/tyrunt/footprint.png differ diff --git a/graphics/pokemon/tyrunt/front.png b/graphics/pokemon/tyrunt/front.png deleted file mode 100644 index fc2d2aa53939..000000000000 Binary files a/graphics/pokemon/tyrunt/front.png and /dev/null differ diff --git a/graphics/pokemon/umbreon/footprint.png b/graphics/pokemon/umbreon/footprint.png index a1d897dc37df..97ce7db2bc95 100644 Binary files a/graphics/pokemon/umbreon/footprint.png and b/graphics/pokemon/umbreon/footprint.png differ diff --git a/graphics/pokemon/umbreon/front.png b/graphics/pokemon/umbreon/front.png deleted file mode 100644 index 82a649940ec4..000000000000 Binary files a/graphics/pokemon/umbreon/front.png and /dev/null differ diff --git a/graphics/pokemon/unfezant/backf.png b/graphics/pokemon/unfezant/backf.png index cded84b12476..f9624417f0e8 100644 Binary files a/graphics/pokemon/unfezant/backf.png and b/graphics/pokemon/unfezant/backf.png differ diff --git a/graphics/pokemon/unfezant/footprint.png b/graphics/pokemon/unfezant/footprint.png index acc0d15d71a7..206c9169ef06 100644 Binary files a/graphics/pokemon/unfezant/footprint.png and b/graphics/pokemon/unfezant/footprint.png differ diff --git a/graphics/pokemon/unfezant/front.png b/graphics/pokemon/unfezant/front.png deleted file mode 100644 index cea0bc3ab067..000000000000 Binary files a/graphics/pokemon/unfezant/front.png and /dev/null differ diff --git a/graphics/pokemon/unfezant/icon.png b/graphics/pokemon/unfezant/icon.png index 8b61d1bfba1b..785bd89a9b4c 100644 Binary files a/graphics/pokemon/unfezant/icon.png and b/graphics/pokemon/unfezant/icon.png differ diff --git a/graphics/pokemon/unown/b/front.png b/graphics/pokemon/unown/b/front.png deleted file mode 100644 index fbe2e4623daa..000000000000 Binary files a/graphics/pokemon/unown/b/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/c/front.png b/graphics/pokemon/unown/c/front.png deleted file mode 100644 index c5ef1c457f71..000000000000 Binary files a/graphics/pokemon/unown/c/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/d/front.png b/graphics/pokemon/unown/d/front.png deleted file mode 100644 index c39b26120dd7..000000000000 Binary files a/graphics/pokemon/unown/d/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/e/front.png b/graphics/pokemon/unown/e/front.png deleted file mode 100644 index 81e3f9c93b76..000000000000 Binary files a/graphics/pokemon/unown/e/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/exclamation_mark/front.png b/graphics/pokemon/unown/exclamation_mark/front.png deleted file mode 100644 index 86f329f92f6c..000000000000 Binary files a/graphics/pokemon/unown/exclamation_mark/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/f/front.png b/graphics/pokemon/unown/f/front.png deleted file mode 100644 index 8e61eb768b03..000000000000 Binary files a/graphics/pokemon/unown/f/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/footprint.png b/graphics/pokemon/unown/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/unown/footprint.png and b/graphics/pokemon/unown/footprint.png differ diff --git a/graphics/pokemon/unown/front.png b/graphics/pokemon/unown/front.png deleted file mode 100644 index 697de36dc030..000000000000 Binary files a/graphics/pokemon/unown/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/g/front.png b/graphics/pokemon/unown/g/front.png deleted file mode 100644 index 4f665124ad75..000000000000 Binary files a/graphics/pokemon/unown/g/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/h/front.png b/graphics/pokemon/unown/h/front.png deleted file mode 100644 index f8ab66963bae..000000000000 Binary files a/graphics/pokemon/unown/h/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/i/front.png b/graphics/pokemon/unown/i/front.png deleted file mode 100644 index ebc8a51a9b82..000000000000 Binary files a/graphics/pokemon/unown/i/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/j/front.png b/graphics/pokemon/unown/j/front.png deleted file mode 100644 index 4c1f4ed2e7e9..000000000000 Binary files a/graphics/pokemon/unown/j/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/k/front.png b/graphics/pokemon/unown/k/front.png deleted file mode 100644 index 8ccce125e88d..000000000000 Binary files a/graphics/pokemon/unown/k/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/l/front.png b/graphics/pokemon/unown/l/front.png deleted file mode 100644 index 6bb837167d2b..000000000000 Binary files a/graphics/pokemon/unown/l/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/m/front.png b/graphics/pokemon/unown/m/front.png deleted file mode 100644 index 981c7f801cef..000000000000 Binary files a/graphics/pokemon/unown/m/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/n/front.png b/graphics/pokemon/unown/n/front.png deleted file mode 100644 index cff797db4228..000000000000 Binary files a/graphics/pokemon/unown/n/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/o/front.png b/graphics/pokemon/unown/o/front.png deleted file mode 100644 index 8b8e81295940..000000000000 Binary files a/graphics/pokemon/unown/o/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/p/front.png b/graphics/pokemon/unown/p/front.png deleted file mode 100644 index 99a7c98e23c3..000000000000 Binary files a/graphics/pokemon/unown/p/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/q/front.png b/graphics/pokemon/unown/q/front.png deleted file mode 100644 index fe94c27fa081..000000000000 Binary files a/graphics/pokemon/unown/q/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/question_mark/front.png b/graphics/pokemon/unown/question_mark/front.png deleted file mode 100644 index ee0ad284ccda..000000000000 Binary files a/graphics/pokemon/unown/question_mark/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/r/front.png b/graphics/pokemon/unown/r/front.png deleted file mode 100644 index 4e2a40007ce7..000000000000 Binary files a/graphics/pokemon/unown/r/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/s/front.png b/graphics/pokemon/unown/s/front.png deleted file mode 100644 index a144e27f539a..000000000000 Binary files a/graphics/pokemon/unown/s/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/t/front.png b/graphics/pokemon/unown/t/front.png deleted file mode 100644 index 4d5fa8b98877..000000000000 Binary files a/graphics/pokemon/unown/t/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/u/front.png b/graphics/pokemon/unown/u/front.png deleted file mode 100644 index 39503f01c9d7..000000000000 Binary files a/graphics/pokemon/unown/u/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/v/front.png b/graphics/pokemon/unown/v/front.png deleted file mode 100644 index f014289bdb84..000000000000 Binary files a/graphics/pokemon/unown/v/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/w/front.png b/graphics/pokemon/unown/w/front.png deleted file mode 100644 index 829804ebfcad..000000000000 Binary files a/graphics/pokemon/unown/w/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/x/front.png b/graphics/pokemon/unown/x/front.png deleted file mode 100644 index 053e2ee08ca6..000000000000 Binary files a/graphics/pokemon/unown/x/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/y/front.png b/graphics/pokemon/unown/y/front.png deleted file mode 100644 index d8f40e27edfe..000000000000 Binary files a/graphics/pokemon/unown/y/front.png and /dev/null differ diff --git a/graphics/pokemon/unown/z/front.png b/graphics/pokemon/unown/z/front.png deleted file mode 100644 index 054eacb6d8de..000000000000 Binary files a/graphics/pokemon/unown/z/front.png and /dev/null differ diff --git a/graphics/pokemon/ursaring/footprint.png b/graphics/pokemon/ursaring/footprint.png index b1023bd3b7ae..c27c42e8c5d2 100644 Binary files a/graphics/pokemon/ursaring/footprint.png and b/graphics/pokemon/ursaring/footprint.png differ diff --git a/graphics/pokemon/ursaring/front.png b/graphics/pokemon/ursaring/front.png deleted file mode 100644 index 0229df2041e1..000000000000 Binary files a/graphics/pokemon/ursaring/front.png and /dev/null differ diff --git a/graphics/pokemon/urshifu/footprint.png b/graphics/pokemon/urshifu/footprint.png index bf4c5a6f6cfe..067d234cf2ca 100644 Binary files a/graphics/pokemon/urshifu/footprint.png and b/graphics/pokemon/urshifu/footprint.png differ diff --git a/graphics/pokemon/uxie/footprint.png b/graphics/pokemon/uxie/footprint.png index 3d48a802c1c7..f1b5a7a094fd 100644 Binary files a/graphics/pokemon/uxie/footprint.png and b/graphics/pokemon/uxie/footprint.png differ diff --git a/graphics/pokemon/uxie/front.png b/graphics/pokemon/uxie/front.png deleted file mode 100644 index 3d923f443835..000000000000 Binary files a/graphics/pokemon/uxie/front.png and /dev/null differ diff --git a/graphics/pokemon/vanillish/footprint.png b/graphics/pokemon/vanillish/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/vanillish/footprint.png and b/graphics/pokemon/vanillish/footprint.png differ diff --git a/graphics/pokemon/vanillish/front.png b/graphics/pokemon/vanillish/front.png deleted file mode 100644 index eb3237a5c70a..000000000000 Binary files a/graphics/pokemon/vanillish/front.png and /dev/null differ diff --git a/graphics/pokemon/vanillite/footprint.png b/graphics/pokemon/vanillite/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/vanillite/footprint.png and b/graphics/pokemon/vanillite/footprint.png differ diff --git a/graphics/pokemon/vanillite/front.png b/graphics/pokemon/vanillite/front.png deleted file mode 100644 index dfcfb42c7910..000000000000 Binary files a/graphics/pokemon/vanillite/front.png and /dev/null differ diff --git a/graphics/pokemon/vanilluxe/footprint.png b/graphics/pokemon/vanilluxe/footprint.png index aa5f41c38e61..2449369fd6b8 100644 Binary files a/graphics/pokemon/vanilluxe/footprint.png and b/graphics/pokemon/vanilluxe/footprint.png differ diff --git a/graphics/pokemon/vanilluxe/front.png b/graphics/pokemon/vanilluxe/front.png deleted file mode 100644 index 168c54b67764..000000000000 Binary files a/graphics/pokemon/vanilluxe/front.png and /dev/null differ diff --git a/graphics/pokemon/vanilluxe/icon.png b/graphics/pokemon/vanilluxe/icon.png index a7814563b43d..c2f85c1e31a6 100644 Binary files a/graphics/pokemon/vanilluxe/icon.png and b/graphics/pokemon/vanilluxe/icon.png differ diff --git a/graphics/pokemon/vaporeon/footprint.png b/graphics/pokemon/vaporeon/footprint.png index 2b44d4b2491b..7e40d8198eac 100644 Binary files a/graphics/pokemon/vaporeon/footprint.png and b/graphics/pokemon/vaporeon/footprint.png differ diff --git a/graphics/pokemon/vaporeon/front.png b/graphics/pokemon/vaporeon/front.png deleted file mode 100644 index 1ab0c7e466eb..000000000000 Binary files a/graphics/pokemon/vaporeon/front.png and /dev/null differ diff --git a/graphics/pokemon/venipede/footprint.png b/graphics/pokemon/venipede/footprint.png index 4cc2972cf28e..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/venipede/footprint.png and b/graphics/pokemon/venipede/footprint.png differ diff --git a/graphics/pokemon/venipede/front.png b/graphics/pokemon/venipede/front.png deleted file mode 100644 index ebabe585ceb1..000000000000 Binary files a/graphics/pokemon/venipede/front.png and /dev/null differ diff --git a/graphics/pokemon/venomoth/footprint.png b/graphics/pokemon/venomoth/footprint.png index 6965dbe60faf..a9b0e33c2899 100644 Binary files a/graphics/pokemon/venomoth/footprint.png and b/graphics/pokemon/venomoth/footprint.png differ diff --git a/graphics/pokemon/venomoth/front.png b/graphics/pokemon/venomoth/front.png deleted file mode 100644 index 895d4aeb97f6..000000000000 Binary files a/graphics/pokemon/venomoth/front.png and /dev/null differ diff --git a/graphics/pokemon/venonat/footprint.png b/graphics/pokemon/venonat/footprint.png index 3675945c9241..f1f332f81d8b 100644 Binary files a/graphics/pokemon/venonat/footprint.png and b/graphics/pokemon/venonat/footprint.png differ diff --git a/graphics/pokemon/venonat/front.png b/graphics/pokemon/venonat/front.png deleted file mode 100644 index 738b8f161437..000000000000 Binary files a/graphics/pokemon/venonat/front.png and /dev/null differ diff --git a/graphics/pokemon/venusaur/footprint.png b/graphics/pokemon/venusaur/footprint.png index bdef2c818ebc..188dd9608141 100644 Binary files a/graphics/pokemon/venusaur/footprint.png and b/graphics/pokemon/venusaur/footprint.png differ diff --git a/graphics/pokemon/venusaur/front.png b/graphics/pokemon/venusaur/front.png deleted file mode 100644 index 0d21e669d9a6..000000000000 Binary files a/graphics/pokemon/venusaur/front.png and /dev/null differ diff --git a/graphics/pokemon/venusaur/icon.png b/graphics/pokemon/venusaur/icon.png index c841ddde4fe5..ce3b2290ac95 100644 Binary files a/graphics/pokemon/venusaur/icon.png and b/graphics/pokemon/venusaur/icon.png differ diff --git a/graphics/pokemon/vespiquen/footprint.png b/graphics/pokemon/vespiquen/footprint.png index 285e15672549..2449369fd6b8 100644 Binary files a/graphics/pokemon/vespiquen/footprint.png and b/graphics/pokemon/vespiquen/footprint.png differ diff --git a/graphics/pokemon/vespiquen/front.png b/graphics/pokemon/vespiquen/front.png deleted file mode 100644 index cc731fc7bd93..000000000000 Binary files a/graphics/pokemon/vespiquen/front.png and /dev/null differ diff --git a/graphics/pokemon/vibrava/footprint.png b/graphics/pokemon/vibrava/footprint.png index fdf76f9f2289..b935f853a3f3 100644 Binary files a/graphics/pokemon/vibrava/footprint.png and b/graphics/pokemon/vibrava/footprint.png differ diff --git a/graphics/pokemon/vibrava/front.png b/graphics/pokemon/vibrava/front.png deleted file mode 100644 index d3dca4c68f96..000000000000 Binary files a/graphics/pokemon/vibrava/front.png and /dev/null differ diff --git a/graphics/pokemon/victini/footprint.png b/graphics/pokemon/victini/footprint.png index 3b24bcd9277d..907babd2d5ff 100644 Binary files a/graphics/pokemon/victini/footprint.png and b/graphics/pokemon/victini/footprint.png differ diff --git a/graphics/pokemon/victini/front.png b/graphics/pokemon/victini/front.png deleted file mode 100644 index 6901f6fb3e3b..000000000000 Binary files a/graphics/pokemon/victini/front.png and /dev/null differ diff --git a/graphics/pokemon/victini/icon.png b/graphics/pokemon/victini/icon.png index dfbab1baaff2..686f4a499f37 100644 Binary files a/graphics/pokemon/victini/icon.png and b/graphics/pokemon/victini/icon.png differ diff --git a/graphics/pokemon/victreebel/footprint.png b/graphics/pokemon/victreebel/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/victreebel/footprint.png and b/graphics/pokemon/victreebel/footprint.png differ diff --git a/graphics/pokemon/victreebel/front.png b/graphics/pokemon/victreebel/front.png deleted file mode 100644 index f82a0e17fe9c..000000000000 Binary files a/graphics/pokemon/victreebel/front.png and /dev/null differ diff --git a/graphics/pokemon/vigoroth/footprint.png b/graphics/pokemon/vigoroth/footprint.png index bc10a72309ec..8a39db031eec 100644 Binary files a/graphics/pokemon/vigoroth/footprint.png and b/graphics/pokemon/vigoroth/footprint.png differ diff --git a/graphics/pokemon/vigoroth/front.png b/graphics/pokemon/vigoroth/front.png deleted file mode 100644 index b3840cd1b28f..000000000000 Binary files a/graphics/pokemon/vigoroth/front.png and /dev/null differ diff --git a/graphics/pokemon/vikavolt/footprint.png b/graphics/pokemon/vikavolt/footprint.png index bc9bf4168499..d023f20ee011 100644 Binary files a/graphics/pokemon/vikavolt/footprint.png and b/graphics/pokemon/vikavolt/footprint.png differ diff --git a/graphics/pokemon/vileplume/footprint.png b/graphics/pokemon/vileplume/footprint.png index 8fd5bdf83d2c..ba0d3fca8ebb 100644 Binary files a/graphics/pokemon/vileplume/footprint.png and b/graphics/pokemon/vileplume/footprint.png differ diff --git a/graphics/pokemon/vileplume/front.png b/graphics/pokemon/vileplume/front.png deleted file mode 100644 index 4b0663612b37..000000000000 Binary files a/graphics/pokemon/vileplume/front.png and /dev/null differ diff --git a/graphics/pokemon/vileplume/icon.png b/graphics/pokemon/vileplume/icon.png index a3cb2b0b59a0..3dcf11ce3912 100644 Binary files a/graphics/pokemon/vileplume/icon.png and b/graphics/pokemon/vileplume/icon.png differ diff --git a/graphics/pokemon/virizion/footprint.png b/graphics/pokemon/virizion/footprint.png index 147ff0962930..ec92663f94ad 100644 Binary files a/graphics/pokemon/virizion/footprint.png and b/graphics/pokemon/virizion/footprint.png differ diff --git a/graphics/pokemon/virizion/front.png b/graphics/pokemon/virizion/front.png deleted file mode 100644 index 6c1f3a36ccc3..000000000000 Binary files a/graphics/pokemon/virizion/front.png and /dev/null differ diff --git a/graphics/pokemon/virizion/icon.png b/graphics/pokemon/virizion/icon.png index 4f7390e1f0bc..68c0abd73026 100644 Binary files a/graphics/pokemon/virizion/icon.png and b/graphics/pokemon/virizion/icon.png differ diff --git a/graphics/pokemon/vivillon/archipelago/front.png b/graphics/pokemon/vivillon/archipelago/front.png deleted file mode 100644 index 7fb1becc1cc5..000000000000 Binary files a/graphics/pokemon/vivillon/archipelago/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/continental/front.png b/graphics/pokemon/vivillon/continental/front.png deleted file mode 100644 index 785e6371ec3b..000000000000 Binary files a/graphics/pokemon/vivillon/continental/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/continental/icon.png b/graphics/pokemon/vivillon/continental/icon.png index 51c770f56eb4..e4fdf6d2191e 100644 Binary files a/graphics/pokemon/vivillon/continental/icon.png and b/graphics/pokemon/vivillon/continental/icon.png differ diff --git a/graphics/pokemon/vivillon/elegant/front.png b/graphics/pokemon/vivillon/elegant/front.png deleted file mode 100644 index d4e09f2a7f8b..000000000000 Binary files a/graphics/pokemon/vivillon/elegant/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/elegant/icon.png b/graphics/pokemon/vivillon/elegant/icon.png index 221935a21847..f6c4772ae0e8 100644 Binary files a/graphics/pokemon/vivillon/elegant/icon.png and b/graphics/pokemon/vivillon/elegant/icon.png differ diff --git a/graphics/pokemon/vivillon/fancy/front.png b/graphics/pokemon/vivillon/fancy/front.png deleted file mode 100644 index ad26aa4798f4..000000000000 Binary files a/graphics/pokemon/vivillon/fancy/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/fancy/icon.png b/graphics/pokemon/vivillon/fancy/icon.png index 22fe6f1a0161..10d9a2e9b246 100644 Binary files a/graphics/pokemon/vivillon/fancy/icon.png and b/graphics/pokemon/vivillon/fancy/icon.png differ diff --git a/graphics/pokemon/vivillon/footprint.png b/graphics/pokemon/vivillon/footprint.png index bc51948b825a..2449369fd6b8 100644 Binary files a/graphics/pokemon/vivillon/footprint.png and b/graphics/pokemon/vivillon/footprint.png differ diff --git a/graphics/pokemon/vivillon/front.png b/graphics/pokemon/vivillon/front.png deleted file mode 100644 index cd1bdfbd7e8a..000000000000 Binary files a/graphics/pokemon/vivillon/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/garden/front.png b/graphics/pokemon/vivillon/garden/front.png deleted file mode 100644 index bcdc18e854ed..000000000000 Binary files a/graphics/pokemon/vivillon/garden/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/garden/icon.png b/graphics/pokemon/vivillon/garden/icon.png index 03032ba4d85b..868f8c7fe31a 100644 Binary files a/graphics/pokemon/vivillon/garden/icon.png and b/graphics/pokemon/vivillon/garden/icon.png differ diff --git a/graphics/pokemon/vivillon/high_plains/front.png b/graphics/pokemon/vivillon/high_plains/front.png deleted file mode 100644 index d8bae72c4ee9..000000000000 Binary files a/graphics/pokemon/vivillon/high_plains/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/jungle/front.png b/graphics/pokemon/vivillon/jungle/front.png deleted file mode 100644 index 1ab8f99eacb1..000000000000 Binary files a/graphics/pokemon/vivillon/jungle/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/jungle/icon.png b/graphics/pokemon/vivillon/jungle/icon.png index 8d83dd429121..1a3249596c47 100644 Binary files a/graphics/pokemon/vivillon/jungle/icon.png and b/graphics/pokemon/vivillon/jungle/icon.png differ diff --git a/graphics/pokemon/vivillon/marine/front.png b/graphics/pokemon/vivillon/marine/front.png deleted file mode 100644 index 5ec8a8c46593..000000000000 Binary files a/graphics/pokemon/vivillon/marine/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/marine/icon.png b/graphics/pokemon/vivillon/marine/icon.png index 045cb38dd0fa..72ef85f218f1 100644 Binary files a/graphics/pokemon/vivillon/marine/icon.png and b/graphics/pokemon/vivillon/marine/icon.png differ diff --git a/graphics/pokemon/vivillon/meadow/front.png b/graphics/pokemon/vivillon/meadow/front.png deleted file mode 100644 index 698ac42333f7..000000000000 Binary files a/graphics/pokemon/vivillon/meadow/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/modern/front.png b/graphics/pokemon/vivillon/modern/front.png deleted file mode 100644 index 2bf593a48549..000000000000 Binary files a/graphics/pokemon/vivillon/modern/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/modern/icon.png b/graphics/pokemon/vivillon/modern/icon.png index 239e8887a4a4..2aa35c48e30b 100644 Binary files a/graphics/pokemon/vivillon/modern/icon.png and b/graphics/pokemon/vivillon/modern/icon.png differ diff --git a/graphics/pokemon/vivillon/monsoon/front.png b/graphics/pokemon/vivillon/monsoon/front.png deleted file mode 100644 index 5dc6429009ff..000000000000 Binary files a/graphics/pokemon/vivillon/monsoon/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/monsoon/icon.png b/graphics/pokemon/vivillon/monsoon/icon.png index 6430f1f1b7a9..2eb6221ef4cb 100644 Binary files a/graphics/pokemon/vivillon/monsoon/icon.png and b/graphics/pokemon/vivillon/monsoon/icon.png differ diff --git a/graphics/pokemon/vivillon/ocean/front.png b/graphics/pokemon/vivillon/ocean/front.png deleted file mode 100644 index fcdcf11a7bfb..000000000000 Binary files a/graphics/pokemon/vivillon/ocean/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/ocean/icon.png b/graphics/pokemon/vivillon/ocean/icon.png index bde8c0519260..ac083f289585 100644 Binary files a/graphics/pokemon/vivillon/ocean/icon.png and b/graphics/pokemon/vivillon/ocean/icon.png differ diff --git a/graphics/pokemon/vivillon/poke_ball/front.png b/graphics/pokemon/vivillon/poke_ball/front.png deleted file mode 100644 index c474cf54c249..000000000000 Binary files a/graphics/pokemon/vivillon/poke_ball/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/poke_ball/icon.png b/graphics/pokemon/vivillon/poke_ball/icon.png index 2620f928ae14..9305c2b8ad50 100644 Binary files a/graphics/pokemon/vivillon/poke_ball/icon.png and b/graphics/pokemon/vivillon/poke_ball/icon.png differ diff --git a/graphics/pokemon/vivillon/polar/front.png b/graphics/pokemon/vivillon/polar/front.png deleted file mode 100644 index 2f182203e72b..000000000000 Binary files a/graphics/pokemon/vivillon/polar/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/polar/icon.png b/graphics/pokemon/vivillon/polar/icon.png index 4ca4400cd167..dd12dbd25d27 100644 Binary files a/graphics/pokemon/vivillon/polar/icon.png and b/graphics/pokemon/vivillon/polar/icon.png differ diff --git a/graphics/pokemon/vivillon/river/front.png b/graphics/pokemon/vivillon/river/front.png deleted file mode 100644 index 18cf0efd27bc..000000000000 Binary files a/graphics/pokemon/vivillon/river/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/river/icon.png b/graphics/pokemon/vivillon/river/icon.png index a7427d685e85..d33d8271c375 100644 Binary files a/graphics/pokemon/vivillon/river/icon.png and b/graphics/pokemon/vivillon/river/icon.png differ diff --git a/graphics/pokemon/vivillon/sandstorm/front.png b/graphics/pokemon/vivillon/sandstorm/front.png deleted file mode 100644 index 7c9158050a63..000000000000 Binary files a/graphics/pokemon/vivillon/sandstorm/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/sandstorm/icon.png b/graphics/pokemon/vivillon/sandstorm/icon.png index e90306872fe1..e5e0b987ebea 100644 Binary files a/graphics/pokemon/vivillon/sandstorm/icon.png and b/graphics/pokemon/vivillon/sandstorm/icon.png differ diff --git a/graphics/pokemon/vivillon/savanna/front.png b/graphics/pokemon/vivillon/savanna/front.png deleted file mode 100644 index dab3efbec97f..000000000000 Binary files a/graphics/pokemon/vivillon/savanna/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/savanna/icon.png b/graphics/pokemon/vivillon/savanna/icon.png index 2665f3456dda..37fc6570df34 100644 Binary files a/graphics/pokemon/vivillon/savanna/icon.png and b/graphics/pokemon/vivillon/savanna/icon.png differ diff --git a/graphics/pokemon/vivillon/sun/front.png b/graphics/pokemon/vivillon/sun/front.png deleted file mode 100644 index 532b4a019137..000000000000 Binary files a/graphics/pokemon/vivillon/sun/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/sun/icon.png b/graphics/pokemon/vivillon/sun/icon.png index 7b7974210f5d..0a8af5e68ffd 100644 Binary files a/graphics/pokemon/vivillon/sun/icon.png and b/graphics/pokemon/vivillon/sun/icon.png differ diff --git a/graphics/pokemon/vivillon/tundra/front.png b/graphics/pokemon/vivillon/tundra/front.png deleted file mode 100644 index 36239fbe9412..000000000000 Binary files a/graphics/pokemon/vivillon/tundra/front.png and /dev/null differ diff --git a/graphics/pokemon/vivillon/tundra/icon.png b/graphics/pokemon/vivillon/tundra/icon.png index 8d38291d4272..711ae44ee5ef 100644 Binary files a/graphics/pokemon/vivillon/tundra/icon.png and b/graphics/pokemon/vivillon/tundra/icon.png differ diff --git a/graphics/pokemon/volbeat/footprint.png b/graphics/pokemon/volbeat/footprint.png index 916c59f606a9..f5df06fdc3ce 100644 Binary files a/graphics/pokemon/volbeat/footprint.png and b/graphics/pokemon/volbeat/footprint.png differ diff --git a/graphics/pokemon/volbeat/front.png b/graphics/pokemon/volbeat/front.png deleted file mode 100644 index e4f17ee4d154..000000000000 Binary files a/graphics/pokemon/volbeat/front.png and /dev/null differ diff --git a/graphics/pokemon/volcanion/footprint.png b/graphics/pokemon/volcanion/footprint.png index 3ad8671163b7..86218af32e6a 100644 Binary files a/graphics/pokemon/volcanion/footprint.png and b/graphics/pokemon/volcanion/footprint.png differ diff --git a/graphics/pokemon/volcanion/front.png b/graphics/pokemon/volcanion/front.png deleted file mode 100644 index 2a35f607d395..000000000000 Binary files a/graphics/pokemon/volcanion/front.png and /dev/null differ diff --git a/graphics/pokemon/volcarona/footprint.png b/graphics/pokemon/volcarona/footprint.png index 694b0c1b7b58..2449369fd6b8 100644 Binary files a/graphics/pokemon/volcarona/footprint.png and b/graphics/pokemon/volcarona/footprint.png differ diff --git a/graphics/pokemon/volcarona/front.png b/graphics/pokemon/volcarona/front.png deleted file mode 100644 index d36a22a25399..000000000000 Binary files a/graphics/pokemon/volcarona/front.png and /dev/null differ diff --git a/graphics/pokemon/volcarona/icon.png b/graphics/pokemon/volcarona/icon.png index c518ab0b4bb4..a37d965d9860 100644 Binary files a/graphics/pokemon/volcarona/icon.png and b/graphics/pokemon/volcarona/icon.png differ diff --git a/graphics/pokemon/voltorb/footprint.png b/graphics/pokemon/voltorb/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/voltorb/footprint.png and b/graphics/pokemon/voltorb/footprint.png differ diff --git a/graphics/pokemon/voltorb/front.png b/graphics/pokemon/voltorb/front.png deleted file mode 100644 index ad4385d1bb1d..000000000000 Binary files a/graphics/pokemon/voltorb/front.png and /dev/null differ diff --git a/graphics/pokemon/voltorb/icon.png b/graphics/pokemon/voltorb/icon.png index 551dbf281c4b..f0113355b0b8 100644 Binary files a/graphics/pokemon/voltorb/icon.png and b/graphics/pokemon/voltorb/icon.png differ diff --git a/graphics/pokemon/vullaby/footprint.png b/graphics/pokemon/vullaby/footprint.png index db19aa1bb76f..060796e10a6c 100644 Binary files a/graphics/pokemon/vullaby/footprint.png and b/graphics/pokemon/vullaby/footprint.png differ diff --git a/graphics/pokemon/vullaby/front.png b/graphics/pokemon/vullaby/front.png deleted file mode 100644 index a24b2aafbef5..000000000000 Binary files a/graphics/pokemon/vullaby/front.png and /dev/null differ diff --git a/graphics/pokemon/vulpix/footprint.png b/graphics/pokemon/vulpix/footprint.png index a0a655ca619a..064b2bcf7472 100644 Binary files a/graphics/pokemon/vulpix/footprint.png and b/graphics/pokemon/vulpix/footprint.png differ diff --git a/graphics/pokemon/vulpix/front.png b/graphics/pokemon/vulpix/front.png deleted file mode 100644 index 39c5bdff3841..000000000000 Binary files a/graphics/pokemon/vulpix/front.png and /dev/null differ diff --git a/graphics/pokemon/wailmer/footprint.png b/graphics/pokemon/wailmer/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/wailmer/footprint.png and b/graphics/pokemon/wailmer/footprint.png differ diff --git a/graphics/pokemon/wailmer/front.png b/graphics/pokemon/wailmer/front.png deleted file mode 100644 index 3c887adf8552..000000000000 Binary files a/graphics/pokemon/wailmer/front.png and /dev/null differ diff --git a/graphics/pokemon/wailord/footprint.png b/graphics/pokemon/wailord/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/wailord/footprint.png and b/graphics/pokemon/wailord/footprint.png differ diff --git a/graphics/pokemon/wailord/front.png b/graphics/pokemon/wailord/front.png deleted file mode 100644 index 9f337fd82fa2..000000000000 Binary files a/graphics/pokemon/wailord/front.png and /dev/null differ diff --git a/graphics/pokemon/wailord/icon.png b/graphics/pokemon/wailord/icon.png index a6a6ff135ccb..de5a2c70782e 100644 Binary files a/graphics/pokemon/wailord/icon.png and b/graphics/pokemon/wailord/icon.png differ diff --git a/graphics/pokemon/walrein/footprint.png b/graphics/pokemon/walrein/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/walrein/footprint.png and b/graphics/pokemon/walrein/footprint.png differ diff --git a/graphics/pokemon/walrein/front.png b/graphics/pokemon/walrein/front.png deleted file mode 100644 index 7dc56050a3a3..000000000000 Binary files a/graphics/pokemon/walrein/front.png and /dev/null differ diff --git a/graphics/pokemon/wartortle/footprint.png b/graphics/pokemon/wartortle/footprint.png index 4dd1264966e5..948a3c86a0e7 100644 Binary files a/graphics/pokemon/wartortle/footprint.png and b/graphics/pokemon/wartortle/footprint.png differ diff --git a/graphics/pokemon/wartortle/front.png b/graphics/pokemon/wartortle/front.png deleted file mode 100644 index 4768f5f48066..000000000000 Binary files a/graphics/pokemon/wartortle/front.png and /dev/null differ diff --git a/graphics/pokemon/watchog/footprint.png b/graphics/pokemon/watchog/footprint.png index 553c2782c5a1..0f65ec545361 100644 Binary files a/graphics/pokemon/watchog/footprint.png and b/graphics/pokemon/watchog/footprint.png differ diff --git a/graphics/pokemon/watchog/front.png b/graphics/pokemon/watchog/front.png deleted file mode 100644 index 82cfc39e58bd..000000000000 Binary files a/graphics/pokemon/watchog/front.png and /dev/null differ diff --git a/graphics/pokemon/watchog/icon.png b/graphics/pokemon/watchog/icon.png index 9ea2f1330861..4051ebde8b71 100644 Binary files a/graphics/pokemon/watchog/icon.png and b/graphics/pokemon/watchog/icon.png differ diff --git a/graphics/pokemon/weavile/footprint.png b/graphics/pokemon/weavile/footprint.png index 03d2b626b86f..2f3dd915d614 100644 Binary files a/graphics/pokemon/weavile/footprint.png and b/graphics/pokemon/weavile/footprint.png differ diff --git a/graphics/pokemon/weavile/front.png b/graphics/pokemon/weavile/front.png deleted file mode 100644 index 90ad62cb994a..000000000000 Binary files a/graphics/pokemon/weavile/front.png and /dev/null differ diff --git a/graphics/pokemon/weedle/footprint.png b/graphics/pokemon/weedle/footprint.png index c1c0058e74e9..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/weedle/footprint.png and b/graphics/pokemon/weedle/footprint.png differ diff --git a/graphics/pokemon/weedle/front.png b/graphics/pokemon/weedle/front.png deleted file mode 100644 index 12182258f850..000000000000 Binary files a/graphics/pokemon/weedle/front.png and /dev/null differ diff --git a/graphics/pokemon/weepinbell/footprint.png b/graphics/pokemon/weepinbell/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/weepinbell/footprint.png and b/graphics/pokemon/weepinbell/footprint.png differ diff --git a/graphics/pokemon/weepinbell/front.png b/graphics/pokemon/weepinbell/front.png deleted file mode 100644 index 20b61b8d5f6f..000000000000 Binary files a/graphics/pokemon/weepinbell/front.png and /dev/null differ diff --git a/graphics/pokemon/weezing/footprint.png b/graphics/pokemon/weezing/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/weezing/footprint.png and b/graphics/pokemon/weezing/footprint.png differ diff --git a/graphics/pokemon/weezing/front.png b/graphics/pokemon/weezing/front.png deleted file mode 100644 index d165c8478586..000000000000 Binary files a/graphics/pokemon/weezing/front.png and /dev/null differ diff --git a/graphics/pokemon/weezing/icon.png b/graphics/pokemon/weezing/icon.png index c39338498872..5c2421a2a9f8 100644 Binary files a/graphics/pokemon/weezing/icon.png and b/graphics/pokemon/weezing/icon.png differ diff --git a/graphics/pokemon/whimsicott/footprint.png b/graphics/pokemon/whimsicott/footprint.png index 4cc2972cf28e..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/whimsicott/footprint.png and b/graphics/pokemon/whimsicott/footprint.png differ diff --git a/graphics/pokemon/whimsicott/front.png b/graphics/pokemon/whimsicott/front.png deleted file mode 100644 index 013719675cc9..000000000000 Binary files a/graphics/pokemon/whimsicott/front.png and /dev/null differ diff --git a/graphics/pokemon/whirlipede/footprint.png b/graphics/pokemon/whirlipede/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/whirlipede/footprint.png and b/graphics/pokemon/whirlipede/footprint.png differ diff --git a/graphics/pokemon/whirlipede/front.png b/graphics/pokemon/whirlipede/front.png deleted file mode 100644 index 62433508296b..000000000000 Binary files a/graphics/pokemon/whirlipede/front.png and /dev/null differ diff --git a/graphics/pokemon/whiscash/back.png b/graphics/pokemon/whiscash/back.png index 8741f6e9ac10..07e3fb0f6864 100644 Binary files a/graphics/pokemon/whiscash/back.png and b/graphics/pokemon/whiscash/back.png differ diff --git a/graphics/pokemon/whiscash/footprint.png b/graphics/pokemon/whiscash/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/whiscash/footprint.png and b/graphics/pokemon/whiscash/footprint.png differ diff --git a/graphics/pokemon/whiscash/front.png b/graphics/pokemon/whiscash/front.png deleted file mode 100644 index d62e69f3c3aa..000000000000 Binary files a/graphics/pokemon/whiscash/front.png and /dev/null differ diff --git a/graphics/pokemon/whismur/footprint.png b/graphics/pokemon/whismur/footprint.png index a2ad42b4cabd..a3a49ad7c053 100644 Binary files a/graphics/pokemon/whismur/footprint.png and b/graphics/pokemon/whismur/footprint.png differ diff --git a/graphics/pokemon/whismur/front.png b/graphics/pokemon/whismur/front.png deleted file mode 100644 index 3a4c69d47bea..000000000000 Binary files a/graphics/pokemon/whismur/front.png and /dev/null differ diff --git a/graphics/pokemon/wigglytuff/footprint.png b/graphics/pokemon/wigglytuff/footprint.png index 68ce8eda38c4..d563a2417439 100644 Binary files a/graphics/pokemon/wigglytuff/footprint.png and b/graphics/pokemon/wigglytuff/footprint.png differ diff --git a/graphics/pokemon/wigglytuff/front.png b/graphics/pokemon/wigglytuff/front.png deleted file mode 100644 index 5f5ee7e91801..000000000000 Binary files a/graphics/pokemon/wigglytuff/front.png and /dev/null differ diff --git a/graphics/pokemon/wimpod/footprint.png b/graphics/pokemon/wimpod/footprint.png index 9e61a6530390..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/wimpod/footprint.png and b/graphics/pokemon/wimpod/footprint.png differ diff --git a/graphics/pokemon/wingull/back.png b/graphics/pokemon/wingull/back.png index dd40dda6b1d9..b419bf6410b2 100644 Binary files a/graphics/pokemon/wingull/back.png and b/graphics/pokemon/wingull/back.png differ diff --git a/graphics/pokemon/wingull/footprint.png b/graphics/pokemon/wingull/footprint.png index 057b2cefad6c..26b410ad3716 100644 Binary files a/graphics/pokemon/wingull/footprint.png and b/graphics/pokemon/wingull/footprint.png differ diff --git a/graphics/pokemon/wingull/front.png b/graphics/pokemon/wingull/front.png deleted file mode 100644 index dc5fe2e80aa5..000000000000 Binary files a/graphics/pokemon/wingull/front.png and /dev/null differ diff --git a/graphics/pokemon/wishiwashi/footprint.png b/graphics/pokemon/wishiwashi/footprint.png index 2d3e0d13406d..2449369fd6b8 100644 Binary files a/graphics/pokemon/wishiwashi/footprint.png and b/graphics/pokemon/wishiwashi/footprint.png differ diff --git a/graphics/pokemon/wobbuffet/footprint.png b/graphics/pokemon/wobbuffet/footprint.png index 49fa6818d129..b7d2324d23b3 100644 Binary files a/graphics/pokemon/wobbuffet/footprint.png and b/graphics/pokemon/wobbuffet/footprint.png differ diff --git a/graphics/pokemon/wobbuffet/front.png b/graphics/pokemon/wobbuffet/front.png deleted file mode 100644 index a8efd17ef78e..000000000000 Binary files a/graphics/pokemon/wobbuffet/front.png and /dev/null differ diff --git a/graphics/pokemon/woobat/footprint.png b/graphics/pokemon/woobat/footprint.png index dde2b2638951..2449369fd6b8 100644 Binary files a/graphics/pokemon/woobat/footprint.png and b/graphics/pokemon/woobat/footprint.png differ diff --git a/graphics/pokemon/woobat/front.png b/graphics/pokemon/woobat/front.png deleted file mode 100644 index 793607dc895f..000000000000 Binary files a/graphics/pokemon/woobat/front.png and /dev/null differ diff --git a/graphics/pokemon/woobat/icon.png b/graphics/pokemon/woobat/icon.png index 354353e885e3..c3640d5ad078 100644 Binary files a/graphics/pokemon/woobat/icon.png and b/graphics/pokemon/woobat/icon.png differ diff --git a/graphics/pokemon/wooloo/footprint.png b/graphics/pokemon/wooloo/footprint.png index 7c44b00b0259..fbe404e97a77 100644 Binary files a/graphics/pokemon/wooloo/footprint.png and b/graphics/pokemon/wooloo/footprint.png differ diff --git a/graphics/pokemon/wooper/footprint.png b/graphics/pokemon/wooper/footprint.png index 5e1ba56e61e3..22911aa46c4f 100644 Binary files a/graphics/pokemon/wooper/footprint.png and b/graphics/pokemon/wooper/footprint.png differ diff --git a/graphics/pokemon/wooper/front.png b/graphics/pokemon/wooper/front.png deleted file mode 100644 index ad14f25b21eb..000000000000 Binary files a/graphics/pokemon/wooper/front.png and /dev/null differ diff --git a/graphics/pokemon/wormadam/front.png b/graphics/pokemon/wormadam/front.png deleted file mode 100644 index 575460ac0be7..000000000000 Binary files a/graphics/pokemon/wormadam/front.png and /dev/null differ diff --git a/graphics/pokemon/wormadam/icon.png b/graphics/pokemon/wormadam/icon.png index eb622fca237b..866acd17ba64 100644 Binary files a/graphics/pokemon/wormadam/icon.png and b/graphics/pokemon/wormadam/icon.png differ diff --git a/graphics/pokemon/wormadam/plant/footprint.png b/graphics/pokemon/wormadam/plant/footprint.png index 285e15672549..2449369fd6b8 100644 Binary files a/graphics/pokemon/wormadam/plant/footprint.png and b/graphics/pokemon/wormadam/plant/footprint.png differ diff --git a/graphics/pokemon/wormadam/sandy_cloak/front.png b/graphics/pokemon/wormadam/sandy_cloak/front.png deleted file mode 100644 index 5d08516fddb4..000000000000 Binary files a/graphics/pokemon/wormadam/sandy_cloak/front.png and /dev/null differ diff --git a/graphics/pokemon/wormadam/sandy_cloak/icon.png b/graphics/pokemon/wormadam/sandy_cloak/icon.png index 2c165141be82..a45417a61621 100644 Binary files a/graphics/pokemon/wormadam/sandy_cloak/icon.png and b/graphics/pokemon/wormadam/sandy_cloak/icon.png differ diff --git a/graphics/pokemon/wormadam/trash_cloak/front.png b/graphics/pokemon/wormadam/trash_cloak/front.png deleted file mode 100644 index a15ba6b90670..000000000000 Binary files a/graphics/pokemon/wormadam/trash_cloak/front.png and /dev/null differ diff --git a/graphics/pokemon/wormadam/trash_cloak/icon.png b/graphics/pokemon/wormadam/trash_cloak/icon.png index f971e3fb59a5..6834629e9ab3 100644 Binary files a/graphics/pokemon/wormadam/trash_cloak/icon.png and b/graphics/pokemon/wormadam/trash_cloak/icon.png differ diff --git a/graphics/pokemon/wurmple/footprint.png b/graphics/pokemon/wurmple/footprint.png index 3ac4abd9f7a1..bbb7102f6695 100644 Binary files a/graphics/pokemon/wurmple/footprint.png and b/graphics/pokemon/wurmple/footprint.png differ diff --git a/graphics/pokemon/wurmple/front.png b/graphics/pokemon/wurmple/front.png deleted file mode 100644 index bad155a3def5..000000000000 Binary files a/graphics/pokemon/wurmple/front.png and /dev/null differ diff --git a/graphics/pokemon/wynaut/footprint.png b/graphics/pokemon/wynaut/footprint.png index 4fe4832c08b4..6b0daca37ada 100644 Binary files a/graphics/pokemon/wynaut/footprint.png and b/graphics/pokemon/wynaut/footprint.png differ diff --git a/graphics/pokemon/wynaut/front.png b/graphics/pokemon/wynaut/front.png deleted file mode 100644 index 197d67fdf8d4..000000000000 Binary files a/graphics/pokemon/wynaut/front.png and /dev/null differ diff --git a/graphics/pokemon/wynaut/icon.png b/graphics/pokemon/wynaut/icon.png index 042c182352b7..c3f81995e64e 100644 Binary files a/graphics/pokemon/wynaut/icon.png and b/graphics/pokemon/wynaut/icon.png differ diff --git a/graphics/pokemon/wyrdeer/back.png b/graphics/pokemon/wyrdeer/back.png new file mode 100755 index 000000000000..00f1ba932de5 Binary files /dev/null and b/graphics/pokemon/wyrdeer/back.png differ diff --git a/graphics/pokemon/wyrdeer/front.png b/graphics/pokemon/wyrdeer/front.png new file mode 100755 index 000000000000..9e5bffce51c8 Binary files /dev/null and b/graphics/pokemon/wyrdeer/front.png differ diff --git a/graphics/pokemon/wyrdeer/normal.pal b/graphics/pokemon/wyrdeer/normal.pal new file mode 100755 index 000000000000..10073e447584 --- /dev/null +++ b/graphics/pokemon/wyrdeer/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +152 104 56 +248 216 168 +120 72 64 +232 184 128 +0 0 0 +72 72 72 +224 152 88 +160 168 168 +120 120 120 +112 128 136 +240 240 240 +192 200 208 +56 64 64 +88 88 88 +64 72 80 diff --git a/graphics/pokemon/wyrdeer/shiny.pal b/graphics/pokemon/wyrdeer/shiny.pal new file mode 100755 index 000000000000..ecd55cb218dc --- /dev/null +++ b/graphics/pokemon/wyrdeer/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +152 104 56 +248 216 168 +120 72 64 +232 184 128 +0 0 0 +72 72 72 +224 152 88 +168 180 128 +120 140 80 +112 128 136 +232 236 208 +208 216 152 +56 64 64 +88 88 88 +64 72 80 diff --git a/graphics/pokemon/xatu/anim_front.png b/graphics/pokemon/xatu/anim_front.png index b6968e7758f1..c3d3143846d7 100644 Binary files a/graphics/pokemon/xatu/anim_front.png and b/graphics/pokemon/xatu/anim_front.png differ diff --git a/graphics/pokemon/xatu/footprint.png b/graphics/pokemon/xatu/footprint.png index 44fcad1e3ed9..52be0000848a 100644 Binary files a/graphics/pokemon/xatu/footprint.png and b/graphics/pokemon/xatu/footprint.png differ diff --git a/graphics/pokemon/xatu/front.png b/graphics/pokemon/xatu/front.png deleted file mode 100644 index 93c794763291..000000000000 Binary files a/graphics/pokemon/xatu/front.png and /dev/null differ diff --git a/graphics/pokemon/xatu/normal.pal b/graphics/pokemon/xatu/normal.pal index eb20bf6aea89..05aeca9fc5f5 100644 --- a/graphics/pokemon/xatu/normal.pal +++ b/graphics/pokemon/xatu/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -72 144 64 -144 208 64 -40 104 40 -176 136 32 -112 184 64 -248 184 48 -136 88 0 +74 148 65 +148 213 65 +41 106 41 +180 139 32 +115 189 65 +255 189 49 +139 90 0 16 16 16 -248 248 248 -144 144 144 -80 80 80 -128 40 0 -176 48 0 -200 200 200 -232 56 0 +255 255 255 +148 148 148 +82 82 82 +131 41 0 +180 49 0 +205 205 205 +238 57 0 diff --git a/graphics/pokemon/xerneas/active/front.png b/graphics/pokemon/xerneas/active/front.png deleted file mode 100644 index b291e10f4f7d..000000000000 Binary files a/graphics/pokemon/xerneas/active/front.png and /dev/null differ diff --git a/graphics/pokemon/xerneas/back.png b/graphics/pokemon/xerneas/back.png index 30654685a9aa..5f38d48dd36b 100644 Binary files a/graphics/pokemon/xerneas/back.png and b/graphics/pokemon/xerneas/back.png differ diff --git a/graphics/pokemon/xerneas/footprint.png b/graphics/pokemon/xerneas/footprint.png index d66c01256262..2a1c1f3dd159 100644 Binary files a/graphics/pokemon/xerneas/footprint.png and b/graphics/pokemon/xerneas/footprint.png differ diff --git a/graphics/pokemon/xerneas/front.png b/graphics/pokemon/xerneas/front.png index d219e463b937..357f3b4294af 100644 Binary files a/graphics/pokemon/xerneas/front.png and b/graphics/pokemon/xerneas/front.png differ diff --git a/graphics/pokemon/xerneas/icon.png b/graphics/pokemon/xerneas/icon.png index f59ee416fa95..31036c9ee11e 100644 Binary files a/graphics/pokemon/xerneas/icon.png and b/graphics/pokemon/xerneas/icon.png differ diff --git a/graphics/pokemon/xurkitree/footprint.png b/graphics/pokemon/xurkitree/footprint.png index 09228b878d65..822e298f1372 100644 Binary files a/graphics/pokemon/xurkitree/footprint.png and b/graphics/pokemon/xurkitree/footprint.png differ diff --git a/graphics/pokemon/yamask/footprint.png b/graphics/pokemon/yamask/footprint.png index 4aee2c64850b..2449369fd6b8 100644 Binary files a/graphics/pokemon/yamask/footprint.png and b/graphics/pokemon/yamask/footprint.png differ diff --git a/graphics/pokemon/yamask/front.png b/graphics/pokemon/yamask/front.png deleted file mode 100644 index 28a564b55b48..000000000000 Binary files a/graphics/pokemon/yamask/front.png and /dev/null differ diff --git a/graphics/pokemon/yamper/footprint.png b/graphics/pokemon/yamper/footprint.png index 4324de5e4fb8..793daaba5287 100644 Binary files a/graphics/pokemon/yamper/footprint.png and b/graphics/pokemon/yamper/footprint.png differ diff --git a/graphics/pokemon/yanma/footprint.png b/graphics/pokemon/yanma/footprint.png index 20b4a00b0694..fc45b68cf42b 100644 Binary files a/graphics/pokemon/yanma/footprint.png and b/graphics/pokemon/yanma/footprint.png differ diff --git a/graphics/pokemon/yanma/front.png b/graphics/pokemon/yanma/front.png deleted file mode 100644 index 54d4f54cdad8..000000000000 Binary files a/graphics/pokemon/yanma/front.png and /dev/null differ diff --git a/graphics/pokemon/yanmega/anim_front.png b/graphics/pokemon/yanmega/anim_front.png index d50d34b73b22..f5b4db9afab2 100644 Binary files a/graphics/pokemon/yanmega/anim_front.png and b/graphics/pokemon/yanmega/anim_front.png differ diff --git a/graphics/pokemon/yanmega/footprint.png b/graphics/pokemon/yanmega/footprint.png index ae5e4f6f781f..eaa8855b8dc1 100644 Binary files a/graphics/pokemon/yanmega/footprint.png and b/graphics/pokemon/yanmega/footprint.png differ diff --git a/graphics/pokemon/yanmega/front.png b/graphics/pokemon/yanmega/front.png deleted file mode 100644 index 943aa095a7aa..000000000000 Binary files a/graphics/pokemon/yanmega/front.png and /dev/null differ diff --git a/graphics/pokemon/yungoos/footprint.png b/graphics/pokemon/yungoos/footprint.png index bf93269ca977..2f8e0312a5c7 100644 Binary files a/graphics/pokemon/yungoos/footprint.png and b/graphics/pokemon/yungoos/footprint.png differ diff --git a/graphics/pokemon/yveltal/footprint.png b/graphics/pokemon/yveltal/footprint.png index 0f8d4fd8b12f..1016b31bcfa2 100644 Binary files a/graphics/pokemon/yveltal/footprint.png and b/graphics/pokemon/yveltal/footprint.png differ diff --git a/graphics/pokemon/yveltal/front.png b/graphics/pokemon/yveltal/front.png deleted file mode 100644 index 7a259c51397e..000000000000 Binary files a/graphics/pokemon/yveltal/front.png and /dev/null differ diff --git a/graphics/pokemon/zacian/footprint.png b/graphics/pokemon/zacian/footprint.png index eeb3f0ca688c..93ac3a9f876f 100644 Binary files a/graphics/pokemon/zacian/footprint.png and b/graphics/pokemon/zacian/footprint.png differ diff --git a/graphics/pokemon/zamazenta/footprint.png b/graphics/pokemon/zamazenta/footprint.png index 242a33ad6816..baca07e795f7 100644 Binary files a/graphics/pokemon/zamazenta/footprint.png and b/graphics/pokemon/zamazenta/footprint.png differ diff --git a/graphics/pokemon/zangoose/footprint.png b/graphics/pokemon/zangoose/footprint.png index e07e58ceecbe..cc43fe9176b4 100644 Binary files a/graphics/pokemon/zangoose/footprint.png and b/graphics/pokemon/zangoose/footprint.png differ diff --git a/graphics/pokemon/zangoose/front.png b/graphics/pokemon/zangoose/front.png deleted file mode 100644 index d9640b8428d2..000000000000 Binary files a/graphics/pokemon/zangoose/front.png and /dev/null differ diff --git a/graphics/pokemon/zangoose/icon.png b/graphics/pokemon/zangoose/icon.png index 83a9ce97fd56..80f3b7c450e2 100644 Binary files a/graphics/pokemon/zangoose/icon.png and b/graphics/pokemon/zangoose/icon.png differ diff --git a/graphics/pokemon/zapdos/back.png b/graphics/pokemon/zapdos/back.png index 00b3410ddffc..0b7cc3c7b335 100644 Binary files a/graphics/pokemon/zapdos/back.png and b/graphics/pokemon/zapdos/back.png differ diff --git a/graphics/pokemon/zapdos/footprint.png b/graphics/pokemon/zapdos/footprint.png index 480063a88b75..80b07a5b0a3f 100644 Binary files a/graphics/pokemon/zapdos/footprint.png and b/graphics/pokemon/zapdos/footprint.png differ diff --git a/graphics/pokemon/zapdos/front.png b/graphics/pokemon/zapdos/front.png deleted file mode 100644 index 790791d6eb6e..000000000000 Binary files a/graphics/pokemon/zapdos/front.png and /dev/null differ diff --git a/graphics/pokemon/zarude/footprint.png b/graphics/pokemon/zarude/footprint.png index 3e1c2c2fdfa1..8a04084f214c 100644 Binary files a/graphics/pokemon/zarude/footprint.png and b/graphics/pokemon/zarude/footprint.png differ diff --git a/graphics/pokemon/zebstrika/footprint.png b/graphics/pokemon/zebstrika/footprint.png index e169cc9fbf60..e88ea3a94827 100644 Binary files a/graphics/pokemon/zebstrika/footprint.png and b/graphics/pokemon/zebstrika/footprint.png differ diff --git a/graphics/pokemon/zebstrika/front.png b/graphics/pokemon/zebstrika/front.png deleted file mode 100644 index 8d097028270e..000000000000 Binary files a/graphics/pokemon/zebstrika/front.png and /dev/null differ diff --git a/graphics/pokemon/zekrom/footprint.png b/graphics/pokemon/zekrom/footprint.png index e93444fa04f2..8f131709574e 100644 Binary files a/graphics/pokemon/zekrom/footprint.png and b/graphics/pokemon/zekrom/footprint.png differ diff --git a/graphics/pokemon/zekrom/front.png b/graphics/pokemon/zekrom/front.png deleted file mode 100644 index 265903400a4c..000000000000 Binary files a/graphics/pokemon/zekrom/front.png and /dev/null differ diff --git a/graphics/pokemon/zekrom/icon.png b/graphics/pokemon/zekrom/icon.png index 33115bae9d62..c4380ec69a67 100644 Binary files a/graphics/pokemon/zekrom/icon.png and b/graphics/pokemon/zekrom/icon.png differ diff --git a/graphics/pokemon/zeraora/footprint.png b/graphics/pokemon/zeraora/footprint.png index 3d73d15e40ea..f733f049012e 100644 Binary files a/graphics/pokemon/zeraora/footprint.png and b/graphics/pokemon/zeraora/footprint.png differ diff --git a/graphics/pokemon/zigzagoon/footprint.png b/graphics/pokemon/zigzagoon/footprint.png index d7373e064189..421b25991e34 100644 Binary files a/graphics/pokemon/zigzagoon/footprint.png and b/graphics/pokemon/zigzagoon/footprint.png differ diff --git a/graphics/pokemon/zigzagoon/front.png b/graphics/pokemon/zigzagoon/front.png deleted file mode 100644 index da1a3a6ad88d..000000000000 Binary files a/graphics/pokemon/zigzagoon/front.png and /dev/null differ diff --git a/graphics/pokemon/zoroark/footprint.png b/graphics/pokemon/zoroark/footprint.png index e203679b9fe7..86ba3e3d1ebb 100644 Binary files a/graphics/pokemon/zoroark/footprint.png and b/graphics/pokemon/zoroark/footprint.png differ diff --git a/graphics/pokemon/zoroark/front.png b/graphics/pokemon/zoroark/front.png deleted file mode 100644 index 365e9ca96cbd..000000000000 Binary files a/graphics/pokemon/zoroark/front.png and /dev/null differ diff --git a/graphics/pokemon/zoroark/icon.png b/graphics/pokemon/zoroark/icon.png index 08d5206f3bf1..338a576a4a19 100644 Binary files a/graphics/pokemon/zoroark/icon.png and b/graphics/pokemon/zoroark/icon.png differ diff --git a/graphics/pokemon/zorua/footprint.png b/graphics/pokemon/zorua/footprint.png index 370ee0d78e77..115802fa8c2a 100644 Binary files a/graphics/pokemon/zorua/footprint.png and b/graphics/pokemon/zorua/footprint.png differ diff --git a/graphics/pokemon/zorua/front.png b/graphics/pokemon/zorua/front.png deleted file mode 100644 index 58f3f3a7c5fa..000000000000 Binary files a/graphics/pokemon/zorua/front.png and /dev/null differ diff --git a/graphics/pokemon/zubat/footprint.png b/graphics/pokemon/zubat/footprint.png index c7ccf57f373c..2449369fd6b8 100644 Binary files a/graphics/pokemon/zubat/footprint.png and b/graphics/pokemon/zubat/footprint.png differ diff --git a/graphics/pokemon/zubat/front.png b/graphics/pokemon/zubat/front.png deleted file mode 100644 index 36d62770c779..000000000000 Binary files a/graphics/pokemon/zubat/front.png and /dev/null differ diff --git a/graphics/pokemon/zweilous/footprint.png b/graphics/pokemon/zweilous/footprint.png index 222daa341e58..c010b942d0d7 100644 Binary files a/graphics/pokemon/zweilous/footprint.png and b/graphics/pokemon/zweilous/footprint.png differ diff --git a/graphics/pokemon/zweilous/front.png b/graphics/pokemon/zweilous/front.png deleted file mode 100644 index d6e4b809d91f..000000000000 Binary files a/graphics/pokemon/zweilous/front.png and /dev/null differ diff --git a/graphics/pokemon/zweilous/icon.png b/graphics/pokemon/zweilous/icon.png index 7baef54fb0e2..1c0a166af90e 100644 Binary files a/graphics/pokemon/zweilous/icon.png and b/graphics/pokemon/zweilous/icon.png differ diff --git a/graphics/pokemon/zygarde/10_percent/front.png b/graphics/pokemon/zygarde/10_percent/front.png deleted file mode 100644 index f475e6cff3df..000000000000 Binary files a/graphics/pokemon/zygarde/10_percent/front.png and /dev/null differ diff --git a/graphics/pokemon/zygarde/10_percent/icon.png b/graphics/pokemon/zygarde/10_percent/icon.png index 3d968a6b698f..222eb1b80a5a 100644 Binary files a/graphics/pokemon/zygarde/10_percent/icon.png and b/graphics/pokemon/zygarde/10_percent/icon.png differ diff --git a/graphics/pokemon/zygarde/complete/front.png b/graphics/pokemon/zygarde/complete/front.png deleted file mode 100644 index 891af9222660..000000000000 Binary files a/graphics/pokemon/zygarde/complete/front.png and /dev/null differ diff --git a/graphics/pokemon/zygarde/complete/icon.png b/graphics/pokemon/zygarde/complete/icon.png index 8575e8d58d80..663b98fd74fc 100644 Binary files a/graphics/pokemon/zygarde/complete/icon.png and b/graphics/pokemon/zygarde/complete/icon.png differ diff --git a/graphics/pokemon/zygarde/footprint.png b/graphics/pokemon/zygarde/footprint.png index 36541a36f576..1bea4058a5ab 100644 Binary files a/graphics/pokemon/zygarde/footprint.png and b/graphics/pokemon/zygarde/footprint.png differ diff --git a/graphics/pokemon/zygarde/front.png b/graphics/pokemon/zygarde/front.png deleted file mode 100644 index 5f63fc2d8751..000000000000 Binary files a/graphics/pokemon/zygarde/front.png and /dev/null differ diff --git a/graphics/spinda_spots/spot_0.bin b/graphics/spinda_spots/spot_0.bin deleted file mode 100644 index 938d1d592394..000000000000 Binary files a/graphics/spinda_spots/spot_0.bin and /dev/null differ diff --git a/graphics/spinda_spots/spot_0.png b/graphics/spinda_spots/spot_0.png new file mode 100644 index 000000000000..e0a515d77dff Binary files /dev/null and b/graphics/spinda_spots/spot_0.png differ diff --git a/graphics/spinda_spots/spot_1.bin b/graphics/spinda_spots/spot_1.bin deleted file mode 100644 index db46b5de4d91..000000000000 Binary files a/graphics/spinda_spots/spot_1.bin and /dev/null differ diff --git a/graphics/spinda_spots/spot_1.png b/graphics/spinda_spots/spot_1.png new file mode 100644 index 000000000000..0e7fbd399a98 Binary files /dev/null and b/graphics/spinda_spots/spot_1.png differ diff --git a/graphics/spinda_spots/spot_2.bin b/graphics/spinda_spots/spot_2.bin deleted file mode 100644 index 3b1bf7214348..000000000000 Binary files a/graphics/spinda_spots/spot_2.bin and /dev/null differ diff --git a/graphics/spinda_spots/spot_2.png b/graphics/spinda_spots/spot_2.png new file mode 100644 index 000000000000..9bf72bd8c847 Binary files /dev/null and b/graphics/spinda_spots/spot_2.png differ diff --git a/graphics/spinda_spots/spot_3.bin b/graphics/spinda_spots/spot_3.bin deleted file mode 100644 index 10c73f9bad70..000000000000 Binary files a/graphics/spinda_spots/spot_3.bin and /dev/null differ diff --git a/graphics/spinda_spots/spot_3.png b/graphics/spinda_spots/spot_3.png new file mode 100644 index 000000000000..cf4a96f7d3c2 Binary files /dev/null and b/graphics/spinda_spots/spot_3.png differ diff --git a/graphics/union_room_chat/unk_palette2.pal b/graphics/union_room_chat/chat_messages_window.pal similarity index 100% rename from graphics/union_room_chat/unk_palette2.pal rename to graphics/union_room_chat/chat_messages_window.pal diff --git a/graphics/union_room_chat/window_1.pal b/graphics/union_room_chat/input_text.pal similarity index 100% rename from graphics/union_room_chat/window_1.pal rename to graphics/union_room_chat/input_text.pal diff --git a/graphics/union_room_chat/border.bin b/graphics/union_room_chat/keyboard.bin similarity index 100% rename from graphics/union_room_chat/border.bin rename to graphics/union_room_chat/keyboard.bin diff --git a/graphics/union_room_chat/border.png b/graphics/union_room_chat/keyboard.png similarity index 100% rename from graphics/union_room_chat/border.png rename to graphics/union_room_chat/keyboard.png diff --git a/graphics/union_room_chat/r_button.png b/graphics/union_room_chat/r_button.png index 168a293f3547..06079ca2113a 100644 Binary files a/graphics/union_room_chat/r_button.png and b/graphics/union_room_chat/r_button.png differ diff --git a/graphics/union_room_chat/unk_palette1.pal b/graphics/union_room_chat/unused.pal similarity index 100% rename from graphics/union_room_chat/unk_palette1.pal rename to graphics/union_room_chat/unused.pal diff --git a/graphics/union_room_chat/window_2.pal b/graphics/union_room_chat/window_2.pal deleted file mode 100644 index a8c95a3c04ad..000000000000 --- a/graphics/union_room_chat/window_2.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -156 197 98 -41 131 222 -0 82 172 -197 255 106 -172 230 49 -246 246 213 -255 49 49 -255 148 148 -131 164 213 -238 238 90 -65 65 65 -115 115 115 -172 172 172 -230 230 255 -0 0 0 -255 255 255 diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 56ceb4f4d915..cfe5c62578b0 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -22,6 +22,7 @@ JPCONTESTGFXDIR := graphics/contest/japanese POKEDEXGFXDIR := graphics/pokedex STARTERGFXDIR := graphics/starter_choose NAMINGGFXDIR := graphics/naming_screen +SPINDAGFXDIR := graphics/spinda_spots types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark fairy contest_types := cool beauty cute smart tough @@ -699,3 +700,15 @@ $(NAMINGGFXDIR)/cursor_squished.4bpp: %.4bpp: %.png $(NAMINGGFXDIR)/cursor_filled.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 5 -Wnum_tiles + +$(SPINDAGFXDIR)/spot_0.1bpp: %.1bpp: %.png + $(GFX) $< $@ -plain -data_width 2 + +$(SPINDAGFXDIR)/spot_1.1bpp: %.1bpp: %.png + $(GFX) $< $@ -plain -data_width 2 + +$(SPINDAGFXDIR)/spot_2.1bpp: %.1bpp: %.png + $(GFX) $< $@ -plain -data_width 2 + +$(SPINDAGFXDIR)/spot_3.1bpp: %.1bpp: %.png + $(GFX) $< $@ -plain -data_width 2 diff --git a/include/battle.h b/include/battle.h index 8be922384f3a..9cf4f100aa80 100644 --- a/include/battle.h +++ b/include/battle.h @@ -3,6 +3,7 @@ // should they be included here or included individually by every file? #include "constants/battle.h" +#include "constants/form_change_types.h" #include "battle_main.h" #include "battle_message.h" #include "battle_util.h" @@ -61,6 +62,7 @@ struct ResourceFlags struct DisableStruct { u32 transformedMonPersonality; + u32 transformedMonOtId; u16 disabledMove; u16 encoredMove; u8 protectUses; @@ -143,7 +145,9 @@ struct ProtectStruct u16 quickDraw:1; u16 beakBlastCharge:1; u16 quash:1; + u16 shellTrap:1; u16 silkTrapped:1; + u16 eatMirrorHerb:1; u32 physicalDmg; u32 specialDmg; u8 physicalBattlerId; @@ -251,6 +255,7 @@ struct AI_SavedBattleMon u16 moves[MAX_MON_MOVES]; u16 heldItem; u16 species; + u8 types[3]; }; struct AiPartyMon @@ -270,8 +275,8 @@ struct AiPartyMon struct AIPartyData // Opposing battlers - party mons. { - struct AiPartyMon mons[2][PARTY_SIZE]; // 2 parties(player, opponent). Used to save information on opposing party. - u8 count[2]; + struct AiPartyMon mons[NUM_BATTLE_SIDES][PARTY_SIZE]; // 2 parties(player, opponent). Used to save information on opposing party. + u8 count[NUM_BATTLE_SIDES]; }; struct AiLogicData @@ -475,13 +480,7 @@ struct LinkBattlerHeader struct MegaEvolutionData { u8 toEvolve; // As flags using gBitTable. - u8 evolvedPartyIds[2]; // As flags using gBitTable; bool8 alreadyEvolved[4]; // Array id is used for mon position. - u16 evolvedSpecies[MAX_BATTLERS_COUNT]; - u16 playerEvolvedSpecies; - u8 primalRevertedPartyIds[2]; // As flags using gBitTable; - u16 primalRevertedSpecies[MAX_BATTLERS_COUNT]; - u16 playerPrimalRevertedSpecies; u8 battlerId; bool8 playerSelect; u8 triggerSpriteId; @@ -515,7 +514,7 @@ struct ZMoveData u8 splits[MAX_BATTLERS_COUNT]; }; -struct StolenItem +struct LostItem { u16 originalItem:15; u16 stolen:1; @@ -532,8 +531,7 @@ struct BattleStruct u8 wildVictorySong; u8 dynamicMoveType; u8 wrappedBy[MAX_BATTLERS_COUNT]; - u16 assistPossibleMoves[PARTY_SIZE * MAX_MON_MOVES]; // Each of mons can know max 4 moves. - u8 focusPunchBattlerId; + u8 focusPunchBattlers; // as bits u8 battlerPreventingSwitchout; u8 moneyMultiplier:6; u8 moneyMultiplierItem:1; @@ -580,8 +578,6 @@ struct BattleStruct void (*savedCallback)(void); u16 usedHeldItems[PARTY_SIZE][NUM_BATTLE_SIDES]; // For each party member and side. For harvest, recycle u16 chosenItem[MAX_BATTLERS_COUNT]; - u8 AI_itemType[2]; - u8 AI_itemFlags[2]; u16 choicedMove[MAX_BATTLERS_COUNT]; u16 changedItems[MAX_BATTLERS_COUNT]; u8 switchInItemsCounter; @@ -641,9 +637,11 @@ struct BattleStruct u16 moveEffect2; // For Knock Off u16 changedSpecies[PARTY_SIZE]; // For Zygarde or future forms when multiple mons can change into the same pokemon. u8 quickClawBattlerId; - struct StolenItem itemStolen[PARTY_SIZE]; // Player's team that had items stolen (two bytes per party member) + struct LostItem itemLost[PARTY_SIZE]; // Player's team that had items consumed or stolen (two bytes per party member) u8 blunderPolicy:1; // should blunder policy activate u8 swapDamageCategory:1; // Photon Geyser, Shell Side Arm, Light That Burns the Sky + u8 forcedSwitch:4; // For each battler + u8 switchInAbilityPostponed:4; // To not activate against an empty field, each bit for battler u8 ballSpriteIds[2]; // item gfx, window gfx u8 stickyWebUser; u8 appearedInBattle; // Bitfield to track which Pokemon appeared in battle. Used for Burmy's form change @@ -651,10 +649,25 @@ struct BattleStruct // When using a move which hits multiple opponents which is then bounced by a target, we need to make sure, the move hits both opponents, the one with bounce, and the one without. u8 attackerBeforeBounce:2; u8 beatUpSlot:3; + bool8 hitSwitchTargetFailed:1; + bool8 effectsBeforeUsingMoveDone:1; // Mega Evo and Focus Punch/Shell Trap effects. u8 targetsDone[MAX_BATTLERS_COUNT]; // Each battler as a bit. u16 overwrittenAbilities[MAX_BATTLERS_COUNT]; // abilities overwritten during battle (keep separate from battle history in case of switching) bool8 allowedToChangeFormInWeather[PARTY_SIZE][2]; // For each party member and side, used by Ice Face. u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party. + u8 storedHealingWish:4; // Each battler as a bit. + u8 storedLunarDance:4; // Each battler as a bit. + u16 supremeOverlordModifier[MAX_BATTLERS_COUNT]; + u8 itemPartyIndex[MAX_BATTLERS_COUNT]; + u8 itemMoveIndex[MAX_BATTLERS_COUNT]; + bool8 trainerSlideHalfHpMsgDone; + u8 trainerSlideFirstCriticalHitMsgState:2; + u8 trainerSlideFirstSuperEffectiveHitMsgState:2; + u8 trainerSlideFirstSTABMoveMsgState:2; + u8 trainerSlidePlayerMonUnaffectedMsgState:2; + bool8 trainerSlideMegaEvolutionMsgDone; + bool8 trainerSlideZMoveMsgDone; + bool8 trainerSlideBeforeFirstTurnMsgDone; }; #define F_DYNAMIC_TYPE_1 (1 << 6) @@ -713,6 +726,17 @@ struct BattleStruct #define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + ((stage) << 3) + (goesDown << 7)) #define SET_STATCHANGER2(dst, statId, stage, goesDown)(dst = (statId) + ((stage) << 3) + (goesDown << 7)) +static inline struct Pokemon *GetSideParty(u32 side) +{ + return side == B_SIDE_PLAYER ? gPlayerParty : gEnemyParty; +} + +static inline struct Pokemon *GetBattlerParty(u32 battlerId) +{ + extern u8 GetBattlerSide(u8 battler); + return GetSideParty(GetBattlerSide(battlerId)); +} + // NOTE: The members of this struct have hard-coded offsets // in include/constants/battle_script_commands.h struct BattleScripting @@ -846,7 +870,7 @@ struct MonSpritesGfx u8 *byte[MAX_BATTLERS_COUNT]; } sprites; struct SpriteTemplate templates[MAX_BATTLERS_COUNT]; - struct SpriteFrameImage frameImages[MAX_BATTLERS_COUNT][4]; + struct SpriteFrameImage frameImages[MAX_BATTLERS_COUNT][MAX_MON_PIC_FRAMES]; u8 unusedArr[0x80]; u8 *barFontGfx; void *unusedPtr; @@ -956,6 +980,7 @@ extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; extern u8 gBattlerInMenuId; extern bool8 gDoingBattleAnim; extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT]; +extern u32 gTransformedOtIds[MAX_BATTLERS_COUNT]; extern u8 gPlayerDpadHoldFrames; extern struct BattleSpriteData *gBattleSpritesDataPtr; extern struct MonSpritesGfx *gMonSpritesGfxPtr; diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index 70dc41b34b7e..622593b6ddd0 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -1,36 +1,6 @@ #ifndef GUARD_BATTLE_AI_SWITCH_ITEMS_H #define GUARD_BATTLE_AI_SWITCH_ITEMS_H -enum -{ - AI_ITEM_FULL_RESTORE = 1, - AI_ITEM_HEAL_HP, - AI_ITEM_CURE_CONDITION, - AI_ITEM_X_STAT, - AI_ITEM_GUARD_SPEC, - AI_ITEM_NOT_RECOGNIZABLE -}; - -enum { - AI_HEAL_CONFUSION, - AI_HEAL_PARALYSIS, - AI_HEAL_FREEZE, - AI_HEAL_BURN, - AI_HEAL_POISON, - AI_HEAL_SLEEP, -}; - -enum { - AI_X_ATTACK, - AI_X_DEFEND, - AI_X_SPEED, - AI_X_SPATK, - AI_X_SPDEF, // Unused - AI_X_ACCURACY, - AI_X_EVASION, // Unused - AI_DIRE_HIT, -}; - void GetAIPartyIndexes(u32 battlerId, s32 *firstId, s32 *lastId); void AI_TrySwitchOrUseItem(void); u8 GetMostSuitableMonToSwitchInto(void); diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 11eba7b6618f..67ff6968e29f 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -9,7 +9,8 @@ bool32 AI_RandLessThan(u8 val); void RecordLastUsedMoveByTarget(void); -bool32 IsBattlerAIControlled(u32 battlerId); +bool32 BattlerHasAi(u32 battlerId); +bool32 IsAiBattlerAware(u32 battlerId); void ClearBattlerMoveHistory(u8 battlerId); void RecordLastUsedMoveBy(u32 battlerId, u32 move); void RecordKnownMove(u8 battlerId, u32 move); @@ -111,6 +112,7 @@ bool32 IsEncoreEncouragedEffect(u16 moveEffect); void ProtectChecks(u8 battlerAtk, u8 battlerDef, u16 move, u16 predictedMove, s16 *score); bool32 ShouldSetSandstorm(u8 battler, u16 ability, u16 holdEffect); bool32 ShouldSetHail(u8 battler, u16 ability, u16 holdEffect); +bool32 ShouldSetSnow(u8 battler, u16 ability, u16 holdEffect); bool32 ShouldSetRain(u8 battlerAtk, u16 ability, u16 holdEffect); bool32 ShouldSetSun(u8 battlerAtk, u16 atkAbility, u16 holdEffect); bool32 HasSleepMoveWithLowAccuracy(u8 battlerAtk, u8 battlerDef); @@ -129,6 +131,7 @@ bool32 IsSemiInvulnerable(u8 battlerDef, u16 move); // status checks bool32 AI_CanBeBurned(u8 battler, u16 ability); +bool32 AI_CanGetFrostbite(u8 battler, u16 ability); bool32 AI_CanBeConfused(u8 battler, u16 ability); bool32 AI_CanSleep(u8 battler, u16 ability); bool32 IsBattlerIncapacitated(u8 battler, u16 ability); @@ -139,11 +142,13 @@ bool32 AI_CanParalyze(u8 battlerAtk, u8 battlerDef, u16 defAbility, u16 move, u1 bool32 AI_CanConfuse(u8 battlerAtk, u8 battlerDef, u16 defAbility, u8 battlerAtkPartner, u16 move, u16 partnerMove); bool32 ShouldBurnSelf(u8 battler, u16 ability); bool32 AI_CanBurn(u8 battlerAtk, u8 battlerDef, u16 defAbility, u8 battlerAtkPartner, u16 move, u16 partnerMove); -bool32 AI_CanBeInfatuated(u8 battlerAtk, u8 battlerDef, u16 defAbility, u8 atkGender, u8 defGender); +bool32 AI_CanGiveFrostbite(u8 battlerAtk, u8 battlerDef, u16 defAbility, u8 battlerAtkPartner, u16 move, u16 partnerMove); +bool32 AI_CanBeInfatuated(u8 battlerAtk, u8 battlerDef, u16 defAbility); bool32 AnyPartyMemberStatused(u8 battlerId, bool32 checkSoundproof); u32 ShouldTryToFlinch(u8 battlerAtk, u8 battlerDef, u16 atkAbility, u16 defAbility, u16 move); bool32 ShouldTrap(u8 battlerAtk, u8 battlerDef, u16 move); bool32 IsWakeupTurn(u8 battler); +bool32 AI_IsBattlerAsleepOrComatose(u8 battlerId); // partner logic u16 GetAllyChosenMove(u8 battlerId); @@ -168,10 +173,11 @@ bool32 SideHasMoveSplit(u8 battlerId, u8 split); // score increases void IncreaseStatUpScore(u8 battlerAtk, u8 battlerDef, u8 statId, s16 *score); -void IncreasePoisonScore(u8 battlerAtk, u8 battlerdef, u16 move, s16 *score); -void IncreaseBurnScore(u8 battlerAtk, u8 battlerdef, u16 move, s16 *score); +void IncreasePoisonScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score); +void IncreaseBurnScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score); void IncreaseParalyzeScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score); void IncreaseSleepScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score); void IncreaseConfusionScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score); +void IncreaseFrostbiteScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score); -#endif //GUARD_BATTLE_AI_UTIL_H \ No newline at end of file +#endif //GUARD_BATTLE_AI_UTIL_H diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 491d5fefd1f4..9a0b79c31375 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -23,7 +23,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId); void ClearSpritesHealthboxAnimData(void); void CopyAllBattleSpritesInvisibilities(void); void CopyBattleSpriteInvisibility(u8 battlerId); -void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform, bool32 megaEvo, bool8 trackEnemyPersonality); +void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 castform, bool32 megaEvo, bool8 trackEnemyPersonality); void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite); void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId); void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move); diff --git a/include/battle_interface.h b/include/battle_interface.h index c82f2acc2ea7..e2937748a4a6 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -56,8 +56,7 @@ enum #define TAG_MEGA_TRIGGER_PAL 0xD777 #define TAG_MEGA_INDICATOR_PAL 0xD778 -#define TAG_ALPHA_INDICATOR_PAL 0xD779 -#define TAG_OMEGA_INDICATOR_PAL 0xD77A +#define TAG_ALPHA_OMEGA_INDICATOR_PAL 0xD779 // Alpha and Omega indicators use the same palette as each of them only uses 4 different colors. #define TAG_ZMOVE_TRIGGER_PAL 0xD77B enum @@ -77,13 +76,11 @@ enum }; u32 WhichBattleCoords(u32 battlerId); -u8 GetMegaIndicatorSpriteId(u32 healthboxSpriteId); u8 CreateBattlerHealthboxSprites(u8 battler); u8 CreateSafariPlayerHealthboxSprites(void); void SetBattleBarStruct(u8 battler, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue); void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); void SetHealthboxSpriteVisible(u8 healthboxSpriteId); -void DestoryHealthboxSprite(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHpBoxes); void InitBattlerHealthboxCoords(u8 battler); @@ -94,8 +91,7 @@ void CreateMegaTriggerSprite(u8 battlerId, u8 palId); bool32 IsMegaTriggerSpriteActive(void); void HideMegaTriggerSprite(void); void DestroyMegaTriggerSprite(void); -u32 CreateMegaIndicatorSprite(u32 battlerId, u32 which); -void DestroyMegaIndicatorSprite(u32 healthboxSpriteId); +void MegaIndicator_LoadSpritesGfx(void); u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart); void Task_HidePartyStatusSummary(u8 taskId); void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); diff --git a/include/battle_main.h b/include/battle_main.h index df59dcae3419..4f20e4c17a7c 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -1,6 +1,9 @@ #ifndef GUARD_BATTLE_MAIN_H #define GUARD_BATTLE_MAIN_H +#include "pokemon.h" +#include "data.h" + struct TrainerMoney { u8 classId; @@ -66,6 +69,9 @@ bool8 TryRunFromBattle(u8 battlerId); void SpecialStatusesClear(void); void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk); bool32 IsWildMonSmart(void); +u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer *trainer, bool32 firstTrainer, u32 battleTypeFlags); +void ModifyPersonalityForNature(u32 *personality, u32 newNature); +u32 GeneratePersonalityForGender(u32 gender, u32 species); extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE]; diff --git a/include/battle_message.h b/include/battle_message.h index 9f6905abd358..93bb63022b43 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -229,6 +229,14 @@ enum TRAINER_SLIDE_LAST_SWITCHIN, TRAINER_SLIDE_LAST_LOW_HP, TRAINER_SLIDE_FIRST_DOWN, + TRAINER_SLIDE_LAST_HALF_HP, + TRAINER_SLIDE_FIRST_CRITICAL_HIT, + TRAINER_SLIDE_FIRST_SUPER_EFFECTIVE_HIT, + TRAINER_SLIDE_FIRST_STAB_MOVE, + TRAINER_SLIDE_PLAYER_MON_UNAFFECTED, + TRAINER_SLIDE_MEGA_EVOLUTION, + TRAINER_SLIDE_Z_MOVE, + TRAINER_SLIDE_BEFORE_FIRST_TURN, }; void BufferStringBattle(u16 stringID); @@ -237,7 +245,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst); void BattlePutTextOnWindow(const u8 *text, u8 windowId); void SetPpNumbersPaletteInMoveSelection(void); u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp); -bool32 ShouldDoTrainerSlide(u32 battlerId, u32 trainerId, u32 which); +u32 ShouldDoTrainerSlide(u32 battlerId, u32 which); // return 1 for TrainerA, 2 forTrainerB void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); extern struct BattleMsgData *gBattleMsgDataPtr; diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 60fd9b156ba4..dcf601e8040d 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -44,6 +44,9 @@ u16 GetSecretPowerMoveEffect(void); void StealTargetItem(u8 battlerStealer, u8 battlerItem); u8 GetCatchingBattler(void); u32 GetHighestStatId(u32 battlerId); +bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType); +bool32 DoSwitchInAbilitiesItems(u32 battlerId); +u8 GetFirstFaintedPartyIndex(u8 battlerId); extern void (* const gBattleScriptingCommandsTable[])(void); extern const u8 gBattlePalaceNatureToMoveGroupLikelihood[NUM_NATURES][4]; diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 18c1911e52e4..b2c7cac845f6 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_SCRIPTS_H #define GUARD_BATTLE_SCRIPTS_H +extern const u8 BattleScript_MirrorHerbCopyStatChange[]; +extern const u8 BattleScript_MirrorHerbCopyStatChangeEnd2[]; extern const u8 BattleScript_NotAffected[]; extern const u8 BattleScript_HitFromCritCalc[]; extern const u8 BattleScript_MoveEnd[]; @@ -43,8 +45,9 @@ extern const u8 BattleScript_ActionSwitch[]; extern const u8 BattleScript_Pausex20[]; extern const u8 BattleScript_LevelUp[]; extern const u8 BattleScript_RainContinuesOrEnds[]; +extern const u8 BattleScript_SnowContinuesOrEnds[]; extern const u8 BattleScript_DamagingWeatherContinues[]; -extern const u8 BattleScript_SandStormHailEnds[]; +extern const u8 BattleScript_SandStormHailSnowEnds[]; extern const u8 BattleScript_SunlightContinues[]; extern const u8 BattleScript_SunlightFaded[]; extern const u8 BattleScript_OverworldWeatherStarts[]; @@ -108,9 +111,12 @@ extern const u8 BattleScript_MoveUsedWokeUp[]; extern const u8 BattleScript_MonWokeUpInUproar[]; extern const u8 BattleScript_PoisonTurnDmg[]; extern const u8 BattleScript_BurnTurnDmg[]; +extern const u8 BattleScript_FrostbiteTurnDmg[]; extern const u8 BattleScript_MoveUsedIsFrozen[]; extern const u8 BattleScript_MoveUsedUnfroze[]; +extern const u8 BattleScript_MoveUsedUnfrostbite[]; extern const u8 BattleScript_DefrostedViaFireMove[]; +extern const u8 BattleScript_FrostbiteHealedViaFireMove[]; extern const u8 BattleScript_MoveUsedIsParalyzed[]; extern const u8 BattleScript_MoveUsedFlinched[]; extern const u8 BattleScript_PrintUproarOverTurns[]; @@ -131,6 +137,7 @@ extern const u8 BattleScript_MoveEffectSleep[]; extern const u8 BattleScript_YawnMakesAsleep[]; extern const u8 BattleScript_MoveEffectPoison[]; extern const u8 BattleScript_MoveEffectBurn[]; +extern const u8 BattleScript_MoveEffectFrostbite[]; extern const u8 BattleScript_MoveEffectFreeze[]; extern const u8 BattleScript_MoveEffectParalysis[]; extern const u8 BattleScript_MoveEffectUproar[]; @@ -149,9 +156,6 @@ extern const u8 BattleScript_TraceActivatesEnd3[]; extern const u8 BattleScript_RainDishActivates[]; extern const u8 BattleScript_SandstreamActivates[]; extern const u8 BattleScript_ShedSkinActivates[]; -extern const u8 BattleScript_WeatherFormChanges[]; -extern const u8 BattleScript_WeatherFormChangesLoop[]; -extern const u8 BattleScript_WeatherFormChange[]; extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_DroughtActivates[]; extern const u8 BattleScript_TookAttack[]; @@ -195,6 +199,8 @@ extern const u8 BattleScript_BerryCureBrnEnd2[]; extern const u8 BattleScript_BerryCureBrnRet[]; extern const u8 BattleScript_BerryCureFrzEnd2[]; extern const u8 BattleScript_BerryCureFrzRet[]; +extern const u8 BattleScript_BerryCureFsbEnd2[]; +extern const u8 BattleScript_BerryCureFsbRet[]; extern const u8 BattleScript_BerryCureSlpEnd2[]; extern const u8 BattleScript_BerryCureSlpRet[]; extern const u8 BattleScript_BerryCureConfusionEnd2[]; @@ -246,17 +252,14 @@ extern const u8 BattleScript_TailwindEnds[]; extern const u8 BattleScript_TrickRoomEnds[]; extern const u8 BattleScript_WonderRoomEnds[]; extern const u8 BattleScript_MagicRoomEnds[]; -extern const u8 BattleScript_ElectricTerrainEnds[]; -extern const u8 BattleScript_MistyTerrainEnds[]; -extern const u8 BattleScript_GrassyTerrainEnds[]; -extern const u8 BattleScript_PsychicTerrainEnds[]; +extern const u8 BattleScript_TerrainEnds[]; +extern const u8 BattleScript_TerrainEnds_Ret[]; extern const u8 BattleScript_MudSportEnds[]; extern const u8 BattleScript_WaterSportEnds[]; extern const u8 BattleScript_SturdiedMsg[]; extern const u8 BattleScript_GravityEnds[]; extern const u8 BattleScript_MoveStatDrain[]; extern const u8 BattleScript_MoveStatDrain_PPLoss[]; -extern const u8 BattleScript_TargetAbilityStatRaiseOnMoveEnd[]; extern const u8 BattleScript_TargetsStatWasMaxedOut[]; extern const u8 BattleScript_AttackerAbilityStatRaise[]; extern const u8 BattleScript_AttackerAbilityStatRaiseEnd3[]; @@ -272,7 +275,8 @@ extern const u8 BattleScript_CursedBodyActivates[]; extern const u8 BattleScript_MummyActivates[]; extern const u8 BattleScript_WeakArmorActivates[]; extern const u8 BattleScript_FellStingerRaisesStat[]; -extern const u8 BattleScript_SnowWarningActivates[]; +extern const u8 BattleScript_SnowWarningActivatesHail[]; +extern const u8 BattleScript_SnowWarningActivatesSnow[]; extern const u8 BattleScript_HarvestActivates[]; extern const u8 BattleScript_ImposterActivates[]; extern const u8 BattleScript_SelectingNotAllowedMoveAssaultVest[]; @@ -288,17 +292,22 @@ extern const u8 BattleScript_SelectingNotAllowedMoveHealBlockInPalace[]; extern const u8 BattleScript_ToxicSpikesFree[]; extern const u8 BattleScript_StickyWebFree[]; extern const u8 BattleScript_StealthRockFree[]; +extern const u8 BattleScript_SpikesDefog[]; +extern const u8 BattleScript_ToxicSpikesDefog[]; +extern const u8 BattleScript_StickyWebDefog[]; +extern const u8 BattleScript_StealthRockDefog[]; extern const u8 BattleScript_MegaEvolution[]; extern const u8 BattleScript_WishMegaEvolution[]; extern const u8 BattleScript_MoveEffectRecoilWithStatus[]; extern const u8 BattleScript_EffectWithChance[]; extern const u8 BattleScript_MoveEffectClearSmog[]; -extern const u8 BattleScript_ForceRandomSwitch[]; extern const u8 BattleScript_SideStatusWoreOffReturn[]; extern const u8 BattleScript_MoveEffectSmackDown[]; extern const u8 BattleScript_MoveEffectFlameBurst[]; -extern const u8 BattleScript_TrainerSlideMsgRet[]; -extern const u8 BattleScript_TrainerSlideMsgEnd2[]; +extern const u8 BattleScript_TrainerASlideMsgRet[]; +extern const u8 BattleScript_TrainerASlideMsgEnd2[]; +extern const u8 BattleScript_TrainerBSlideMsgRet[]; +extern const u8 BattleScript_TrainerBSlideMsgEnd2[]; extern const u8 BattleScript_MoveEffectFeint[]; extern const u8 BattleScript_ProteanActivates[]; extern const u8 BattleScript_DazzlingProtected[]; @@ -452,6 +461,15 @@ extern const u8 BattleScript_MimicryActivates_End3[]; extern const u8 BattleScript_IceFaceNullsDamage[]; extern const u8 BattleScript_BattlerFormChangeWithStringEnd3[]; extern const u8 BattleScript_DampPreventsAftermath[]; +extern const u8 BattleScript_HealingWishActivates[]; +extern const u8 BattleScript_LunarDanceActivates[]; +extern const u8 BattleScript_ShellTrapSetUp[]; +extern const u8 BattleScript_CouldntFullyProtect[]; +extern const u8 BattleScript_MoveEffectStockpileWoreOff[]; +extern const u8 BattleScript_StealthRockActivates[]; +extern const u8 BattleScript_SpikesActivates[]; +extern const u8 BattleScript_BerserkGeneRet[]; +extern const u8 BattleScript_TargetFormChangeWithStringNoPopup[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; diff --git a/include/battle_util.h b/include/battle_util.h index 0661081e43b8..96ffc2fa16c0 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -139,7 +139,6 @@ void TryClearRageAndFuryCutter(void); u8 AtkCanceller_UnableToUseMove(void); u8 AtkCanceller_UnableToUseMove2(void); bool8 HasNoMonsToSwitch(u8 battlerId, u8 r1, u8 r2); -u8 TryWeatherFormChange(u8 battlerId); bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility); u8 AbilityBattleEffects(u8 caseID, u8 battlerId, u16 ability, u8 special, u16 moveArg); bool32 IsNeutralizingGasOnField(void); @@ -173,12 +172,11 @@ u16 CalcPartyMonTypeEffectivenessMultiplier(u16 move, u16 speciesDef, u16 abilit u16 GetTypeModifier(u8 atkType, u8 defType); s32 GetStealthHazardDamage(u8 hazardType, u8 battlerId); s32 GetStealthHazardDamageByTypesAndHP(u8 hazardType, u8 type1, u8 type2, u32 maxHp); -u16 GetMegaEvolutionSpecies(u16 preEvoSpecies, u16 heldItemId); -u16 GetPrimalReversionSpecies(u16 preEvoSpecies, u16 heldItemId); -u16 GetWishMegaEvolutionSpecies(u16 preEvoSpecies, u16 moveId1, u16 moveId2, u16 moveId3, u16 moveId4); bool32 CanMegaEvolve(u8 battlerId); -void UndoMegaEvolution(u32 monId); -void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut); +bool32 IsBattlerMegaEvolved(u8 battlerId); +bool32 IsBattlerPrimalReverted(u8 battlerId); +u16 GetBattleFormChangeTargetSpecies(u8 battlerId, u16 method); +bool32 TryBattleFormChange(u8 battlerId, u16 method); bool32 DoBattlersShareType(u32 battler1, u32 battler2); bool32 CanBattlerGetOrLoseItem(u8 battlerId, u16 itemId); u32 GetIllusionMonSpecies(u32 battlerId); @@ -188,16 +186,14 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battlerId); bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId); u8 GetBattleMoveSplit(u32 moveId); bool32 TestMoveFlags(u16 move, u32 flag); -struct Pokemon *GetBattlerPartyData(u8 battlerId); bool32 CanFling(u8 battlerId); bool32 IsTelekinesisBannedSpecies(u16 species); bool32 IsHealBlockPreventingMove(u32 battler, u32 move); bool32 HasEnoughHpToEatBerry(u32 battlerId, u32 hpFraction, u32 itemId); bool32 IsPartnerMonFromSameTrainer(u8 battlerId); u8 GetSplitBasedOnStats(u8 battlerId); -void SortBattlersBySpeed(u8 *battlers, bool8 slowToFast); bool32 TestSheerForceFlag(u8 battler, u16 move); -void TryRestoreStolenItems(void); +void TryRestoreHeldItems(void); bool32 CanStealItem(u8 battlerStealing, u8 battlerItem, u16 item); void TrySaveExchangedItem(u8 battlerId, u16 stolenItem); bool32 IsPartnerMonFromSameTrainer(u8 battlerId); @@ -207,13 +203,15 @@ void SortBattlersBySpeed(u8 *battlers, bool8 slowToFast); bool32 CompareStat(u8 battlerId, u8 statId, u8 cmpTo, u8 cmpKind); bool32 TryRoomService(u8 battlerId); void BufferStatChange(u8 battlerId, u8 statId, u8 stringId); -void DoBurmyFormChange(u32 monId); bool32 BlocksPrankster(u16 move, u8 battlerPrankster, u8 battlerDef, bool32 checkTarget); u16 GetUsedHeldItem(u8 battler); bool32 IsBattlerWeatherAffected(u8 battlerId, u32 weatherFlags); u32 GetBattlerMoveTargetType(u8 battlerId, u16 move); bool32 CanTargetBattler(u8 battlerAtk, u8 battlerDef, u16 move); bool8 IsMoveAffectedByParentalBond(u16 move, u8 battlerId); +void CopyMonLevelAndBaseStatsToBattleMon(u32 battler, struct Pokemon *mon); +void CopyMonAbilityAndTypesToBattleMon(u32 battler, struct Pokemon *mon); +void RecalcBattlerStats(u32 battler, struct Pokemon *mon); // Ability checks bool32 IsRolePlayBannedAbilityAtk(u16 ability); bool32 IsRolePlayBannedAbility(u16 ability); @@ -228,11 +226,15 @@ bool32 CanBePoisoned(u8 battlerAttacker, u8 battlerTarget); bool32 CanBeBurned(u8 battlerId); bool32 CanBeParalyzed(u8 battlerId); bool32 CanBeFrozen(u8 battlerId); +bool32 CanGetFrostbite(u8 battlerId); bool32 CanBeConfused(u8 battlerId); bool32 IsBattlerTerrainAffected(u8 battlerId, u32 terrainFlag); u32 GetBattlerFriendshipScore(u8 battlerId); u32 CountBattlerStatIncreases(u8 battlerId, bool32 countEvasionAcc); bool32 IsMyceliumMightOnField(void); bool8 ChangeTypeBasedOnTerrain(u8 battlerId); +void RemoveConfusionStatus(u8 battlerId); +u8 GetBattlerGender(u8 battlerId); +bool8 AreBattlersOfOppositeGender(u8 battler1, u8 battler2); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/battle_z_move.h b/include/battle_z_move.h index 94a9c3568cf0..44ed434549b2 100644 --- a/include/battle_z_move.h +++ b/include/battle_z_move.h @@ -26,5 +26,6 @@ const u8 *GetZMoveName(u16 move); void SetZEffect(void); bool32 IsZMoveUsable(u8 battlerId, u16 moveIndex); void GetUsableZMoves(u8 battlerId, u16 *moves); +u16 GetZMovePower(u16 move); -#endif // GUARD_BATTLE_Z_MOVE_H \ No newline at end of file +#endif // GUARD_BATTLE_Z_MOVE_H diff --git a/include/config/battle.h b/include/config/battle.h index 6dea72b4061c..20cb7eb81bfd 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -95,6 +95,12 @@ #define B_BEAT_UP GEN_LATEST // In Gen5+, Beat Up uses a different formula to calculate its damage, and deals Dark-type damage. Prior to Gen 5, each hit also announces the party member's name. #define B_DARK_VOID_FAIL GEN_LATEST // In Gen7+, only Darkrai can use Dark Void. #define B_BURN_HIT_THAW GEN_LATEST // In Gen6+, damaging moves with a chance of burn will thaw the target, regardless if they're fire-type moves or not. +#define B_HEALING_WISH_SWITCH GEN_LATEST // In Gen5+, the mon receiving Healing Wish is sent out at the end of the turn. + // Additionally, in gen8+ the Healing Wish's effect will be stored until the user switches into a statused or hurt mon. +#define B_DEFOG_CLEARS_TERRAIN GEN_LATEST // In Gen8+, Defog also clears active Terrain. +#define B_STOCKPILE_RAISES_DEFS GEN_LATEST // In Gen4+, Stockpile also raises Defense and Sp. Defense stats. Once Spit Up / Swallow is used, these stat changes are lost. +#define B_TRANSFORM_SHINY GEN_LATEST // In Gen4+, Transform will copy the shiny state of the opponent instead of maintaining its own shiny state. +#define B_TRANSFORM_FORM_CHANGES GEN_LATEST // In Gen5+, Transformed Pokemon cannot change forms. // Ability settings #define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. @@ -114,6 +120,8 @@ #define B_SYMBIOSIS_GEMS GEN_LATEST // In Gen7+, Symbiosis passes an item after a gem-boosted attack. Previously, items are passed before the gem-boosted attack hits, making the item effect apply. #define B_CHECK_IF_CHARGED_UP TRUE // If set to TRUE, certain abilities such as Electromorphosis WILL check if the STATUS3_CHARGED_UP status flag is applied. #define B_ABSORBING_ABILITY_STRING GEN_LATEST // In Gen5+, the abilities that absorb moves of a certain type use a generic string for stat increases and decreases. +#define B_LEAF_GUARD_PREVENTS_REST GEN_LATEST // In Gen5+, Leaf Guard prevents the use of Rest in harsh sunlight. +#define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail. // Item settings #define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. @@ -122,6 +130,7 @@ #define B_X_ITEMS_BUFF GEN_LATEST // In Gen7+, the X Items raise a stat by 2 stages instead of 1. #define B_MENTAL_HERB GEN_LATEST // In Gen5+, the Mental Herb cures Taunt, Encore, Torment, Heal Block, and Disable in addition to Infatuation from before. #define B_TRAINERS_KNOCK_OFF_ITEMS TRUE // If TRUE, trainers can steal/swap your items (non-berries are restored after battle). In vanilla games trainers cannot steal items. +#define B_RESTORE_HELD_BATTLE_ITEMS TRUE // In Gen9 all non berry items are restored after battle. #define B_SOUL_DEW_BOOST GEN_LATEST // In Gens3-6, Soul Dew boosts Lati@s' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead. #define B_NET_BALL_MODIFIER GEN_LATEST // In Gen7+, Net Ball's catch multiplier is x5 instead of x3. #define B_DIVE_BALL_MODIFIER GEN_LATEST // In Gen4+, Dive Ball's effectiveness increases by when Surfing or Fishing. @@ -151,6 +160,9 @@ #define VAR_TERRAIN 0 // If this var has a value, assigning a STATUS_FIELD_xx_TERRAIN to it before battle causes the battle to start with that terrain active #define B_VAR_WILD_AI_FLAGS 0 // If not 0, you can use this var to add to default wild AI flags. NOT usable with flags above (1 << 15) +// Flag and Var settings +#define B_RESET_FLAGS_VARS_AFTER_WHITEOUT TRUE // If TRUE, Overworld_ResetBattleFlagsAndVars will reset battle-related Flags and Vars when the player whites out. + // Terrain settings #define B_TERRAIN_BG_CHANGE TRUE // If set to TRUE, terrain moves permanently change the default battle background until the effect fades. #define B_THUNDERSTORM_TERRAIN TRUE // If TRUE, overworld Thunderstorm generates Rain and Electric Terrain as in Gen 8. @@ -178,29 +190,32 @@ #define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. // Other settings -#define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. -#define B_MULTI_BATTLE_WHITEOUT GEN_LATEST // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. -#define B_EVOLUTION_AFTER_WHITEOUT GEN_LATEST // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. -#define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) -#define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. -#define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class. -#define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level +#define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. +#define B_DOUBLE_WILD_REQUIRE_2_MONS FALSE // If set to TRUE, Wild Double Battles will default to Single Battles when the player only has 1 usable Pokémon, ignoring B_DOUBLE_WILD_CHANCE and B_FLAG_FORCE_DOUBLE_WILD. +#define B_MULTI_BATTLE_WHITEOUT GEN_LATEST // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. +#define B_EVOLUTION_AFTER_WHITEOUT GEN_LATEST // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. +#define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) +#define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. +#define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class. +#define B_OBEDIENCE_MECHANICS GEN_7 // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level +#define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config. // Animation Settings -#define B_NEW_SWORD_PARTICLE FALSE // If set to TRUE, it updates Swords Dance's particle. -#define B_NEW_LEECH_SEED_PARTICLE FALSE // If set to TRUE, it updates Leech Seed's animation particle. -#define B_NEW_HORN_ATTACK_PARTICLE FALSE // If set to TRUE, it updates Horn Attack's horn particle. -#define B_NEW_LEAF_PARTICLE FALSE // If set to TRUE, it updates leaf particle. -#define B_NEW_EMBER_PARTICLES FALSE // If set to TRUE, it updates Ember's fire particle. -#define B_NEW_MEAN_LOOK_PARTICLE FALSE // If set to TRUE, it updates Mean Look's eye particle. -#define B_NEW_TEETH_PARTICLE FALSE // If set to TRUE, it updates Bite/Crunch teeth particle. -#define B_NEW_HANDS_FEET_PARTICLE FALSE // If set to TRUE, it updates chop/kick/punch particles. -#define B_NEW_SPIKES_PARTICLE FALSE // If set to TRUE, it updates Spikes particle. -#define B_NEW_FLY_BUBBLE_PARTICLE FALSE // If set to TRUE, it updates Fly's 'bubble' particle. -#define B_NEW_CURSE_NAIL_PARTICLE FALSE // If set to TRUE, it updates Curse's nail. -#define B_NEW_BATON_PASS_BALL_PARTICLE FALSE // If set to TRUE, it updates Baton Pass' Poké Ball sprite. -#define B_NEW_MORNING_SUN_STAR_PARTICLE FALSE // If set to TRUE, it updates Morning Sun's star particles. -#define B_NEW_IMPACT_PALETTE FALSE // If set to TRUE, it updates the basic 'hit' palette. -#define B_NEW_SURF_PARTICLE_PALETTE FALSE // If set to TRUE, it updates Surf's wave palette. +#define B_NEW_SWORD_PARTICLE TRUE // If set to TRUE, it updates Swords Dance's particle. +#define B_NEW_LEECH_SEED_PARTICLE TRUE // If set to TRUE, it updates Leech Seed's animation particle. +#define B_NEW_HORN_ATTACK_PARTICLE TRUE // If set to TRUE, it updates Horn Attack's horn particle. +#define B_NEW_ROCKS_PARTICLE TRUE // If set to TRUE, it updates rock particles. +#define B_NEW_LEAF_PARTICLE TRUE // If set to TRUE, it updates leaf particle. +#define B_NEW_EMBER_PARTICLES TRUE // If set to TRUE, it updates Ember's fire particle. +#define B_NEW_MEAN_LOOK_PARTICLE TRUE // If set to TRUE, it updates Mean Look's eye particle. +#define B_NEW_TEETH_PARTICLE TRUE // If set to TRUE, it updates Bite/Crunch teeth particle. +#define B_NEW_HANDS_FEET_PARTICLE TRUE // If set to TRUE, it updates chop/kick/punch particles. +#define B_NEW_SPIKES_PARTICLE TRUE // If set to TRUE, it updates Spikes particle. +#define B_NEW_FLY_BUBBLE_PARTICLE TRUE // If set to TRUE, it updates Fly's 'bubble' particle. +#define B_NEW_CURSE_NAIL_PARTICLE TRUE // If set to TRUE, it updates Curse's nail. +#define B_NEW_BATON_PASS_BALL_PARTICLE TRUE // If set to TRUE, it updates Baton Pass' Poké Ball sprite. +#define B_NEW_MORNING_SUN_STAR_PARTICLE TRUE // If set to TRUE, it updates Morning Sun's star particles. +#define B_NEW_IMPACT_PALETTE TRUE // If set to TRUE, it updates the basic 'hit' palette. +#define B_NEW_SURF_PARTICLE_PALETTE TRUE // If set to TRUE, it updates Surf's wave palette. #endif // GUARD_CONFIG_BATTLE_H diff --git a/include/config/debug.h b/include/config/debug.h index b427fcb5137b..43d74380183a 100644 --- a/include/config/debug.h +++ b/include/config/debug.h @@ -2,16 +2,11 @@ #define GUARD_CONFIG_DEBUG_H // Overworld Debug -#define DEBUG_OVERWORLD_MENU TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by holding R and pressing START while in the overworld by default. +#define DEBUG_OVERWORLD_MENU TRUE // Enables an overworld debug menu to change flags, variables, giving pokemon and more, accessed by holding R and pressing START while in the overworld by default. #define DEBUG_OVERWORLD_HELD_KEYS (R_BUTTON) // The keys required to be held to open the debug menu. #define DEBUG_OVERWORLD_TRIGGER_EVENT pressedStartButton // The event that opens the menu when holding the key(s) defined in DEBUG_OVERWORLD_HELD_KEYS. #define DEBUG_OVERWORLD_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (above Pokédex). -// Debug Flags -// To use the following debug features, replace the 0s with the flag ID you're assigning it to. -// Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag to toggle the feature. -#define DEBUG_FLAG_NO_COLLISION 0 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. - // Battle Debug Menu #define DEBUG_BATTLE_MENU TRUE // If set to TRUE, enables a debug menu to use in battles by pressing the Select button. diff --git a/include/config/item.h b/include/config/item.h index 031af3724183..1e174b5ff45b 100644 --- a/include/config/item.h +++ b/include/config/item.h @@ -2,12 +2,18 @@ #define GUARD_CONFIG_ITEM_H // Item config -#define I_SHINY_CHARM_REROLLS 3 // Amount of re-rolls if the player has the Shiny Charm. Set to 0 to disable Shiny Charm's effects. -#define I_KEY_FOSSILS GEN_LATEST // In Gen4+, all Gen 3 fossils became regular items. -#define I_KEY_ESCAPE_ROPE GEN_LATEST // In Gen8, Escape Rope became a Key Item. Keep in mind, this will make it free to buy in marts. -#define I_HEALTH_RECOVERY GEN_LATEST // In Gen7+, certain healing items recover a different amount of HP than they used to. -#define I_SITRUS_BERRY_HEAL GEN_LATEST // In Gen4+, Sitrus Berry was changed from healing 30 HP to healing 25% of Max HP. -#define I_VITAMIN_EV_CAP GEN_LATEST // In Gen8, the Vitamins no longer have a cap of 100 EV per stat. +#define I_SHINY_CHARM_REROLLS 3 // Amount of re-rolls if the player has the Shiny Charm. Set to 0 to disable Shiny Charm's effects. +#define I_KEY_FOSSILS GEN_LATEST // In Gen4+, all Gen 3 fossils became regular items. +#define I_KEY_ESCAPE_ROPE GEN_LATEST // In Gen8, Escape Rope became a Key Item. Keep in mind, this will make it free to buy in marts. +#define I_HEALTH_RECOVERY GEN_LATEST // In Gen7+, certain healing items recover a different amount of HP than they used to. +#define I_SITRUS_BERRY_HEAL GEN_LATEST // In Gen4+, Sitrus Berry was changed from healing 30 HP to healing 25% of Max HP. +#define I_VITAMIN_EV_CAP GEN_LATEST // In Gen8+, the Vitamins no longer have a cap of 100 EV per stat. +#define I_BERRY_EV_JUMP GEN_LATEST // In Gen4 only, EV-lowering Berries lower a stat's EV to 100 if it is above 100. +#define I_GRISEOUS_ORB_FORM_CHANGE GEN_LATEST // In Gen9+, the Griseous Orb no longer changes Giratina's form when held. +#define I_USE_EVO_HELD_ITEMS_FROM_BAG FALSE // If TRUE, items such as Razor Claw or Electirizer will be usable from the bag to evolve a Pokémon just like in LA. + +// TM config +#define I_REUSABLE_TMS FALSE // In Gen5-8, TMs are reusable. Setting this to TRUE will make all vanilla TMs reusable, though they can also be cherry-picked by setting their importance to 1. // Repel/Lure config // These two settings are both independent and complementary. diff --git a/include/config/overworld.h b/include/config/overworld.h index fb438431b326..f62588b5fd75 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -4,10 +4,14 @@ // Movement config #define OW_RUNNING_INDOORS GEN_LATEST // In Gen4+, players are allowed to run indoors. +// Other settings +#define OW_POISON_DAMAGE GEN_LATEST // In Gen4, Pokémon no longer faint from Poison in the overworld. In Gen5+, they no longer take damage at all. + // Overworld flags // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. // Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag to toggle the feature. #define OW_FLAG_NO_ENCOUNTER 0 // If this flag is set, wild encounters will be disabled. #define OW_FLAG_NO_TRAINER_SEE 0 // If this flag is set, trainers will not battle the player unless they're talked to. +#define OW_FLAG_NO_COLLISION 0 // If this flag is set, the player will be able to walk over tiles with collision. Mainly intended for debugging purposes. #endif // GUARD_CONFIG_OVERWORLD_H diff --git a/include/config/pokemon.h b/include/config/pokemon.h index ce5faf2a6ec9..a65eddb73c35 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -8,10 +8,15 @@ #define P_UPDATED_EGG_GROUPS GEN_LATEST // Since Gen 8, certain Pokémon have gained new egg groups. // Breeding settings -#define P_NIDORAN_M_DITTO_BREED GEN_LATEST // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. -#define P_INCENSE_BREEDING GEN_LATEST // Since Gen 9, cross-generation Baby Pokémon don't require Incense being held by the parents to be obtained via breeding. -#define P_EGG_HATCH_LEVEL GEN_LATEST // Since Gen 4, Pokémon will hatch from eggs at level 1 instead of 5. -#define P_BALL_INHERITING GEN_LATEST // Since Gen 6, Eggs from the Daycare will inherit the Poké Ball from their mother. From Gen7 onwards, the father can pass it down as well, as long as it's of the same species as the mother. +#define P_NIDORAN_M_DITTO_BREED GEN_LATEST // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. +#define P_INCENSE_BREEDING GEN_LATEST // Since Gen 9, cross-generation Baby Pokémon don't require Incense being held by the parents to be obtained via breeding. +#define P_EGG_HATCH_LEVEL GEN_LATEST // Since Gen 4, Pokémon will hatch from eggs at level 1 instead of 5. +#define P_BALL_INHERITING GEN_LATEST // Since Gen 6, Eggs from the Daycare will inherit the Poké Ball from their mother. From Gen 7 onwards, the father can pass it down as well, as long as it's of the same species as the mother. +#define P_TM_INHERITANCE GEN_LATEST // Since Gen 6, the father no longer passes down TMs to the baby. +#define P_MOTHER_EGG_MOVE_INHERITANCE GEN_LATEST // Since Gen 6, the mother can also pass down Egg Moves. +#define P_NATURE_INHERITANCE GEN_LATEST // In Gen 3, Everstone grants Ditto and mothers a 50% chance to pass on Nature. Since Gen 4, anyone can pass on nature. Since Gen 5, the chance is 100%. +#define P_ABILITY_INHERITANCE GEN_LATEST // In B2W2, a female Pokémon has an 80% chance of passing down their ability if bred with a male. Since Gen 6, the chance is 80% for normal ability and 60% for Hidden Ability, and anyone can pass down their abilities if bred with Ditto. NOTE: BW's effect: 60% chance to pass down HA and random for normal ability has been omitted. +#define P_EGG_MOVE_TRANSFER GEN_LATEST // Starting in Gen 8, if two Pokémon of the same species are together in the Daycare, one knows an Egg Move, and the other has an empty slot, the other Pokémon will receive the Egg Move in the empty slot. In Gen 9, if a Pokémon holds a Mirror Herb, it will receive Egg Moves from the other regardless of species. // Species-specific settings #define P_SHEDINJA_BALL GEN_LATEST // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. @@ -21,6 +26,7 @@ // Other settings #define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. +#define P_EV_CAP GEN_LATEST // Since Gen 6, the max EVs per stat is 252 instead of 255. // Flag settings // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. diff --git a/include/constants/battle.h b/include/constants/battle.h index c24178cd08ad..814d1bfa57fb 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -115,8 +115,9 @@ #define STATUS1_TOXIC_POISON (1 << 7) #define STATUS1_TOXIC_COUNTER (1 << 8 | 1 << 9 | 1 << 10 | 1 << 11) #define STATUS1_TOXIC_TURN(num) ((num) << 8) +#define STATUS1_FROSTBITE (1 << 12) #define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON) -#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON) +#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON | STATUS1_FROSTBITE) // Volatile status ailments // These are removed after exiting the battle or switching out @@ -185,6 +186,7 @@ #define STATUS4_PLASMA_FISTS (1 << 1) #define STATUS4_MUD_SPORT (1 << 2) // Only used if B_SPORT_TURNS < GEN_6 #define STATUS4_WATER_SPORT (1 << 3) // Only used if B_SPORT_TURNS < GEN_6 +#define STATUS4_INFINITE_CONFUSION (1 << 4) // Used for Berserk Gene #define HITMARKER_WAKE_UP_CLEAR (1 << 4) // Cleared when waking up. Never set or checked. #define HITMARKER_SKIP_DMG_TRACK (1 << 5) @@ -269,6 +271,7 @@ #define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED) // Battle Weather flags +#define B_WEATHER_NONE 0 #define B_WEATHER_RAIN_TEMPORARY (1 << 0) #define B_WEATHER_RAIN_DOWNPOUR (1 << 1) // unused #define B_WEATHER_RAIN_PERMANENT (1 << 2) @@ -285,8 +288,11 @@ #define B_WEATHER_HAIL_PERMANENT (1 << 10) #define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY | B_WEATHER_HAIL_PERMANENT) #define B_WEATHER_STRONG_WINDS (1 << 11) -#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS) +#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS | B_WEATHER_SNOW) #define B_WEATHER_PRIMAL_ANY (B_WEATHER_RAIN_PRIMAL | B_WEATHER_SUN_PRIMAL | B_WEATHER_STRONG_WINDS) +#define B_WEATHER_SNOW_TEMPORARY (1 << 12) +#define B_WEATHER_SNOW_PERMANENT (1 << 13) +#define B_WEATHER_SNOW (B_WEATHER_SNOW_TEMPORARY | B_WEATHER_SNOW_PERMANENT) // Battle Weather as enum #define ENUM_WEATHER_NONE 0 @@ -297,6 +303,7 @@ #define ENUM_WEATHER_SUN_PRIMAL 5 #define ENUM_WEATHER_RAIN_PRIMAL 6 #define ENUM_WEATHER_STRONG_WINDS 7 +#define ENUM_WEATHER_SNOW 8 // Move Effects #define MOVE_EFFECT_SLEEP 1 @@ -305,75 +312,80 @@ #define MOVE_EFFECT_FREEZE 4 #define MOVE_EFFECT_PARALYSIS 5 #define MOVE_EFFECT_TOXIC 6 -#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_TOXIC // All above move effects apply primary status -#define MOVE_EFFECT_CONFUSION 7 -#define MOVE_EFFECT_FLINCH 8 -#define MOVE_EFFECT_TRI_ATTACK 9 -#define MOVE_EFFECT_UPROAR 10 -#define MOVE_EFFECT_PAYDAY 11 -#define MOVE_EFFECT_CHARGING 12 -#define MOVE_EFFECT_WRAP 13 -#define MOVE_EFFECT_BURN_UP 14 // MOVE_EFFECT_BURN_UP replaces unused MOVE_EFFECT_RECOIL_25 so that stat change animations don't break -#define MOVE_EFFECT_ATK_PLUS_1 15 -#define MOVE_EFFECT_DEF_PLUS_1 16 -#define MOVE_EFFECT_SPD_PLUS_1 17 -#define MOVE_EFFECT_SP_ATK_PLUS_1 18 -#define MOVE_EFFECT_SP_DEF_PLUS_1 19 -#define MOVE_EFFECT_ACC_PLUS_1 20 -#define MOVE_EFFECT_EVS_PLUS_1 21 -#define MOVE_EFFECT_ATK_MINUS_1 22 -#define MOVE_EFFECT_DEF_MINUS_1 23 -#define MOVE_EFFECT_SPD_MINUS_1 24 -#define MOVE_EFFECT_SP_ATK_MINUS_1 25 -#define MOVE_EFFECT_SP_DEF_MINUS_1 26 -#define MOVE_EFFECT_ACC_MINUS_1 27 -#define MOVE_EFFECT_EVS_MINUS_1 28 -#define MOVE_EFFECT_RECHARGE 29 -#define MOVE_EFFECT_RAGE 30 -#define MOVE_EFFECT_STEAL_ITEM 31 -#define MOVE_EFFECT_PREVENT_ESCAPE 32 -#define MOVE_EFFECT_NIGHTMARE 33 -#define MOVE_EFFECT_ALL_STATS_UP 34 -#define MOVE_EFFECT_RAPIDSPIN 35 -#define MOVE_EFFECT_REMOVE_STATUS 36 -#define MOVE_EFFECT_ATK_DEF_DOWN 37 -#define MOVE_EFFECT_SCALE_SHOT 38 // MOVE_EFFECT_SCALE_SHOT replaces unused MOVE_EFFECT_RECOIL_33 so that stat change animations don't break -#define MOVE_EFFECT_ATK_PLUS_2 39 -#define MOVE_EFFECT_DEF_PLUS_2 40 -#define MOVE_EFFECT_SPD_PLUS_2 41 -#define MOVE_EFFECT_SP_ATK_PLUS_2 42 -#define MOVE_EFFECT_SP_DEF_PLUS_2 43 -#define MOVE_EFFECT_ACC_PLUS_2 44 -#define MOVE_EFFECT_EVS_PLUS_2 45 -#define MOVE_EFFECT_ATK_MINUS_2 46 -#define MOVE_EFFECT_DEF_MINUS_2 47 -#define MOVE_EFFECT_SPD_MINUS_2 48 -#define MOVE_EFFECT_SP_ATK_MINUS_2 49 -#define MOVE_EFFECT_SP_DEF_MINUS_2 50 -#define MOVE_EFFECT_ACC_MINUS_2 51 -#define MOVE_EFFECT_EVS_MINUS_2 52 -#define MOVE_EFFECT_THRASH 53 -#define MOVE_EFFECT_KNOCK_OFF 54 -#define MOVE_EFFECT_DEF_SPDEF_DOWN 55 -#define MOVE_EFFECT_CLEAR_SMOG 56 -#define MOVE_EFFECT_SP_ATK_TWO_DOWN 57 -#define MOVE_EFFECT_SMACK_DOWN 58 -#define MOVE_EFFECT_FLAME_BURST 59 -#define MOVE_EFFECT_FEINT 60 -#define MOVE_EFFECT_SPECTRAL_THIEF 61 -#define MOVE_EFFECT_V_CREATE 62 -#define MOVE_EFFECT_HAPPY_HOUR 63 -#define MOVE_EFFECT_CORE_ENFORCER 64 -#define MOVE_EFFECT_THROAT_CHOP 65 -#define MOVE_EFFECT_INCINERATE 66 -#define MOVE_EFFECT_BUG_BITE 67 -#define MOVE_EFFECT_RECOIL_HP_25 68 -#define MOVE_EFFECT_RELIC_SONG 69 -#define MOVE_EFFECT_TRAP_BOTH 70 -#define MOVE_EFFECT_DOUBLE_SHOCK 71 -#define MOVE_EFFECT_ROUND 72 - -#define NUM_MOVE_EFFECTS 73 +#define MOVE_EFFECT_FROSTBITE 7 +#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_FROSTBITE // All above move effects apply primary status +#define MOVE_EFFECT_CONFUSION 8 +#define MOVE_EFFECT_FLINCH 9 +#define MOVE_EFFECT_TRI_ATTACK 10 +#define MOVE_EFFECT_UPROAR 11 +#define MOVE_EFFECT_PAYDAY 12 +#define MOVE_EFFECT_CHARGING 13 +#define MOVE_EFFECT_WRAP 14 +#define MOVE_EFFECT_BURN_UP 15 // MOVE_EFFECT_BURN_UP replaces unused MOVE_EFFECT_RECOIL_25 so that stat change animations don't break +#define MOVE_EFFECT_ATK_PLUS_1 16 +#define MOVE_EFFECT_DEF_PLUS_1 17 +#define MOVE_EFFECT_SPD_PLUS_1 18 +#define MOVE_EFFECT_SP_ATK_PLUS_1 19 +#define MOVE_EFFECT_SP_DEF_PLUS_1 20 +#define MOVE_EFFECT_ACC_PLUS_1 21 +#define MOVE_EFFECT_EVS_PLUS_1 22 +#define MOVE_EFFECT_ATK_MINUS_1 23 +#define MOVE_EFFECT_DEF_MINUS_1 24 +#define MOVE_EFFECT_SPD_MINUS_1 25 +#define MOVE_EFFECT_SP_ATK_MINUS_1 26 +#define MOVE_EFFECT_SP_DEF_MINUS_1 27 +#define MOVE_EFFECT_ACC_MINUS_1 28 +#define MOVE_EFFECT_EVS_MINUS_1 29 +#define MOVE_EFFECT_RECHARGE 30 +#define MOVE_EFFECT_RAGE 31 +#define MOVE_EFFECT_STEAL_ITEM 32 +#define MOVE_EFFECT_PREVENT_ESCAPE 33 +#define MOVE_EFFECT_NIGHTMARE 34 +#define MOVE_EFFECT_ALL_STATS_UP 35 +#define MOVE_EFFECT_RAPIDSPIN 36 +#define MOVE_EFFECT_REMOVE_STATUS 37 +#define MOVE_EFFECT_ATK_DEF_DOWN 38 +#define MOVE_EFFECT_SCALE_SHOT 39 // MOVE_EFFECT_SCALE_SHOT replaces unused MOVE_EFFECT_RECOIL_33 so that stat change animations don't break +#define MOVE_EFFECT_ATK_PLUS_2 40 +#define MOVE_EFFECT_DEF_PLUS_2 41 +#define MOVE_EFFECT_SPD_PLUS_2 42 +#define MOVE_EFFECT_SP_ATK_PLUS_2 43 +#define MOVE_EFFECT_SP_DEF_PLUS_2 44 +#define MOVE_EFFECT_ACC_PLUS_2 45 +#define MOVE_EFFECT_EVS_PLUS_2 46 +#define MOVE_EFFECT_ATK_MINUS_2 47 +#define MOVE_EFFECT_DEF_MINUS_2 48 +#define MOVE_EFFECT_SPD_MINUS_2 49 +#define MOVE_EFFECT_SP_ATK_MINUS_2 50 +#define MOVE_EFFECT_SP_DEF_MINUS_2 51 +#define MOVE_EFFECT_ACC_MINUS_2 52 +#define MOVE_EFFECT_EVS_MINUS_2 53 +#define MOVE_EFFECT_THRASH 54 +#define MOVE_EFFECT_KNOCK_OFF 55 +#define MOVE_EFFECT_DEF_SPDEF_DOWN 56 +#define MOVE_EFFECT_CLEAR_SMOG 57 +#define MOVE_EFFECT_SP_ATK_TWO_DOWN 58 +#define MOVE_EFFECT_SMACK_DOWN 59 +#define MOVE_EFFECT_FLAME_BURST 60 +#define MOVE_EFFECT_FEINT 61 +#define MOVE_EFFECT_SPECTRAL_THIEF 62 +#define MOVE_EFFECT_V_CREATE 63 +#define MOVE_EFFECT_HAPPY_HOUR 64 +#define MOVE_EFFECT_CORE_ENFORCER 65 +#define MOVE_EFFECT_THROAT_CHOP 66 +#define MOVE_EFFECT_INCINERATE 67 +#define MOVE_EFFECT_BUG_BITE 68 +#define MOVE_EFFECT_RECOIL_HP_25 69 +#define MOVE_EFFECT_RELIC_SONG 70 +#define MOVE_EFFECT_TRAP_BOTH 71 +#define MOVE_EFFECT_DOUBLE_SHOCK 72 +#define MOVE_EFFECT_ROUND 73 +#define MOVE_EFFECT_STOCKPILE_WORE_OFF 74 +#define MOVE_EFFECT_DIRE_CLAW 75 +#define MOVE_EFFECT_STEALTH_ROCK 76 +#define MOVE_EFFECT_SPIKES 77 + +#define NUM_MOVE_EFFECTS 78 #define MOVE_EFFECT_AFFECTS_USER 0x4000 #define MOVE_EFFECT_CERTAIN 0x8000 diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index 1cfb9cd4dc71..81dbdad16393 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -30,6 +30,7 @@ #define AI_WEATHER_RAIN 2 #define AI_WEATHER_SANDSTORM 3 #define AI_WEATHER_HAIL 4 +#define AI_WEATHER_SNOW 5 // get_how_powerful_move_is #define MOVE_POWER_OTHER 0 @@ -57,6 +58,7 @@ #define AI_FLAG_SCREENER (1 << 14) // AI prefers screening effects like reflect, mist, etc. TODO unfinished #define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks #define AI_FLAG_ACE_POKEMON (1 << 16) // AI has an Ace Pokemon. The last Pokemon in the party will not be used until it's the last one remaining. +#define AI_FLAG_OMNISCIENT (1 << 17) // AI has full knowledge of player moves, abilities, hold items // 'other' ai logic flags #define AI_FLAG_ROAMING (1 << 29) diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 4316191a2ee3..dd91b42c8ec9 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -544,6 +544,7 @@ #define B_ANIM_SHELL_TRAP_SETUP 34 #define B_ANIM_ZMOVE_ACTIVATE 35 // Using Z Moves #define B_ANIM_AFFECTION_HANGED_ON 36 +#define B_ANIM_SNOW_CONTINUES 37 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 @@ -583,6 +584,7 @@ #define TRAP_ANIM_MAGMA_STORM 5 #define TRAP_ANIM_INFESTATION 6 #define TRAP_ANIM_SNAP_TRAP 7 +#define TRAP_ANIM_THUNDER_CAGE 8 // Weather defines for battle animation scripts. #define ANIM_WEATHER_NONE 0 @@ -590,21 +592,7 @@ #define ANIM_WEATHER_RAIN 2 #define ANIM_WEATHER_SANDSTORM 3 #define ANIM_WEATHER_HAIL 4 - -// mon pal blend -#define ANIM_PAL_BG 0x1 -#define ANIM_PAL_ATK 0x2 -#define ANIM_PAL_DEF 0x4 -#define ANIM_PAL_ATK_PARTNER 0x8 -#define ANIM_PAL_DEF_PARTNER 0x10 -#define ANIM_PAL_ALL 0x1f -#define ANIM_PAL_BG_4 0x20 -#define ANIM_PAL_BG_5 0x40 -#define ANIM_PAL_ALL_BATTLERS 0x780 -#define ANIM_PAL_PLAYER1 0x80 -#define ANIM_PAL_PLAYER2 0x100 -#define ANIM_PAL_OPPONENT1 0x200 -#define ANIM_PAL_OPPONENT2 0x400 +#define ANIM_WEATHER_SNOW 5 // horseshoe/fist frames #define ANIM_RIGHT_FIST 0 @@ -623,19 +611,18 @@ // Flags given to various functions to indicate which palettes to consider. // Handled by UnpackSelectedBattlePalettes -#define F_PAL_BG (1 << 0) -#define F_PAL_ATTACKER (1 << 1) -#define F_PAL_TARGET (1 << 2) -#define F_PAL_ATK_PARTNER (1 << 3) -#define F_PAL_DEF_PARTNER (1 << 4) -#define F_PAL_ANIM_1 (1 << 5) // Palette set for GetBattleAnimBg1Data/GetBgDataForTransform. Only used (ineffectually?) by Aromatherapy. -#define F_PAL_ANIM_2 (1 << 6) // Palette set for GetBattleAnimBgData/GetBgDataForTransform. Unused. -#define F_PAL_ATK_SIDE (F_PAL_ATTACKER | F_PAL_ATK_PARTNER) -#define F_PAL_DEF_SIDE (F_PAL_TARGET | F_PAL_DEF_PARTNER) -#define F_PAL_BATTLERS (F_PAL_ATK_SIDE | F_PAL_DEF_SIDE) -// The below are only used by AnimTask_BlendBattleAnimPal to get battler sprite palettes by position rather than by role. -// It's redundant with F_PAL_BATTLERS, because they're only ever used together to refer to all the battlers at once. -#define F_PAL_BATTLERS_2 (1 << 7 | 1 << 8 | 1 << 9 | 1 << 10) - +#define F_PAL_BG (1 << 0) +#define F_PAL_ATTACKER (1 << 1) +#define F_PAL_TARGET (1 << 2) +#define F_PAL_ATK_PARTNER (1 << 3) +#define F_PAL_DEF_PARTNER (1 << 4) +#define F_PAL_ANIM_1 (1 << 5) // Palette set for GetBattleAnimBg1Data/GetBgDataForTransform. Only used (ineffectually?) by Aromatherapy. +#define F_PAL_ANIM_2 (1 << 6) // Palette set for GetBattleAnimBgData/GetBgDataForTransform. Unused. +#define F_PAL_ATK_SIDE (F_PAL_ATTACKER | F_PAL_ATK_PARTNER) +#define F_PAL_DEF_SIDE (F_PAL_TARGET | F_PAL_DEF_PARTNER) +#define F_PAL_BATTLERS (F_PAL_ATK_SIDE | F_PAL_DEF_SIDE) +#define F_PAL_ADJACENT (F_PAL_DEF_SIDE | F_PAL_ATK_PARTNER) +#define F_PAL_ALL_BUT_DEF (F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER) +#define F_PAL_ALL_BUT_ATK_PARTNER (F_PAL_ATTACKER | F_PAL_DEF_SIDE) #endif // GUARD_CONSTANTS_BATTLE_ANIM_H diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index beab881512ea..4d8330498d64 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -398,7 +398,16 @@ #define EFFECT_VICTORY_DANCE 392 #define EFFECT_TEATIME 393 #define EFFECT_ATTACK_UP_USER_ALLY 394 // Howl 8th Gen +#define EFFECT_SHELL_TRAP 395 +#define EFFECT_PSYBLADE 396 +#define EFFECT_HYDRO_STEAM 397 +#define EFFECT_HIT_SET_ENTRY_HAZARD 398 +#define EFFECT_DIRE_CLAW 399 +#define EFFECT_BARB_BARRAGE 400 +#define EFFECT_REVIVAL_BLESSING 401 +#define EFFECT_FROSTBITE_HIT 402 +#define EFFECT_SNOWSCAPE 403 -#define NUM_BATTLE_MOVE_EFFECTS 395 +#define NUM_BATTLE_MOVE_EFFECTS 404 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 68e927d75fcd..387800da4a1f 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -89,174 +89,174 @@ #define CMP_NO_COMMON_BITS 5 // Cmd_various -#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 -#define VARIOUS_SET_MAGIC_COAT_TARGET 1 -#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 -#define VARIOUS_GET_MOVE_TARGET 3 -#define VARIOUS_GET_BATTLER_FAINTED 4 -#define VARIOUS_RESET_SWITCH_IN_ABILITY_BITS 5 -#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 -#define VARIOUS_RESET_PLAYER_FAINTED 7 -#define VARIOUS_PALACE_FLAVOR_TEXT 8 -#define VARIOUS_ARENA_JUDGMENT_WINDOW 9 -#define VARIOUS_ARENA_OPPONENT_MON_LOST 10 -#define VARIOUS_ARENA_PLAYER_MON_LOST 11 -#define VARIOUS_ARENA_BOTH_MONS_LOST 12 -#define VARIOUS_EMIT_YESNOBOX 13 -#define VARIOUS_DRAW_ARENA_REF_TEXT_BOX 14 -#define VARIOUS_ERASE_ARENA_REF_TEXT_BOX 15 -#define VARIOUS_ARENA_JUDGMENT_STRING 16 -#define VARIOUS_ARENA_WAIT_STRING 17 -#define VARIOUS_WAIT_CRY 18 -#define VARIOUS_RETURN_OPPONENT_MON1 19 -#define VARIOUS_RETURN_OPPONENT_MON2 20 -#define VARIOUS_VOLUME_DOWN 21 -#define VARIOUS_VOLUME_UP 22 -#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23 -#define VARIOUS_PALACE_TRY_ESCAPE_STATUS 24 -#define VARIOUS_SET_TELEPORT_OUTCOME 25 -#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 -#define VARIOUS_STAT_TEXT_BUFFER 27 -#define VARIOUS_SWITCHIN_ABILITIES 28 -#define VARIOUS_SAVE_TARGET 29 -#define VARIOUS_RESTORE_TARGET 30 -#define VARIOUS_INSTANT_HP_DROP 31 -#define VARIOUS_CLEAR_STATUS 32 -#define VARIOUS_RESTORE_PP 33 -#define VARIOUS_TRY_ACTIVATE_MOXIE 34 -#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 35 -#define VARIOUS_PLAY_MOVE_ANIMATION 36 -#define VARIOUS_SET_LUCKY_CHANT 37 -#define VARIOUS_SUCKER_PUNCH_CHECK 38 -#define VARIOUS_SET_SIMPLE_BEAM 39 -#define VARIOUS_TRY_ENTRAINMENT 40 -#define VARIOUS_SET_LAST_USED_ABILITY 41 -#define VARIOUS_TRY_HEAL_PULSE 42 -#define VARIOUS_TRY_QUASH 43 -#define VARIOUS_INVERT_STAT_STAGES 44 -#define VARIOUS_SET_TERRAIN 45 -#define VARIOUS_TRY_ME_FIRST 46 -#define VARIOUS_JUMP_IF_BATTLE_END 47 -#define VARIOUS_TRY_ELECTRIFY 48 -#define VARIOUS_TRY_REFLECT_TYPE 49 -#define VARIOUS_TRY_SOAK 50 -#define VARIOUS_HANDLE_MEGA_EVO 51 -#define VARIOUS_TRY_LAST_RESORT 52 -#define VARIOUS_ARGUMENT_STATUS_EFFECT 53 -#define VARIOUS_TRY_HIT_SWITCH_TARGET 54 -#define VARIOUS_TRY_AUTOTOMIZE 55 -#define VARIOUS_TRY_COPYCAT 56 -#define VARIOUS_ABILITY_POPUP 57 -#define VARIOUS_DEFOG 58 -#define VARIOUS_JUMP_IF_TARGET_ALLY 59 -#define VARIOUS_TRY_SYNCHRONOISE 60 -#define VARIOUS_PSYCHO_SHIFT 61 -#define VARIOUS_CURE_STATUS 62 -#define VARIOUS_POWER_TRICK 63 -#define VARIOUS_AFTER_YOU 64 -#define VARIOUS_BESTOW 65 -#define VARIOUS_ARGUMENT_TO_MOVE_EFFECT 66 -#define VARIOUS_JUMP_IF_NOT_GROUNDED 67 -#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 68 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 69 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 70 -#define VARIOUS_SET_AURORA_VEIL 71 -#define VARIOUS_TRY_THIRD_TYPE 72 -#define VARIOUS_ACUPRESSURE 73 -#define VARIOUS_SET_POWDER 74 -#define VARIOUS_SPECTRAL_THIEF 75 -#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 76 -#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 77 -#define VARIOUS_JUMP_IF_ROAR_FAILS 78 -#define VARIOUS_TRY_INSTRUCT 79 -#define VARIOUS_JUMP_IF_NOT_BERRY 80 -#define VARIOUS_TRACE_ABILITY 81 -#define VARIOUS_UPDATE_NICK 82 -#define VARIOUS_TRY_ILLUSION_OFF 83 -#define VARIOUS_SET_SPRITEIGNORE0HP 84 -#define VARIOUS_HANDLE_FORM_CHANGE 85 -#define VARIOUS_GET_STAT_VALUE 86 -#define VARIOUS_JUMP_IF_FULL_HP 87 -#define VARIOUS_LOSE_TYPE 88 -#define VARIOUS_TRY_ACTIVATE_SOULHEART 89 -#define VARIOUS_TRY_ACTIVATE_RECEIVER 90 -#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 91 -#define VARIOUS_TRY_FRISK 92 -#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 93 -#define VARIOUS_TRY_FAIRY_LOCK 94 -#define VARIOUS_JUMP_IF_NO_ALLY 95 -#define VARIOUS_POISON_TYPE_IMMUNITY 96 -#define VARIOUS_JUMP_IF_NO_HOLD_EFFECT 97 -#define VARIOUS_INFATUATE_WITH_BATTLER 98 -#define VARIOUS_SET_LAST_USED_ITEM 99 -#define VARIOUS_PARALYZE_TYPE_IMMUNITY 100 -#define VARIOUS_JUMP_IF_ABSENT 101 -#define VARIOUS_DESTROY_ABILITY_POPUP 102 -#define VARIOUS_TOTEM_BOOST 103 -#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 104 -#define VARIOUS_MOVEEND_ITEM_EFFECTS 105 -#define VARIOUS_TERRAIN_SEED 106 -#define VARIOUS_MAKE_INVISIBLE 107 -#define VARIOUS_ROOM_SERVICE 108 -#define VARIOUS_JUMP_IF_TERRAIN_AFFECTED 109 -#define VARIOUS_EERIE_SPELL_PP_REDUCE 110 -#define VARIOUS_JUMP_IF_TEAM_HEALTHY 111 -#define VARIOUS_TRY_HEAL_QUARTER_HP 112 -#define VARIOUS_REMOVE_TERRAIN 113 -#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 114 -#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 115 -#define VARIOUS_GET_ROTOTILLER_TARGETS 116 -#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 117 -#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 118 -#define VARIOUS_CONSUME_BERRY 119 -#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 120 -#define VARIOUS_HANDLE_PRIMAL_REVERSION 121 -#define VARIOUS_APPLY_PLASMA_FISTS 122 -#define VARIOUS_JUMP_IF_SPECIES 123 -#define VARIOUS_UPDATE_ABILITY_POPUP 124 -#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 125 -#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 126 -#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 127 -#define VARIOUS_PHOTON_GEYSER_CHECK 128 -#define VARIOUS_SHELL_SIDE_ARM_CHECK 129 -#define VARIOUS_TRY_NO_RETREAT 130 -#define VARIOUS_TRY_TAR_SHOT 131 -#define VARIOUS_CAN_TAR_SHOT_WORK 132 -#define VARIOUS_CHECK_POLTERGEIST 133 -#define VARIOUS_SET_OCTOLOCK 134 -#define VARIOUS_CUT_1_3_HP_RAISE_STATS 135 -#define VARIOUS_TRY_END_NEUTRALIZING_GAS 136 -#define VARIOUS_JUMP_IF_UNDER_200 137 -#define VARIOUS_SET_SKY_DROP 138 -#define VARIOUS_CLEAR_SKY_DROP 139 -#define VARIOUS_SKY_DROP_YAWN 140 -#define VARIOUS_JUMP_IF_CANT_FLING 141 -#define VARIOUS_JUMP_IF_HOLD_EFFECT 142 -#define VARIOUS_CURE_CERTAIN_STATUSES 143 -#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 144 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 145 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 146 -#define VARIOUS_SAVE_BATTLER_ITEM 147 -#define VARIOUS_RESTORE_BATTLER_ITEM 148 -#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 149 -#define VARIOUS_SET_BEAK_BLAST 150 -#define VARIOUS_SWAP_SIDE_STATUSES 151 -#define VARIOUS_SET_Z_EFFECT 152 -#define VARIOUS_TRY_SYMBIOSIS 153 -#define VARIOUS_CAN_TELEPORT 154 -#define VARIOUS_GET_BATTLER_SIDE 155 -#define VARIOUS_CHECK_PARENTAL_BOND_COUNTER 156 -#define VARIOUS_SWAP_STATS 157 -#define VARIOUS_JUMP_IF_ROD 158 -#define VARIOUS_JUMP_IF_ABSORB 159 -#define VARIOUS_JUMP_IF_MOTOR 160 -#define VARIOUS_TEATIME_INVUL 161 -#define VARIOUS_TEATIME_TARGETS 162 -#define VARIOUS_TRY_WIND_RIDER_POWER 163 -#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 164 -#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 165 -#define VARIOUS_JUMP_IF_NO_VALID_TARGETS 166 -#define VARIOUS_JUMP_IF_EMERGENCY_EXITED 167 +#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 +#define VARIOUS_SET_MAGIC_COAT_TARGET 1 +#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 +#define VARIOUS_GET_MOVE_TARGET 3 +#define VARIOUS_GET_BATTLER_FAINTED 4 +#define VARIOUS_RESET_SWITCH_IN_ABILITY_BITS 5 +#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 +#define VARIOUS_RESET_PLAYER_FAINTED 7 +#define VARIOUS_PALACE_FLAVOR_TEXT 8 +#define VARIOUS_ARENA_JUDGMENT_WINDOW 9 +#define VARIOUS_ARENA_OPPONENT_MON_LOST 10 +#define VARIOUS_ARENA_PLAYER_MON_LOST 11 +#define VARIOUS_ARENA_BOTH_MONS_LOST 12 +#define VARIOUS_EMIT_YESNOBOX 13 +#define VARIOUS_DRAW_ARENA_REF_TEXT_BOX 14 +#define VARIOUS_ERASE_ARENA_REF_TEXT_BOX 15 +#define VARIOUS_ARENA_JUDGMENT_STRING 16 +#define VARIOUS_ARENA_WAIT_STRING 17 +#define VARIOUS_WAIT_CRY 18 +#define VARIOUS_RETURN_OPPONENT_MON1 19 +#define VARIOUS_RETURN_OPPONENT_MON2 20 +#define VARIOUS_VOLUME_DOWN 21 +#define VARIOUS_VOLUME_UP 22 +#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23 +#define VARIOUS_PALACE_TRY_ESCAPE_STATUS 24 +#define VARIOUS_SET_TELEPORT_OUTCOME 25 +#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 +#define VARIOUS_STAT_TEXT_BUFFER 27 +#define VARIOUS_SWITCHIN_ABILITIES 28 +#define VARIOUS_SAVE_TARGET 29 +#define VARIOUS_RESTORE_TARGET 30 +#define VARIOUS_INSTANT_HP_DROP 31 +#define VARIOUS_CLEAR_STATUS 32 +#define VARIOUS_RESTORE_PP 33 +#define VARIOUS_TRY_ACTIVATE_MOXIE 34 +#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 35 +#define VARIOUS_PLAY_MOVE_ANIMATION 36 +#define VARIOUS_SET_LUCKY_CHANT 37 +#define VARIOUS_SUCKER_PUNCH_CHECK 38 +#define VARIOUS_SET_SIMPLE_BEAM 39 +#define VARIOUS_TRY_ENTRAINMENT 40 +#define VARIOUS_SET_LAST_USED_ABILITY 41 +#define VARIOUS_TRY_HEAL_PULSE 42 +#define VARIOUS_TRY_QUASH 43 +#define VARIOUS_INVERT_STAT_STAGES 44 +#define VARIOUS_SET_TERRAIN 45 +#define VARIOUS_TRY_ME_FIRST 46 +#define VARIOUS_JUMP_IF_BATTLE_END 47 +#define VARIOUS_TRY_ELECTRIFY 48 +#define VARIOUS_TRY_REFLECT_TYPE 49 +#define VARIOUS_TRY_SOAK 50 +#define VARIOUS_HANDLE_MEGA_EVO 51 +#define VARIOUS_TRY_LAST_RESORT 52 +#define VARIOUS_ARGUMENT_STATUS_EFFECT 53 +#define VARIOUS_TRY_HIT_SWITCH_TARGET 54 +#define VARIOUS_TRY_AUTOTOMIZE 55 +#define VARIOUS_TRY_COPYCAT 56 +#define VARIOUS_ABILITY_POPUP 57 +#define VARIOUS_DEFOG 58 +#define VARIOUS_JUMP_IF_TARGET_ALLY 59 +#define VARIOUS_TRY_SYNCHRONOISE 60 +#define VARIOUS_PSYCHO_SHIFT 61 +#define VARIOUS_CURE_STATUS 62 +#define VARIOUS_POWER_TRICK 63 +#define VARIOUS_AFTER_YOU 64 +#define VARIOUS_BESTOW 65 +#define VARIOUS_ARGUMENT_TO_MOVE_EFFECT 66 +#define VARIOUS_JUMP_IF_NOT_GROUNDED 67 +#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 68 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 69 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 70 +#define VARIOUS_SET_AURORA_VEIL 71 +#define VARIOUS_TRY_THIRD_TYPE 72 +#define VARIOUS_ACUPRESSURE 73 +#define VARIOUS_SET_POWDER 74 +#define VARIOUS_SPECTRAL_THIEF 75 +#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 76 +#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 77 +#define VARIOUS_JUMP_IF_ROAR_FAILS 78 +#define VARIOUS_TRY_INSTRUCT 79 +#define VARIOUS_JUMP_IF_NOT_BERRY 80 +#define VARIOUS_TRACE_ABILITY 81 +#define VARIOUS_UPDATE_NICK 82 +#define VARIOUS_TRY_ILLUSION_OFF 83 +#define VARIOUS_SET_SPRITEIGNORE0HP 84 +#define VARIOUS_HANDLE_FORM_CHANGE 85 +#define VARIOUS_GET_STAT_VALUE 86 +#define VARIOUS_JUMP_IF_FULL_HP 87 +#define VARIOUS_LOSE_TYPE 88 +#define VARIOUS_TRY_ACTIVATE_SOULHEART 89 +#define VARIOUS_TRY_ACTIVATE_RECEIVER 90 +#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 91 +#define VARIOUS_TRY_FRISK 92 +#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 93 +#define VARIOUS_TRY_FAIRY_LOCK 94 +#define VARIOUS_JUMP_IF_NO_ALLY 95 +#define VARIOUS_POISON_TYPE_IMMUNITY 96 +#define VARIOUS_JUMP_IF_NO_HOLD_EFFECT 97 +#define VARIOUS_INFATUATE_WITH_BATTLER 98 +#define VARIOUS_SET_LAST_USED_ITEM 99 +#define VARIOUS_PARALYZE_TYPE_IMMUNITY 100 +#define VARIOUS_JUMP_IF_ABSENT 101 +#define VARIOUS_DESTROY_ABILITY_POPUP 102 +#define VARIOUS_TOTEM_BOOST 103 +#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 104 +#define VARIOUS_MOVEEND_ITEM_EFFECTS 105 +#define VARIOUS_TERRAIN_SEED 106 +#define VARIOUS_MAKE_INVISIBLE 107 +#define VARIOUS_ROOM_SERVICE 108 +#define VARIOUS_JUMP_IF_TERRAIN_AFFECTED 109 +#define VARIOUS_EERIE_SPELL_PP_REDUCE 110 +#define VARIOUS_JUMP_IF_TEAM_HEALTHY 111 +#define VARIOUS_TRY_HEAL_QUARTER_HP 112 +#define VARIOUS_REMOVE_TERRAIN 113 +#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 114 +#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 115 +#define VARIOUS_GET_ROTOTILLER_TARGETS 116 +#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 117 +#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 118 +#define VARIOUS_CONSUME_BERRY 119 +#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 120 +#define VARIOUS_HANDLE_PRIMAL_REVERSION 121 +#define VARIOUS_APPLY_PLASMA_FISTS 122 +#define VARIOUS_JUMP_IF_SPECIES 123 +#define VARIOUS_UPDATE_ABILITY_POPUP 124 +#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 125 +#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 126 +#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 127 +#define VARIOUS_PHOTON_GEYSER_CHECK 128 +#define VARIOUS_SHELL_SIDE_ARM_CHECK 129 +#define VARIOUS_TRY_NO_RETREAT 130 +#define VARIOUS_TRY_TAR_SHOT 131 +#define VARIOUS_CAN_TAR_SHOT_WORK 132 +#define VARIOUS_CHECK_POLTERGEIST 133 +#define VARIOUS_SET_OCTOLOCK 134 +#define VARIOUS_CUT_1_3_HP_RAISE_STATS 135 +#define VARIOUS_TRY_END_NEUTRALIZING_GAS 136 +#define VARIOUS_JUMP_IF_UNDER_200 137 +#define VARIOUS_SET_SKY_DROP 138 +#define VARIOUS_CLEAR_SKY_DROP 139 +#define VARIOUS_SKY_DROP_YAWN 140 +#define VARIOUS_JUMP_IF_CANT_FLING 141 +#define VARIOUS_JUMP_IF_HOLD_EFFECT 142 +#define VARIOUS_CURE_CERTAIN_STATUSES 143 +#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 144 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 145 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 146 +#define VARIOUS_SAVE_BATTLER_ITEM 147 +#define VARIOUS_RESTORE_BATTLER_ITEM 148 +#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 149 +#define VARIOUS_SET_BEAK_BLAST 150 +#define VARIOUS_SWAP_SIDE_STATUSES 151 +#define VARIOUS_SWAP_STATS 152 +#define VARIOUS_JUMP_IF_ROD 153 +#define VARIOUS_JUMP_IF_ABSORB 154 +#define VARIOUS_JUMP_IF_MOTOR 155 +#define VARIOUS_TEATIME_INVUL 156 +#define VARIOUS_TEATIME_TARGETS 157 +#define VARIOUS_TRY_WIND_RIDER_POWER 158 +#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 159 +#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 160 +#define VARIOUS_JUMP_IF_EMERGENCY_EXITED 161 +#define VARIOUS_STORE_HEALING_WISH 162 +#define VARIOUS_HIT_SWITCH_TARGET_FAILED 163 +#define VARIOUS_JUMP_IF_SHELL_TRAP 164 +#define VARIOUS_TRY_REVIVAL_BLESSING 165 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 166 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 167 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 @@ -330,10 +330,9 @@ #define MOVEEND_PICKPOCKET 30 #define MOVEEND_DANCER 31 #define MOVEEND_EMERGENCY_EXIT 32 -#define MOVEEND_WEATHER_FORM 33 -#define MOVEEND_SYMBIOSIS 34 -#define MOVEEND_CLEAR_BITS 35 -#define MOVEEND_COUNT 36 +#define MOVEEND_SYMBIOSIS 33 +#define MOVEEND_CLEAR_BITS 34 +#define MOVEEND_COUNT 35 // switch cases #define B_SWITCH_NORMAL 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 3f8853024f07..174c611e2fa8 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -265,8 +265,8 @@ #define STRINGID_ITAPPEAREDCAUGHT 264 #define STRINGID_AARGHALMOSTHADIT 265 #define STRINGID_SHOOTSOCLOSE 266 -#define STRINGID_GOTCHAPKMNCAUGHT 267 -#define STRINGID_GOTCHAPKMNCAUGHT2 268 +#define STRINGID_GOTCHAPKMNCAUGHTPLAYER 267 +#define STRINGID_GOTCHAPKMNCAUGHTWALLY 268 #define STRINGID_GIVENICKNAMECAPTURED 269 #define STRINGID_PKMNSENTTOPC 270 #define STRINGID_PKMNDATAADDEDTODEX 271 @@ -639,8 +639,33 @@ #define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 637 #define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 638 #define STRINGID_PKMNSABILITYPREVENTSABILITY 639 - -#define BATTLESTRINGS_COUNT 640 +#define STRINGID_PREPARESHELLTRAP 640 +#define STRINGID_SHELLTRAPDIDNTWORK 641 +#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 642 +#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 643 +#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 644 +#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 645 +#define STRINGID_COULDNTFULLYPROTECT 646 +#define STRINGID_STOCKPILEDEFFECTWOREOFF 647 +#define STRINGID_PKMNREVIVEDREADYTOFIGHT 648 +#define STRINGID_ITEMRESTOREDSPECIESHEALTH 649 +#define STRINGID_ITEMCUREDSPECIESSTATUS 650 +#define STRINGID_ITEMRESTOREDSPECIESPP 651 +#define STRINGID_THUNDERCAGETRAPPED 652 +#define STRINGID_PKMNHURTBYFROSTBITE 653 +#define STRINGID_PKMNGOTFROSTBITE 654 +#define STRINGID_PKMNSITEMHEALEDFROSTBITE 655 +#define STRINGID_ATTACKERHEALEDITSFROSTBITE 656 +#define STRINGID_PKMNFROSTBITEHEALED 657 +#define STRINGID_PKMNFROSTBITEHEALED2 658 +#define STRINGID_PKMNFROSTBITEHEALEDBY 659 +#define STRINGID_MIRRORHERBCOPIED 660 +#define STRINGID_STARTEDSNOW 661 +#define STRINGID_SNOWCONTINUES 662 +#define STRINGID_SNOWSTOPPED 663 +#define STRINGID_SNOWWARNINGSNOW 664 + +#define BATTLESTRINGS_COUNT 665 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -706,15 +731,17 @@ #define B_MSG_STARTED_SANDSTORM 3 #define B_MSG_STARTED_SUNLIGHT 4 #define B_MSG_STARTED_HAIL 5 +#define B_MSG_STARTED_SNOW 6 // gRainContinuesStringIds #define B_MSG_RAIN_CONTINUES 0 #define B_MSG_DOWNPOUR_CONTINUES 1 #define B_MSG_RAIN_STOPPED 2 -// gSandStormHailContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailEndStringIds +// gSandStormHailSnowContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailSnowEndStringIds #define B_MSG_SANDSTORM 0 #define B_MSG_HAIL 1 +#define B_MSG_SNOW 2 // gReflectLightScreenSafeguardStringIds #define B_MSG_SIDE_STATUS_FAILED 0 @@ -848,6 +875,10 @@ #define B_MSG_DEFROSTED 0 #define B_MSG_DEFROSTED_BY_MOVE 1 +// gFrostbiteHealedStringIds +#define B_MSG_FROSTBITE_HEALED 0 +#define B_MSG_FROSTBITE_HEALED_BY_MOVE 1 + // gBattlePalaceFlavorTextTable #define B_MSG_GLINT_IN_EYE 0 #define B_MSG_GETTING_IN_POS 1 @@ -897,17 +928,25 @@ #define B_MSG_TERRAINPREVENTS_ELECTRIC 1 #define B_MSG_TERRAINPREVENTS_PSYCHIC 2 +// gTerrainEndingStringIds +#define B_MSG_TERRAINENDS_MISTY 0 +#define B_MSG_TERRAINENDS_ELECTRIC 1 +#define B_MSG_TERRAINENDS_PSYCHIC 2 +#define B_MSG_TERRAINENDS_GRASS 3 +#define B_MSG_TERRAINENDS_COUNT 4 + // gWrappedStringIds -#define B_MSG_WRAPPED_BIND 0 -#define B_MSG_WRAPPED_WRAP 1 -#define B_MSG_WRAPPED_FIRE_SPIN 2 -#define B_MSG_WRAPPED_CLAMP 3 -#define B_MSG_WRAPPED_WHIRLPOOL 4 -#define B_MSG_WRAPPED_SAND_TOMB 5 -#define B_MSG_WRAPPED_MAGMA_STORM 6 -#define B_MSG_WRAPPED_INFESTATION 7 -#define B_MSG_WRAPPED_SNAP_TRAP 8 -#define NUM_TRAPPING_MOVES 9 +#define B_MSG_WRAPPED_BIND 0 +#define B_MSG_WRAPPED_WRAP 1 +#define B_MSG_WRAPPED_FIRE_SPIN 2 +#define B_MSG_WRAPPED_CLAMP 3 +#define B_MSG_WRAPPED_WHIRLPOOL 4 +#define B_MSG_WRAPPED_SAND_TOMB 5 +#define B_MSG_WRAPPED_MAGMA_STORM 6 +#define B_MSG_WRAPPED_INFESTATION 7 +#define B_MSG_WRAPPED_SNAP_TRAP 8 +#define B_MSG_WRAPPED_THUNDER_CAGE 9 +#define NUM_TRAPPING_MOVES 10 // z effects #define B_MSG_Z_RESET_STATS 0 @@ -918,4 +957,10 @@ #define B_MSG_Z_STAT_UP 5 #define B_MSG_Z_HP_TRAP 6 +// gDmgHazardsStringIds +#define B_MSG_PKMNHURTBYSPIKES 0 +#define B_MSG_STEALTHROCKDMG 1 +#define B_MSG_POINTEDSTONESFLOAT 2 +#define B_MSG_SPIKESSCATTERED 3 + #endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h index b5875b88149e..b1f38941fc8f 100644 --- a/include/constants/easy_chat.h +++ b/include/constants/easy_chat.h @@ -1095,7 +1095,7 @@ #define EC_WORD_OLD ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 30) #define EC_WORD_YOUNG ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 31) #define EC_WORD_UGLY ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 32) -#define NUM_ADDITIONAL_PHRASES 33 +#define NUM_TRENDY_SAYINGS 33 // Special Berry Masters Wife phrases #define NOT_SPECIAL_PHRASE 0 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 8278c6a66bde..c8fa942655a6 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -288,6 +288,9 @@ #define FIRST_DECORATION_SPRITE_GFX OBJ_EVENT_GFX_PICHU_DOLL +#define OBJ_KIND_NORMAL 0 +#define OBJ_KIND_CLONE 255 // Exclusive to FRLG + // Special object event local ids #define OBJ_EVENT_ID_PLAYER 0xFF #define OBJ_EVENT_ID_CAMERA 0x7F diff --git a/include/constants/flags.h b/include/constants/flags.h index 4e108e1fe98b..59bde846c557 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -580,7 +580,7 @@ #define FLAG_HIDDEN_ITEM_ROUTE_121_HP_UP (FLAG_HIDDEN_ITEMS_START + 0x27) #define FLAG_HIDDEN_ITEM_ROUTE_121_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x28) #define FLAG_HIDDEN_ITEM_ROUTE_123_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x29) -#define FLAG_HIDDEN_ITEM_ROUTE_113_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x2A) +#define FLAG_HIDDEN_ITEM_ROUTE_114_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x2A) #define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_PP_UP (FLAG_HIDDEN_ITEMS_START + 0x2B) #define FLAG_HIDDEN_ITEM_ROUTE_104_SUPER_POTION (FLAG_HIDDEN_ITEMS_START + 0x2C) #define FLAG_HIDDEN_ITEM_ROUTE_116_SUPER_POTION (FLAG_HIDDEN_ITEMS_START + 0x2D) @@ -1051,7 +1051,7 @@ #define FLAG_ITEM_ROUTE_105_IRON 0x3EB #define FLAG_ITEM_ROUTE_106_PROTEIN 0x3EC #define FLAG_ITEM_ROUTE_109_PP_UP 0x3ED -#define FLAG_ITEM_ROUTE_109_RARE_CANDY 0x3EE +#define FLAG_ITEM_ROUTE_110_RARE_CANDY 0x3EE #define FLAG_ITEM_ROUTE_110_DIRE_HIT 0x3EF #define FLAG_ITEM_ROUTE_111_TM37 0x3F0 #define FLAG_ITEM_ROUTE_111_STARDUST 0x3F1 @@ -1123,7 +1123,7 @@ #define FLAG_ITEM_NEW_MAUVILLE_ULTRA_BALL 0x433 #define FLAG_ITEM_NEW_MAUVILLE_ESCAPE_ROPE 0x434 #define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_6_LUXURY_BALL 0x435 -#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_4_SCANNER 0x436 +#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_2_SCANNER 0x436 #define FLAG_ITEM_SCORCHED_SLAB_TM11 0x437 #define FLAG_ITEM_METEOR_FALLS_B1F_2R_TM02 0x438 #define FLAG_ITEM_SHOAL_CAVE_ENTRANCE_BIG_PEARL 0x439 @@ -1162,7 +1162,7 @@ #define FLAG_ITEM_ROUTE_103_GUARD_SPEC 0x45A #define FLAG_ITEM_ROUTE_104_X_ACCURACY 0x45B #define FLAG_ITEM_MAUVILLE_CITY_X_SPEED 0x45C -#define FLAG_ITEM_PETALBURD_WOODS_PARALYZE_HEAL 0x45D +#define FLAG_ITEM_PETALBURG_WOODS_PARALYZE_HEAL 0x45D #define FLAG_ITEM_ROUTE_115_GREAT_BALL 0x45E #define FLAG_ITEM_SAFARI_ZONE_NORTH_CALCIUM 0x45F #define FLAG_ITEM_MT_PYRE_3F_SUPER_REPEL 0x460 @@ -1348,7 +1348,7 @@ #define FLAG_UNUSED_0x863 (SYSTEM_FLAGS + 0x3) // Unused Flag #define FLAG_SYS_GAME_CLEAR (SYSTEM_FLAGS + 0x4) #define FLAG_SYS_CHAT_USED (SYSTEM_FLAGS + 0x5) -#define FLAG_SYS_HIPSTER_MEET (SYSTEM_FLAGS + 0x6) +#define FLAG_UNLOCKED_TRENDY_SAYINGS (SYSTEM_FLAGS + 0x6) // Badges #define FLAG_BADGE01_GET (SYSTEM_FLAGS + 0x7) diff --git a/include/constants/form_change_types.h b/include/constants/form_change_types.h new file mode 100644 index 000000000000..81d1b045b050 --- /dev/null +++ b/include/constants/form_change_types.h @@ -0,0 +1,99 @@ +#ifndef GUARD_CONSTANTS_FORM_CHANGE_TYPES_H +#define GUARD_CONSTANTS_FORM_CHANGE_TYPES_H + +// FORM_CHANGE_BATTLE_HP_PERCENT param2 arguments +#define HP_HIGHER_THAN 1 +#define HP_LOWER_EQ_THAN 2 +// FORM_CHANGE_MOVE param2 Arguments +#define WHEN_LEARNED 0 +#define WHEN_FORGOTTEN 1 +// FORM_CHANGE_ITEM_USE param2 Arguments +#define DAY 1 +#define NIGHT 2 + +#define FORM_CHANGE_TERMINATOR 0 + +// Form change that activates when the specified item is given to or taken from the selected Pokémon. +// param1: item to hold. +// param2: ability to check for, optional. +#define FORM_CHANGE_ITEM_HOLD 1 + +// Form change that activates when the item is used on the selected Pokémon. +// param1: item to use +// param2: time of day to check, optional. +// - DAY if Form change that activates in the daytime. +// - NIGHT if Form change that activates at nighttime. +#define FORM_CHANGE_ITEM_USE 2 + +// TODO: Form change that activates when the Pokémon learns or forgets the move. +// param1: move to check for +// param2: +// - WHEN_LEARNED if Form change that activates when move is forgotten +// - WHEN_FORGOTTEN if Form change that activates when move is learned +#define FORM_CHANGE_MOVE 3 + +// Form change that activates when the Pokémon is withdrawn from the PC or Daycare. +// Daycare withdraw done, PC withdraw TODO. +// - No parameters. +#define FORM_CHANGE_WITHDRAW 4 + +// Form change that activates when the Pokémon faints, either in battle or in the overworld by poison. +// If species is not specified and it's on the player's side, it will try to use the value +// saved in gBattleStruct->changedSpecies from a previous form change. +// - No parameters. +#define FORM_CHANGE_FAINT 5 + +// Form change that activates when the Pokémon is sent out at the beginning of a battle +// param1: item to hold, optional +// param2: a move that will be replaced, optional +// param3: a new move to replace it with, optional +#define FORM_CHANGE_BEGIN_BATTLE 6 + +// Form change that activates at the end of a battle. If species is not specified and it's on the player's side, it will try to use the value saved in gBattleStruct->changedSpecies from a previous form change. +// param1: item to hold, optional +// param2: a move that will be replaced, optional +// param3: a new move to replace it with, optional +#define FORM_CHANGE_END_BATTLE 7 + +// Form change that activates at the end of a battle based on the terrain if it participated in the battle and hasn't fainted. Takes priority over FORM_CHANGE_END_BATTLE. +// param1: battle terrain to check. +#define FORM_CHANGE_END_BATTLE_TERRAIN 8 + +// Form change that activates when the Pokémon is switched out in battle. +// - No parameters. +#define FORM_CHANGE_BATTLE_SWITCH 9 + +// Form change that activates when the Pokémon's HP % passes a certain threshold. +// param1: Ability to check. +// param2: HP comparer +// - HP_HIGHER_THAN if the form triggers when the current HP is higher than the specified threshold. +// - HP_LOWER_EQ_THAN if the form triggers when the current HP is lower or equal than the specified threshold. +// param3: HP percentage threshold. +#define FORM_CHANGE_BATTLE_HP_PERCENT 10 + +// Form change that activates when the mon has the defined item. +// If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move. +// param1: item to hold. +#define FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM 11 + +// Form change that activates when the mon has the defined move. +// If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move. +// param1: move to have. +#define FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE 12 + +// Form change that activates automatically when entering battle with the specified item. +// If the item is a Red Orb, it uses the Omega Symbol for the animation and icon. Otherwise, it defaults to the Alpha symbol. +// The battle indicator icon is based on the species, with Primal Groudon's as Omega and otherwise being Alpha. +// param1: item to hold. +#define FORM_CHANGE_BATTLE_PRIMAL_REVERSION 13 + +// Form change that activates when a specific weather is set during battle. +// param1: weather to check +// param2: (optional) revert if specified ability is lost +#define FORM_CHANGE_BATTLE_WEATHER 14 + +// Form change that activates automatically when the turn ends. +// param1: ability to check. +#define FORM_CHANGE_BATTLE_TURN_END 15 + +#endif // GUARD_CONSTANTS_FORM_CHANGE_TYPES_H diff --git a/include/constants/global.h b/include/constants/global.h index 2b8b27028dba..2f150246b241 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -53,7 +53,6 @@ #define OBJECT_EVENTS_COUNT 16 #define MAIL_COUNT (10 + PARTY_SIZE) #define SECRET_BASES_COUNT 20 -#define TV_SHOWS_COUNT 25 #define POKE_NEWS_COUNT 16 #define PC_ITEMS_COUNT 50 #define BAG_ITEMS_COUNT 30 diff --git a/include/constants/hold_effects.h b/include/constants/hold_effects.h index cd4256632162..9f877cffa80f 100644 --- a/include/constants/hold_effects.h +++ b/include/constants/hold_effects.h @@ -159,6 +159,10 @@ #define HOLD_EFFECT_PUNCHING_GLOVE 178 #define HOLD_EFFECT_COVERT_CLOAK 179 #define HOLD_EFFECT_LOADED_DICE 180 +#define HOLD_EFFECT_BOOSTER_ENERGY 181 // Not implemented. + +// Gen2 hold effect +#define HOLD_EFFECT_BERSERK_GENE 182 #define HOLD_EFFECT_CHOICE(holdEffect)((holdEffect == HOLD_EFFECT_CHOICE_BAND || holdEffect == HOLD_EFFECT_CHOICE_SCARF || holdEffect == HOLD_EFFECT_CHOICE_SPECS)) diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h index c3970b9c1bd5..fca792451439 100644 --- a/include/constants/item_effects.h +++ b/include/constants/item_effects.h @@ -7,12 +7,12 @@ #define ITEM0_INFATUATION 0x80 // new field 1 masks -#define ITEM1_X_ATTACK 0x1 -#define ITEM1_X_DEFENSE 0x2 -#define ITEM1_X_SPEED 0x4 -#define ITEM1_X_SPATK 0x8 -#define ITEM1_X_SPDEF 0x10 -#define ITEM1_X_ACCURACY 0x20 +#define ITEM1_X_ATTACK STAT_ATK +#define ITEM1_X_DEFENSE STAT_DEF +#define ITEM1_X_SPEED STAT_SPEED +#define ITEM1_X_SPATK STAT_SPATK +#define ITEM1_X_SPDEF STAT_SPDEF +#define ITEM1_X_ACCURACY STAT_ACC // field 3 masks #define ITEM3_CONFUSION 0x1 @@ -74,7 +74,7 @@ #define ITEM_EFFECT_CURE_POISON 3 #define ITEM_EFFECT_CURE_SLEEP 4 #define ITEM_EFFECT_CURE_BURN 5 -#define ITEM_EFFECT_CURE_FREEZE 6 +#define ITEM_EFFECT_CURE_FREEZE_FROSTBITE 6 #define ITEM_EFFECT_CURE_PARALYSIS 7 #define ITEM_EFFECT_CURE_CONFUSION 8 #define ITEM_EFFECT_CURE_INFATUATION 9 diff --git a/include/constants/items.h b/include/constants/items.h index 1cb2803f37e0..57ed63feb4ec 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -928,13 +928,53 @@ #define ITEM_RUBY 756 #define ITEM_SAPPHIRE 757 +// GEN IX ITEMS #define ITEM_ABILITY_SHIELD 758 #define ITEM_CLEAR_AMULET 759 #define ITEM_PUNCHING_GLOVE 760 #define ITEM_COVERT_CLOAK 761 #define ITEM_LOADED_DICE 762 - -#define ITEMS_COUNT 763 +#define ITEM_AUSPICIOUS_ARMOR 763 +#define ITEM_BOOSTER_ENERGY 764 +#define ITEM_BIG_BAMBOO_SHOOT 765 +#define ITEM_GIMMIGHOUL_COIN 766 +#define ITEM_LEADERS_CREST 767 +#define ITEM_MALICIOUS_ARMOR 768 +#define ITEM_MIRROR_HERB 769 +#define ITEM_SCROLL_OF_DARKNESS 770 +#define ITEM_SCROLL_OF_WATERS 771 +#define ITEM_TERA_ORB 772 +#define ITEM_TINY_BAMBOO_SHOOT 773 + +#define ITEM_BUG_TERA_SHARD 774 +#define ITEM_DARK_TERA_SHARD 775 +#define ITEM_DRAGON_TERA_SHARD 776 +#define ITEM_ELECTRIC_TERA_SHARD 777 +#define ITEM_FAIRY_TERA_SHARD 778 +#define ITEM_FIGHTING_TERA_SHARD 779 +#define ITEM_FIRE_TERA_SHARD 780 +#define ITEM_FLYING_TERA_SHARD 781 +#define ITEM_GHOST_TERA_SHARD 782 +#define ITEM_GRASS_TERA_SHARD 783 +#define ITEM_GROUND_TERA_SHARD 784 +#define ITEM_ICE_TERA_SHARD 785 +#define ITEM_NORMAL_TERA_SHARD 786 +#define ITEM_POISON_TERA_SHARD 787 +#define ITEM_PSYCHIC_TERA_SHARD 788 +#define ITEM_ROCK_TERA_SHARD 789 +#define ITEM_STEEL_TERA_SHARD 790 +#define ITEM_WATER_TERA_SHARD 791 + +#define ITEM_ADAMANT_CRYSTAL 792 +#define ITEM_GRISEOUS_CORE 793 +#define ITEM_LUSTROUS_GLOBE 794 + +#define ITEM_BLACK_AUGURITE 795 +#define ITEM_LINKING_CORD 796 +#define ITEM_PEAT_BLOCK 797 +#define ITEM_BERSERK_GENE 798 + +#define ITEMS_COUNT 799 #define ITEM_FIELD_ARROW ITEMS_COUNT // A special item id associated with "Cancel"/"Exit" etc. in a list of items or decorations @@ -991,17 +1031,27 @@ #define EXP_30000 5 // Item type IDs (used to determine the exit callback) -#define ITEM_USE_MAIL 0 -#define ITEM_USE_PARTY_MENU 1 -#define ITEM_USE_FIELD 2 -#define ITEM_USE_PBLOCK_CASE 3 -#define ITEM_USE_BAG_MENU 4 // No exit callback, stays in bag menu - -// Item battle usage IDs (only checked to see if nonzero) -#define ITEM_B_USE_MEDICINE 1 -#define ITEM_B_USE_OTHER 2 - -// Check if the item is one that can be used on a Pokemon. -#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= LAST_BERRY_INDEX) +#define ITEM_USE_MAIL 0 +#define ITEM_USE_PARTY_MENU 1 +#define ITEM_USE_FIELD 2 +#define ITEM_USE_PBLOCK_CASE 3 +#define ITEM_USE_BAG_MENU 4 // No exit callback, stays in bag menu +#define ITEM_USE_PARTY_MENU_MOVES 5 + +// Item battle script IDs (need to be non-zero) +#define EFFECT_ITEM_RESTORE_HP 1 +#define EFFECT_ITEM_CURE_STATUS 2 +#define EFFECT_ITEM_HEAL_AND_CURE_STATUS 3 +#define EFFECT_ITEM_INCREASE_STAT 4 +#define EFFECT_ITEM_SET_MIST 5 +#define EFFECT_ITEM_SET_FOCUS_ENERGY 6 +#define EFFECT_ITEM_ESCAPE 7 +#define EFFECT_ITEM_THROW_BALL 8 +#define EFFECT_ITEM_REVIVE 9 +#define EFFECT_ITEM_RESTORE_PP 10 +#define EFFECT_ITEM_INCREASE_ALL_STATS 11 + +// Enigma Berry dummy constant +#define EFFECT_ITEM_ENIGMA_BERRY_EREADER 1 #endif // GUARD_CONSTANTS_ITEMS_H diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h index 71aac2308a13..c2c018761a31 100644 --- a/include/constants/metatile_labels.h +++ b/include/constants/metatile_labels.h @@ -1,794 +1,790 @@ #ifndef GUARD_METATILE_LABELS_H #define GUARD_METATILE_LABELS_H -// gTileset_General -#define METATILE_General_Grass 0x001 -#define METATILE_General_TallGrass 0x00D -#define METATILE_General_LongGrass 0x015 -#define METATILE_General_TallGrass_TreeUp 0x025 -#define METATILE_General_Grass_TreeUp 0x00E -#define METATILE_General_TallGrass_TreeLeft 0x1C6 -#define METATILE_General_TallGrass_TreeRight 0x1C7 -#define METATILE_General_Grass_TreeLeft 0x1CE -#define METATILE_General_Grass_TreeRight 0x1CF -#define METATILE_General_MuddySlope_Frame0 0x0E8 -#define METATILE_General_MuddySlope_Frame1 0x0E9 -#define METATILE_General_MuddySlope_Frame2 0x0EA -#define METATILE_General_MuddySlope_Frame3 0x0EB -#define METATILE_General_SandPit_Center 0x121 -#define METATILE_General_Door 0x021 -#define METATILE_General_Door_PokeMart 0x041 -#define METATILE_General_Door_PokeCenter 0x061 -#define METATILE_General_Door_Gym 0x1CD -#define METATILE_General_Door_Contest 0x1DB -#define METATILE_General_CaveEntrance_Top 0x09F -#define METATILE_General_CaveEntrance_Bottom 0x0A7 -#define METATILE_General_RockWall_GrassBase 0x079 -#define METATILE_General_RockWall_RockBase 0x07C -#define METATILE_General_RockWall_SandBase 0x091 -#define METATILE_General_CalmWater 0x170 -#define METATILE_General_RoughWater 0x14E -#define METATILE_General_RoughDeepWater 0x14F -#define METATILE_General_ReflectiveWater 0x0A1 -#define METATILE_General_SecretBase_TreeLeft 0x026 -#define METATILE_General_SecretBase_TreeRight 0x027 -#define METATILE_General_SecretBase_VineLeft 0x036 -#define METATILE_General_SecretBase_VineRight 0x037 -#define METATILE_General_RedCaveIndent 0x1A0 -#define METATILE_General_RedCaveOpen 0x1A1 -#define METATILE_General_YellowCaveIndent 0x1A8 -#define METATILE_General_YellowCaveOpen 0x1A9 -#define METATILE_General_BlueCaveIndent 0x1B0 -#define METATILE_General_BlueCaveOpen 0x1B1 - -// gTileset_Building -#define METATILE_Building_TV_Off 0x002 -#define METATILE_Building_TV_On 0x003 -#define METATILE_Building_PC_Off 0x004 -#define METATILE_Building_PC_On 0x005 - -// gTileset_PokemonCenter -#define METATILE_PokemonCenter_Door_CableClub 0x264 - -// gTileset_Shop -#define METATILE_Shop_Door_Elevator 0x285 - -// gTileset_Petalburg -#define METATILE_Petalburg_Door_Littleroot 0x248 -#define METATILE_Petalburg_Door_BirchsLab 0x249 -#define METATILE_Petalburg_Door_Oldale 0x287 - -// gTileset_Rustboro -#define METATILE_Rustboro_Door_Gray 0x21F -#define METATILE_Rustboro_Door_Tan 0x22F - -// gTileset_MauvilleGym -#define METATILE_MauvilleGym_RaisedSwitch 0x205 -#define METATILE_MauvilleGym_PressedSwitch 0x206 -#define METATILE_MauvilleGym_FloorTile 0x21A -#define METATILE_MauvilleGym_GreenBeamH1_On 0x220 -#define METATILE_MauvilleGym_GreenBeamH2_On 0x221 -#define METATILE_MauvilleGym_GreenBeamH3_On 0x228 -#define METATILE_MauvilleGym_GreenBeamH4_On 0x229 -#define METATILE_MauvilleGym_GreenBeamH1_Off 0x230 -#define METATILE_MauvilleGym_GreenBeamH2_Off 0x231 -#define METATILE_MauvilleGym_GreenBeamH3_Off 0x238 -#define METATILE_MauvilleGym_GreenBeamH4_Off 0x239 -#define METATILE_MauvilleGym_RedBeamH1_On 0x222 -#define METATILE_MauvilleGym_RedBeamH2_On 0x223 -#define METATILE_MauvilleGym_RedBeamH3_On 0x22A -#define METATILE_MauvilleGym_RedBeamH4_On 0x22B -#define METATILE_MauvilleGym_RedBeamH1_Off 0x232 -#define METATILE_MauvilleGym_RedBeamH2_Off 0x233 -#define METATILE_MauvilleGym_RedBeamH3_Off 0x23A -#define METATILE_MauvilleGym_RedBeamH4_Off 0x23B -#define METATILE_MauvilleGym_GreenBeamV1_On 0x240 -#define METATILE_MauvilleGym_GreenBeamV2_On 0x248 -#define METATILE_MauvilleGym_RedBeamV1_On 0x241 -#define METATILE_MauvilleGym_RedBeamV2_On 0x249 -#define METATILE_MauvilleGym_PoleTop_On 0x250 -#define METATILE_MauvilleGym_PoleTop_Off 0x251 -#define METATILE_MauvilleGym_PoleBottom_On 0x242 -#define METATILE_MauvilleGym_PoleBottom_Off 0x243 - -// gTileset_PetalburgGym -#define METATILE_PetalburgGym_RoomEntrance_Left 0x210 -#define METATILE_PetalburgGym_RoomEntrance_Right 0x211 -#define METATILE_PetalburgGym_SlidingDoor_Frame0 0x218 -#define METATILE_PetalburgGym_SlidingDoor_Frame1 0x219 -#define METATILE_PetalburgGym_SlidingDoor_Frame2 0x21A -#define METATILE_PetalburgGym_SlidingDoor_Frame3 0x21B -#define METATILE_PetalburgGym_SlidingDoor_Frame4 0x21C -#define METATILE_PetalburgGym_Door 0x224 - -// gTileset_MossdeepGym from R/S -#define METATILE_RS_MossdeepGym_RedArrow_Right 0x204 -#define METATILE_RS_MossdeepGym_RedArrow_Left 0x20C -#define METATILE_RS_MossdeepGym_RedArrow_Up 0x20D -#define METATILE_RS_MossdeepGym_RedArrow_Down 0x205 -#define METATILE_RS_MossdeepGym_Switch_Up 0x238 -#define METATILE_RS_MossdeepGym_Switch_Down 0x239 - -// gTileset_MossdeepGym from Emerald -#define METATILE_MossdeepGym_YellowArrow_Right 0x250 - -// gTileset_BrendansMaysHouse -#define METATILE_BrendansMaysHouse_BrendanPC_Off 0x25A -#define METATILE_BrendansMaysHouse_BrendanPC_On 0x27F -#define METATILE_BrendansMaysHouse_MayPC_Off 0x259 -#define METATILE_BrendansMaysHouse_MayPC_On 0x27E -#define METATILE_BrendansMaysHouse_MovingBox_Closed 0x268 -#define METATILE_BrendansMaysHouse_MovingBox_Open 0x270 -#define METATILE_BrendansMaysHouse_BookOnTable 0x293 - -// gTileset_Shop -#define METATILE_Shop_Laptop1_Normal 0x29D -#define METATILE_Shop_Laptop2_Normal 0x2A5 -#define METATILE_Shop_Laptop1_Flash 0x258 -#define METATILE_Shop_Laptop2_Flash 0x260 - -// gTileset_BattleFrontier -#define METATILE_BattleFrontier_Door_Elevator 0x20E -#define METATILE_BattleFrontier_Door_MultiCorridor 0x2AD -#define METATILE_BattleFrontier_CorridorOpenDoor_Top 0x207 -#define METATILE_BattleFrontier_CorridorOpenDoor_Bottom 0x20F -#define METATILE_BattleFrontier_Elevator_Top0 0x329 -#define METATILE_BattleFrontier_Elevator_Top1 0x32A -#define METATILE_BattleFrontier_Elevator_Top2 0x32B -#define METATILE_BattleFrontier_Elevator_Mid0 0x331 -#define METATILE_BattleFrontier_Elevator_Mid1 0x332 -#define METATILE_BattleFrontier_Elevator_Mid2 0x333 -#define METATILE_BattleFrontier_Elevator_Bottom0 0x339 -#define METATILE_BattleFrontier_Elevator_Bottom1 0x33A -#define METATILE_BattleFrontier_Elevator_Bottom2 0x33B +// gTileset_BattleArena +#define METATILE_BattleArena_Door 0x21B -// gTileset_BattleFrontierOutsideWest -#define METATILE_BattleFrontierOutsideWest_Door_BattleFactory 0x263 -#define METATILE_BattleFrontierOutsideWest_Door_BattleDome 0x28A -#define METATILE_BattleFrontierOutsideWest_Door_Sliding 0x396 -#define METATILE_BattleFrontierOutsideWest_Door 0x3FC +// gTileset_BattleDome +#define METATILE_BattleDome_Door_Corridor 0x25E +#define METATILE_BattleDome_Door_Lobby 0x209 +#define METATILE_BattleDome_Door_PreBattleRoom 0x20A // gTileset_BattleFrontierOutsideEast +#define METATILE_BattleFrontierOutsideEast_Door 0x3FC #define METATILE_BattleFrontierOutsideEast_Door_BattleArena 0x291 #define METATILE_BattleFrontierOutsideEast_Door_BattleTower 0x329 #define METATILE_BattleFrontierOutsideEast_Door_Sliding 0x396 -#define METATILE_BattleFrontierOutsideEast_Door 0x3FC -// gTileset_BattleDome -#define METATILE_BattleDome_Door_Lobby 0x209 -#define METATILE_BattleDome_Door_PreBattleRoom 0x20A -#define METATILE_BattleDome_Door_Corridor 0x25E +// gTileset_BattleFrontierOutsideWest +#define METATILE_BattleFrontierOutsideWest_Door 0x3FC +#define METATILE_BattleFrontierOutsideWest_Door_BattleDome 0x28A +#define METATILE_BattleFrontierOutsideWest_Door_BattleFactory 0x263 +#define METATILE_BattleFrontierOutsideWest_Door_Sliding 0x396 -// gTileset_BattleArena -#define METATILE_BattleArena_Door 0x21B +// gTileset_BattleFrontier +#define METATILE_BattleFrontier_CorridorOpenDoor_Bottom 0x20F +#define METATILE_BattleFrontier_CorridorOpenDoor_Top 0x207 +#define METATILE_BattleFrontier_Door_Elevator 0x20E +#define METATILE_BattleFrontier_Door_MultiCorridor 0x2AD +#define METATILE_BattleFrontier_Elevator_Bottom0 0x339 +#define METATILE_BattleFrontier_Elevator_Bottom1 0x33A +#define METATILE_BattleFrontier_Elevator_Bottom2 0x33B +#define METATILE_BattleFrontier_Elevator_Mid0 0x331 +#define METATILE_BattleFrontier_Elevator_Mid1 0x332 +#define METATILE_BattleFrontier_Elevator_Mid2 0x333 +#define METATILE_BattleFrontier_Elevator_Top0 0x329 +#define METATILE_BattleFrontier_Elevator_Top1 0x32A +#define METATILE_BattleFrontier_Elevator_Top2 0x32B // gTileset_BattlePalace #define METATILE_BattlePalace_Door 0x219 -// gTileset_Cave -#define METATILE_Cave_EntranceCover 0x229 -#define METATILE_Cave_CrackedFloor_Hole 0x206 -#define METATILE_Cave_CrackedFloor 0x22F -#define METATILE_Cave_SealedChamberEntrance_TopLeft 0x22A -#define METATILE_Cave_SealedChamberEntrance_TopMid 0x22B -#define METATILE_Cave_SealedChamberEntrance_TopRight 0x22C -#define METATILE_Cave_SealedChamberEntrance_BottomLeft 0x232 -#define METATILE_Cave_SealedChamberEntrance_BottomMid 0x233 -#define METATILE_Cave_SealedChamberEntrance_BottomRight 0x234 -#define METATILE_Cave_SealedChamberBraille_Mid 0x235 -#define METATILE_Cave_ShoalCave_DirtPile_Large 0x358 -#define METATILE_Cave_ShoalCave_DirtPile_Small 0x35A -#define METATILE_Cave_ShoalCave_BlueStone_Large 0x359 -#define METATILE_Cave_ShoalCave_BlueStone_Small 0x35B +// gTileset_BattlePike +#define METATILE_BattlePike_CurtainFrames_Start 0x201 +#define METATILE_BattlePike_Curtain_Stage0_Tile0 0x24A +#define METATILE_BattlePike_Curtain_Stage0_Tile1 0x251 +#define METATILE_BattlePike_Curtain_Stage0_Tile2 0x252 +#define METATILE_BattlePike_Curtain_Stage0_Tile3 0x253 +#define METATILE_BattlePike_Curtain_Stage0_Tile4 0x259 +#define METATILE_BattlePike_Curtain_Stage0_Tile5 0x25A +#define METATILE_BattlePike_Curtain_Stage0_Tile6 0x25B +#define METATILE_BattlePike_Curtain_Stage1_Tile0 0x22A +#define METATILE_BattlePike_Curtain_Stage1_Tile1 0x231 +#define METATILE_BattlePike_Curtain_Stage1_Tile2 0x232 +#define METATILE_BattlePike_Curtain_Stage1_Tile3 0x233 +#define METATILE_BattlePike_Curtain_Stage1_Tile4 0x239 +#define METATILE_BattlePike_Curtain_Stage1_Tile5 0x23A +#define METATILE_BattlePike_Curtain_Stage1_Tile6 0x23B +#define METATILE_BattlePike_Curtain_Stage2_Tile0 0x20A +#define METATILE_BattlePike_Curtain_Stage2_Tile1 0x211 +#define METATILE_BattlePike_Curtain_Stage2_Tile2 0x212 +#define METATILE_BattlePike_Curtain_Stage2_Tile3 0x213 +#define METATILE_BattlePike_Curtain_Stage2_Tile4 0x219 +#define METATILE_BattlePike_Curtain_Stage2_Tile5 0x21A +#define METATILE_BattlePike_Curtain_Stage2_Tile6 0x21B +#define METATILE_BattlePike_Curtain_Stage3_Tile0 0x2AB +#define METATILE_BattlePike_Curtain_Stage3_Tile1 0x2B2 +#define METATILE_BattlePike_Curtain_Stage3_Tile2 0x2B3 +#define METATILE_BattlePike_Curtain_Stage3_Tile3 0x2B4 +#define METATILE_BattlePike_Curtain_Stage3_Tile4 0x2BA +#define METATILE_BattlePike_Curtain_Stage3_Tile5 0x2BB +#define METATILE_BattlePike_Curtain_Stage3_Tile6 0x2BC -// gTileset_Pacifidlog -#define METATILE_Pacifidlog_Door 0x21A -#define METATILE_Pacifidlog_FloatingLogs_HorizontalLeft 0x250 -#define METATILE_Pacifidlog_FloatingLogs_HorizontalRight 0x251 -#define METATILE_Pacifidlog_HalfSubmergedLogs_HorizontalLeft 0x252 -#define METATILE_Pacifidlog_HalfSubmergedLogs_HorizontalRight 0x253 -#define METATILE_Pacifidlog_SubmergedLogs_HorizontalLeft 0x254 -#define METATILE_Pacifidlog_SubmergedLogs_HorizontalRight 0x255 -#define METATILE_Pacifidlog_FloatingLogs_VerticalTop 0x258 -#define METATILE_Pacifidlog_FloatingLogs_VerticalBottom 0x260 -#define METATILE_Pacifidlog_HalfSubmergedLogs_VerticalTop 0x259 -#define METATILE_Pacifidlog_HalfSubmergedLogs_VerticalBottom 0x261 -#define METATILE_Pacifidlog_SubmergedLogs_VerticalTop 0x25A -#define METATILE_Pacifidlog_SubmergedLogs_VerticalBottom 0x262 -#define METATILE_Pacifidlog_SkyPillar_CrackedFloor_Hole 0x237 -#define METATILE_Pacifidlog_SkyPillar_DoorOpen_Top 0x2AA -#define METATILE_Pacifidlog_SkyPillar_DoorOpen_Bottom 0x2B2 +// gTileset_BattlePyramid +#define METATILE_BattlePyramid_Exit 0x28E +#define METATILE_BattlePyramid_Floor 0x28D -// gTileset_Fortree -#define METATILE_Fortree_LongGrass_Root 0x208 -#define METATILE_Fortree_BridgeOverGrass_Raised 0x24E -#define METATILE_Fortree_BridgeOverGrass_Lowered 0x24F -#define METATILE_Fortree_BridgeOverTrees_Raised 0x256 -#define METATILE_Fortree_BridgeOverTrees_Lowered 0x257 -#define METATILE_Fortree_SecretBase_Shrub 0x271 -#define METATILE_Fortree_SecretBase_ShrubOpen 0x278 -#define METATILE_Fortree_SecretBase_LongGrass_TopLeft 0x279 -#define METATILE_Fortree_SecretBase_LongGrass_TopMid 0x27A -#define METATILE_Fortree_SecretBase_LongGrass_TopRight 0x27B -#define METATILE_Fortree_SecretBase_LongGrass_BottomLeft 0x281 -#define METATILE_Fortree_SecretBase_LongGrass_BottomMid 0x282 -#define METATILE_Fortree_SecretBase_LongGrass_BottomRight 0x283 -#define METATILE_Fortree_WoodBridge1_Top 0x297 -#define METATILE_Fortree_WoodBridge1_Bottom 0x29F +// gTileset_BattleTent +#define METATILE_BattleTent_Door 0x26B -// gTileset_Sootopolis -#define METATILE_Sootopolis_Door 0x21E -#define METATILE_Sootopolis_Door_PeakedRoof 0x21C -#define METATILE_Sootopolis_Door_Closed 0x248 -#define METATILE_Sootopolis_GymDoor_Closed 0x250 -#define METATILE_Sootopolis_RoughWater 0x290 +// gTileset_BikeShop +#define METATILE_BikeShop_Barrier_Blue_Bottom 0x2CF +#define METATILE_BikeShop_Barrier_Blue_BottomMid 0x2C7 +#define METATILE_BikeShop_Barrier_Blue_Top 0x2B7 +#define METATILE_BikeShop_Barrier_Blue_TopMid 0x2BF +#define METATILE_BikeShop_Barrier_Green_Bottom 0x2CE +#define METATILE_BikeShop_Barrier_Green_BottomMid 0x2C6 +#define METATILE_BikeShop_Barrier_Green_Top 0x2B6 +#define METATILE_BikeShop_Barrier_Green_TopMid 0x2BE +#define METATILE_BikeShop_Barrier_Hidden_Bottom 0x271 +#define METATILE_BikeShop_Barrier_Hidden_Top 0x269 +#define METATILE_BikeShop_Button_Blue 0x236 +#define METATILE_BikeShop_Button_Green 0x22E +#define METATILE_BikeShop_Button_Pressed 0x24F +#define METATILE_BikeShop_Floor_Shadow_Top 0x26D +#define METATILE_BikeShop_Generator_Off_Tile0 0x2F0 +#define METATILE_BikeShop_Generator_Off_Tile1 0x2F1 +#define METATILE_BikeShop_Generator_Off_Tile2 0x2F2 +#define METATILE_BikeShop_Generator_Off_Tile3 0x2F3 +#define METATILE_BikeShop_Generator_Off_Tile4 0x2F4 +#define METATILE_BikeShop_Generator_Off_Tile5 0x2F5 +#define METATILE_BikeShop_Generator_Off_Tile6 0x2F6 +#define METATILE_BikeShop_Generator_Off_Tile7 0x2F7 +#define METATILE_BikeShop_Wall_Edge_Top 0x281 -// gTileset_SootopolisGym -#define METATILE_SootopolisGym_Ice_Cracked 0x20E -#define METATILE_SootopolisGym_Ice_Broken 0x206 -#define METATILE_SootopolisGym_Stairs 0x207 +// gTileset_BrendansMaysHouse +#define METATILE_BrendansMaysHouse_BookOnTable 0x293 +#define METATILE_BrendansMaysHouse_BrendanPC_Off 0x25A +#define METATILE_BrendansMaysHouse_BrendanPC_On 0x27F +#define METATILE_BrendansMaysHouse_MayPC_Off 0x259 +#define METATILE_BrendansMaysHouse_MayPC_On 0x27E +#define METATILE_BrendansMaysHouse_MovingBox_Closed 0x268 +#define METATILE_BrendansMaysHouse_MovingBox_Open 0x270 -// gTileset_Fallarbor -#define METATILE_Fallarbor_AshGrass 0x20A -#define METATILE_Fallarbor_BrownCaveIndent 0x208 -#define METATILE_Fallarbor_BrownCaveOpen 0x210 -#define METATILE_Fallarbor_NormalGrass 0x212 -#define METATILE_Fallarbor_AshField 0x218 -#define METATILE_Fallarbor_BrownCaveEntrance_Top 0x259 -#define METATILE_Fallarbor_BrownCaveEntrance_Bottom 0x261 -#define METATILE_Fallarbor_RedCaveEntrance_Top 0x347 -#define METATILE_Fallarbor_RedCaveEntrance_Bottom 0x34F -#define METATILE_Fallarbor_BrownRockWall 0x265 -#define METATILE_Fallarbor_RedRockWall 0x269 -#define METATILE_Fallarbor_Door_LightRoof 0x2A5 -#define METATILE_Fallarbor_Door_DarkRoof 0x2F7 -#define METATILE_Fallarbor_Door_BattleTent 0x36C +// gTileset_Building +#define METATILE_Building_PC_Off 0x004 +#define METATILE_Building_PC_On 0x005 +#define METATILE_Building_TV_Off 0x002 +#define METATILE_Building_TV_On 0x003 -// gTileset_Lavaridge -#define METATILE_Lavaridge_NormalGrass 0x206 -#define METATILE_Lavaridge_AshGrass 0x207 -#define METATILE_Lavaridge_LavaField 0x271 -#define METATILE_Lavaridge_RockWall 0x274 -#define METATILE_Lavaridge_CaveEntrance_Top 0x256 -#define METATILE_Lavaridge_CaveEntrance_Bottom 0x25E +// gTileset_Cave +#define METATILE_Cave_CrackedFloor 0x22F +#define METATILE_Cave_CrackedFloor_Hole 0x206 +#define METATILE_Cave_EntranceCover 0x229 +#define METATILE_Cave_SealedChamberBraille_Mid 0x235 +#define METATILE_Cave_SealedChamberEntrance_BottomLeft 0x232 +#define METATILE_Cave_SealedChamberEntrance_BottomMid 0x233 +#define METATILE_Cave_SealedChamberEntrance_BottomRight 0x234 +#define METATILE_Cave_SealedChamberEntrance_TopLeft 0x22A +#define METATILE_Cave_SealedChamberEntrance_TopMid 0x22B +#define METATILE_Cave_SealedChamberEntrance_TopRight 0x22C +#define METATILE_Cave_ShoalCave_BlueStone_Large 0x359 +#define METATILE_Cave_ShoalCave_BlueStone_Small 0x35B +#define METATILE_Cave_ShoalCave_DirtPile_Large 0x358 +#define METATILE_Cave_ShoalCave_DirtPile_Small 0x35A -// gTileset_Mauville -#define METATILE_Mauville_Door 0x2AC -#define METATILE_Mauville_Door_CyclingRoad 0x289 -#define METATILE_Mauville_Door_Verdanturf 0x3A1 -#define METATILE_Mauville_Door_BattleTent 0x3D4 -#define METATILE_Mauville_DeepSand_Center 0x251 -#define METATILE_Mauville_DeepSand_BottomMid 0x259 -#define METATILE_Mauville_MirageTower_Tile0 0x3D8 -#define METATILE_Mauville_MirageTower_Tile1 0x3D9 -#define METATILE_Mauville_MirageTower_Tile2 0x3DA -#define METATILE_Mauville_MirageTower_Tile3 0x3E0 -#define METATILE_Mauville_MirageTower_Tile4 0x3E1 -#define METATILE_Mauville_MirageTower_Tile5 0x3E2 -#define METATILE_Mauville_MirageTower_Tile6 0x3E8 -#define METATILE_Mauville_MirageTower_Tile7 0x3E9 -#define METATILE_Mauville_MirageTower_Tile8 0x3EA -#define METATILE_Mauville_MirageTower_Tile9 0x3F0 -#define METATILE_Mauville_MirageTower_TileA 0x3F1 -#define METATILE_Mauville_MirageTower_TileB 0x3F2 -#define METATILE_Mauville_MirageTower_TileC 0x3DB -#define METATILE_Mauville_MirageTower_TileD 0x3DC -#define METATILE_Mauville_MirageTower_TileE 0x3DD -#define METATILE_Mauville_MirageTower_TileF 0x3E3 -#define METATILE_Mauville_MirageTower_Tile10 0x3E4 -#define METATILE_Mauville_MirageTower_Tile11 0x3E5 +// gTileset_Contest +#define METATILE_Contest_CounterFlap_Bottom 0x2D9 +#define METATILE_Contest_CounterFlap_Top 0x2D1 +#define METATILE_Contest_FloorShadow 0x261 +#define METATILE_Contest_WallShadow 0x221 // gTileset_Dewford #define METATILE_Dewford_Door 0x225 #define METATILE_Dewford_Door_BattleTower 0x25D -// gTileset_Slateport -#define METATILE_Slateport_Door 0x2DC -#define METATILE_Slateport_Door_BattleTent 0x393 - -// gTileset_Mossdeep -#define METATILE_Mossdeep_Door 0x2A1 -#define METATILE_Mossdeep_Door_SpaceCenter 0x2ED +// gTileset_EliteFour +#define METATILE_EliteFour_EntryDoor_ClosedBottom 0x20E +#define METATILE_EliteFour_EntryDoor_ClosedTop 0x206 +#define METATILE_EliteFour_LeftSpotlightOff 0x2DD +#define METATILE_EliteFour_OpenDoorChampion_Frame 0x346 +#define METATILE_EliteFour_OpenDoorChampion_Opening 0x347 +#define METATILE_EliteFour_OpenDoor_Frame 0x344 +#define METATILE_EliteFour_OpenDoor_Opening 0x345 +#define METATILE_EliteFour_RightSpotlightOff 0x2DE // gTileset_EverGrande #define METATILE_EverGrande_Door_PokemonLeague 0x21D -// gTileset_PokemonCenter -#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame0 0x280 -#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame1 0x282 -#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame2 0x284 -#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame0 0x281 -#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame1 0x283 -#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame2 0x285 -#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame0 0x288 -#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame1 0x28A -#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame2 0x28C -#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame0 0x289 -#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame1 0x28B -#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame2 0x28D -#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame0 0x2A0 -#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame1 0x2A2 -#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame2 0x2A4 -#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame0 0x2A1 -#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame1 0x2A3 -#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame2 0x2A5 -#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame0 0x2A8 -#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame1 0x2AA -#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame2 0x2AC -#define METATILE_PokemonCenter_Floor_ShadowTop_Alt 0x2DC -#define METATILE_PokemonCenter_Floor_Plain_Alt 0x2E4 -#define METATILE_PokemonCenter_Floor_ShadowTop 0x21E -#define METATILE_PokemonCenter_CounterBarrier 0x25D +// gTileset_Facility +#define METATILE_Facility_DataPad 0x3E4 +#define METATILE_Facility_NewMauvilleDoor_Closed_Tile0 0x314 +#define METATILE_Facility_NewMauvilleDoor_Closed_Tile1 0x315 +#define METATILE_Facility_NewMauvilleDoor_Closed_Tile2 0x316 +#define METATILE_Facility_NewMauvilleDoor_Closed_Tile3 0x31C +#define METATILE_Facility_NewMauvilleDoor_Closed_Tile4 0x31D +#define METATILE_Facility_NewMauvilleDoor_Closed_Tile5 0x31E +#define METATILE_Facility_NewMauvilleDoor_Open_Tile0 0x2C3 +#define METATILE_Facility_NewMauvilleDoor_Open_Tile1 0x2C4 +#define METATILE_Facility_NewMauvilleDoor_Open_Tile2 0x2C5 +#define METATILE_Facility_NewMauvilleDoor_Open_Tile3 0x2CB +#define METATILE_Facility_NewMauvilleDoor_Open_Tile4 0x2CC +#define METATILE_Facility_NewMauvilleDoor_Open_Tile5 0x2CD -// gTileset_InsideOfTruck -#define METATILE_InsideOfTruck_ExitLight_Top 0x208 -#define METATILE_InsideOfTruck_ExitLight_Mid 0x210 -#define METATILE_InsideOfTruck_ExitLight_Bottom 0x218 -#define METATILE_InsideOfTruck_DoorClosedFloor_Top 0x20D -#define METATILE_InsideOfTruck_DoorClosedFloor_Mid 0x215 -#define METATILE_InsideOfTruck_DoorClosedFloor_Bottom 0x21D +// gTileset_Fallarbor +#define METATILE_Fallarbor_AshField 0x218 +#define METATILE_Fallarbor_AshGrass 0x20A +#define METATILE_Fallarbor_BrownCaveEntrance_Bottom 0x261 +#define METATILE_Fallarbor_BrownCaveEntrance_Top 0x259 +#define METATILE_Fallarbor_BrownCaveIndent 0x208 +#define METATILE_Fallarbor_BrownCaveOpen 0x210 +#define METATILE_Fallarbor_BrownRockWall 0x265 +#define METATILE_Fallarbor_Door_BattleTent 0x36C +#define METATILE_Fallarbor_Door_DarkRoof 0x2F7 +#define METATILE_Fallarbor_Door_LightRoof 0x2A5 +#define METATILE_Fallarbor_NormalGrass 0x212 +#define METATILE_Fallarbor_RedCaveEntrance_Bottom 0x34F +#define METATILE_Fallarbor_RedCaveEntrance_Top 0x347 +#define METATILE_Fallarbor_RedRockWall 0x269 -// gTileset_MossdeepGameCorner -#define METATILE_MossdeepGameCorner_CounterOpen_Top 0x22C -#define METATILE_MossdeepGameCorner_CounterOpen_Bottom 0x234 -#define METATILE_MossdeepGameCorner_CounterClosed_Top 0x22A -#define METATILE_MossdeepGameCorner_CounterClosed_Bottom 0x232 +// gTileset_Fortree +#define METATILE_Fortree_BridgeOverGrass_Lowered 0x24F +#define METATILE_Fortree_BridgeOverGrass_Raised 0x24E +#define METATILE_Fortree_BridgeOverTrees_Lowered 0x257 +#define METATILE_Fortree_BridgeOverTrees_Raised 0x256 +#define METATILE_Fortree_LongGrass_Root 0x208 +#define METATILE_Fortree_SecretBase_LongGrass_BottomLeft 0x281 +#define METATILE_Fortree_SecretBase_LongGrass_BottomMid 0x282 +#define METATILE_Fortree_SecretBase_LongGrass_BottomRight 0x283 +#define METATILE_Fortree_SecretBase_LongGrass_TopLeft 0x279 +#define METATILE_Fortree_SecretBase_LongGrass_TopMid 0x27A +#define METATILE_Fortree_SecretBase_LongGrass_TopRight 0x27B +#define METATILE_Fortree_SecretBase_Shrub 0x271 +#define METATILE_Fortree_SecretBase_ShrubOpen 0x278 +#define METATILE_Fortree_WoodBridge1_Bottom 0x29F +#define METATILE_Fortree_WoodBridge1_Top 0x297 -// gTileset_EliteFour -#define METATILE_EliteFour_OpenDoor_Frame 0x344 -#define METATILE_EliteFour_OpenDoor_Opening 0x345 -#define METATILE_EliteFour_OpenDoorChampion_Frame 0x346 -#define METATILE_EliteFour_OpenDoorChampion_Opening 0x347 -#define METATILE_EliteFour_LeftSpotlightOff 0x2DD -#define METATILE_EliteFour_RightSpotlightOff 0x2DE -#define METATILE_EliteFour_EntryDoor_ClosedTop 0x206 -#define METATILE_EliteFour_EntryDoor_ClosedBottom 0x20E +// gTileset_General +#define METATILE_General_BlueCaveIndent 0x1B0 +#define METATILE_General_BlueCaveOpen 0x1B1 +#define METATILE_General_CalmWater 0x170 +#define METATILE_General_CaveEntrance_Bottom 0x0A7 +#define METATILE_General_CaveEntrance_Top 0x09F +#define METATILE_General_Door 0x021 +#define METATILE_General_Door_Contest 0x1DB +#define METATILE_General_Door_Gym 0x1CD +#define METATILE_General_Door_PokeCenter 0x061 +#define METATILE_General_Door_PokeMart 0x041 +#define METATILE_General_Grass 0x001 +#define METATILE_General_Grass_TreeLeft 0x1CE +#define METATILE_General_Grass_TreeRight 0x1CF +#define METATILE_General_Grass_TreeUp 0x00E +#define METATILE_General_LongGrass 0x015 +#define METATILE_General_MuddySlope_Frame0 0x0E8 +#define METATILE_General_MuddySlope_Frame1 0x0E9 +#define METATILE_General_MuddySlope_Frame2 0x0EA +#define METATILE_General_MuddySlope_Frame3 0x0EB +#define METATILE_General_RedCaveIndent 0x1A0 +#define METATILE_General_RedCaveOpen 0x1A1 +#define METATILE_General_ReflectiveWater 0x0A1 +#define METATILE_General_RockWall_GrassBase 0x079 +#define METATILE_General_RockWall_RockBase 0x07C +#define METATILE_General_RockWall_SandBase 0x091 +#define METATILE_General_RoughDeepWater 0x14F +#define METATILE_General_RoughWater 0x14E +#define METATILE_General_SandPit_Center 0x121 +#define METATILE_General_SecretBase_TreeLeft 0x026 +#define METATILE_General_SecretBase_TreeRight 0x027 +#define METATILE_General_SecretBase_VineLeft 0x036 +#define METATILE_General_SecretBase_VineRight 0x037 +#define METATILE_General_TallGrass 0x00D +#define METATILE_General_TallGrass_TreeLeft 0x1C6 +#define METATILE_General_TallGrass_TreeRight 0x1C7 +#define METATILE_General_TallGrass_TreeUp 0x025 +#define METATILE_General_YellowCaveIndent 0x1A8 +#define METATILE_General_YellowCaveOpen 0x1A9 + +// gTileset_GenericBuilding +#define METATILE_GenericBuilding_TableEdge 0x2F1 +#define METATILE_GenericBuilding_TrickHouse_Door_Closed 0x21B +#define METATILE_GenericBuilding_TrickHouse_Stairs_Down 0x219 + +// gTileset_InsideOfTruck +#define METATILE_InsideOfTruck_DoorClosedFloor_Bottom 0x21D +#define METATILE_InsideOfTruck_DoorClosedFloor_Mid 0x215 +#define METATILE_InsideOfTruck_DoorClosedFloor_Top 0x20D +#define METATILE_InsideOfTruck_ExitLight_Bottom 0x218 +#define METATILE_InsideOfTruck_ExitLight_Mid 0x210 +#define METATILE_InsideOfTruck_ExitLight_Top 0x208 // gTileset_InsideShip -#define METATILE_InsideShip_IntactDoor_Bottom_Unlocked 0x22B -#define METATILE_InsideShip_IntactDoor_Bottom_Locked 0x233 -#define METATILE_InsideShip_DoorIndent_Unlocked 0x21A -#define METATILE_InsideShip_DoorIndent_Locked 0x234 -#define METATILE_InsideShip_IntactDoor_Bottom_Interior 0x297 +#define METATILE_InsideShip_DoorIndent_Locked 0x234 +#define METATILE_InsideShip_DoorIndent_Unlocked 0x21A +#define METATILE_InsideShip_IntactDoor_Bottom_Interior 0x297 +#define METATILE_InsideShip_IntactDoor_Bottom_Locked 0x233 +#define METATILE_InsideShip_IntactDoor_Bottom_Unlocked 0x22B -// gTileset_BattlePike -#define METATILE_BattlePike_CurtainFrames_Start 0x201 -#define METATILE_BattlePike_Curtain_Stage0_Tile0 0x24A -#define METATILE_BattlePike_Curtain_Stage0_Tile1 0x251 -#define METATILE_BattlePike_Curtain_Stage0_Tile2 0x252 -#define METATILE_BattlePike_Curtain_Stage0_Tile3 0x253 -#define METATILE_BattlePike_Curtain_Stage0_Tile4 0x259 -#define METATILE_BattlePike_Curtain_Stage0_Tile5 0x25A -#define METATILE_BattlePike_Curtain_Stage0_Tile6 0x25B -#define METATILE_BattlePike_Curtain_Stage1_Tile0 0x22A -#define METATILE_BattlePike_Curtain_Stage1_Tile1 0x231 -#define METATILE_BattlePike_Curtain_Stage1_Tile2 0x232 -#define METATILE_BattlePike_Curtain_Stage1_Tile3 0x233 -#define METATILE_BattlePike_Curtain_Stage1_Tile4 0x239 -#define METATILE_BattlePike_Curtain_Stage1_Tile5 0x23A -#define METATILE_BattlePike_Curtain_Stage1_Tile6 0x23B -#define METATILE_BattlePike_Curtain_Stage2_Tile0 0x20A -#define METATILE_BattlePike_Curtain_Stage2_Tile1 0x211 -#define METATILE_BattlePike_Curtain_Stage2_Tile2 0x212 -#define METATILE_BattlePike_Curtain_Stage2_Tile3 0x213 -#define METATILE_BattlePike_Curtain_Stage2_Tile4 0x219 -#define METATILE_BattlePike_Curtain_Stage2_Tile5 0x21A -#define METATILE_BattlePike_Curtain_Stage2_Tile6 0x21B -#define METATILE_BattlePike_Curtain_Stage3_Tile0 0x2AB -#define METATILE_BattlePike_Curtain_Stage3_Tile1 0x2B2 -#define METATILE_BattlePike_Curtain_Stage3_Tile2 0x2B3 -#define METATILE_BattlePike_Curtain_Stage3_Tile3 0x2B4 -#define METATILE_BattlePike_Curtain_Stage3_Tile4 0x2BA -#define METATILE_BattlePike_Curtain_Stage3_Tile5 0x2BB -#define METATILE_BattlePike_Curtain_Stage3_Tile6 0x2BC +// gTileset_Lavaridge +#define METATILE_Lavaridge_AshGrass 0x207 +#define METATILE_Lavaridge_CaveEntrance_Bottom 0x25E +#define METATILE_Lavaridge_CaveEntrance_Top 0x256 +#define METATILE_Lavaridge_LavaField 0x271 +#define METATILE_Lavaridge_NormalGrass 0x206 +#define METATILE_Lavaridge_RockWall 0x274 -// gTileset_Lilycove -#define METATILE_Lilycove_Door 0x246 -#define METATILE_Lilycove_Door_Wooden 0x28E -#define METATILE_Lilycove_Door_DeptStore 0x30C -#define METATILE_Lilycove_Door_SafariZone 0x32D -#define METATILE_Lilycove_Wailmer0 0x290 -#define METATILE_Lilycove_Wailmer1 0x291 -#define METATILE_Lilycove_Wailmer2 0x2A0 -#define METATILE_Lilycove_Wailmer3 0x2A1 -#define METATILE_Lilycove_Wailmer0_Alt 0x298 -#define METATILE_Lilycove_Wailmer1_Alt 0x299 +// gTileset_LilycoveMuseum +#define METATILE_LilycoveMuseum_Painting0_Left 0x25A +#define METATILE_LilycoveMuseum_Painting0_Right 0x25B +#define METATILE_LilycoveMuseum_Painting1_Left 0x25C +#define METATILE_LilycoveMuseum_Painting1_Right 0x25D +#define METATILE_LilycoveMuseum_Painting2_Left 0x25E +#define METATILE_LilycoveMuseum_Painting2_Right 0x25F +#define METATILE_LilycoveMuseum_Painting3_Left 0x260 +#define METATILE_LilycoveMuseum_Painting3_Right 0x261 +#define METATILE_LilycoveMuseum_Painting4_Left 0x262 +#define METATILE_LilycoveMuseum_Painting4_Right 0x263 -// gTileset_Contest -#define METATILE_Contest_WallShadow 0x221 -#define METATILE_Contest_FloorShadow 0x261 -#define METATILE_Contest_CounterFlap_Top 0x2D1 -#define METATILE_Contest_CounterFlap_Bottom 0x2D9 +// gTileset_Lilycove +#define METATILE_Lilycove_Door 0x246 +#define METATILE_Lilycove_Door_DeptStore 0x30C +#define METATILE_Lilycove_Door_SafariZone 0x32D +#define METATILE_Lilycove_Door_Wooden 0x28E +#define METATILE_Lilycove_Wailmer0 0x290 +#define METATILE_Lilycove_Wailmer0_Alt 0x298 +#define METATILE_Lilycove_Wailmer1 0x291 +#define METATILE_Lilycove_Wailmer1_Alt 0x299 +#define METATILE_Lilycove_Wailmer2 0x2A0 +#define METATILE_Lilycove_Wailmer3 0x2A1 -// gTileset_BattleTent -#define METATILE_BattleTent_Door 0x26B +// gTileset_MauvilleGym +#define METATILE_MauvilleGym_FloorTile 0x21A +#define METATILE_MauvilleGym_GreenBeamH1_Off 0x230 +#define METATILE_MauvilleGym_GreenBeamH1_On 0x220 +#define METATILE_MauvilleGym_GreenBeamH2_Off 0x231 +#define METATILE_MauvilleGym_GreenBeamH2_On 0x221 +#define METATILE_MauvilleGym_GreenBeamH3_Off 0x238 +#define METATILE_MauvilleGym_GreenBeamH3_On 0x228 +#define METATILE_MauvilleGym_GreenBeamH4_Off 0x239 +#define METATILE_MauvilleGym_GreenBeamH4_On 0x229 +#define METATILE_MauvilleGym_GreenBeamV1_On 0x240 +#define METATILE_MauvilleGym_GreenBeamV2_On 0x248 +#define METATILE_MauvilleGym_PoleBottom_Off 0x243 +#define METATILE_MauvilleGym_PoleBottom_On 0x242 +#define METATILE_MauvilleGym_PoleTop_Off 0x251 +#define METATILE_MauvilleGym_PoleTop_On 0x250 +#define METATILE_MauvilleGym_PressedSwitch 0x206 +#define METATILE_MauvilleGym_RaisedSwitch 0x205 +#define METATILE_MauvilleGym_RedBeamH1_Off 0x232 +#define METATILE_MauvilleGym_RedBeamH1_On 0x222 +#define METATILE_MauvilleGym_RedBeamH2_Off 0x233 +#define METATILE_MauvilleGym_RedBeamH2_On 0x223 +#define METATILE_MauvilleGym_RedBeamH3_Off 0x23A +#define METATILE_MauvilleGym_RedBeamH3_On 0x22A +#define METATILE_MauvilleGym_RedBeamH4_Off 0x23B +#define METATILE_MauvilleGym_RedBeamH4_On 0x22B +#define METATILE_MauvilleGym_RedBeamV1_On 0x241 +#define METATILE_MauvilleGym_RedBeamV2_On 0x249 -// gTileset_LilycoveMuseum -#define METATILE_LilycoveMuseum_Painting0_Left 0x25A -#define METATILE_LilycoveMuseum_Painting0_Right 0x25B -#define METATILE_LilycoveMuseum_Painting1_Left 0x25C -#define METATILE_LilycoveMuseum_Painting1_Right 0x25D -#define METATILE_LilycoveMuseum_Painting2_Left 0x25E -#define METATILE_LilycoveMuseum_Painting2_Right 0x25F -#define METATILE_LilycoveMuseum_Painting3_Left 0x260 -#define METATILE_LilycoveMuseum_Painting3_Right 0x261 -#define METATILE_LilycoveMuseum_Painting4_Left 0x262 -#define METATILE_LilycoveMuseum_Painting4_Right 0x263 +// gTileset_Mauville +#define METATILE_Mauville_DeepSand_BottomMid 0x259 +#define METATILE_Mauville_DeepSand_Center 0x251 +#define METATILE_Mauville_Door 0x2AC +#define METATILE_Mauville_Door_BattleTent 0x3D4 +#define METATILE_Mauville_Door_CyclingRoad 0x289 +#define METATILE_Mauville_Door_Verdanturf 0x3A1 +#define METATILE_Mauville_MirageTower_Tile0 0x3D8 +#define METATILE_Mauville_MirageTower_Tile1 0x3D9 +#define METATILE_Mauville_MirageTower_Tile10 0x3E4 +#define METATILE_Mauville_MirageTower_Tile11 0x3E5 +#define METATILE_Mauville_MirageTower_Tile2 0x3DA +#define METATILE_Mauville_MirageTower_Tile3 0x3E0 +#define METATILE_Mauville_MirageTower_Tile4 0x3E1 +#define METATILE_Mauville_MirageTower_Tile5 0x3E2 +#define METATILE_Mauville_MirageTower_Tile6 0x3E8 +#define METATILE_Mauville_MirageTower_Tile7 0x3E9 +#define METATILE_Mauville_MirageTower_Tile8 0x3EA +#define METATILE_Mauville_MirageTower_Tile9 0x3F0 +#define METATILE_Mauville_MirageTower_TileA 0x3F1 +#define METATILE_Mauville_MirageTower_TileB 0x3F2 +#define METATILE_Mauville_MirageTower_TileC 0x3DB +#define METATILE_Mauville_MirageTower_TileD 0x3DC +#define METATILE_Mauville_MirageTower_TileE 0x3DD +#define METATILE_Mauville_MirageTower_TileF 0x3E3 // gTileset_MeteorFalls -#define METATILE_MeteorFalls_CaveEntrance_Top 0x246 -#define METATILE_MeteorFalls_CaveEntrance_Left 0x24D -#define METATILE_MeteorFalls_CaveEntrance_Bottom 0x24E -#define METATILE_MeteorFalls_CaveEntrance_Right 0x24F +#define METATILE_MeteorFalls_CaveEntrance_Bottom 0x24E +#define METATILE_MeteorFalls_CaveEntrance_Left 0x24D +#define METATILE_MeteorFalls_CaveEntrance_Right 0x24F +#define METATILE_MeteorFalls_CaveEntrance_Top 0x246 -// gTileset_Facility -#define METATILE_Facility_NewMauvilleDoor_Closed_Tile0 0x314 -#define METATILE_Facility_NewMauvilleDoor_Closed_Tile1 0x315 -#define METATILE_Facility_NewMauvilleDoor_Closed_Tile2 0x316 -#define METATILE_Facility_NewMauvilleDoor_Closed_Tile3 0x31C -#define METATILE_Facility_NewMauvilleDoor_Closed_Tile4 0x31D -#define METATILE_Facility_NewMauvilleDoor_Closed_Tile5 0x31E -#define METATILE_Facility_NewMauvilleDoor_Open_Tile0 0x2C3 -#define METATILE_Facility_NewMauvilleDoor_Open_Tile1 0x2C4 -#define METATILE_Facility_NewMauvilleDoor_Open_Tile2 0x2C5 -#define METATILE_Facility_NewMauvilleDoor_Open_Tile3 0x2CB -#define METATILE_Facility_NewMauvilleDoor_Open_Tile4 0x2CC -#define METATILE_Facility_NewMauvilleDoor_Open_Tile5 0x2CD -#define METATILE_Facility_DataPad 0x3E4 +// gTileset_MossdeepGameCorner +#define METATILE_MossdeepGameCorner_CounterClosed_Bottom 0x232 +#define METATILE_MossdeepGameCorner_CounterClosed_Top 0x22A +#define METATILE_MossdeepGameCorner_CounterOpen_Bottom 0x234 +#define METATILE_MossdeepGameCorner_CounterOpen_Top 0x22C -// gTileset_GenericBuilding -#define METATILE_GenericBuilding_TableEdge 0x2F1 -#define METATILE_GenericBuilding_TrickHouse_Door_Closed 0x21B -#define METATILE_GenericBuilding_TrickHouse_Stairs_Down 0x219 +// gTileset_MossdeepGym +#define METATILE_MossdeepGym_YellowArrow_Right 0x250 -// gTileset_TrickHousePuzzle -#define METATILE_TrickHousePuzzle_Stairs_Down 0x20B -#define METATILE_TrickHousePuzzle_Lever_Off 0x23E -#define METATILE_TrickHousePuzzle_Lever_On 0x23F -#define METATILE_TrickHousePuzzle_Button_Up 0x258 -#define METATILE_TrickHousePuzzle_Button_Pressed 0x259 -#define METATILE_TrickHousePuzzle_Door_Shuttered 0x26A -#define METATILE_TrickHousePuzzle_Floor_ShadowTop_Alt 0x252 -#define METATILE_TrickHousePuzzle_Floor_ShadowTop 0x255 -#define METATILE_TrickHousePuzzle_BlueDoorH_Open_Tile0 0x24B -#define METATILE_TrickHousePuzzle_BlueDoorH_Open_Tile1 0x24C -#define METATILE_TrickHousePuzzle_BlueDoorH_Open_Tile2 0x253 -#define METATILE_TrickHousePuzzle_BlueDoorH_Open_Tile3 0x254 -#define METATILE_TrickHousePuzzle_BlueDoorH_Closed_Tile0 0x23B -#define METATILE_TrickHousePuzzle_BlueDoorH_Closed_Tile1 0x23C -#define METATILE_TrickHousePuzzle_BlueDoorH_Closed_Tile2 0x243 -#define METATILE_TrickHousePuzzle_BlueDoorH_Closed_Tile3 0x244 -#define METATILE_TrickHousePuzzle_RedDoorH_Open_Tile0 0x248 -#define METATILE_TrickHousePuzzle_RedDoorH_Open_Tile1 0x249 -#define METATILE_TrickHousePuzzle_RedDoorH_Open_Tile2 0x250 -#define METATILE_TrickHousePuzzle_RedDoorH_Open_Tile3 0x251 -#define METATILE_TrickHousePuzzle_RedDoorH_Closed_Tile0 0x238 -#define METATILE_TrickHousePuzzle_RedDoorH_Closed_Tile1 0x239 -#define METATILE_TrickHousePuzzle_RedDoorH_Closed_Tile2 0x240 -#define METATILE_TrickHousePuzzle_RedDoorH_Closed_Tile3 0x241 -#define METATILE_TrickHousePuzzle_BlueDoorV_Retracted 0x24D -#define METATILE_TrickHousePuzzle_RedDoorV_Retracted 0x24A -#define METATILE_TrickHousePuzzle_RedDoorV_Open0 0x23A -#define METATILE_TrickHousePuzzle_RedDoorV_Open1 0x242 -#define METATILE_TrickHousePuzzle_BlueDoorV_Open0 0x23D -#define METATILE_TrickHousePuzzle_BlueDoorV_Open1 0x245 -#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Right 0x260 -#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Left 0x261 -#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Up 0x262 -#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Down 0x263 -#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Left_Alt 0x27B -#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Right_Alt 0x27C -#define METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right 0x298 - -// gTileset_BikeShop (also used by New Mauville) -#define METATILE_BikeShop_Barrier_Hidden_Top 0x269 -#define METATILE_BikeShop_Barrier_Hidden_Bottom 0x271 -#define METATILE_BikeShop_Floor_Shadow_Top 0x26D -#define METATILE_BikeShop_Wall_Edge_Top 0x281 -#define METATILE_BikeShop_Button_Pressed 0x24F -#define METATILE_BikeShop_Button_Green 0x22E -#define METATILE_BikeShop_Button_Blue 0x236 -#define METATILE_BikeShop_Barrier_Green_Top 0x2B6 -#define METATILE_BikeShop_Barrier_Green_TopMid 0x2BE -#define METATILE_BikeShop_Barrier_Green_BottomMid 0x2C6 -#define METATILE_BikeShop_Barrier_Green_Bottom 0x2CE -#define METATILE_BikeShop_Barrier_Blue_Top 0x2B7 -#define METATILE_BikeShop_Barrier_Blue_TopMid 0x2BF -#define METATILE_BikeShop_Barrier_Blue_BottomMid 0x2C7 -#define METATILE_BikeShop_Barrier_Blue_Bottom 0x2CF -#define METATILE_BikeShop_Generator_Off_Tile0 0x2F0 -#define METATILE_BikeShop_Generator_Off_Tile1 0x2F1 -#define METATILE_BikeShop_Generator_Off_Tile2 0x2F2 -#define METATILE_BikeShop_Generator_Off_Tile3 0x2F3 -#define METATILE_BikeShop_Generator_Off_Tile4 0x2F4 -#define METATILE_BikeShop_Generator_Off_Tile5 0x2F5 -#define METATILE_BikeShop_Generator_Off_Tile6 0x2F6 -#define METATILE_BikeShop_Generator_Off_Tile7 0x2F7 +// gTileset_Mossdeep +#define METATILE_Mossdeep_Door 0x2A1 +#define METATILE_Mossdeep_Door_SpaceCenter 0x2ED -// gTileset_TrainerHill -#define METATILE_TrainerHill_GreenFloorTile 0x307 -#define METATILE_TrainerHill_CounterDoor 0x334 -#define METATILE_TrainerHill_Door_Elevator_Lobby 0x32C -#define METATILE_TrainerHill_Door_Elevator_Roof 0x383 +// gTileset_Pacifidlog +#define METATILE_Pacifidlog_Door 0x21A +#define METATILE_Pacifidlog_FloatingLogs_HorizontalLeft 0x250 +#define METATILE_Pacifidlog_FloatingLogs_HorizontalRight 0x251 +#define METATILE_Pacifidlog_FloatingLogs_VerticalBottom 0x260 +#define METATILE_Pacifidlog_FloatingLogs_VerticalTop 0x258 +#define METATILE_Pacifidlog_HalfSubmergedLogs_HorizontalLeft 0x252 +#define METATILE_Pacifidlog_HalfSubmergedLogs_HorizontalRight 0x253 +#define METATILE_Pacifidlog_HalfSubmergedLogs_VerticalBottom 0x261 +#define METATILE_Pacifidlog_HalfSubmergedLogs_VerticalTop 0x259 +#define METATILE_Pacifidlog_SkyPillar_CrackedFloor_Hole 0x237 +#define METATILE_Pacifidlog_SkyPillar_DoorOpen_Bottom 0x2B2 +#define METATILE_Pacifidlog_SkyPillar_DoorOpen_Top 0x2AA +#define METATILE_Pacifidlog_SubmergedLogs_HorizontalLeft 0x254 +#define METATILE_Pacifidlog_SubmergedLogs_HorizontalRight 0x255 +#define METATILE_Pacifidlog_SubmergedLogs_VerticalBottom 0x262 +#define METATILE_Pacifidlog_SubmergedLogs_VerticalTop 0x25A -// gTileset_Underwater -#define METATILE_Underwater_RockWall 0x21E -#define METATILE_Underwater_FloorShadow 0x228 +// gTileset_PetalburgGym +#define METATILE_PetalburgGym_Door 0x224 +#define METATILE_PetalburgGym_RoomEntrance_Left 0x210 +#define METATILE_PetalburgGym_RoomEntrance_Right 0x211 +#define METATILE_PetalburgGym_SlidingDoor_Frame0 0x218 +#define METATILE_PetalburgGym_SlidingDoor_Frame1 0x219 +#define METATILE_PetalburgGym_SlidingDoor_Frame2 0x21A +#define METATILE_PetalburgGym_SlidingDoor_Frame3 0x21B +#define METATILE_PetalburgGym_SlidingDoor_Frame4 0x21C + +// gTileset_Petalburg +#define METATILE_Petalburg_Door_BirchsLab 0x249 +#define METATILE_Petalburg_Door_Littleroot 0x248 +#define METATILE_Petalburg_Door_Oldale 0x287 + +// gTileset_PokemonCenter +#define METATILE_PokemonCenter_CounterBarrier 0x25D +#define METATILE_PokemonCenter_Door_CableClub 0x264 +#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame0 0x280 +#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame1 0x282 +#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame2 0x284 +#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame0 0x281 +#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame1 0x283 +#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame2 0x285 +#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame0 0x288 +#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame1 0x28A +#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame2 0x28C +#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame0 0x289 +#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame1 0x28B +#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame2 0x28D +#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame0 0x2A0 +#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame1 0x2A2 +#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame2 0x2A4 +#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame0 0x2A1 +#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame1 0x2A3 +#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame2 0x2A5 +#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame0 0x2A8 +#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame1 0x2AA +#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame2 0x2AC +#define METATILE_PokemonCenter_Floor_Plain_Alt 0x2E4 +#define METATILE_PokemonCenter_Floor_ShadowTop 0x21E +#define METATILE_PokemonCenter_Floor_ShadowTop_Alt 0x2DC + +// gTileset_RSMossdeepGym +#define METATILE_RSMossdeepGym_RedArrow_Down 0x205 +#define METATILE_RSMossdeepGym_RedArrow_Left 0x20C +#define METATILE_RSMossdeepGym_RedArrow_Right 0x204 +#define METATILE_RSMossdeepGym_RedArrow_Up 0x20D +#define METATILE_RSMossdeepGym_Switch_Down 0x239 +#define METATILE_RSMossdeepGym_Switch_Up 0x238 + +// gTileset_Rustboro +#define METATILE_Rustboro_Door_Gray 0x21F +#define METATILE_Rustboro_Door_Tan 0x22F // gTileset_SecretBase -#define METATILE_SecretBase_Wall_TopMid 0x202 -#define METATILE_SecretBase_Ground 0x20A -#define METATILE_SecretBase_PC 0x220 -#define METATILE_SecretBase_RegisterPC 0x221 -#define METATILE_SecretBase_PC_On 0x224 -#define METATILE_SecretBase_RedBrick_Top 0x225 -#define METATILE_SecretBase_RedBrick_Bottom 0x22D -#define METATILE_SecretBase_YellowBrick_Top 0x226 -#define METATILE_SecretBase_YellowBrick_Bottom 0x22E -#define METATILE_SecretBase_BlueBrick_Top 0x227 +#define METATILE_SecretBase_AttractMat_BottomLeft 0x313 +#define METATILE_SecretBase_AttractMat_BottomMid 0x314 +#define METATILE_SecretBase_AttractMat_BottomRight 0x315 +#define METATILE_SecretBase_AttractMat_Center 0x30C +#define METATILE_SecretBase_AttractMat_MidLeft 0x30B +#define METATILE_SecretBase_AttractMat_MidRight 0x30D +#define METATILE_SecretBase_AttractMat_TopLeft 0x303 +#define METATILE_SecretBase_AttractMat_TopMid 0x304 +#define METATILE_SecretBase_AttractMat_TopRight 0x305 +#define METATILE_SecretBase_BallPoster 0x330 +#define METATILE_SecretBase_BigPlant_BaseLeft1 0x2EC +#define METATILE_SecretBase_BigPlant_BaseLeft2 0x2EE +#define METATILE_SecretBase_BigPlant_BaseRight1 0x2ED +#define METATILE_SecretBase_BigPlant_BaseRight2 0x2EF +#define METATILE_SecretBase_BigPlant_TopLeft 0x2E4 +#define METATILE_SecretBase_BigPlant_TopRight 0x2E6 +#define METATILE_SecretBase_BlueBalloon 0x33C #define METATILE_SecretBase_BlueBrick_Bottom 0x22F -#define METATILE_SecretBase_MudBall 0x228 -#define METATILE_SecretBase_Fence_Horizontal 0x22C -#define METATILE_SecretBase_Fence_Vertical 0x233 -#define METATILE_SecretBase_SolidBoard_Top 0x234 -#define METATILE_SecretBase_SolidBoard_Bottom 0x23C -#define METATILE_SecretBase_RedTent_TopLeft 0x230 -#define METATILE_SecretBase_RedTent_TopMid 0x231 -#define METATILE_SecretBase_RedTent_TopRight 0x232 -#define METATILE_SecretBase_RedTent_MidLeft 0x238 -#define METATILE_SecretBase_RedTent_DoorTop 0x239 -#define METATILE_SecretBase_RedTent_MidRight 0x23A -#define METATILE_SecretBase_RedTent_BottomLeft 0x240 -#define METATILE_SecretBase_RedTent_Door 0x241 -#define METATILE_SecretBase_RedTent_BottomRight 0x23B +#define METATILE_SecretBase_BlueBrick_Top 0x227 +#define METATILE_SecretBase_BluePoster 0x333 +#define METATILE_SecretBase_BlueTent_BottomLeft 0x258 +#define METATILE_SecretBase_BlueTent_BottomRight 0x269 +#define METATILE_SecretBase_BlueTent_Door 0x259 +#define METATILE_SecretBase_BlueTent_DoorTop 0x251 +#define METATILE_SecretBase_BlueTent_MidLeft 0x250 +#define METATILE_SecretBase_BlueTent_MidRight 0x270 #define METATILE_SecretBase_BlueTent_TopLeft 0x248 #define METATILE_SecretBase_BlueTent_TopMid 0x249 #define METATILE_SecretBase_BlueTent_TopRight 0x268 -#define METATILE_SecretBase_BlueTent_MidLeft 0x250 -#define METATILE_SecretBase_BlueTent_DoorTop 0x251 -#define METATILE_SecretBase_BlueTent_MidRight 0x270 -#define METATILE_SecretBase_BlueTent_BottomLeft 0x258 -#define METATILE_SecretBase_BlueTent_Door 0x259 -#define METATILE_SecretBase_BlueTent_BottomRight 0x269 -#define METATILE_SecretBase_Slide_TopLeft 0x235 -#define METATILE_SecretBase_Slide_TopRight 0x236 -#define METATILE_SecretBase_Slide_StairLanding 0x23D -#define METATILE_SecretBase_Slide_SlideTop 0x23E -#define METATILE_SecretBase_Slide_Stairs 0x263 -#define METATILE_SecretBase_Slide_SlideBottom 0x264 -#define METATILE_SecretBase_Slide_MatLeft 0x26F -#define METATILE_SecretBase_Slide_MatRight 0x277 -#define METATILE_SecretBase_Stand_CornerLeft 0x26A -#define METATILE_SecretBase_Stand_MidLeft 0x26B -#define METATILE_SecretBase_Stand_MidRight 0x26C -#define METATILE_SecretBase_Stand_CornerRight 0x26D -#define METATILE_SecretBase_Stand_StairsLeft 0x272 -#define METATILE_SecretBase_Stand_BaseLeft 0x273 -#define METATILE_SecretBase_Stand_BaseRight 0x274 -#define METATILE_SecretBase_Stand_StairsRight 0x275 -#define METATILE_SecretBase_BreakableDoor_TopClosed 0x237 #define METATILE_SecretBase_BreakableDoor_BottomClosed 0x23F -#define METATILE_SecretBase_BreakableDoor_TopOpen 0x26E #define METATILE_SecretBase_BreakableDoor_BottomOpen 0x276 -#define METATILE_SecretBase_GlitterMat 0x260 -#define METATILE_SecretBase_JumpMat 0x261 -#define METATILE_SecretBase_SpinMat 0x262 -#define METATILE_SecretBase_NoteMat_C_Low 0x278 -#define METATILE_SecretBase_NoteMat_D 0x279 -#define METATILE_SecretBase_NoteMat_E 0x27A -#define METATILE_SecretBase_NoteMat_F 0x27B -#define METATILE_SecretBase_NoteMat_G 0x27C -#define METATILE_SecretBase_NoteMat_A 0x27D -#define METATILE_SecretBase_NoteMat_B 0x27E -#define METATILE_SecretBase_NoteMat_C_High 0x2B3 -#define METATILE_SecretBase_Tire_TopLeft 0x280 -#define METATILE_SecretBase_Tire_TopRight 0x281 -#define METATILE_SecretBase_Tire_BottomLeft 0x288 -#define METATILE_SecretBase_Tire_BottomRight 0x289 -#define METATILE_SecretBase_GlassOrnament_Top 0x282 -#define METATILE_SecretBase_GlassOrnament_Base1 0x28A -#define METATILE_SecretBase_GlassOrnament_TopWall 0x283 -#define METATILE_SecretBase_GlassOrnament_Base2 0x28B -#define METATILE_SecretBase_SandOrnament_BrokenTop 0x284 -#define METATILE_SecretBase_SandOrnament_BrokenBase 0x28C -#define METATILE_SecretBase_SandOrnament_Top 0x285 -#define METATILE_SecretBase_SandOrnament_Base1 0x28D -#define METATILE_SecretBase_SandOrnament_TopWall 0x286 -#define METATILE_SecretBase_SandOrnament_Base2 0x28E -#define METATILE_SecretBase_SmallDesk 0x287 -#define METATILE_SecretBase_PokemonDesk 0x28F -#define METATILE_SecretBase_HeavyDesk_TopLeft 0x290 -#define METATILE_SecretBase_HeavyDesk_TopMid 0x291 -#define METATILE_SecretBase_HeavyDesk_TopRight 0x292 -#define METATILE_SecretBase_HeavyDesk_BottomLeft 0x298 -#define METATILE_SecretBase_HeavyDesk_BottomMid 0x299 -#define METATILE_SecretBase_HeavyDesk_BottomRight 0x29A -#define METATILE_SecretBase_RaggedDesk_TopLeft 0x293 -#define METATILE_SecretBase_RaggedDesk_TopMid 0x294 -#define METATILE_SecretBase_RaggedDesk_TopRight 0x295 -#define METATILE_SecretBase_RaggedDesk_BottomLeft 0x29B -#define METATILE_SecretBase_RaggedDesk_BottomMid 0x29C -#define METATILE_SecretBase_RaggedDesk_BottomRight 0x29D -#define METATILE_SecretBase_ComfortDesk_TopLeft 0x296 -#define METATILE_SecretBase_ComfortDesk_TopMid 0x297 -#define METATILE_SecretBase_ComfortDesk_TopRight 0x2A3 -#define METATILE_SecretBase_ComfortDesk_BottomLeft 0x29E -#define METATILE_SecretBase_ComfortDesk_BottomMid 0x29F -#define METATILE_SecretBase_ComfortDesk_BottomRight 0x2AB -#define METATILE_SecretBase_BrickDesk_TopLeft 0x2A0 -#define METATILE_SecretBase_BrickDesk_TopMid 0x2A1 -#define METATILE_SecretBase_BrickDesk_TopRight 0x2A2 -#define METATILE_SecretBase_BrickDesk_MidLeft 0x2A8 -#define METATILE_SecretBase_BrickDesk_Center 0x2A9 -#define METATILE_SecretBase_BrickDesk_MidRight 0x2AA +#define METATILE_SecretBase_BreakableDoor_TopClosed 0x237 +#define METATILE_SecretBase_BreakableDoor_TopOpen 0x26E +#define METATILE_SecretBase_BrickChair 0x2C8 #define METATILE_SecretBase_BrickDesk_BottomLeft 0x2B0 #define METATILE_SecretBase_BrickDesk_BottomMid 0x2B1 #define METATILE_SecretBase_BrickDesk_BottomRight 0x2B2 -#define METATILE_SecretBase_CampDesk_TopLeft 0x2A4 -#define METATILE_SecretBase_CampDesk_TopMid 0x2A5 -#define METATILE_SecretBase_CampDesk_TopRight 0x2A6 -#define METATILE_SecretBase_CampDesk_MidLeft 0x2AC -#define METATILE_SecretBase_CampDesk_Center 0x2AD -#define METATILE_SecretBase_CampDesk_MidRight 0x2AE +#define METATILE_SecretBase_BrickDesk_Center 0x2A9 +#define METATILE_SecretBase_BrickDesk_MidLeft 0x2A8 +#define METATILE_SecretBase_BrickDesk_MidRight 0x2AA +#define METATILE_SecretBase_BrickDesk_TopLeft 0x2A0 +#define METATILE_SecretBase_BrickDesk_TopMid 0x2A1 +#define METATILE_SecretBase_BrickDesk_TopRight 0x2A2 +#define METATILE_SecretBase_CampChair 0x2C9 #define METATILE_SecretBase_CampDesk_BottomLeft 0x2B4 #define METATILE_SecretBase_CampDesk_BottomMid 0x2B5 #define METATILE_SecretBase_CampDesk_BottomRight 0x2B6 -#define METATILE_SecretBase_HardDesk_TopLeft 0x2A7 -#define METATILE_SecretBase_HardDesk_TopMid 0x2BB -#define METATILE_SecretBase_HardDesk_TopRight 0x2BC -#define METATILE_SecretBase_HardDesk_MidLeft 0x2AF -#define METATILE_SecretBase_HardDesk_Center 0x2C3 -#define METATILE_SecretBase_HardDesk_MidRight 0x2C4 -#define METATILE_SecretBase_HardDesk_BottomLeft 0x2B7 -#define METATILE_SecretBase_HardDesk_BottomMid 0x2CB -#define METATILE_SecretBase_HardDesk_BottomRight 0x2CC -#define METATILE_SecretBase_PrettyDesk_TopLeft 0x2BD -#define METATILE_SecretBase_PrettyDesk_TopMid 0x2BE -#define METATILE_SecretBase_PrettyDesk_TopRight 0x2BF -#define METATILE_SecretBase_PrettyDesk_MidLeft 0x2C5 -#define METATILE_SecretBase_PrettyDesk_Center 0x2C6 -#define METATILE_SecretBase_PrettyDesk_MidRight 0x2C7 -#define METATILE_SecretBase_PrettyDesk_BottomLeft 0x2CD -#define METATILE_SecretBase_PrettyDesk_BottomMid 0x2CE -#define METATILE_SecretBase_PrettyDesk_BottomRight 0x2CF -#define METATILE_SecretBase_SmallChair 0x2B8 -#define METATILE_SecretBase_PokemonChair 0x2B9 -#define METATILE_SecretBase_HeavyChair 0x2BA -#define METATILE_SecretBase_PrettyChair 0x2C0 -#define METATILE_SecretBase_ComfortChair 0x2C1 -#define METATILE_SecretBase_RaggedChair 0x2C2 -#define METATILE_SecretBase_BrickChair 0x2C8 -#define METATILE_SecretBase_CampChair 0x2C9 -#define METATILE_SecretBase_HardChair 0x2CA -#define METATILE_SecretBase_RedPlant_Top 0x2D0 -#define METATILE_SecretBase_RedPlant_Base1 0x2D8 -#define METATILE_SecretBase_RedPlant_TopWall 0x2D1 -#define METATILE_SecretBase_RedPlant_Base2 0x2D9 -#define METATILE_SecretBase_TropicalPlant_Top 0x2D2 -#define METATILE_SecretBase_TropicalPlant_Base1 0x2DA -#define METATILE_SecretBase_TropicalPlant_TopWall 0x2D3 -#define METATILE_SecretBase_TropicalPlant_Base2 0x2DB -#define METATILE_SecretBase_PrettyFlowers_Top 0x2D4 -#define METATILE_SecretBase_PrettyFlowers_Base1 0x2DC -#define METATILE_SecretBase_PrettyFlowers_TopWall 0x2D5 -#define METATILE_SecretBase_PrettyFlowers_Base2 0x2DD -#define METATILE_SecretBase_ColorfulPlant_TopLeft 0x2E0 -#define METATILE_SecretBase_ColorfulPlant_TopRight 0x2E2 +#define METATILE_SecretBase_CampDesk_Center 0x2AD +#define METATILE_SecretBase_CampDesk_MidLeft 0x2AC +#define METATILE_SecretBase_CampDesk_MidRight 0x2AE +#define METATILE_SecretBase_CampDesk_TopLeft 0x2A4 +#define METATILE_SecretBase_CampDesk_TopMid 0x2A5 +#define METATILE_SecretBase_CampDesk_TopRight 0x2A6 #define METATILE_SecretBase_ColorfulPlant_BaseLeft1 0x2E8 +#define METATILE_SecretBase_ColorfulPlant_BaseLeft2 0x2EA #define METATILE_SecretBase_ColorfulPlant_BaseRight1 0x2E9 +#define METATILE_SecretBase_ColorfulPlant_BaseRight2 0x2EB +#define METATILE_SecretBase_ColorfulPlant_TopLeft 0x2E0 #define METATILE_SecretBase_ColorfulPlant_TopLeftWall 0x2E1 +#define METATILE_SecretBase_ColorfulPlant_TopRight 0x2E2 #define METATILE_SecretBase_ColorfulPlant_TopRightWall 0x2E3 -#define METATILE_SecretBase_ColorfulPlant_BaseLeft2 0x2EA -#define METATILE_SecretBase_ColorfulPlant_BaseRight2 0x2EB -#define METATILE_SecretBase_BigPlant_TopLeft 0x2E4 -#define METATILE_SecretBase_BigPlant_TopRight 0x2E6 -#define METATILE_SecretBase_BigPlant_BaseLeft1 0x2EC -#define METATILE_SecretBase_BigPlant_BaseRight1 0x2ED -#define METATILE_SecretBase_BigPlant_BaseLeft2 0x2EE -#define METATILE_SecretBase_BigPlant_BaseRight2 0x2EF -#define METATILE_SecretBase_GorgeousPlant_TopLeft 0x2F0 -#define METATILE_SecretBase_GorgeousPlant_TopRight 0x2F2 +#define METATILE_SecretBase_ComfortChair 0x2C1 +#define METATILE_SecretBase_ComfortDesk_BottomLeft 0x29E +#define METATILE_SecretBase_ComfortDesk_BottomMid 0x29F +#define METATILE_SecretBase_ComfortDesk_BottomRight 0x2AB +#define METATILE_SecretBase_ComfortDesk_TopLeft 0x296 +#define METATILE_SecretBase_ComfortDesk_TopMid 0x297 +#define METATILE_SecretBase_ComfortDesk_TopRight 0x2A3 +#define METATILE_SecretBase_CutePoster 0x334 +#define METATILE_SecretBase_CuteTV 0x2F6 +#define METATILE_SecretBase_Fence_Horizontal 0x22C +#define METATILE_SecretBase_Fence_Vertical 0x233 +#define METATILE_SecretBase_FireBlastMat_BottomLeft 0x265 +#define METATILE_SecretBase_FireBlastMat_BottomMid 0x266 +#define METATILE_SecretBase_FireBlastMat_BottomRight 0x267 +#define METATILE_SecretBase_FireBlastMat_Center 0x25E +#define METATILE_SecretBase_FireBlastMat_MidLeft 0x25D +#define METATILE_SecretBase_FireBlastMat_MidRight 0x25F +#define METATILE_SecretBase_FireBlastMat_TopLeft 0x25A +#define METATILE_SecretBase_FireBlastMat_TopMid 0x25B +#define METATILE_SecretBase_FireBlastMat_TopRight 0x25C +#define METATILE_SecretBase_FissureMat_BottomLeft 0x316 +#define METATILE_SecretBase_FissureMat_BottomMid 0x317 +#define METATILE_SecretBase_FissureMat_BottomRight 0x328 +#define METATILE_SecretBase_FissureMat_Center 0x30F +#define METATILE_SecretBase_FissureMat_MidLeft 0x30E +#define METATILE_SecretBase_FissureMat_MidRight 0x320 +#define METATILE_SecretBase_FissureMat_TopLeft 0x306 +#define METATILE_SecretBase_FissureMat_TopMid 0x307 +#define METATILE_SecretBase_FissureMat_TopRight 0x318 +#define METATILE_SecretBase_GlassOrnament_Base1 0x28A +#define METATILE_SecretBase_GlassOrnament_Base2 0x28B +#define METATILE_SecretBase_GlassOrnament_Top 0x282 +#define METATILE_SecretBase_GlassOrnament_TopWall 0x283 +#define METATILE_SecretBase_GlitterMat 0x260 +#define METATILE_SecretBase_GoldShield_Base1 0x336 +#define METATILE_SecretBase_GoldShield_Base2 0x337 +#define METATILE_SecretBase_GoldShield_Top 0x32E +#define METATILE_SecretBase_GoldShield_TopWall 0x32F #define METATILE_SecretBase_GorgeousPlant_BaseLeft1 0x2F8 +#define METATILE_SecretBase_GorgeousPlant_BaseLeft2 0x2FA #define METATILE_SecretBase_GorgeousPlant_BaseRight1 0x2F9 +#define METATILE_SecretBase_GorgeousPlant_BaseRight2 0x2FB +#define METATILE_SecretBase_GorgeousPlant_TopLeft 0x2F0 #define METATILE_SecretBase_GorgeousPlant_TopLeftWall 0x2F1 +#define METATILE_SecretBase_GorgeousPlant_TopRight 0x2F2 #define METATILE_SecretBase_GorgeousPlant_TopRightWall 0x2F3 -#define METATILE_SecretBase_GorgeousPlant_BaseLeft2 0x2FA -#define METATILE_SecretBase_GorgeousPlant_BaseRight2 0x2FB -#define METATILE_SecretBase_TV 0x2F4 -#define METATILE_SecretBase_RoundTV 0x2F5 -#define METATILE_SecretBase_CuteTV 0x2F6 -#define METATILE_SecretBase_PikaPoster_Left 0x31C -#define METATILE_SecretBase_PikaPoster_Right 0x31D +#define METATILE_SecretBase_GreenPoster 0x331 +#define METATILE_SecretBase_Ground 0x20A +#define METATILE_SecretBase_HardChair 0x2CA +#define METATILE_SecretBase_HardDesk_BottomLeft 0x2B7 +#define METATILE_SecretBase_HardDesk_BottomMid 0x2CB +#define METATILE_SecretBase_HardDesk_BottomRight 0x2CC +#define METATILE_SecretBase_HardDesk_Center 0x2C3 +#define METATILE_SecretBase_HardDesk_MidLeft 0x2AF +#define METATILE_SecretBase_HardDesk_MidRight 0x2C4 +#define METATILE_SecretBase_HardDesk_TopLeft 0x2A7 +#define METATILE_SecretBase_HardDesk_TopMid 0x2BB +#define METATILE_SecretBase_HardDesk_TopRight 0x2BC +#define METATILE_SecretBase_HeavyChair 0x2BA +#define METATILE_SecretBase_HeavyDesk_BottomLeft 0x298 +#define METATILE_SecretBase_HeavyDesk_BottomMid 0x299 +#define METATILE_SecretBase_HeavyDesk_BottomRight 0x29A +#define METATILE_SecretBase_HeavyDesk_TopLeft 0x290 +#define METATILE_SecretBase_HeavyDesk_TopMid 0x291 +#define METATILE_SecretBase_HeavyDesk_TopRight 0x292 +#define METATILE_SecretBase_JumpMat 0x261 +#define METATILE_SecretBase_KissPoster_Left 0x32C +#define METATILE_SecretBase_KissPoster_Right 0x32D #define METATILE_SecretBase_LongPoster_Left 0x31E #define METATILE_SecretBase_LongPoster_Right 0x31F +#define METATILE_SecretBase_MudBall 0x228 +#define METATILE_SecretBase_NoteMat_A 0x27D +#define METATILE_SecretBase_NoteMat_B 0x27E +#define METATILE_SecretBase_NoteMat_C_High 0x2B3 +#define METATILE_SecretBase_NoteMat_C_Low 0x278 +#define METATILE_SecretBase_NoteMat_D 0x279 +#define METATILE_SecretBase_NoteMat_E 0x27A +#define METATILE_SecretBase_NoteMat_F 0x27B +#define METATILE_SecretBase_NoteMat_G 0x27C +#define METATILE_SecretBase_PC 0x220 +#define METATILE_SecretBase_PC_On 0x224 +#define METATILE_SecretBase_PikaPoster_Left 0x31C +#define METATILE_SecretBase_PikaPoster_Right 0x31D +#define METATILE_SecretBase_PokemonChair 0x2B9 +#define METATILE_SecretBase_PokemonDesk 0x28F +#define METATILE_SecretBase_PowderSnowMat_BottomLeft 0x310 +#define METATILE_SecretBase_PowderSnowMat_BottomMid 0x311 +#define METATILE_SecretBase_PowderSnowMat_BottomRight 0x312 +#define METATILE_SecretBase_PowderSnowMat_Center 0x309 +#define METATILE_SecretBase_PowderSnowMat_MidLeft 0x308 +#define METATILE_SecretBase_PowderSnowMat_MidRight 0x30A +#define METATILE_SecretBase_PowderSnowMat_TopLeft 0x300 +#define METATILE_SecretBase_PowderSnowMat_TopMid 0x301 +#define METATILE_SecretBase_PowderSnowMat_TopRight 0x302 +#define METATILE_SecretBase_PrettyChair 0x2C0 +#define METATILE_SecretBase_PrettyDesk_BottomLeft 0x2CD +#define METATILE_SecretBase_PrettyDesk_BottomMid 0x2CE +#define METATILE_SecretBase_PrettyDesk_BottomRight 0x2CF +#define METATILE_SecretBase_PrettyDesk_Center 0x2C6 +#define METATILE_SecretBase_PrettyDesk_MidLeft 0x2C5 +#define METATILE_SecretBase_PrettyDesk_MidRight 0x2C7 +#define METATILE_SecretBase_PrettyDesk_TopLeft 0x2BD +#define METATILE_SecretBase_PrettyDesk_TopMid 0x2BE +#define METATILE_SecretBase_PrettyDesk_TopRight 0x2BF +#define METATILE_SecretBase_PrettyFlowers_Base1 0x2DC +#define METATILE_SecretBase_PrettyFlowers_Base2 0x2DD +#define METATILE_SecretBase_PrettyFlowers_Top 0x2D4 +#define METATILE_SecretBase_PrettyFlowers_TopWall 0x2D5 +#define METATILE_SecretBase_RaggedChair 0x2C2 +#define METATILE_SecretBase_RaggedDesk_BottomLeft 0x29B +#define METATILE_SecretBase_RaggedDesk_BottomMid 0x29C +#define METATILE_SecretBase_RaggedDesk_BottomRight 0x29D +#define METATILE_SecretBase_RaggedDesk_TopLeft 0x293 +#define METATILE_SecretBase_RaggedDesk_TopMid 0x294 +#define METATILE_SecretBase_RaggedDesk_TopRight 0x295 +#define METATILE_SecretBase_RedBalloon 0x338 +#define METATILE_SecretBase_RedBrick_Bottom 0x22D +#define METATILE_SecretBase_RedBrick_Top 0x225 +#define METATILE_SecretBase_RedPlant_Base1 0x2D8 +#define METATILE_SecretBase_RedPlant_Base2 0x2D9 +#define METATILE_SecretBase_RedPlant_Top 0x2D0 +#define METATILE_SecretBase_RedPlant_TopWall 0x2D1 +#define METATILE_SecretBase_RedPoster 0x332 +#define METATILE_SecretBase_RedTent_BottomLeft 0x240 +#define METATILE_SecretBase_RedTent_BottomRight 0x23B +#define METATILE_SecretBase_RedTent_Door 0x241 +#define METATILE_SecretBase_RedTent_DoorTop 0x239 +#define METATILE_SecretBase_RedTent_MidLeft 0x238 +#define METATILE_SecretBase_RedTent_MidRight 0x23A +#define METATILE_SecretBase_RedTent_TopLeft 0x230 +#define METATILE_SecretBase_RedTent_TopMid 0x231 +#define METATILE_SecretBase_RedTent_TopRight 0x232 +#define METATILE_SecretBase_RegisterPC 0x221 +#define METATILE_SecretBase_RoundTV 0x2F5 +#define METATILE_SecretBase_SandOrnament_Base1 0x28D +#define METATILE_SecretBase_SandOrnament_Base2 0x28E +#define METATILE_SecretBase_SandOrnament_BrokenBase 0x28C +#define METATILE_SecretBase_SandOrnament_BrokenTop 0x284 +#define METATILE_SecretBase_SandOrnament_Top 0x285 +#define METATILE_SecretBase_SandOrnament_TopWall 0x286 #define METATILE_SecretBase_SeaPoster_Left 0x324 #define METATILE_SecretBase_SeaPoster_Right 0x325 -#define METATILE_SecretBase_SkyPoster_Left 0x326 -#define METATILE_SecretBase_SkyPoster_Right 0x327 -#define METATILE_SecretBase_KissPoster_Left 0x32C -#define METATILE_SecretBase_KissPoster_Right 0x32D -#define METATILE_SecretBase_BallPoster 0x330 -#define METATILE_SecretBase_GreenPoster 0x331 -#define METATILE_SecretBase_RedPoster 0x332 -#define METATILE_SecretBase_BluePoster 0x333 -#define METATILE_SecretBase_CutePoster 0x334 -#define METATILE_SecretBase_SilverShield_Top 0x2D6 #define METATILE_SecretBase_SilverShield_Base1 0x2DE -#define METATILE_SecretBase_SilverShield_TopWall 0x2D7 #define METATILE_SecretBase_SilverShield_Base2 0x2DF -#define METATILE_SecretBase_GoldShield_Top 0x32E -#define METATILE_SecretBase_GoldShield_Base1 0x336 -#define METATILE_SecretBase_GoldShield_TopWall 0x32F -#define METATILE_SecretBase_GoldShield_Base2 0x337 -#define METATILE_SecretBase_RedBalloon 0x338 -#define METATILE_SecretBase_BlueBalloon 0x33C -#define METATILE_SecretBase_YellowBalloon 0x340 -#define METATILE_SecretBase_SurfMat_TopLeft 0x242 -#define METATILE_SecretBase_SurfMat_TopMid 0x243 -#define METATILE_SecretBase_SurfMat_TopRight 0x244 -#define METATILE_SecretBase_SurfMat_MidLeft 0x24A -#define METATILE_SecretBase_SurfMat_Center 0x24B -#define METATILE_SecretBase_SurfMat_MidRight 0x24C +#define METATILE_SecretBase_SilverShield_Top 0x2D6 +#define METATILE_SecretBase_SilverShield_TopWall 0x2D7 +#define METATILE_SecretBase_SkyPoster_Left 0x326 +#define METATILE_SecretBase_SkyPoster_Right 0x327 +#define METATILE_SecretBase_Slide_MatLeft 0x26F +#define METATILE_SecretBase_Slide_MatRight 0x277 +#define METATILE_SecretBase_Slide_SlideBottom 0x264 +#define METATILE_SecretBase_Slide_SlideTop 0x23E +#define METATILE_SecretBase_Slide_StairLanding 0x23D +#define METATILE_SecretBase_Slide_Stairs 0x263 +#define METATILE_SecretBase_Slide_TopLeft 0x235 +#define METATILE_SecretBase_Slide_TopRight 0x236 +#define METATILE_SecretBase_SmallChair 0x2B8 +#define METATILE_SecretBase_SmallDesk 0x287 +#define METATILE_SecretBase_SolidBoard_Bottom 0x23C +#define METATILE_SecretBase_SolidBoard_Top 0x234 +#define METATILE_SecretBase_SpikesMat_BottomLeft 0x329 +#define METATILE_SecretBase_SpikesMat_BottomMid 0x32A +#define METATILE_SecretBase_SpikesMat_BottomRight 0x32B +#define METATILE_SecretBase_SpikesMat_Center 0x322 +#define METATILE_SecretBase_SpikesMat_MidLeft 0x321 +#define METATILE_SecretBase_SpikesMat_MidRight 0x323 +#define METATILE_SecretBase_SpikesMat_TopLeft 0x319 +#define METATILE_SecretBase_SpikesMat_TopMid 0x31A +#define METATILE_SecretBase_SpikesMat_TopRight 0x31B +#define METATILE_SecretBase_SpinMat 0x262 +#define METATILE_SecretBase_Stand_BaseLeft 0x273 +#define METATILE_SecretBase_Stand_BaseRight 0x274 +#define METATILE_SecretBase_Stand_CornerLeft 0x26A +#define METATILE_SecretBase_Stand_CornerRight 0x26D +#define METATILE_SecretBase_Stand_MidLeft 0x26B +#define METATILE_SecretBase_Stand_MidRight 0x26C +#define METATILE_SecretBase_Stand_StairsLeft 0x272 +#define METATILE_SecretBase_Stand_StairsRight 0x275 #define METATILE_SecretBase_SurfMat_BottomLeft 0x252 #define METATILE_SecretBase_SurfMat_BottomMid 0x253 #define METATILE_SecretBase_SurfMat_BottomRight 0x254 -#define METATILE_SecretBase_ThunderMat_TopLeft 0x245 -#define METATILE_SecretBase_ThunderMat_TopMid 0x246 -#define METATILE_SecretBase_ThunderMat_TopRight 0x247 -#define METATILE_SecretBase_ThunderMat_MidLeft 0x24D -#define METATILE_SecretBase_ThunderMat_Center 0x24E -#define METATILE_SecretBase_ThunderMat_MidRight 0x24F +#define METATILE_SecretBase_SurfMat_Center 0x24B +#define METATILE_SecretBase_SurfMat_MidLeft 0x24A +#define METATILE_SecretBase_SurfMat_MidRight 0x24C +#define METATILE_SecretBase_SurfMat_TopLeft 0x242 +#define METATILE_SecretBase_SurfMat_TopMid 0x243 +#define METATILE_SecretBase_SurfMat_TopRight 0x244 +#define METATILE_SecretBase_TV 0x2F4 #define METATILE_SecretBase_ThunderMat_BottomLeft 0x255 #define METATILE_SecretBase_ThunderMat_BottomMid 0x256 #define METATILE_SecretBase_ThunderMat_BottomRight 0x257 -#define METATILE_SecretBase_FireBlastMat_TopLeft 0x25A -#define METATILE_SecretBase_FireBlastMat_TopMid 0x25B -#define METATILE_SecretBase_FireBlastMat_TopRight 0x25C -#define METATILE_SecretBase_FireBlastMat_MidLeft 0x25D -#define METATILE_SecretBase_FireBlastMat_Center 0x25E -#define METATILE_SecretBase_FireBlastMat_MidRight 0x25F -#define METATILE_SecretBase_FireBlastMat_BottomLeft 0x265 -#define METATILE_SecretBase_FireBlastMat_BottomMid 0x266 -#define METATILE_SecretBase_FireBlastMat_BottomRight 0x267 -#define METATILE_SecretBase_PowderSnowMat_TopLeft 0x300 -#define METATILE_SecretBase_PowderSnowMat_TopMid 0x301 -#define METATILE_SecretBase_PowderSnowMat_TopRight 0x302 -#define METATILE_SecretBase_PowderSnowMat_MidLeft 0x308 -#define METATILE_SecretBase_PowderSnowMat_Center 0x309 -#define METATILE_SecretBase_PowderSnowMat_MidRight 0x30A -#define METATILE_SecretBase_PowderSnowMat_BottomLeft 0x310 -#define METATILE_SecretBase_PowderSnowMat_BottomMid 0x311 -#define METATILE_SecretBase_PowderSnowMat_BottomRight 0x312 -#define METATILE_SecretBase_AttractMat_TopLeft 0x303 -#define METATILE_SecretBase_AttractMat_TopMid 0x304 -#define METATILE_SecretBase_AttractMat_TopRight 0x305 -#define METATILE_SecretBase_AttractMat_MidLeft 0x30B -#define METATILE_SecretBase_AttractMat_Center 0x30C -#define METATILE_SecretBase_AttractMat_MidRight 0x30D -#define METATILE_SecretBase_AttractMat_BottomLeft 0x313 -#define METATILE_SecretBase_AttractMat_BottomMid 0x314 -#define METATILE_SecretBase_AttractMat_BottomRight 0x315 -#define METATILE_SecretBase_FissureMat_TopLeft 0x306 -#define METATILE_SecretBase_FissureMat_TopMid 0x307 -#define METATILE_SecretBase_FissureMat_TopRight 0x318 -#define METATILE_SecretBase_FissureMat_MidLeft 0x30E -#define METATILE_SecretBase_FissureMat_Center 0x30F -#define METATILE_SecretBase_FissureMat_MidRight 0x320 -#define METATILE_SecretBase_FissureMat_BottomLeft 0x316 -#define METATILE_SecretBase_FissureMat_BottomMid 0x317 -#define METATILE_SecretBase_FissureMat_BottomRight 0x328 -#define METATILE_SecretBase_SpikesMat_TopLeft 0x319 -#define METATILE_SecretBase_SpikesMat_TopMid 0x31A -#define METATILE_SecretBase_SpikesMat_TopRight 0x31B -#define METATILE_SecretBase_SpikesMat_MidLeft 0x321 -#define METATILE_SecretBase_SpikesMat_Center 0x322 -#define METATILE_SecretBase_SpikesMat_MidRight 0x323 -#define METATILE_SecretBase_SpikesMat_BottomLeft 0x329 -#define METATILE_SecretBase_SpikesMat_BottomMid 0x32A -#define METATILE_SecretBase_SpikesMat_BottomRight 0x32B +#define METATILE_SecretBase_ThunderMat_Center 0x24E +#define METATILE_SecretBase_ThunderMat_MidLeft 0x24D +#define METATILE_SecretBase_ThunderMat_MidRight 0x24F +#define METATILE_SecretBase_ThunderMat_TopLeft 0x245 +#define METATILE_SecretBase_ThunderMat_TopMid 0x246 +#define METATILE_SecretBase_ThunderMat_TopRight 0x247 +#define METATILE_SecretBase_Tire_BottomLeft 0x288 +#define METATILE_SecretBase_Tire_BottomRight 0x289 +#define METATILE_SecretBase_Tire_TopLeft 0x280 +#define METATILE_SecretBase_Tire_TopRight 0x281 +#define METATILE_SecretBase_TropicalPlant_Base1 0x2DA +#define METATILE_SecretBase_TropicalPlant_Base2 0x2DB +#define METATILE_SecretBase_TropicalPlant_Top 0x2D2 +#define METATILE_SecretBase_TropicalPlant_TopWall 0x2D3 +#define METATILE_SecretBase_Wall_TopMid 0x202 +#define METATILE_SecretBase_YellowBalloon 0x340 +#define METATILE_SecretBase_YellowBrick_Bottom 0x22E +#define METATILE_SecretBase_YellowBrick_Top 0x226 -// gTileset_BattlePyramid -#define METATILE_BattlePyramid_Floor 0x28D -#define METATILE_BattlePyramid_Exit 0x28E +// gTileset_Shop +#define METATILE_Shop_Door_Elevator 0x285 +#define METATILE_Shop_Laptop1_Flash 0x258 +#define METATILE_Shop_Laptop1_Normal 0x29D +#define METATILE_Shop_Laptop2_Flash 0x260 +#define METATILE_Shop_Laptop2_Normal 0x2A5 + +// gTileset_Slateport +#define METATILE_Slateport_Door 0x2DC +#define METATILE_Slateport_Door_BattleTent 0x393 + +// gTileset_SootopolisGym +#define METATILE_SootopolisGym_Ice_Broken 0x206 +#define METATILE_SootopolisGym_Ice_Cracked 0x20E +#define METATILE_SootopolisGym_Stairs 0x207 + +// gTileset_Sootopolis +#define METATILE_Sootopolis_Door 0x21E +#define METATILE_Sootopolis_Door_Closed 0x248 +#define METATILE_Sootopolis_Door_PeakedRoof 0x21C +#define METATILE_Sootopolis_GymDoor_Closed 0x250 +#define METATILE_Sootopolis_RoughWater 0x290 + +// gTileset_TrainerHill +#define METATILE_TrainerHill_CounterDoor 0x334 +#define METATILE_TrainerHill_Door_Elevator_Lobby 0x32C +#define METATILE_TrainerHill_Door_Elevator_Roof 0x383 +#define METATILE_TrainerHill_GreenFloorTile 0x307 + +// gTileset_TrickHousePuzzle +#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Down 0x263 +#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Left 0x261 +#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Left_Alt 0x27B +#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Right 0x260 +#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Right_Alt 0x27C +#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Up 0x262 +#define METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right 0x298 +#define METATILE_TrickHousePuzzle_BlueDoorH_Closed_Tile0 0x23B +#define METATILE_TrickHousePuzzle_BlueDoorH_Closed_Tile1 0x23C +#define METATILE_TrickHousePuzzle_BlueDoorH_Closed_Tile2 0x243 +#define METATILE_TrickHousePuzzle_BlueDoorH_Closed_Tile3 0x244 +#define METATILE_TrickHousePuzzle_BlueDoorH_Open_Tile0 0x24B +#define METATILE_TrickHousePuzzle_BlueDoorH_Open_Tile1 0x24C +#define METATILE_TrickHousePuzzle_BlueDoorH_Open_Tile2 0x253 +#define METATILE_TrickHousePuzzle_BlueDoorH_Open_Tile3 0x254 +#define METATILE_TrickHousePuzzle_BlueDoorV_Open0 0x23D +#define METATILE_TrickHousePuzzle_BlueDoorV_Open1 0x245 +#define METATILE_TrickHousePuzzle_BlueDoorV_Retracted 0x24D +#define METATILE_TrickHousePuzzle_Button_Pressed 0x259 +#define METATILE_TrickHousePuzzle_Button_Up 0x258 +#define METATILE_TrickHousePuzzle_Door_Shuttered 0x26A +#define METATILE_TrickHousePuzzle_Floor_ShadowTop 0x255 +#define METATILE_TrickHousePuzzle_Floor_ShadowTop_Alt 0x252 +#define METATILE_TrickHousePuzzle_Lever_Off 0x23E +#define METATILE_TrickHousePuzzle_Lever_On 0x23F +#define METATILE_TrickHousePuzzle_RedDoorH_Closed_Tile0 0x238 +#define METATILE_TrickHousePuzzle_RedDoorH_Closed_Tile1 0x239 +#define METATILE_TrickHousePuzzle_RedDoorH_Closed_Tile2 0x240 +#define METATILE_TrickHousePuzzle_RedDoorH_Closed_Tile3 0x241 +#define METATILE_TrickHousePuzzle_RedDoorH_Open_Tile0 0x248 +#define METATILE_TrickHousePuzzle_RedDoorH_Open_Tile1 0x249 +#define METATILE_TrickHousePuzzle_RedDoorH_Open_Tile2 0x250 +#define METATILE_TrickHousePuzzle_RedDoorH_Open_Tile3 0x251 +#define METATILE_TrickHousePuzzle_RedDoorV_Open0 0x23A +#define METATILE_TrickHousePuzzle_RedDoorV_Open1 0x242 +#define METATILE_TrickHousePuzzle_RedDoorV_Retracted 0x24A +#define METATILE_TrickHousePuzzle_Stairs_Down 0x20B + +// gTileset_Underwater +#define METATILE_Underwater_FloorShadow 0x228 +#define METATILE_Underwater_RockWall 0x21E #endif // GUARD_METATILE_LABELS_H diff --git a/include/constants/moves.h b/include/constants/moves.h index 20cb32c54596..dd00aacb4568 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -858,8 +858,10 @@ #define MOVE_NOXIOUS_TORQUE 824 #define MOVE_COMBAT_TORQUE 825 #define MOVE_MAGICAL_TORQUE 826 +#define MOVE_PSYBLADE 827 +#define MOVE_HYDRO_STEAM 828 -#define MOVES_COUNT_GEN9 827 +#define MOVES_COUNT_GEN9 829 #define MOVES_COUNT MOVES_COUNT_GEN9 diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h index 2c632d30cf91..fd94afe5447d 100644 --- a/include/constants/party_menu.h +++ b/include/constants/party_menu.h @@ -11,6 +11,7 @@ #define AILMENT_BRN 5 #define AILMENT_PKRS 6 #define AILMENT_FNT 7 +#define AILMENT_FSB 8 #define PARTY_LAYOUT_SINGLE 0 #define PARTY_LAYOUT_DOUBLE 1 @@ -48,6 +49,7 @@ #define PARTY_ACTION_MOVE_TUTOR 12 #define PARTY_ACTION_MINIGAME 13 #define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately +#define PARTY_ACTION_CHOOSE_FAINTED_MON 15 // IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu #define PARTY_MSG_CHOOSE_MON 0 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 35eca5bbc468..7c395b4964f9 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -191,6 +191,9 @@ #define FRIENDSHIP_200_TO_254 5 #define FRIENDSHIP_MAX 6 +// Friendship value that the majority of species use. This was changed in Generation 8 to 50. +#define STANDARD_FRIENDSHIP 70 + #define MAX_FRIENDSHIP 255 #define MAX_SHEEN 255 #define MAX_CONDITION 255 @@ -198,7 +201,11 @@ #define MAX_PER_STAT_IVS 31 #define MAX_IV_MASK 31 #define USE_RANDOM_IVS (MAX_PER_STAT_IVS + 1) +#if P_EV_CAP >= GEN_6 +#define MAX_PER_STAT_EVS 252 +#else #define MAX_PER_STAT_EVS 255 +#endif #define MAX_TOTAL_EVS 510 #if I_VITAMIN_EV_CAP >= GEN_8 #define EV_ITEM_RAISE_LIMIT MAX_PER_STAT_EVS @@ -235,8 +242,9 @@ #define FLAG_THAW_USER (1 << 25) #define FLAG_HIT_IN_SUBSTITUTE (1 << 26) // Hyperspace Fury #define FLAG_TWO_STRIKES (1 << 27) // A move with this flag will strike twice, and may apply its effect on each hit -#define FLAG_WIND_MOVE (1 << 28) -#define FLAG_SLICING_MOVE (1 << 29) +#define FLAG_THREE_STRIKES (1 << 28) // A move with this flag will strike thrice, and may apply its effect on each hit +#define FLAG_WIND_MOVE (1 << 29) +#define FLAG_SLICING_MOVE (1 << 30) // Split defines. #define SPLIT_PHYSICAL 0x0 @@ -266,9 +274,6 @@ #define F_SUMMARY_SCREEN_FLIP_SPRITE 0x80 // Evolution types -#define EVO_MEGA_EVOLUTION 0xffff // Not an actual evolution, used to temporarily mega evolve in battle. -#define EVO_MOVE_MEGA_EVOLUTION 0xfffe // Mega Evolution that checks for a move instead of held item. -#define EVO_PRIMAL_REVERSION 0xfffd // Not an actual evolution, used to undergo primal reversion in battle. #define EVO_FRIENDSHIP 1 // Pokémon levels up with friendship ≥ 220 #define EVO_FRIENDSHIP_DAY 2 // Pokémon levels up during the day with friendship ≥ 220 #define EVO_FRIENDSHIP_NIGHT 3 // Pokémon levels up at night with friendship ≥ 220 @@ -307,6 +312,9 @@ #define EVO_SCRIPT_TRIGGER_DMG 36 // Pokémon has specified HP below max, then player interacts trigger #define EVO_DARK_SCROLL 37 // interacts with Scroll of Darkness #define EVO_WATER_SCROLL 38 // interacts with Scroll of Waters +#define EVO_ITEM_NIGHT 39 // specified item is used on Pokémon, is night +#define EVO_ITEM_DAY 40 // specified item is used on Pokémon, is day +#define EVO_ITEM_HOLD 41 // Pokémon levels up, holds specified item #define EVOS_PER_MON 10 @@ -318,19 +326,18 @@ #define EVO_MODE_BATTLE_SPECIAL 4 #define EVO_MODE_OVERWORLD_SPECIAL 5 -// Form change types -#define FORM_CHANGE_END 0 -#define FORM_ITEM_HOLD 1 -#define FORM_ITEM_USE 2 -#define FORM_MOVE 3 -#define FORM_WITHDRAW 4 -#define FORM_BATTLE_BEGIN 5 -#define FORM_BATTLE_END 6 - #define MON_PIC_WIDTH 64 #define MON_PIC_HEIGHT 64 #define MON_PIC_SIZE (MON_PIC_WIDTH * MON_PIC_HEIGHT / 2) +// Most pokemon have 2 frames (a default and an alternate for their animation). +// There are 4 exceptions: +// - Castform has 4 frames, 1 for each form +// - Deoxys has 2 frames, 1 for each form +// - Spinda has 1 frame, presumably to avoid the work of animating its spots +// - Unown has 1 frame, presumably to avoid the work of animating all 28 of its forms +#define MAX_MON_PIC_FRAMES 4 + #define BATTLE_ALIVE_EXCEPT_ACTIVE 0 #define BATTLE_ALIVE_ATK_SIDE 1 #define BATTLE_ALIVE_DEF_SIDE 2 @@ -346,13 +353,14 @@ #define SPECIES_FLAG_LEGENDARY (1 << 0) #define SPECIES_FLAG_MYTHICAL (1 << 1) #define SPECIES_FLAG_MEGA_EVOLUTION (1 << 2) -#define SPECIES_FLAG_ULTRA_BEAST (1 << 3) -#define SPECIES_FLAG_ALOLAN_FORM (1 << 4) -#define SPECIES_FLAG_GALARIAN_FORM (1 << 5) -#define SPECIES_FLAG_HISUIAN_FORM (1 << 6) -#define SPECIES_FLAG_GENDER_DIFFERENCE (1 << 7) -#define SPECIES_FLAG_ALL_PERFECT_IVS (1 << 8) -#define SPECIES_FLAG_CANNOT_BE_TRADED (1 << 9) +#define SPECIES_FLAG_PRIMAL_REVERSION (1 << 3) +#define SPECIES_FLAG_ULTRA_BEAST (1 << 4) +#define SPECIES_FLAG_ALOLAN_FORM (1 << 5) +#define SPECIES_FLAG_GALARIAN_FORM (1 << 6) +#define SPECIES_FLAG_HISUIAN_FORM (1 << 7) +#define SPECIES_FLAG_GENDER_DIFFERENCE (1 << 8) +#define SPECIES_FLAG_ALL_PERFECT_IVS (1 << 9) +#define SPECIES_FLAG_CANNOT_BE_TRADED (1 << 10) #define LEGENDARY_PERFECT_IV_COUNT 3 diff --git a/include/constants/songs.h b/include/constants/songs.h index a7b6381fc8ec..a8782494ee1b 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -280,47 +280,47 @@ // Music #define START_MUS 350 -#define MUS_LITTLEROOT_TEST 350 // MUS_TETSUJI -#define MUS_GSC_ROUTE38 351 // MUS_FIELD13 +#define MUS_LITTLEROOT_TEST 350 // MUS_TETSUJI // Unused, likely a test track. +#define MUS_GSC_ROUTE38 351 // MUS_FIELD13 // Unused, likely a test track. #define MUS_CAUGHT 352 // MUS_KACHI22 #define MUS_VICTORY_WILD 353 // MUS_KACHI2 -#define MUS_VICTORY_GYM_LEADER 354 // MUS_KACHI3 +#define MUS_VICTORY_GYM_LEADER 354 // MUS_KACHI3 // Also used in Frontier Brain victories. #define MUS_VICTORY_LEAGUE 355 // MUS_KACHI5 -#define MUS_C_COMM_CENTER 356 // MUS_PCC -#define MUS_GSC_PEWTER 357 // MUS_NIBI -#define MUS_C_VS_LEGEND_BEAST 358 // MUS_SUIKUN -#define MUS_ROUTE101 359 // MUS_DOORO1 -#define MUS_ROUTE110 360 // MUS_DOORO_X1 -#define MUS_ROUTE120 361 // MUS_DOORO_X3 -#define MUS_PETALBURG 362 // MUS_MACHI_S2 -#define MUS_OLDALE 363 // MUS_MACHI_S4 +#define MUS_C_COMM_CENTER 356 // MUS_PCC // Unused, likely a test track. +#define MUS_GSC_PEWTER 357 // MUS_NIBI // Used in unused Contest Halls. +#define MUS_C_VS_LEGEND_BEAST 358 // MUS_SUIKUN // Unused, likely a test track. +#define MUS_ROUTE101 359 // MUS_DOORO1 // Also used in Routes 102 and 103. +#define MUS_ROUTE110 360 // MUS_DOORO_X1 // Also used in Routes 112, 114, 117, 111's non-desert section and 118's west half. +#define MUS_ROUTE120 361 // MUS_DOORO_X3 // Also used in Routes 121, 124, 125, 126, 127 and 128. +#define MUS_PETALBURG 362 // MUS_MACHI_S2 // Also used in Mr. Briney's House and Pretty Petal Flower Shop. +#define MUS_OLDALE 363 // MUS_MACHI_S4 // Also used in Lavaridge Town. #define MUS_GYM 364 // MUS_GIM #define MUS_SURF 365 // MUS_NAMINORI -#define MUS_PETALBURG_WOODS 366 // MUS_DAN01 +#define MUS_PETALBURG_WOODS 366 // MUS_DAN01 // Also used in Artisan Cave, Fiery Path, Granite Cave, Jagged Pass, Marine Cave, Rusturf Tunnel, Scorched Slab and Terra Cave. #define MUS_LEVEL_UP 367 // MUS_FANFA1 #define MUS_HEAL 368 // MUS_ME_ASA #define MUS_OBTAIN_BADGE 369 // MUS_ME_BACHI #define MUS_OBTAIN_ITEM 370 // MUS_FANFA4 -#define MUS_EVOLVED 371 // MUS_FANFA5 +#define MUS_EVOLVED 371 // MUS_FANFA5 // Also used in egg hatching, trades and upon catching. #define MUS_OBTAIN_TMHM 372 // MUS_ME_WAZA -#define MUS_LILYCOVE_MUSEUM 373 // MUS_BIJYUTU -#define MUS_ROUTE122 374 // MUS_DOORO_X4 +#define MUS_LILYCOVE_MUSEUM 373 // MUS_BIJYUTU // Also used in the Battle Frontier's Ranking Hall. +#define MUS_ROUTE122 374 // MUS_DOORO_X4 // Also used in Route 123 and Birch's intro speech. #define MUS_OCEANIC_MUSEUM 375 // MUS_FUNE_KAN -#define MUS_EVOLUTION_INTRO 376 // MUS_ME_SHINKA -#define MUS_EVOLUTION 377 // MUS_SHINKA +#define MUS_EVOLUTION_INTRO 376 // MUS_ME_SHINKA // Also used in egg hatching. +#define MUS_EVOLUTION 377 // MUS_SHINKA // Also used in egg hatching and trades. #define MUS_MOVE_DELETED 378 // MUS_ME_WASURE #define MUS_ENCOUNTER_GIRL 379 // MUS_SYOUJOEYE #define MUS_ENCOUNTER_MALE 380 // MUS_BOYEYE -#define MUS_ABANDONED_SHIP 381 // MUS_DAN02 -#define MUS_FORTREE 382 // MUS_MACHI_S3 +#define MUS_ABANDONED_SHIP 381 // MUS_DAN02 // Also used in Faraway and Southern Islands. +#define MUS_FORTREE 382 // MUS_MACHI_S3 // Also used in Secret Bases and the Safari Zone's entrance. #define MUS_BIRCH_LAB 383 // MUS_ODAMAKI -#define MUS_B_TOWER_RS 384 // MUS_B_TOWER +#define MUS_B_TOWER_RS 384 // MUS_B_TOWER // Used in Battle Tents, Trainer Hill and Battle Frontier's lounges and Exchange Service Corner. #define MUS_ENCOUNTER_SWIMMER 385 // MUS_SWIMEYE -#define MUS_CAVE_OF_ORIGIN 386 // MUS_DAN03 +#define MUS_CAVE_OF_ORIGIN 386 // MUS_DAN03 // Also used in Meteor Falls. #define MUS_OBTAIN_BERRY 387 // MUS_ME_KINOMI #define MUS_AWAKEN_LEGEND 388 // MUS_ME_TAMA -#define MUS_SLOTS_JACKPOT 389 // MUS_ME_B_BIG -#define MUS_SLOTS_WIN 390 // MUS_ME_B_SMALL +#define MUS_SLOTS_JACKPOT 389 // MUS_ME_B_BIG // Also used in the Roulette. +#define MUS_SLOTS_WIN 390 // MUS_ME_B_SMALL // Also used in the Roulette. #define MUS_TOO_BAD 391 // MUS_ME_ZANNEN #define MUS_ROULETTE 392 // MUS_BD_TIME #define MUS_LINK_CONTEST_P1 393 // MUS_TEST1 @@ -329,17 +329,17 @@ #define MUS_LINK_CONTEST_P4 396 // MUS_TEST4 #define MUS_ENCOUNTER_RICH 397 // MUS_TEST #define MUS_VERDANTURF 398 // MUS_GOMACHI0 -#define MUS_RUSTBORO 399 // MUS_GOTOWN -#define MUS_POKE_CENTER 400 // MUS_POKECEN -#define MUS_ROUTE104 401 // MUS_NEXTROAD -#define MUS_ROUTE119 402 // MUS_GRANROAD +#define MUS_RUSTBORO 399 // MUS_GOTOWN // Also used in Mauville City, Mossdeep City, Daycare, Weather Institute and several Route houses. +#define MUS_POKE_CENTER 400 // MUS_POKECEN // Also used in the Pokémon League's lobby. +#define MUS_ROUTE104 401 // MUS_NEXTROAD // Also used in Routes 105, 106, 107, 108, 109, 115 and 116. +#define MUS_ROUTE119 402 // MUS_GRANROAD // Also used in Routes 129, 130, 131, 132, 133, 134 and 118's east half. #define MUS_CYCLING 403 // MUS_CYCLING -#define MUS_POKE_MART 404 // MUS_FRIENDLY +#define MUS_POKE_MART 404 // MUS_FRIENDLY // Also used in Lilycove's Department Store. #define MUS_LITTLEROOT 405 // MUS_MISHIRO -#define MUS_MT_CHIMNEY 406 // MUS_TOZAN +#define MUS_MT_CHIMNEY 406 // MUS_TOZAN // Also used in Desert Underpass, Mirage Tower, Seafloor Cavern and Sky Pillar. #define MUS_ENCOUNTER_FEMALE 407 // MUS_GIRLEYE -#define MUS_LILYCOVE 408 // MUS_MINAMO -#define MUS_ROUTE111 409 // MUS_ASHROAD +#define MUS_LILYCOVE 408 // MUS_MINAMO // Also used in Pacifidlog Town and the Diving Treasure Hunter's house. +#define MUS_DESERT 409 // MUS_ASHROAD #define MUS_HELP 410 // MUS_EVENT0 #define MUS_UNDERWATER 411 // MUS_DEEPDEEP #define MUS_VICTORY_TRAINER 412 // MUS_KACHI1 @@ -352,29 +352,29 @@ #define MUS_ENCOUNTER_AQUA 419 // MUS_AQA_0 #define MUS_FOLLOW_ME 420 // MUS_TSURETEK #define MUS_ENCOUNTER_BRENDAN 421 // MUS_BOY_SUP -#define MUS_EVER_GRANDE 422 // MUS_RAINBOW +#define MUS_EVER_GRANDE 422 // MUS_RAINBOW // Also used in link rooms. #define MUS_ENCOUNTER_SUSPICIOUS 423 // MUS_AYASII #define MUS_VICTORY_AQUA_MAGMA 424 // MUS_KACHI4 #define MUS_CABLE_CAR 425 // MUS_ROPEWAY #define MUS_GAME_CORNER 426 // MUS_CASINO -#define MUS_DEWFORD 427 // MUS_HIGHTOWN +#define MUS_DEWFORD 427 // MUS_HIGHTOWN // Also used in Route 109's Seashore house. #define MUS_SAFARI_ZONE 428 // MUS_SAFARI -#define MUS_VICTORY_ROAD 429 // MUS_C_ROAD +#define MUS_VICTORY_ROAD 429 // MUS_C_ROAD // Also used in Pokémon League's E4/Champion rooms and halls. #define MUS_AQUA_MAGMA_HIDEOUT 430 // MUS_AJITO #define MUS_SAILING 431 // MUS_M_BOAT -#define MUS_MT_PYRE 432 // MUS_M_DUNGON -#define MUS_SLATEPORT 433 // MUS_FINECITY +#define MUS_MT_PYRE 432 // MUS_M_DUNGON // Also used in New Mauville and Shoal Cave. +#define MUS_SLATEPORT 433 // MUS_FINECITY // Also used in Cycling Road's entrances. #define MUS_MT_PYRE_EXTERIOR 434 // MUS_MACHUPI #define MUS_SCHOOL 435 // MUS_P_SCHOOL #define MUS_HALL_OF_FAME 436 // MUS_DENDOU -#define MUS_FALLARBOR 437 // MUS_TONEKUSA -#define MUS_SEALED_CHAMBER 438 // MUS_MABOROSI +#define MUS_FALLARBOR 437 // MUS_TONEKUSA // Also used in Route 114's houses. +#define MUS_SEALED_CHAMBER 438 // MUS_MABOROSI // Also used in Ancient Tomb, Desert Ruins and Island Cave. #define MUS_CONTEST_WINNER 439 // MUS_CON_FAN #define MUS_CONTEST 440 // MUS_CONTEST0 #define MUS_ENCOUNTER_MAGMA 441 // MUS_MGM0 #define MUS_INTRO_BATTLE 442 // MUS_T_BATTLE -#define MUS_ABNORMAL_WEATHER 443 // MUS_OOAME (Replaces MUS_WEATHER_KYOGRE from R/S) -#define MUS_WEATHER_GROUDON 444 // MUS_HIDERI (Unused, from R/S) +#define MUS_ABNORMAL_WEATHER 443 // MUS_OOAME // Replaces MUS_WEATHER_KYOGRE from R/S. +#define MUS_WEATHER_GROUDON 444 // MUS_HIDERI // Unused, from R/S. #define MUS_SOOTOPOLIS 445 // MUS_RUNECITY #define MUS_CONTEST_RESULTS 446 // MUS_CON_K #define MUS_HALL_OF_FAME_ROOM 447 // MUS_EIKOU_R @@ -383,7 +383,7 @@ #define MUS_ENCOUNTER_ELITE_FOUR 450 // MUS_SITENNOU #define MUS_ENCOUNTER_HIKER 451 // MUS_YAMA_EYE #define MUS_CONTEST_LOBBY 452 // MUS_CONLOBBY -#define MUS_ENCOUNTER_INTERVIEWER 453 // MUS_INTER_V +#define MUS_ENCOUNTER_INTERVIEWER 453 // MUS_INTER_V // Also used during Petalburg City report at the beginning of the game. #define MUS_ENCOUNTER_CHAMPION 454 // MUS_DAIGO #define MUS_CREDITS 455 // MUS_THANKFOR #define MUS_END 456 // MUS_END @@ -400,7 +400,7 @@ #define MUS_B_DOME 467 // MUS_B_DOME #define MUS_B_PIKE 468 // MUS_B_TUBE #define MUS_B_FACTORY 469 // MUS_B_FACTORY -#define MUS_VS_RAYQUAZA 470 // MUS_VS_REKKU (Identical to MUS_VS_KYOGRE_GROUDON) +#define MUS_VS_RAYQUAZA 470 // MUS_VS_REKKU // Identical to MUS_VS_KYOGRE_GROUDON. #define MUS_VS_FRONTIER_BRAIN 471 // MUS_VS_FRONT #define MUS_VS_MEW 472 // MUS_VS_MEW #define MUS_B_DOME_LOBBY 473 // MUS_B_DOME1 @@ -453,9 +453,9 @@ #define MUS_RG_SILPH 519 // MUS_RG_SHIRUHU #define MUS_RG_FUCHSIA 520 // MUS_RG_HANADA #define MUS_RG_CELADON 521 // MUS_RG_TAMAMUSI -#define MUS_RG_VICTORY_TRAINER 522 // MUS_RG_WIN_TRE (Identical to MUS_VICTORY_TRAINER) -#define MUS_RG_VICTORY_WILD 523 // MUS_RG_WIN_YASEI (Identical to MUS_VICTORY_WILD) -#define MUS_RG_VICTORY_GYM_LEADER 524 // MUS_RG_WIN_GYM (Identical to MUS_VICTORY_GYM_LEADER) +#define MUS_RG_VICTORY_TRAINER 522 // MUS_RG_WIN_TRE // Identical to MUS_VICTORY_TRAINER. +#define MUS_RG_VICTORY_WILD 523 // MUS_RG_WIN_YASEI // Identical to MUS_VICTORY_WILD. +#define MUS_RG_VICTORY_GYM_LEADER 524 // MUS_RG_WIN_GYM // Identical to MUS_VICTORY_GYM_LEADER. #define MUS_RG_VERMILLION 525 // MUS_RG_KUCHIBA #define MUS_RG_PEWTER 526 // MUS_RG_NIBI #define MUS_RG_ENCOUNTER_RIVAL 527 // MUS_RG_RIVAL1 @@ -474,11 +474,11 @@ #define MUS_RG_NET_CENTER 540 // MUS_RG_NETWORK #define MUS_RG_MYSTERY_GIFT 541 // MUS_RG_OKURIMONO #define MUS_RG_BERRY_PICK 542 // MUS_RG_KINOMIKUI -#define MUS_RG_SEVII_CAVE 543 // MUS_RG_NANADUNGEON (Identical to MUS_RG_MT_MOON) -#define MUS_RG_TEACHY_TV_SHOW 544 // MUS_RG_OSHIE_TV (Identical to MUS_RG_FOLLOW_ME) +#define MUS_RG_SEVII_CAVE 543 // MUS_RG_NANADUNGEON // Identical to MUS_RG_MT_MOON. +#define MUS_RG_TEACHY_TV_SHOW 544 // MUS_RG_OSHIE_TV // Identical to MUS_RG_FOLLOW_ME. #define MUS_RG_SEVII_ROUTE 545 // MUS_RG_NANASHIMA -#define MUS_RG_SEVII_DUNGEON 546 // MUS_RG_NANAISEKI (Identical to MUS_RG_VIRIDIAN_FOREST) -#define MUS_RG_SEVII_123 547 // MUS_RG_NANA123 (Identical to MUS_RG_PEWTER) +#define MUS_RG_SEVII_DUNGEON 546 // MUS_RG_NANAISEKI // Identical to MUS_RG_VIRIDIAN_FOREST. +#define MUS_RG_SEVII_123 547 // MUS_RG_NANA123 // Identical to MUS_RG_PEWTER #define MUS_RG_SEVII_45 548 // MUS_RG_NANA45 #define MUS_RG_SEVII_67 549 // MUS_RG_NANA67 #define MUS_RG_POKE_FLUTE 550 // MUS_RG_POKEFUE diff --git a/include/constants/species.h b/include/constants/species.h index 5a46e856fb22..ae36497e7157 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1368,8 +1368,11 @@ #define SPECIES_CALYREX_ICE_RIDER FORMS_START + 327 #define SPECIES_CALYREX_SHADOW_RIDER FORMS_START + 328 +// Basculegion +#define SPECIES_BASCULEGION_FEMALE FORMS_START + 329 + #define FORMS_START SPECIES_ENAMORUS -#define SPECIES_EGG SPECIES_CALYREX_SHADOW_RIDER + 1 +#define SPECIES_EGG SPECIES_BASCULEGION_FEMALE + 1 #define NUM_SPECIES SPECIES_EGG diff --git a/include/constants/trainers.h b/include/constants/trainers.h index 39ca2a2b8658..25660ac073d6 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -374,7 +374,12 @@ // All trainer parties specify the IV, level, and species for each Pokémon in the // party. Some trainer parties also specify held items and custom moves for each // Pokémon. -#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0) -#define F_TRAINER_PARTY_HELD_ITEM (1 << 1) +#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0) +#define F_TRAINER_PARTY_HELD_ITEM (1 << 1) +#define F_TRAINER_PARTY_EVERYTHING_CUSTOMIZED (1 << 3) + +// Trainer party defines +#define TRAINER_MON_MALE 1 +#define TRAINER_MON_FEMALE 2 #endif // GUARD_TRAINERS_H diff --git a/include/constants/tv.h b/include/constants/tv.h index 87748a31de90..13ec88ecdcad 100644 --- a/include/constants/tv.h +++ b/include/constants/tv.h @@ -74,6 +74,7 @@ // for TV shows from TVGROUP_NORMAL. The remainder are for TV // shows from TVGROUP_RECORD_MIX. #define NUM_NORMAL_TVSHOW_SLOTS 5 +#define TV_SHOWS_COUNT (NUM_NORMAL_TVSHOW_SLOTS + 20) #define PLAYERS_HOUSE_TV_NONE 0 #define PLAYERS_HOUSE_TV_LATI 1 diff --git a/include/data.h b/include/data.h index b018da3f3b93..6e41ac703a44 100644 --- a/include/data.h +++ b/include/data.h @@ -7,6 +7,13 @@ #define MAX_TRAINER_ITEMS 4 +#define TRAINER_PIC_WIDTH 64 +#define TRAINER_PIC_HEIGHT 64 +#define TRAINER_PIC_SIZE (TRAINER_PIC_WIDTH * TRAINER_PIC_HEIGHT / 2) + +// Red and Leaf's back pics have 5 frames, but this is presumably irrelevant in the places this is used. +#define MAX_TRAINER_PIC_FRAMES 4 + enum { BATTLER_AFFINE_NORMAL, BATTLER_AFFINE_EMERGE, @@ -24,6 +31,26 @@ struct MonCoords #define MON_COORDS_SIZE(width, height)(DIV_ROUND_UP(width, 8) << 4 | DIV_ROUND_UP(height, 8)) #define GET_MON_COORDS_WIDTH(size)((size >> 4) * 8) #define GET_MON_COORDS_HEIGHT(size)((size & 0xF) * 8) +#define TRAINER_PARTY_IVS(hp, atk, def, speed, spatk, spdef) (hp | (atk << 5) | (def << 10) | (speed << 15) | (spatk << 20) | (spdef << 25)) +#define TRAINER_PARTY_EVS(hp, atk, def, speed, spatk, spdef) ((const u8[6]){hp,atk,def,spatk,spdef,speed}) +#define TRAINER_PARTY_NATURE(nature) (nature+1) + +struct TrainerMonCustomized +{ + const u8 *nickname; + const u8 *ev; + u32 iv; + u16 moves[4]; + u16 species; + u16 heldItem; + u16 ability; + u8 lvl; + u8 ball; + u8 friendship; + u8 nature : 5; + bool8 gender : 2; + bool8 isShiny : 1; +}; struct TrainerMonNoItemDefaultMoves { @@ -61,6 +88,7 @@ struct TrainerMonItemCustomMoves #define NO_ITEM_CUSTOM_MOVES(party) { .NoItemCustomMoves = party }, .partySize = ARRAY_COUNT(party), .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET #define ITEM_DEFAULT_MOVES(party) { .ItemDefaultMoves = party }, .partySize = ARRAY_COUNT(party), .partyFlags = F_TRAINER_PARTY_HELD_ITEM #define ITEM_CUSTOM_MOVES(party) { .ItemCustomMoves = party }, .partySize = ARRAY_COUNT(party), .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM +#define EVERYTHING_CUSTOMIZED(party) { .EverythingCustomized = party}, .partySize = ARRAY_COUNT(party), .partyFlags = F_TRAINER_PARTY_EVERYTHING_CUSTOMIZED union TrainerMonPtr { @@ -68,20 +96,21 @@ union TrainerMonPtr const struct TrainerMonNoItemCustomMoves *NoItemCustomMoves; const struct TrainerMonItemDefaultMoves *ItemDefaultMoves; const struct TrainerMonItemCustomMoves *ItemCustomMoves; + const struct TrainerMonCustomized *EverythingCustomized; }; struct Trainer { - /*0x00*/ u8 partyFlags; - /*0x01*/ u8 trainerClass; - /*0x02*/ u8 encounterMusic_gender; // last bit is gender - /*0x03*/ u8 trainerPic; - /*0x04*/ u8 trainerName[TRAINER_NAME_LENGTH + 1]; - /*0x10*/ u16 items[MAX_TRAINER_ITEMS]; - /*0x18*/ bool8 doubleBattle; - /*0x1C*/ u32 aiFlags; - /*0x20*/ u8 partySize; - /*0x24*/ union TrainerMonPtr party; + /*0x00*/ u32 aiFlags; + /*0x04*/ union TrainerMonPtr party; + /*0x08*/ u16 items[MAX_TRAINER_ITEMS]; + /*0x10*/ u8 trainerClass; + /*0x11*/ u8 encounterMusic_gender; // last bit is gender + /*0x12*/ u8 trainerPic; + /*0x13*/ u8 trainerName[TRAINER_NAME_LENGTH + 1]; + /*0x1E*/ bool8 doubleBattle:1; + u8 partyFlags:7; + /*0x1F*/ u8 partySize; }; #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) diff --git a/include/easy_chat.h b/include/easy_chat.h index d84af93fc8fa..2cec441d5515 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -128,11 +128,11 @@ void InitializeEasyChatWordArray(u16 *words, u16 length); u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows); bool8 IsBardWordInvalid(u16 word); u16 GetRandomEasyChatWordFromGroup(u16 group); -u16 GetNewHipsterPhraseToTeach(void); +u16 UnlockRandomTrendySaying(void); u16 EasyChat_GetNumWordsInGroup(u8); u16 GetRandomEasyChatWordFromUnlockedGroup(u16); void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType); void InitQuestionnaireWords(void); -void UnlockAdditionalPhrase(u8 additionalPhraseId); +void UnlockTrendySaying(u8 wordIndex); #endif // GUARD_EASYCHAT_H diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index e02fcd5afe0c..b259eb53c1b6 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -32,7 +32,7 @@ bool8 TryDoDiveWarp(struct MapPosition *position, u16 b); int SetCableClubWarp(void); u8 TrySetDiveWarp(void); const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction); -u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position); +const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position); void ClearPoisonStepCounter(void); #endif // GUARD_FIELDCONTROLAVATAR_H diff --git a/include/fieldmap.h b/include/fieldmap.h index f2dbefae860f..47072bd1be08 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -48,8 +48,8 @@ void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout); void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout); void CopyPrimaryTilesetToVram(const struct MapLayout *); void CopySecondaryTilesetToVram(const struct MapLayout *); -struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection); -struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y); +const struct MapHeader *const GetMapHeaderFromConnection(const struct MapConnection *connection); +const struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y); void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable); // field_region_map.c diff --git a/include/gba/defines.h b/include/gba/defines.h index 82caf56e6840..fbe0a607065a 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -22,19 +22,20 @@ #define INTR_CHECK (*(u16 *)0x3007FF8) #define INTR_VECTOR (*(void **)0x3007FFC) +#define ROM_START 0x8000000 +#define ROM_END 0xA000000 + #define EWRAM_START 0x02000000 #define EWRAM_END (EWRAM_START + 0x40000) #define IWRAM_START 0x03000000 #define IWRAM_END (IWRAM_START + 0x8000) -#define PLTT 0x5000000 -#define PLTT_SIZE 0x400 - -#define BG_PLTT PLTT -#define BG_PLTT_SIZE 0x200 - -#define OBJ_PLTT (PLTT + 0x200) +#define PLTT 0x5000000 +#define BG_PLTT PLTT +#define BG_PLTT_SIZE 0x200 +#define OBJ_PLTT (PLTT + BG_PLTT_SIZE) #define OBJ_PLTT_SIZE 0x200 +#define PLTT_SIZE (BG_PLTT_SIZE + OBJ_PLTT_SIZE) #define VRAM 0x6000000 #define VRAM_SIZE 0x18000 @@ -64,14 +65,23 @@ #define ROM_HEADER_SIZE 0xC0 +// Dimensions of a tile in pixels +#define TILE_WIDTH 8 +#define TILE_HEIGHT 8 + +// Dimensions of the GBA screen in pixels #define DISPLAY_WIDTH 240 #define DISPLAY_HEIGHT 160 -#define DISPLAY_TILE_WIDTH (DISPLAY_WIDTH / 8) -#define DISPLAY_TILE_HEIGHT (DISPLAY_HEIGHT / 8) +// Dimensions of the GBA screen in tiles +#define DISPLAY_TILE_WIDTH (DISPLAY_WIDTH / TILE_WIDTH) +#define DISPLAY_TILE_HEIGHT (DISPLAY_HEIGHT / TILE_HEIGHT) -#define TILE_SIZE_4BPP 32 -#define TILE_SIZE_8BPP 64 +// Size of different tile formats in bytes +#define TILE_SIZE(bpp)((bpp) * TILE_WIDTH * TILE_HEIGHT / 8) +#define TILE_SIZE_1BPP TILE_SIZE(1) // 8 +#define TILE_SIZE_4BPP TILE_SIZE(4) // 32 +#define TILE_SIZE_8BPP TILE_SIZE(8) // 64 #define TILE_OFFSET_4BPP(n) ((n) * TILE_SIZE_4BPP) #define TILE_OFFSET_8BPP(n) ((n) * TILE_SIZE_8BPP) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 26e5c44bf130..7461929c3a5c 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -50,10 +50,10 @@ struct MapLayout { /*0x00*/ s32 width; /*0x04*/ s32 height; - /*0x08*/ u16 *border; - /*0x0C*/ u16 *map; - /*0x10*/ struct Tileset *primaryTileset; - /*0x14*/ struct Tileset *secondaryTileset; + /*0x08*/ const u16 *border; + /*0x0C*/ const u16 *map; + /*0x10*/ const struct Tileset *primaryTileset; + /*0x14*/ const struct Tileset *secondaryTileset; }; struct BackupMapLayout @@ -67,7 +67,7 @@ struct ObjectEventTemplate { /*0x00*/ u8 localId; /*0x01*/ u8 graphicsId; - /*0x02*/ u8 inConnection; // Leftover from FRLG + /*0x02*/ u8 kind; // Always OBJ_KIND_NORMAL in Emerald. /*0x03*/ //u8 padding1; /*0x04*/ s16 x; /*0x06*/ s16 y; @@ -98,7 +98,7 @@ struct CoordEvent u8 elevation; u16 trigger; u16 index; - u8 *script; + const u8 *script; }; struct BgEvent @@ -107,7 +107,7 @@ struct BgEvent u8 elevation; u8 kind; // The "kind" field determines how to access bgUnion union below. union { - u8 *script; + const u8 *script; struct { u16 item; u16 hiddenItemId; @@ -122,10 +122,10 @@ struct MapEvents u8 warpCount; u8 coordEventCount; u8 bgEventCount; - struct ObjectEventTemplate *objectEvents; - struct WarpEvent *warps; - struct CoordEvent *coordEvents; - struct BgEvent *bgEvents; + const struct ObjectEventTemplate *objectEvents; + const struct WarpEvent *warps; + const struct CoordEvent *coordEvents; + const struct BgEvent *bgEvents; }; struct MapConnection @@ -139,7 +139,7 @@ struct MapConnection struct MapConnections { s32 count; - struct MapConnection *connections; + const struct MapConnection *connections; }; struct MapHeader diff --git a/include/global.h b/include/global.h index 7324335d2e47..eca45bdb6310 100644 --- a/include/global.h +++ b/include/global.h @@ -27,8 +27,8 @@ /// IDE support #if defined(__APPLE__) || defined(__CYGWIN__) || defined(__INTELLISENSE__) // We define these when using certain IDEs to fool preproc -#define _(x) (x) -#define __(x) (x) +#define _(x) {x} +#define __(x) {x} #define INCBIN(...) {0} #define INCBIN_U8 INCBIN #define INCBIN_U16 INCBIN @@ -137,7 +137,7 @@ #define NUM_DEX_FLAG_BYTES ROUND_BITS_TO_BYTES(POKEMON_SLOTS_NUMBER) #define NUM_FLAG_BYTES ROUND_BITS_TO_BYTES(FLAGS_COUNT) -#define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES) +#define NUM_TRENDY_SAYING_BYTES ROUND_BITS_TO_BYTES(NUM_TRENDY_SAYINGS) // Calls m0/m1/.../m8 depending on how many arguments are passed. #define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__) @@ -147,6 +147,12 @@ #define CAT(a, b) CAT_(a, b) #define CAT_(a, b) a ## b +#define STR(a) STR_(a) +#define STR_(a) #a + +// Converts a string to a compound literal, essentially making it a pointer to const u8 +#define COMPOUND_STRING(str) (const u8[]) _(str) + // This produces an error at compile-time if expr is zero. // It looks like file.c:line: size of array `id' is negative #define STATIC_ASSERT(expr, id) typedef char id[(expr) ? 1 : -1]; @@ -684,7 +690,7 @@ struct MauvilleManGiddy struct MauvilleManHipster { u8 id; - bool8 alreadySpoken; + bool8 taughtWord; u8 language; }; @@ -1042,7 +1048,7 @@ struct SaveBlock1 /*0x2BC8*/ u16 easyChatBattleWon[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x2BD4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x2BE0*/ struct Mail mail[MAIL_COUNT]; - /*0x2E20*/ u8 additionalPhrases[NUM_ADDITIONAL_PHRASE_BYTES]; // bitfield for 33 additional phrases in easy chat system + /*0x2E20*/ u8 unlockedTrendySayings[NUM_TRENDY_SAYING_BYTES]; // Bitfield for unlockable Easy Chat words in EC_GROUP_TRENDY_SAYING /*0x2E25*/ //u8 padding5[3]; /*0x2E28*/ OldMan oldMan; /*0x2e64*/ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT]; diff --git a/include/graphics.h b/include/graphics.h index 55174442c56d..ad23dc67c8bd 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -867,9 +867,9 @@ extern const u32 gMonFrontPic_Mimikyu[]; extern const u32 gMonFrontPic_Bruxish[]; extern const u32 gMonFrontPic_Drampa[]; extern const u32 gMonFrontPic_Dhelmise[]; -extern const u32 gMonFrontPic_Jangmoo[]; -extern const u32 gMonFrontPic_Hakamoo[]; -extern const u32 gMonFrontPic_Kommoo[]; +extern const u32 gMonFrontPic_JangmoO[]; +extern const u32 gMonFrontPic_HakamoO[]; +extern const u32 gMonFrontPic_KommoO[]; extern const u32 gMonFrontPic_TapuKoko[]; extern const u32 gMonFrontPic_TapuLele[]; extern const u32 gMonFrontPic_TapuBulu[]; @@ -986,14 +986,13 @@ extern const u32 gMonFrontPic_Regidrago[]; extern const u32 gMonFrontPic_Glastrier[]; extern const u32 gMonFrontPic_Spectrier[]; extern const u32 gMonFrontPic_Calyrex[]; -//extern const u32 gMonFrontPic_Wyrdeer[]; +extern const u32 gMonFrontPic_Wyrdeer[]; extern const u32 gMonFrontPic_Kleavor[]; extern const u32 gMonFrontPic_Ursaluna[]; -//extern const u32 gMonFrontPic_Basculegion[]; -//extern const u32 gMonFrontPic_BasculegionF[]; -//extern const u32 gMonFrontPic_Sneasler[]; +extern const u32 gMonFrontPic_Basculegion[]; +extern const u32 gMonFrontPic_Sneasler[]; extern const u32 gMonFrontPic_Overqwil[]; -//extern const u32 gMonFrontPic_Enamorus[]; +extern const u32 gMonFrontPic_Enamorus[]; #endif extern const u32 gMonFrontPic_VenusaurMega[]; extern const u32 gMonFrontPic_CharizardMegaX[]; @@ -1098,7 +1097,7 @@ extern const u32 gMonFrontPic_TyphlosionHisuian[]; extern const u32 gMonFrontPic_QwilfishHisuian[]; extern const u32 gMonFrontPic_SneaselHisuian[]; #if P_GEN_5_POKEMON == TRUE -//extern const u32 gMonFrontPic_SamurottHisuian[]; +extern const u32 gMonFrontPic_SamurottHisuian[]; extern const u32 gMonFrontPic_LilligantHisuian[]; extern const u32 gMonFrontPic_ZoruaHisuian[]; extern const u32 gMonFrontPic_ZoroarkHisuian[]; @@ -1110,7 +1109,7 @@ extern const u32 gMonFrontPic_GoodraHisuian[]; extern const u32 gMonFrontPic_AvaluggHisuian[]; #endif #if P_GEN_7_POKEMON == TRUE -//extern const u32 gMonFrontPic_DecidueyeHisuian[]; +extern const u32 gMonFrontPic_DecidueyeHisuian[]; #endif extern const u32 gMonFrontPic_PikachuCosplay[]; extern const u32 gMonFrontPic_PikachuRockStar[]; @@ -1276,7 +1275,8 @@ extern const u32 gMonFrontPic_UrshifuRapidStrikeStyle[]; extern const u32 gMonFrontPic_ZarudeDada[]; extern const u32 gMonFrontPic_CalyrexIceRider[]; extern const u32 gMonFrontPic_CalyrexShadowRider[]; -//extern const u32 gMonFrontPic_EnamorusTherian[]; +extern const u32 gMonFrontPic_EnamorusTherian[]; +extern const u32 gMonFrontPic_BasculegionFemale[]; #endif extern const u32 gMonFrontPic_Egg[]; @@ -2081,9 +2081,9 @@ extern const u32 gMonBackPic_Mimikyu[]; extern const u32 gMonBackPic_Bruxish[]; extern const u32 gMonBackPic_Drampa[]; extern const u32 gMonBackPic_Dhelmise[]; -extern const u32 gMonBackPic_Jangmoo[]; -extern const u32 gMonBackPic_Hakamoo[]; -extern const u32 gMonBackPic_Kommoo[]; +extern const u32 gMonBackPic_JangmoO[]; +extern const u32 gMonBackPic_HakamoO[]; +extern const u32 gMonBackPic_KommoO[]; extern const u32 gMonBackPic_TapuKoko[]; extern const u32 gMonBackPic_TapuLele[]; extern const u32 gMonBackPic_TapuBulu[]; @@ -2200,14 +2200,13 @@ extern const u32 gMonBackPic_Regidrago[]; extern const u32 gMonBackPic_Glastrier[]; extern const u32 gMonBackPic_Spectrier[]; extern const u32 gMonBackPic_Calyrex[]; -//extern const u32 gMonBackPic_Wyrdeer[]; +extern const u32 gMonBackPic_Wyrdeer[]; extern const u32 gMonBackPic_Kleavor[]; extern const u32 gMonBackPic_Ursaluna[]; -//extern const u32 gMonBackPic_Basculegion[]; -//extern const u32 gMonBackPic_BasculegionF[]; -//extern const u32 gMonBackPic_Sneasler[]; +extern const u32 gMonBackPic_Basculegion[]; +extern const u32 gMonBackPic_Sneasler[]; extern const u32 gMonBackPic_Overqwil[]; -//extern const u32 gMonBackPic_Enamorus[]; +extern const u32 gMonBackPic_Enamorus[]; #endif extern const u32 gMonBackPic_VenusaurMega[]; extern const u32 gMonBackPic_CharizardMegaX[]; @@ -2312,7 +2311,7 @@ extern const u32 gMonBackPic_TyphlosionHisuian[]; extern const u32 gMonBackPic_QwilfishHisuian[]; extern const u32 gMonBackPic_SneaselHisuian[]; #if P_GEN_5_POKEMON == TRUE -//extern const u32 gMonBackPic_SamurottHisuian[]; +extern const u32 gMonBackPic_SamurottHisuian[]; extern const u32 gMonBackPic_LilligantHisuian[]; extern const u32 gMonBackPic_ZoruaHisuian[]; extern const u32 gMonBackPic_ZoroarkHisuian[]; @@ -2324,7 +2323,7 @@ extern const u32 gMonBackPic_GoodraHisuian[]; extern const u32 gMonBackPic_AvaluggHisuian[]; #endif #if P_GEN_7_POKEMON == TRUE -//extern const u32 gMonBackPic_DecidueyeHisuian[]; +extern const u32 gMonBackPic_DecidueyeHisuian[]; #endif extern const u32 gMonBackPic_PikachuCosplay[]; extern const u32 gMonBackPic_PikachuRockStar[]; @@ -2488,7 +2487,8 @@ extern const u32 gMonBackPic_UrshifuRapidStrikeStyle[]; extern const u32 gMonBackPic_ZarudeDada[]; extern const u32 gMonBackPic_CalyrexIceRider[]; extern const u32 gMonBackPic_CalyrexShadowRider[]; -//extern const u32 gMonBackPic_EnamorusTherian[]; +extern const u32 gMonBackPic_EnamorusTherian[]; +extern const u32 gMonBackPic_BasculegionFemale[]; #endif extern const u32 gMonPalette_CircledQuestionMark[]; @@ -3287,9 +3287,9 @@ extern const u32 gMonPalette_Mimikyu[]; extern const u32 gMonPalette_Bruxish[]; extern const u32 gMonPalette_Drampa[]; extern const u32 gMonPalette_Dhelmise[]; -extern const u32 gMonPalette_Jangmoo[]; -extern const u32 gMonPalette_Hakamoo[]; -extern const u32 gMonPalette_Kommoo[]; +extern const u32 gMonPalette_JangmoO[]; +extern const u32 gMonPalette_HakamoO[]; +extern const u32 gMonPalette_KommoO[]; extern const u32 gMonPalette_TapuKoko[]; extern const u32 gMonPalette_TapuLele[]; extern const u32 gMonPalette_TapuBulu[]; @@ -3406,14 +3406,13 @@ extern const u32 gMonPalette_Regidrago[]; extern const u32 gMonPalette_Glastrier[]; extern const u32 gMonPalette_Spectrier[]; extern const u32 gMonPalette_Calyrex[]; -//extern const u32 gMonPalette_Wyrdeer[]; +extern const u32 gMonPalette_Wyrdeer[]; extern const u32 gMonPalette_Kleavor[]; extern const u32 gMonPalette_Ursaluna[]; -//extern const u32 gMonPalette_Basculegion[]; -//extern const u32 gMonPalette_BasculegionF[]; -//extern const u32 gMonPalette_Sneasler[]; +extern const u32 gMonPalette_Basculegion[]; +extern const u32 gMonPalette_Sneasler[]; extern const u32 gMonPalette_Overqwil[]; -//extern const u32 gMonPalette_Enamorus[]; +extern const u32 gMonPalette_Enamorus[]; #endif extern const u32 gMonPalette_VenusaurMega[]; extern const u32 gMonPalette_CharizardMegaX[]; @@ -3518,7 +3517,7 @@ extern const u32 gMonPalette_TyphlosionHisuian[]; extern const u32 gMonPalette_QwilfishHisuian[]; extern const u32 gMonPalette_SneaselHisuian[]; #if P_GEN_5_POKEMON == TRUE -//extern const u32 gMonPalette_SamurottHisuian[]; +extern const u32 gMonPalette_SamurottHisuian[]; extern const u32 gMonPalette_LilligantHisuian[]; extern const u32 gMonPalette_ZoruaHisuian[]; extern const u32 gMonPalette_ZoroarkHisuian[]; @@ -3530,7 +3529,7 @@ extern const u32 gMonPalette_GoodraHisuian[]; extern const u32 gMonPalette_AvaluggHisuian[]; #endif #if P_GEN_7_POKEMON == TRUE -//extern const u32 gMonPalette_DecidueyeHisuian[]; +extern const u32 gMonPalette_DecidueyeHisuian[]; #endif extern const u32 gMonPalette_PikachuCosplay[]; extern const u32 gMonPalette_PikachuRockStar[]; @@ -3720,7 +3719,8 @@ extern const u32 gMonPalette_UrshifuRapidStrikeStyle[]; extern const u32 gMonPalette_ZarudeDada[]; extern const u32 gMonPalette_CalyrexIceRider[]; extern const u32 gMonPalette_CalyrexShadowRider[]; -//extern const u32 gMonPalette_EnamorusTherian[]; +extern const u32 gMonPalette_EnamorusTherian[]; +extern const u32 gMonPalette_BasculegionFemale[]; #endif extern const u32 gMonPalette_Egg[]; @@ -4520,9 +4520,9 @@ extern const u32 gMonShinyPalette_Mimikyu[]; extern const u32 gMonShinyPalette_Bruxish[]; extern const u32 gMonShinyPalette_Drampa[]; extern const u32 gMonShinyPalette_Dhelmise[]; -extern const u32 gMonShinyPalette_Jangmoo[]; -extern const u32 gMonShinyPalette_Hakamoo[]; -extern const u32 gMonShinyPalette_Kommoo[]; +extern const u32 gMonShinyPalette_JangmoO[]; +extern const u32 gMonShinyPalette_HakamoO[]; +extern const u32 gMonShinyPalette_KommoO[]; extern const u32 gMonShinyPalette_TapuKoko[]; extern const u32 gMonShinyPalette_TapuLele[]; extern const u32 gMonShinyPalette_TapuBulu[]; @@ -4639,14 +4639,13 @@ extern const u32 gMonShinyPalette_Regidrago[]; extern const u32 gMonShinyPalette_Glastrier[]; extern const u32 gMonShinyPalette_Spectrier[]; extern const u32 gMonShinyPalette_Calyrex[]; -//extern const u32 gMonShinyPalette_Wyrdeer[]; +extern const u32 gMonShinyPalette_Wyrdeer[]; extern const u32 gMonShinyPalette_Kleavor[]; extern const u32 gMonShinyPalette_Ursaluna[]; -//extern const u32 gMonShinyPalette_Basculegion[]; -//extern const u32 gMonShinyPalette_BasculegionF[]; -//extern const u32 gMonShinyPalette_Sneasler[]; +extern const u32 gMonShinyPalette_Basculegion[]; +extern const u32 gMonShinyPalette_Sneasler[]; extern const u32 gMonShinyPalette_Overqwil[]; -//extern const u32 gMonShinyPalette_Enamorus[]; +extern const u32 gMonShinyPalette_Enamorus[]; #endif extern const u32 gMonShinyPalette_VenusaurMega[]; extern const u32 gMonShinyPalette_CharizardMegaX[]; @@ -4751,7 +4750,7 @@ extern const u32 gMonShinyPalette_TyphlosionHisuian[]; extern const u32 gMonShinyPalette_QwilfishHisuian[]; extern const u32 gMonShinyPalette_SneaselHisuian[]; #if P_GEN_5_POKEMON == TRUE -//extern const u32 gMonShinyPalette_SamurottHisuian[]; +extern const u32 gMonShinyPalette_SamurottHisuian[]; extern const u32 gMonShinyPalette_LilligantHisuian[]; extern const u32 gMonShinyPalette_ZoruaHisuian[]; extern const u32 gMonShinyPalette_ZoroarkHisuian[]; @@ -4763,7 +4762,7 @@ extern const u32 gMonShinyPalette_GoodraHisuian[]; extern const u32 gMonShinyPalette_AvaluggHisuian[]; #endif #if P_GEN_7_POKEMON == TRUE -//extern const u32 gMonShinyPalette_DecidueyeHisuian[]; +extern const u32 gMonShinyPalette_DecidueyeHisuian[]; #endif extern const u32 gMonShinyPalette_PikachuCosplay[]; extern const u32 gMonShinyPalette_PikachuRockStar[]; @@ -4947,7 +4946,8 @@ extern const u32 gMonShinyPalette_UrshifuRapidStrikeStyle[]; extern const u32 gMonShinyPalette_ZarudeDada[]; extern const u32 gMonShinyPalette_CalyrexIceRider[]; extern const u32 gMonShinyPalette_CalyrexShadowRider[]; -//extern const u32 gMonShinyPalette_EnamorusTherian[]; +extern const u32 gMonShinyPalette_EnamorusTherian[]; +extern const u32 gMonShinyPalette_BasculegionFemale[]; #endif extern const u8 gMonIcon_QuestionMark[]; @@ -5747,9 +5747,9 @@ extern const u8 gMonIcon_Mimikyu[]; extern const u8 gMonIcon_Bruxish[]; extern const u8 gMonIcon_Drampa[]; extern const u8 gMonIcon_Dhelmise[]; -extern const u8 gMonIcon_Jangmoo[]; -extern const u8 gMonIcon_Hakamoo[]; -extern const u8 gMonIcon_Kommoo[]; +extern const u8 gMonIcon_JangmoO[]; +extern const u8 gMonIcon_HakamoO[]; +extern const u8 gMonIcon_KommoO[]; extern const u8 gMonIcon_TapuKoko[]; extern const u8 gMonIcon_TapuLele[]; extern const u8 gMonIcon_TapuBulu[]; @@ -5870,7 +5870,6 @@ extern const u8 gMonIcon_Wyrdeer[]; extern const u8 gMonIcon_Kleavor[]; extern const u8 gMonIcon_Ursaluna[]; extern const u8 gMonIcon_Basculegion[]; -extern const u8 gMonIcon_BasculegionF[]; extern const u8 gMonIcon_Sneasler[]; extern const u8 gMonIcon_Overqwil[]; extern const u8 gMonIcon_Enamorus[]; @@ -6168,6 +6167,7 @@ extern const u8 gMonIcon_ZarudeDada[]; extern const u8 gMonIcon_CalyrexIceRider[]; extern const u8 gMonIcon_CalyrexShadowRider[]; extern const u8 gMonIcon_EnamorusTherian[]; +extern const u8 gMonIcon_BasculegionFemale[]; #endif extern const u8 gMonIcon_Egg[]; @@ -6960,9 +6960,9 @@ extern const u8 gMonFootprint_Mimikyu[]; extern const u8 gMonFootprint_Bruxish[]; extern const u8 gMonFootprint_Drampa[]; extern const u8 gMonFootprint_Dhelmise[]; -extern const u8 gMonFootprint_Jangmo_o[]; -extern const u8 gMonFootprint_Hakamo_o[]; -extern const u8 gMonFootprint_Kommo_o[]; +extern const u8 gMonFootprint_JangmoO[]; +extern const u8 gMonFootprint_HakamoO[]; +extern const u8 gMonFootprint_KommoO[]; extern const u8 gMonFootprint_Tapu_Koko[]; extern const u8 gMonFootprint_Tapu_Lele[]; extern const u8 gMonFootprint_Tapu_Bulu[]; @@ -7997,6 +7997,12 @@ extern const u32 gItemIcon_RibbonSweet[]; extern const u32 gItemIconPalette_RibbonSweet[]; extern const u32 gItemIcon_Everstone[]; extern const u32 gItemIconPalette_Everstone[]; +extern const u32 gItemIcon_BlackAugurite[]; +extern const u32 gItemIconPalette_BlackAugurite[]; +extern const u32 gItemIcon_LinkingCord[]; +extern const u32 gItemIconPalette_LinkingCord[]; +extern const u32 gItemIcon_PeatBlock[]; +extern const u32 gItemIconPalette_PeatBlock[]; // Nectars extern const u32 gItemIcon_RedNectar[]; extern const u32 gItemIconPalette_RedNectar[]; @@ -8834,6 +8840,47 @@ extern const u32 gItemIcon_Gem[]; extern const u32 gItemIconPalette_Ruby[]; extern const u32 gItemIconPalette_Sapphire[]; +// GEN IX ITEMS +extern const u32 gItemIcon_AbilityShield[]; +extern const u32 gItemIconPalette_AbilityShield[]; +extern const u32 gItemIcon_AuspiciousArmor[]; +extern const u32 gItemIconPalette_AuspiciousArmor[]; +extern const u32 gItemIcon_BigBambooShoot[]; +extern const u32 gItemIconPalette_BigBambooShoot[]; +extern const u32 gItemIcon_BoosterEnergy[]; +extern const u32 gItemIconPalette_BoosterEnergy[]; +extern const u32 gItemIcon_CovertCloak[]; +extern const u32 gItemIconPalette_CovertCloak[]; +extern const u32 gItemIcon_GimmighoulCoin[]; +extern const u32 gItemIconPalette_GimmighoulCoin[]; +extern const u32 gItemIcon_LeadersCrest[]; +extern const u32 gItemIconPalette_LeadersCrest[]; +extern const u32 gItemIcon_LoadedDice[]; +extern const u32 gItemIconPalette_LoadedDice[]; +extern const u32 gItemIcon_MaliciousArmor[]; +extern const u32 gItemIconPalette_MaliciousArmor[]; +extern const u32 gItemIcon_MirrorHerb[]; +extern const u32 gItemIconPalette_MirrorHerb[]; +extern const u32 gItemIcon_PunchingGlove[]; +extern const u32 gItemIconPalette_PunchingGlove[]; +extern const u32 gItemIcon_ScrollOfDarkness[]; +extern const u32 gItemIconPalette_ScrollOfDarkness[]; +extern const u32 gItemIcon_ScrollOfWaters[]; +extern const u32 gItemIconPalette_ScrollOfWaters[]; +extern const u32 gItemIcon_TeraOrb[]; +extern const u32 gItemIconPalette_TeraOrb[]; +extern const u32 gItemIcon_TinyBambooShoot[]; +extern const u32 gItemIconPalette_TinyBambooShoot[]; + +extern const u32 gItemIcon_AdamantCrystal[]; +extern const u32 gItemIconPalette_AdamantCrystal[]; +extern const u32 gItemIcon_GriseousCore[]; +extern const u32 gItemIconPalette_GriseousCore[]; +extern const u32 gItemIcon_LustrousGlobe[]; +extern const u32 gItemIconPalette_LustrousGlobe[]; +extern const u32 gItemIcon_BerserkGene[]; +extern const u32 gItemIconPalette_BerserkGene[]; + extern const u32 gItemIcon_ReturnToFieldArrow[]; extern const u32 gItemIconPalette_ReturnToFieldArrow[]; @@ -10359,10 +10406,10 @@ extern const u32 gUsePokeblockCondition_Gfx[]; extern const u16 gUnionRoomChat_Background_Pal[]; extern const u32 gUnionRoomChat_Background_Gfx[]; extern const u32 gUnionRoomChat_Background_Tilemap[]; -extern const u16 gUnionRoomChat_Window_Pal1[]; -extern const u16 gUnionRoomChat_Window_Pal2[]; -extern const u32 gUnionRoomChat_Border_Gfx[]; -extern const u32 gUnionRoomChat_Border_Tilemap[]; +extern const u16 gUnionRoomChat_InputText_Pal[]; +extern const u16 gUnionRoomChat_Keyboard_Pal[]; +extern const u32 gUnionRoomChat_Keyboard_Gfx[]; +extern const u32 gUnionRoomChat_Keyboard_Tilemap[]; extern const u32 gUnionRoomChat_RButtonLabels[]; // Use Pokeblock diff --git a/include/item.h b/include/item.h index cf2209e0e67f..a99782f80376 100644 --- a/include/item.h +++ b/include/item.h @@ -19,7 +19,6 @@ struct Item u8 type; ItemUseFunc fieldUseFunc; u8 battleUsage; - ItemUseFunc battleUseFunc; u8 secondaryId; u8 flingPower; }; @@ -72,8 +71,9 @@ u8 ItemId_GetPocket(u16 itemId); u8 ItemId_GetType(u16 itemId); ItemUseFunc ItemId_GetFieldFunc(u16 itemId); u8 ItemId_GetBattleUsage(u16 itemId); -ItemUseFunc ItemId_GetBattleFunc(u16 itemId); u8 ItemId_GetSecondaryId(u16 itemId); u8 ItemId_GetFlingPower(u16 itemId); +u32 GetItemStatus1Mask(u16 itemId); +u32 GetItemStatus2Mask(u16 itemId); #endif // GUARD_ITEM_H diff --git a/include/item_use.h b/include/item_use.h index 812e984ec8b9..afa87c69732c 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -30,12 +30,9 @@ void ItemUseOutOfBattle_FormChange(u8); void ItemUseOutOfBattle_FormChange_ConsumedOnUse(u8); void ItemUseOutOfBattle_Honey(u8); void ItemUseOutOfBattle_CannotUse(u8); -void ItemUseInBattle_PokeBall(u8); -void ItemUseInBattle_StatIncrease(u8); -void ItemUseInBattle_Medicine(u8); -void ItemUseInBattle_PPRecovery(u8); -void ItemUseInBattle_Escape(u8); -void ItemUseInBattle_EnigmaBerry(u8); +void ItemUseInBattle_BagMenu(u8 taskId); +void ItemUseInBattle_PartyMenu(u8 taskId); +void ItemUseInBattle_PartyMenuChooseMove(u8 taskId); void Task_UseDigEscapeRopeOnField(u8 taskId); u8 CanUseDigOrEscapeRopeOnCurMap(void); u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); diff --git a/include/money.h b/include/money.h index e7a8379787ce..211f9caa2ec6 100644 --- a/include/money.h +++ b/include/money.h @@ -1,6 +1,8 @@ #ifndef GUARD_MONEY_H #define GUARD_MONEY_H +#define MAX_MONEY 999999 + u32 GetMoney(u32 *moneyPtr); void SetMoney(u32 *moneyPtr, u32 newValue); bool8 IsEnoughMoney(u32 *moneyPtr, u32 cost); diff --git a/include/palette.h b/include/palette.h index 29723ef6c894..d23a658b4a78 100644 --- a/include/palette.h +++ b/include/palette.h @@ -6,8 +6,7 @@ #define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade #define gPaletteFade_submode (gPaletteFade.multipurpose2) // fast fade -#define PLTT_BUFFER_SIZE 0x200 -#define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2) +#define PLTT_BUFFER_SIZE (PLTT_SIZE / sizeof(u16)) #define PALETTE_FADE_STATUS_DELAY 2 #define PALETTE_FADE_STATUS_ACTIVE 1 diff --git a/include/party_menu.h b/include/party_menu.h index afb320e18c6c..31e591074844 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -48,6 +48,8 @@ void LoadHeldItemIcons(void); void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); void LoadPartyMenuAilmentGfx(void); void CB2_ShowPartyMenuForItemUse(void); +void ItemUseCB_BattleScript(u8 taskId, TaskFunc task); +void ItemUseCB_BattleChooseMove(u8 taskId, TaskFunc task); void ItemUseCB_Medicine(u8 taskId, TaskFunc task); void ItemUseCB_AbilityCapsule(u8 taskId, TaskFunc task); void ItemUseCB_AbilityPatch(u8 taskId, TaskFunc task); @@ -64,6 +66,7 @@ void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task); void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task); void ItemUseCB_FormChange(u8 taskId, TaskFunc task); void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task); +const u8* GetItemEffect(u16 item); u8 GetItemEffectType(u16 item); void CB2_PartyMenuFromStartMenu(void); void CB2_ChooseMonToGiveItem(void); diff --git a/include/pokemon.h b/include/pokemon.h index 05b9d1ac9a29..2c32054c59eb 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -2,6 +2,7 @@ #define GUARD_POKEMON_H #include "sprite.h" +#include "constants/items.h" #include "constants/region_map_sections.h" #include "constants/map_groups.h" @@ -75,7 +76,7 @@ enum { MON_DATA_SPATK, MON_DATA_SPDEF, MON_DATA_MAIL, - MON_DATA_SPECIES2, + MON_DATA_SPECIES_OR_EGG, MON_DATA_IVS, MON_DATA_CHAMPION_RIBBON, MON_DATA_WINNING_RIBBON, @@ -90,7 +91,7 @@ enum { MON_DATA_EARTH_RIBBON, MON_DATA_WORLD_RIBBON, MON_DATA_UNUSED_RIBBONS, - MON_DATA_EVENT_LEGAL, + MON_DATA_MODERN_FATEFUL_ENCOUNTER, MON_DATA_KNOWN_MOVES, MON_DATA_RIBBON_COUNT, MON_DATA_RIBBONS, @@ -153,27 +154,34 @@ struct PokemonSubstruct3 /* 0x07 */ u32 isEgg:1; /* 0x07 */ u32 unused2:1; - /* 0x08 */ u32 coolRibbon:3; - /* 0x08 */ u32 beautyRibbon:3; - /* 0x08 */ u32 cuteRibbon:3; - /* 0x09 */ u32 smartRibbon:3; - /* 0x09 */ u32 toughRibbon:3; - /* 0x09 */ u32 championRibbon:1; - /* 0x0A */ u32 winningRibbon:1; - /* 0x0A */ u32 victoryRibbon:1; - /* 0x0A */ u32 artistRibbon:1; - /* 0x0A */ u32 effortRibbon:1; - /* 0x0A */ u32 marineRibbon:1; // never distributed - /* 0x0A */ u32 landRibbon:1; // never distributed - /* 0x0A */ u32 skyRibbon:1; // never distributed - /* 0x0A */ u32 countryRibbon:1; // distributed during Pokémon Festa '04 and '05 to tournament winners - /* 0x0B */ u32 nationalRibbon:1; - /* 0x0B */ u32 earthRibbon:1; - /* 0x0B */ u32 worldRibbon:1; // distributed during Pokémon Festa '04 and '05 to tournament winners - /* 0x0B */ u32 unusedRibbons:2; // discarded in Gen 4 + /* 0x08 */ u32 coolRibbon:3; // Stores the highest contest rank achieved in the Cool category. + /* 0x08 */ u32 beautyRibbon:3; // Stores the highest contest rank achieved in the Beauty category. + /* 0x08 */ u32 cuteRibbon:3; // Stores the highest contest rank achieved in the Cute category. + /* 0x09 */ u32 smartRibbon:3; // Stores the highest contest rank achieved in the Smart category. + /* 0x09 */ u32 toughRibbon:3; // Stores the highest contest rank achieved in the Tough category. + /* 0x09 */ u32 championRibbon:1; // Given when defeating the Champion. Because both RSE and FRLG use it, later generations don't specify from which region it comes from. + /* 0x0A */ u32 winningRibbon:1; // Given at the Battle Tower's Level 50 challenge by winning a set of seven battles that extends the current streak to 56 or more. + /* 0x0A */ u32 victoryRibbon:1; // Given at the Battle Tower's Level 100 challenge by winning a set of seven battles that extends the current streak to 56 or more. + /* 0x0A */ u32 artistRibbon:1; // Given at the Contest Hall by winning a Master Rank contest with at least 800 points, and agreeing to have the Pokémon's portrait placed in the museum after being offered. + /* 0x0A */ u32 effortRibbon:1; // Given at Slateport's market to Pokémon with maximum EVs. + /* 0x0A */ u32 marineRibbon:1; // Never distributed. + /* 0x0A */ u32 landRibbon:1; // Never distributed. + /* 0x0A */ u32 skyRibbon:1; // Never distributed. + /* 0x0A */ u32 countryRibbon:1; // Distributed during Pokémon Festa '04 and '05 to tournament winners. + /* 0x0B */ u32 nationalRibbon:1; // Given to purified Shadow Pokémon in Colosseum/XD. + /* 0x0B */ u32 earthRibbon:1; // Given to teams that have beaten Mt. Battle's 100-battle challenge in Colosseum/XD. + /* 0x0B */ u32 worldRibbon:1; // Distributed during Pokémon Festa '04 and '05 to tournament winners. + /* 0x0B */ u32 unusedRibbons:2; // Discarded in Gen 4. /* 0x0B */ u32 abilityNum:2; - /* 0x0B */ u32 eventLegal:1; // controls Mew & Deoxys obedience; if set, Pokémon is a fateful encounter in Gen 4+; set for in-game event island legendaries, some distributed events, and Pokémon from XD: Gale of Darkness. -}; /* size = 12 */ + + // The functionality of this bit changed in FRLG: + // In RS, this bit does nothing, is never set, & is accidentally unset when hatching Eggs. + // In FRLG & Emerald, this controls Mew & Deoxys obedience and whether they can be traded. + // If set, a Pokémon is a fateful encounter in FRLG's summary screen if hatched & for all Pokémon in Gen 4+ summary screens. + // Set for in-game event island legendaries, events distributed after a certain date, & Pokémon from XD: Gale of Darkness. + // Not to be confused with METLOC_FATEFUL_ENCOUNTER. + /* 0x0B */ u32 modernFatefulEncounter:1; +}; // Number of bytes in the largest Pokémon substruct. // They are assumed to be the same size, and will be padded to @@ -338,8 +346,7 @@ struct BattleMove s8 priority; u32 flags; u8 split; - u8 argument; - u8 zMovePower; + u16 argument; u8 zMoveEffect; }; @@ -395,7 +402,7 @@ extern const struct BattleMove gBattleMoves[]; extern const u8 gFacilityClassToPicIndex[]; extern const u8 gFacilityClassToTrainerClass[]; extern const struct SpeciesInfo gSpeciesInfo[]; -extern const u8 *const gItemEffectTable[]; +extern const u8 *const gItemEffectTable[ITEMS_COUNT]; extern const u32 gExperienceTables[][MAX_LEVEL + 1]; extern const struct LevelUpMove *const gLevelUpLearnsets[]; extern const u16 *const gTeachableLearnsets[]; @@ -407,6 +414,7 @@ extern const u16 gUnionRoomFacilityClasses[]; extern const struct SpriteTemplate gBattlerSpriteTemplates[]; extern const s8 gNatureStatTable[][5]; extern const u16 *const gFormSpeciesIdTables[NUM_SPECIES]; +extern const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES]; extern const u32 sExpCandyExperienceTable[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); @@ -426,16 +434,16 @@ void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPok void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId); void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId); void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest); -void CreateEventLegalMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId); bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId); u16 GetUnionRoomTrainerPic(void); u16 GetUnionRoomTrainerClass(void); -void CreateEventLegalEnemyMon(void); +void CreateEnemyEventMon(void); void CalculateMonStats(struct Pokemon *mon); void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest); u8 GetLevelFromMonExp(struct Pokemon *mon); u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon); u16 GiveMoveToMon(struct Pokemon *mon, u16 move); +u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot); void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot); @@ -559,10 +567,12 @@ u8 *MonSpritesGfxManager_GetSpritePtr(u8 managerId, u8 spriteNum); u16 GetFormSpeciesId(u16 speciesId, u8 formId); u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId); u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg); -u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg); +u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 arg); +bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method); u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove); bool32 ShouldShowFemaleDifferences(u16 species, u32 personality); -void TryToSetBattleFormChangeMoves(struct Pokemon *mon); +bool32 TryFormChange(u32 monId, u32 side, u16 method); +void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method); u32 GetMonFriendshipScore(struct Pokemon *pokemon); void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality); diff --git a/include/random.h b/include/random.h index 6bf61de6c6e6..e7c2a3e284fb 100644 --- a/include/random.h +++ b/include/random.h @@ -20,4 +20,94 @@ u16 Random2(void); void SeedRng(u16 seed); void SeedRng2(u16 seed); +/* Structured random number generator. + * Instead of the caller converting bits from Random() to a meaningful + * value, the caller provides metadata that is used to return the + * meaningful value directly. This allows code to interpret the random + * call, for example, battle tests know what the domain of a random call + * is, and can exhaustively test it. + * + * RandomTag identifies the purpose of the value. + * + * RandomUniform(tag, lo, hi) returns a number from lo to hi inclusive + * with uniform probability. + * + * RandomElement(tag, array) returns an element in array with uniform + * probability. The array must be known at compile-time (e.g. a global + * const array). + * + * RandomPercentage(tag, t) returns FALSE with probability (1-t)/100, + * and TRUE with probability t/100. + * + * RandomWeighted(tag, w0, w1, ... wN) returns a number from 0 to N + * inclusive. The return value is proportional to the weights, e.g. + * RandomWeighted(..., 1, 1) returns 50% 0s and 50% 1s. + * RandomWeighted(..., 2, 1) returns 2/3 0s and 1/3 1s. */ + +enum RandomTag +{ + RNG_NONE, + RNG_ACCURACY, + RNG_CONFUSION, + RNG_CRITICAL_HIT, + RNG_CUTE_CHARM, + RNG_DAMAGE_MODIFIER, + RNG_DIRE_CLAW, + RNG_FLAME_BODY, + RNG_FORCE_RANDOM_SWITCH, + RNG_FROZEN, + RNG_HOLD_EFFECT_FLINCH, + RNG_INFATUATION, + RNG_PARALYSIS, + RNG_POISON_POINT, + RNG_RAMPAGE_TURNS, + RNG_SECONDARY_EFFECT, + RNG_SLEEP_TURNS, + RNG_SPEED_TIE, + RNG_STATIC, + RNG_STENCH, + RNG_TRI_ATTACK, +}; + +#define RandomWeighted(tag, ...) \ + ({ \ + const u8 weights[] = { __VA_ARGS__ }; \ + u32 sum, i; \ + for (i = 0, sum = 0; i < ARRAY_COUNT(weights); i++) \ + sum += weights[i]; \ + RandomWeightedArray(tag, sum, ARRAY_COUNT(weights), weights); \ + }) + +#define RandomPercentage(tag, t) \ + ({ \ + u32 r; \ + if (t <= 0) \ + { \ + r = FALSE; \ + } \ + else if (t >= 100) \ + { \ + r = TRUE; \ + } \ + else \ + { \ + const u8 weights[] = { 100 - t, t }; \ + r = RandomWeightedArray(tag, 100, ARRAY_COUNT(weights), weights); \ + } \ + r; \ + }) + +#define RandomElement(tag, array) \ + ({ \ + *(typeof((array)[0]) *)RandomElementArray(tag, array, sizeof((array)[0]), ARRAY_COUNT(array)); \ + }) + +u32 RandomUniform(enum RandomTag, u32 lo, u32 hi); +u32 RandomWeightedArray(enum RandomTag, u32 sum, u32 n, const u8 *weights); +const void *RandomElementArray(enum RandomTag, const void *array, size_t size, size_t count); + +u32 RandomUniformDefault(enum RandomTag, u32 lo, u32 hi); +u32 RandomWeightedArrayDefault(enum RandomTag, u32 sum, u32 n, const u8 *weights); +const void *RandomElementArrayDefault(enum RandomTag, const void *array, size_t size, size_t count); + #endif // GUARD_RANDOM_H diff --git a/include/recorded_battle.h b/include/recorded_battle.h index fbe14a656917..02bbe8fc3f86 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -44,6 +44,9 @@ enum RECORDED_MOVE_TARGET, RECORDED_PARTY_INDEX, RECORDED_BATTLE_PALACE_ACTION, + RECORDED_ITEM_ID, + RECORDED_ITEM_TARGET, + RECORDED_ITEM_MOVE, }; extern u32 gRecordedBattleRngSeed; diff --git a/include/strings.h b/include/strings.h index 959bb8c22d18..4019dee0b147 100644 --- a/include/strings.h +++ b/include/strings.h @@ -475,6 +475,7 @@ extern const u8 gText_EscapeFromHere[]; extern const u8 gText_PkmnCuredOfPoison[]; extern const u8 gText_PkmnWokeUp2[]; extern const u8 gText_PkmnBurnHealed[]; +extern const u8 gText_PkmnFrostbiteHealed[]; extern const u8 gText_PkmnThawedOut[]; extern const u8 gText_PkmnCuredOfParalysis[]; extern const u8 gText_PkmnGotOverInfatuation[]; @@ -1025,6 +1026,8 @@ extern const u8 gText_ThrowInPremierBall[]; extern const u8 gText_ShopBuy[]; extern const u8 gText_ShopSell[]; extern const u8 gText_ShopQuit[]; +extern const u8 gText_ThatItemIsSoldOut[]; +extern const u8 gText_SoldOut[]; extern const u8 gText_OhABite[]; extern const u8 gText_PokemonOnHook[]; diff --git a/include/test_runner.h b/include/test_runner.h index 2fc0a55e3143..27b0d597776d 100644 --- a/include/test_runner.h +++ b/include/test_runner.h @@ -3,6 +3,9 @@ extern const bool8 gTestRunnerEnabled; extern const bool8 gTestRunnerHeadless; + +#if TESTING + extern const bool8 gTestRunnerSkipIsFail; void TestRunner_Battle_RecordAbilityPopUp(u32 battlerId, u32 ability); @@ -12,6 +15,19 @@ void TestRunner_Battle_RecordMessage(const u8 *message); void TestRunner_Battle_RecordStatus1(u32 battlerId, u32 status1); void TestRunner_Battle_AfterLastTurn(void); -void BattleTest_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType); +void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType); + +#else + +#define TestRunner_Battle_RecordAbilityPopUp(...) (void)0 +#define TestRunner_Battle_RecordAnimation(...) (void)0 +#define TestRunner_Battle_RecordHP(...) (void)0 +#define TestRunner_Battle_RecordMessage(...) (void)0 +#define TestRunner_Battle_RecordStatus1(...) (void)0 +#define TestRunner_Battle_AfterLastTurn(...) (void)0 + +#define TestRunner_Battle_CheckBattleRecordActionType(...) (void)0 + +#endif #endif diff --git a/include/trade.h b/include/trade.h index d63749653a09..6b621038fccd 100644 --- a/include/trade.h +++ b/include/trade.h @@ -12,8 +12,8 @@ extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate; s32 GetGameProgressForLinkTrade(void); void CB2_StartCreateTradeMenu(void); void CB2_LinkTrade(void); -int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isEventLegal); -int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isEventLegal); +int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isModernFatefulEncounter); +int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isModernFatefulEncounter); int CanSpinTradeMon(struct Pokemon *, u16); void InitTradeSequenceBgGpuRegs(void); void LinkTradeDrawWindow(void); diff --git a/make_tools.mk b/make_tools.mk index 5a5291b77b5c..c2c5a800cf0b 100644 --- a/make_tools.mk +++ b/make_tools.mk @@ -1,5 +1,6 @@ MAKEFLAGS += --no-print-directory +# Inclusive list. If you don't want a tool to be built, don't add it here. TOOLDIRS := tools/aif2pcm tools/bin2c tools/gbafix tools/gbagfx tools/jsonproc tools/mapjson tools/mid2agb tools/preproc tools/ramscrgen tools/rsfont tools/scaninc .PHONY: all $(TOOLDIRS) diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index 7714cd00ec71..618c610e6a6e 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -1126,9 +1126,9 @@ gCryTable:: cry Cry_Bruxish cry Cry_Drampa cry Cry_Dhelmise - cry Cry_Jangmoo - cry Cry_Hakamoo - cry Cry_Kommoo + cry Cry_JangmoO + cry Cry_HakamoO + cry Cry_KommoO cry Cry_TapuKoko cry Cry_TapuLele cry Cry_TapuBulu @@ -1334,13 +1334,13 @@ gCryTable:: cry Cry_Glastrier cry Cry_Spectrier cry Cry_Calyrex - cry Cry_Unown //Cry_Wyrdeer - cry Cry_Unown //Cry_Kleavor - cry Cry_Unown //Cry_Ursaluna - cry Cry_Unown //Cry_Basculegion - cry Cry_Unown //Cry_Sneasler - cry Cry_Unown //Cry_Overqwil - cry Cry_Unown //Cry_Enamorus + cry Cry_Wyrdeer + cry Cry_Kleavor + cry Cry_Ursaluna + cry Cry_Basculegion + cry Cry_Sneasler + cry Cry_Overqwil + cry Cry_Enamorus .else cry Cry_Unown cry Cry_Unown @@ -1749,7 +1749,7 @@ gCryTable:: cry Cry_TornadusTherian cry Cry_ThundurusTherian cry Cry_LandorusTherian - cry Cry_Bulbasaur //Cry_EnamorusTherian + cry Cry_EnamorusTherian @ Kyurem cry Cry_KyuremWhite cry Cry_KyuremBlack @@ -3248,9 +3248,9 @@ gCryTable_Reverse:: cry_reverse Cry_Bruxish cry_reverse Cry_Drampa cry_reverse Cry_Dhelmise - cry_reverse Cry_Jangmoo - cry_reverse Cry_Hakamoo - cry_reverse Cry_Kommoo + cry_reverse Cry_JangmoO + cry_reverse Cry_HakamoO + cry_reverse Cry_KommoO cry_reverse Cry_TapuKoko cry_reverse Cry_TapuLele cry_reverse Cry_TapuBulu @@ -3456,13 +3456,13 @@ gCryTable_Reverse:: cry_reverse Cry_Glastrier cry_reverse Cry_Spectrier cry_reverse Cry_Calyrex - cry_reverse Cry_Unown //Cry_Wyrdeer - cry_reverse Cry_Unown //Cry_Kleavor - cry_reverse Cry_Unown //Cry_Ursaluna - cry_reverse Cry_Unown //Cry_Basculegion - cry_reverse Cry_Unown //Cry_Sneasler - cry_reverse Cry_Unown //Cry_Overqwil - cry_reverse Cry_Unown //Cry_Enamorus + cry_reverse Cry_Wyrdeer + cry_reverse Cry_Kleavor + cry_reverse Cry_Ursaluna + cry_reverse Cry_Basculegion + cry_reverse Cry_Sneasler + cry_reverse Cry_Overqwil + cry_reverse Cry_Enamorus .else cry_reverse Cry_Unown cry_reverse Cry_Unown @@ -3862,7 +3862,7 @@ gCryTable_Reverse:: cry_reverse Cry_TornadusTherian cry_reverse Cry_ThundurusTherian cry_reverse Cry_LandorusTherian - cry_reverse Cry_Bulbasaur //Cry_EnamorusTherian + cry_reverse Cry_EnamorusTherian @ Kyurem cry_reverse Cry_KyuremWhite cry_reverse Cry_KyuremBlack diff --git a/sound/direct_sound_data.inc b/sound/direct_sound_data.inc index fb4c6b44f6aa..3020a8f1a5a9 100644 --- a/sound/direct_sound_data.inc +++ b/sound/direct_sound_data.inc @@ -3518,15 +3518,15 @@ Cry_Dhelmise:: .incbin "sound/direct_sound_samples/cries/dhelmise.bin" .align 2 -Cry_Jangmoo:: +Cry_JangmoO:: .incbin "sound/direct_sound_samples/cries/jangmo_o.bin" .align 2 -Cry_Hakamoo:: +Cry_HakamoO:: .incbin "sound/direct_sound_samples/cries/hakamo_o.bin" .align 2 -Cry_Kommoo:: +Cry_KommoO:: .incbin "sound/direct_sound_samples/cries/kommo_o.bin" .align 2 @@ -3986,7 +3986,7 @@ Cry_Spectrier:: .align 2 Cry_Calyrex:: .incbin "sound/direct_sound_samples/cries/calyrex.bin" -/* + .align 2 Cry_Wyrdeer:: .incbin "sound/direct_sound_samples/cries/wyrdeer.bin" @@ -4014,7 +4014,7 @@ Cry_Overqwil:: .align 2 Cry_Enamorus:: .incbin "sound/direct_sound_samples/cries/enamorus.bin" -*/ + .endif .align 2 @@ -4246,6 +4246,10 @@ Cry_ThundurusTherian:: Cry_LandorusTherian:: .incbin "sound/direct_sound_samples/cries/landorus_therian.bin" + .align 2 +Cry_EnamorusTherian:: + .incbin "sound/direct_sound_samples/cries/enamorus_therian.bin" + .align 2 Cry_KyuremWhite:: .incbin "sound/direct_sound_samples/cries/kyurem_white.bin" @@ -4360,11 +4364,6 @@ Cry_CalyrexIceRider:: Cry_CalyrexShadowRider:: .incbin "sound/direct_sound_samples/cries/calyrex_shadow_rider.bin" -/* - .align 2 -Cry_EnamorusTherian:: - .incbin "sound/direct_sound_samples/cries/enamorus_therian.bin" -*/ .endif .align 2 diff --git a/sound/direct_sound_samples/cries/basculegion.aif b/sound/direct_sound_samples/cries/basculegion.aif new file mode 100644 index 000000000000..a1405ee8d737 Binary files /dev/null and b/sound/direct_sound_samples/cries/basculegion.aif differ diff --git a/sound/direct_sound_samples/cries/enamorus.aif b/sound/direct_sound_samples/cries/enamorus.aif new file mode 100644 index 000000000000..40957d49da40 Binary files /dev/null and b/sound/direct_sound_samples/cries/enamorus.aif differ diff --git a/sound/direct_sound_samples/cries/enamorus_therian.aif b/sound/direct_sound_samples/cries/enamorus_therian.aif new file mode 100644 index 000000000000..416f59abb176 Binary files /dev/null and b/sound/direct_sound_samples/cries/enamorus_therian.aif differ diff --git a/sound/direct_sound_samples/cries/kleavor.aif b/sound/direct_sound_samples/cries/kleavor.aif new file mode 100644 index 000000000000..1052cabd3a57 Binary files /dev/null and b/sound/direct_sound_samples/cries/kleavor.aif differ diff --git a/sound/direct_sound_samples/cries/overqwil.aif b/sound/direct_sound_samples/cries/overqwil.aif new file mode 100644 index 000000000000..56b3d97558e4 Binary files /dev/null and b/sound/direct_sound_samples/cries/overqwil.aif differ diff --git a/sound/direct_sound_samples/cries/sneasler.aif b/sound/direct_sound_samples/cries/sneasler.aif new file mode 100644 index 000000000000..fa2fbef2bc46 Binary files /dev/null and b/sound/direct_sound_samples/cries/sneasler.aif differ diff --git a/sound/direct_sound_samples/cries/ursaluna.aif b/sound/direct_sound_samples/cries/ursaluna.aif new file mode 100644 index 000000000000..7f054dc5cb43 Binary files /dev/null and b/sound/direct_sound_samples/cries/ursaluna.aif differ diff --git a/sound/direct_sound_samples/cries/wyrdeer.aif b/sound/direct_sound_samples/cries/wyrdeer.aif new file mode 100644 index 000000000000..4e932c758c64 Binary files /dev/null and b/sound/direct_sound_samples/cries/wyrdeer.aif differ diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 2646d669d549..97ae1f35ccc5 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -248,7 +248,7 @@ static void CopyBattlerDataToAIParty(u32 bPosition, u32 side) aiMon->species = bMon->species; aiMon->level = bMon->level; aiMon->status = bMon->status1; - aiMon->gender = GetGenderFromSpeciesAndPersonality(bMon->species, bMon->personality); + aiMon->gender = GetBattlerGender(battler); aiMon->isFainted = FALSE; aiMon->wasSentInBattle = TRUE; aiMon->switchInCount++; @@ -257,6 +257,8 @@ static void CopyBattlerDataToAIParty(u32 bPosition, u32 side) void Ai_InitPartyStruct(void) { u32 i; + bool32 isOmniscient = (AI_THINKING_STRUCT->aiFlags & AI_FLAG_OMNISCIENT); + struct Pokemon *mon; AI_PARTY->count[B_SIDE_PLAYER] = gPlayerPartyCount; AI_PARTY->count[B_SIDE_OPPONENT] = gEnemyPartyCount; @@ -278,6 +280,17 @@ void Ai_InitPartyStruct(void) { if (GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) AI_PARTY->mons[B_SIDE_PLAYER][i].isFainted = TRUE; + + if (isOmniscient) + { + u32 j; + mon = &gPlayerParty[i]; + AI_PARTY->mons[B_SIDE_PLAYER][i].item = GetMonData(mon, MON_DATA_HELD_ITEM); + AI_PARTY->mons[B_SIDE_PLAYER][i].heldEffect = ItemId_GetHoldEffect(AI_PARTY->mons[B_SIDE_PLAYER][i].item); + AI_PARTY->mons[B_SIDE_PLAYER][i].ability = GetMonAbility(mon); + for (j = 0; j < MAX_MON_MOVES; j++) + AI_PARTY->mons[B_SIDE_PLAYER][i].moves[j] = GetMonData(mon, MON_DATA_MOVE1 + j); + } } } @@ -354,7 +367,7 @@ void GetAiLogicData(void) for (battlerAtk = 0; battlerAtk < gBattlersCount; battlerAtk++) { if (!IsBattlerAlive(battlerAtk) - || !IsBattlerAIControlled(battlerAtk)) { + || !IsAiBattlerAware(battlerAtk)) { continue; } @@ -974,7 +987,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } break; case EFFECT_DREAM_EATER: - if (!(gBattleMons[battlerDef].status1 & STATUS1_SLEEP) || AI_DATA->abilities[battlerDef] == ABILITY_COMATOSE) + if (!AI_IsBattlerAsleepOrComatose(battlerDef)) score -= 8; else if (effectiveness == AI_EFFECTIVENESS_x0) score -= 10; @@ -1274,12 +1287,8 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 8; break; case EFFECT_CAPTIVATE: - { - u8 atkGender = GetGenderFromSpeciesAndPersonality(gBattleMons[battlerAtk].species, gBattleMons[battlerAtk].personality); - u8 defGender = GetGenderFromSpeciesAndPersonality(gBattleMons[battlerDef].species, gBattleMons[battlerDef].personality); - if (atkGender == MON_GENDERLESS || defGender == MON_GENDERLESS || atkGender == defGender) - score -= 10; - } + if (!AreBattlersOfOppositeGender(battlerAtk, battlerDef)) + score -= 10; break; // other case EFFECT_HAZE: @@ -1359,7 +1368,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_AURORA_VEIL: if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_AURORA_VEIL || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove) - || !(gBattleWeather & B_WEATHER_HAIL)) + || !(gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW))) score -= 10; break; case EFFECT_OHKO: @@ -1453,7 +1462,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_SNORE: case EFFECT_SLEEP_TALK: - if (IsWakeupTurn(battlerAtk) || (!(gBattleMons[battlerAtk].status1 & STATUS1_SLEEP) || AI_DATA->abilities[battlerAtk] != ABILITY_COMATOSE)) + if (IsWakeupTurn(battlerAtk) || !AI_IsBattlerAsleepOrComatose(battlerAtk)) score -= 10; // if mon will wake up, is not asleep, or is not comatose break; case EFFECT_MEAN_LOOK: @@ -1463,7 +1472,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_NIGHTMARE: if (gBattleMons[battlerDef].status2 & STATUS2_NIGHTMARE) score -= 10; - else if (!(gBattleMons[battlerDef].status1 & STATUS1_SLEEP) || AI_DATA->abilities[battlerDef] == ABILITY_COMATOSE) + else if (!AI_IsBattlerAsleepOrComatose(battlerDef)) score -= 8; else if (DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, AI_DATA->partnerMove)) score -= 10; @@ -1568,11 +1577,18 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_PRIMAL_ANY) || PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), AI_DATA->partnerMove)) score -= 8; + else if (gBattleWeather & B_WEATHER_SNOW) + score -= 2; // mainly to prevent looping between hail and snow + break; + case EFFECT_SNOWSCAPE: + if (gBattleWeather & (B_WEATHER_SNOW | B_WEATHER_PRIMAL_ANY) + || PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), AI_DATA->partnerMove)) + score -= 8; + else if (gBattleWeather & B_WEATHER_HAIL) + score -= 2; // mainly to prevent looping between hail and snow break; case EFFECT_ATTRACT: - if (!AI_CanBeInfatuated(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], - GetGenderFromSpeciesAndPersonality(gBattleMons[battlerAtk].species, gBattleMons[battlerAtk].personality), - GetGenderFromSpeciesAndPersonality(gBattleMons[battlerDef].species, gBattleMons[battlerDef].personality))) + if (!AI_CanBeInfatuated(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef])) score -= 10; break; case EFFECT_SAFEGUARD: @@ -1712,7 +1728,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 10; break; case EFFECT_REFRESH: - if (!(gBattleMons[battlerDef].status1 & (STATUS1_PSN_ANY | STATUS1_BURN | STATUS1_PARALYSIS))) + if (!(gBattleMons[battlerDef].status1 & (STATUS1_PSN_ANY | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_FROSTBITE))) score -= 10; break; case EFFECT_PSYCHO_SHIFT: @@ -1721,6 +1737,9 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) else if (gBattleMons[battlerAtk].status1 & STATUS1_BURN && !AI_CanBurn(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) score -= 10; + else if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && !AI_CanGiveFrostbite(battlerAtk, battlerDef, + AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) + score -= 10; else if (gBattleMons[battlerAtk].status1 & STATUS1_PARALYSIS && !AI_CanParalyze(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) score -= 10; else if (gBattleMons[battlerAtk].status1 & STATUS1_SLEEP && !AI_CanPutToSleep(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) @@ -2610,6 +2629,15 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (gBattleMons[battlerAtk].hp <= gBattleMons[battlerAtk].maxHP / 3) score -= 10; break;*/ + case EFFECT_REVIVAL_BLESSING: + if (GetFirstFaintedPartyIndex(battlerAtk) == PARTY_SIZE) + score -= 10; + else if (CanAIFaintTarget(battlerAtk, battlerDef, 0)) + score -= 10; + else if (CanTargetFaintAi(battlerDef, battlerAtk) + && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) + score -= 10; + break; case EFFECT_PLACEHOLDER: return 0; // cannot even select } // move effect checks @@ -2778,6 +2806,13 @@ static s16 AI_DoubleBattle(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) RETURN_SCORE_PLUS(2); // our partner benefits from hail } break; + case EFFECT_SNOWSCAPE: + if (IsBattlerAlive(battlerAtkPartner) + && ShouldSetSnow(battlerAtkPartner, atkPartnerAbility, atkPartnerHoldEffect)) + { + RETURN_SCORE_PLUS(2); // our partner benefits from snow + } + break; } // global move effect check @@ -3059,12 +3094,8 @@ static bool32 IsPinchBerryItemEffect(u16 holdEffect) case HOLD_EFFECT_SP_DEFENSE_UP: case HOLD_EFFECT_CRITICAL_UP: case HOLD_EFFECT_RANDOM_STAT_UP: - #ifdef HOLD_EFFECT_CUSTAP_BERRY case HOLD_EFFECT_CUSTAP_BERRY: - #endif - #ifdef HOLD_EFFECT_MICLE_BERRY case HOLD_EFFECT_MICLE_BERRY: - #endif return TRUE; } @@ -3121,7 +3152,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score++; // check thawing moves - if ((gBattleMons[battlerAtk].status1 & STATUS1_FREEZE) && TestMoveFlags(move, FLAG_THAW_USER)) + if ((gBattleMons[battlerAtk].status1 & (STATUS1_FREEZE | STATUS1_FROSTBITE)) && TestMoveFlags(move, FLAG_THAW_USER)) score += (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) ? 20 : 10; // check burn @@ -3143,6 +3174,25 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } } + // check frostbite + if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE) + { + switch (AI_DATA->abilities[battlerAtk]) + { + case ABILITY_GUTS: + break; + case ABILITY_NATURAL_CURE: + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING + && HasOnlyMovesWithSplit(battlerAtk, SPLIT_SPECIAL, TRUE)) + score = 90; // Force switch if all your attacking moves are special and you have Natural Cure. + break; + default: + if (IS_MOVE_SPECIAL(move) && gBattleMoves[move].effect != EFFECT_FACADE) + score -= 2; + break; + } + } + // attacker ability checks switch (AI_DATA->abilities[battlerAtk]) { @@ -3477,6 +3527,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_TOXIC: case EFFECT_POISON: + case EFFECT_BARB_BARRAGE: IncreasePoisonScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_LIGHT_SCREEN: @@ -3579,7 +3630,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_SUBSTITUTE: if (gStatuses3[battlerDef] & STATUS3_PERISH_SONG) score += 3; - if (gBattleMons[battlerDef].status1 & (STATUS1_BURN | STATUS1_PSN_ANY)) + if (gBattleMons[battlerDef].status1 & (STATUS1_BURN | STATUS1_PSN_ANY | STATUS1_FROSTBITE)) score++; if (HasMoveEffect(battlerDef, EFFECT_SLEEP) || HasMoveEffect(battlerDef, EFFECT_TOXIC) @@ -3779,7 +3830,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_NIGHTMARE: if (AI_DATA->abilities[battlerDef] != ABILITY_MAGIC_GUARD && !(gBattleMons[battlerDef].status2 & STATUS2_NIGHTMARE) - && (AI_DATA->abilities[battlerDef] == ABILITY_COMATOSE || gBattleMons[battlerDef].status1 & STATUS1_SLEEP)) + && AI_IsBattlerAsleepOrComatose(battlerDef)) { score += 5; if (IsBattlerTrapped(battlerDef, TRUE)) @@ -3838,7 +3889,6 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) ProtectChecks(battlerAtk, battlerDef, move, predictedMove, &score); break; case MOVE_KINGS_SHIELD: - #if (defined SPECIES_AEGISLASH && defined SPECIES_AEGISLASH_BLADE) if (AI_DATA->abilities[battlerAtk] == ABILITY_STANCE_CHANGE //Special logic for Aegislash && gBattleMons[battlerAtk].species == SPECIES_AEGISLASH_BLADE && !IsBattlerIncapacitated(battlerDef, AI_DATA->abilities[battlerDef])) @@ -3846,7 +3896,6 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score += 3; break; } - #endif //fallthrough default: // protect ProtectChecks(battlerAtk, battlerDef, move, predictedMove, &score); @@ -3870,6 +3919,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_SPIKES: + case EFFECT_HIT_SET_ENTRY_HAZARD: case EFFECT_STEALTH_ROCK: case EFFECT_STICKY_WEB: case EFFECT_TOXIC_SPIKES: @@ -3925,6 +3975,22 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score += 2; } break; + case EFFECT_SNOWSCAPE: + if (ShouldSetSnow(battlerAtk, AI_DATA->abilities[battlerAtk], AI_DATA->holdEffects[battlerAtk])) + { + if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL)) + && ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL)) + score += 3; + + score++; + if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK) + score++; + if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) + || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) + || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) + score += 2; + } + break; case EFFECT_RAIN_DANCE: if (ShouldSetRain(battlerAtk, AI_DATA->abilities[battlerAtk], AI_DATA->holdEffects[battlerAtk])) { @@ -4367,6 +4433,8 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) IncreaseParalyzeScore(battlerAtk, battlerDef, move, &score); else if (gBattleMons[battlerAtk].status1 & STATUS1_SLEEP) IncreaseSleepScore(battlerAtk, battlerDef, move, &score); + else if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE) + IncreaseFrostbiteScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_GRUDGE: break; @@ -4514,7 +4582,6 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score += 3; break; case EFFECT_RELIC_SONG: - #if (defined SPECIES_MELOETTA && defined SPECIES_MELOETTA_PIROUETTE) if (!(gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED)) // Don't try to change form if it's transformed. { if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) @@ -4522,7 +4589,6 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) else if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_PIROUETTE && gBattleMons[battlerDef].spDefense < gBattleMons[battlerDef].defense) score += 3; // Change to Aria if can do more damage } - #endif break; case EFFECT_ELECTRIC_TERRAIN: case EFFECT_MISTY_TERRAIN: @@ -4757,7 +4823,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score += 2; break; case EFFECT_FACADE: - if (gBattleMons[battlerAtk].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)) + if (gBattleMons[battlerAtk].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON | STATUS1_FROSTBITE)) score++; break; case EFFECT_FOCUS_PUNCH: @@ -4793,6 +4859,10 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score++; } break; + case EFFECT_REVIVAL_BLESSING: + if (GetFirstFaintedPartyIndex(battlerAtk) != PARTY_SIZE) + score += 2; + break; //case EFFECT_EXTREME_EVOBOOST: // TODO //break; //case EFFECT_CLANGOROUS_SOUL: // TODO @@ -4904,8 +4974,10 @@ static s16 AI_SetupFirstTurn(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_SUNNY_DAY: case EFFECT_SANDSTORM: case EFFECT_HAIL: + case EFFECT_SNOWSCAPE: case EFFECT_GEOMANCY: case EFFECT_VICTORY_DANCE: + case EFFECT_HIT_SET_ENTRY_HAZARD: score += 2; break; default: @@ -5129,6 +5201,7 @@ static s16 AI_HPAware(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_SUNNY_DAY: case EFFECT_SANDSTORM: case EFFECT_HAIL: + case EFFECT_SNOWSCAPE: case EFFECT_RAIN_DANCE: score -= 2; break; diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 0ae1c8a9afb7..d7fd062ba212 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -10,6 +10,8 @@ #include "constants/hold_effects.h" #include "battle_setup.h" #include "data.h" +#include "item.h" +#include "party_menu.h" #include "pokemon.h" #include "random.h" #include "util.h" @@ -27,6 +29,15 @@ static bool32 AiExpectsToFaintPlayer(void); static bool32 AI_ShouldHeal(u32 healAmount); static bool32 AI_OpponentCanFaintAiWithMod(u32 healAmount); +static bool32 IsAceMon(u32 battlerId, u32 monPartyId) +{ + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && !(gBattleStruct->forcedSwitch & gBitTable[battlerId]) + && monPartyId == CalculateEnemyPartyCount()-1) + return TRUE; + return FALSE; +} + void GetAIPartyIndexes(u32 battlerId, s32 *firstId, s32 *lastId) { if (BATTLE_TWO_VS_ONE_OPPONENT && (battlerId & BIT_SIDE) == B_SIDE_OPPONENT) @@ -103,14 +114,13 @@ static bool8 ShouldSwitchIfWonderGuard(void) { if (GetMonData(&party[i], MON_DATA_HP) == 0) continue; - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE) + if (GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_NONE) continue; - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + if (GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_EGG) continue; if (i == gBattlerPartyIndexes[gActiveBattler]) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && i == (CalculateEnemyPartyCount()-1)) + if (IsAceMon(gActiveBattler, i)) continue; for (opposingBattler = GetBattlerAtPosition(opposingPosition), j = 0; j < MAX_MON_MOVES; j++) @@ -190,9 +200,8 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) if (GetMonData(&party[i], MON_DATA_HP) == 0) continue; - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE) - continue; - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG); + if (species == SPECIES_NONE || species == SPECIES_EGG) continue; if (i == gBattlerPartyIndexes[battlerIn1]) continue; @@ -202,16 +211,10 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && i == (CalculateEnemyPartyCount()-1)) + if (IsAceMon(gActiveBattler, i)) continue; - - species = GetMonData(&party[i], MON_DATA_SPECIES); - if (GetMonData(&party[i], MON_DATA_ABILITY_NUM) != 0) - monAbility = gSpeciesInfo[species].abilities[1]; - else - monAbility = gSpeciesInfo[species].abilities[0]; + monAbility = GetMonAbility(&party[i]); if (absorbingTypeAbility == monAbility && Random() & 1) { @@ -267,7 +270,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) ) switchMon = FALSE; - if (IsBattlerAlive(BATTLE_PARTNER(gActiveBattler)) + if (IsBattlerAlive(BATTLE_PARTNER(gActiveBattler)) && (gBattleMoves[AI_DATA->partnerMove].effect == EFFECT_MISTY_TERRAIN || gBattleMoves[AI_DATA->partnerMove].effect == EFFECT_ELECTRIC_TERRAIN) && IsBattlerGrounded(gActiveBattler) @@ -277,20 +280,19 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) if (*(gBattleStruct->AI_monToSwitchIntoId + BATTLE_PARTNER(gActiveBattler)) != PARTY_SIZE) //Partner is switching { GetAIPartyIndexes(gActiveBattler, &firstId, &lastId); - + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) party = gPlayerParty; - + for (i = firstId; i < lastId; i++) { - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && i == (CalculateEnemyPartyCount()-1)) - break; + if (IsAceMon(gActiveBattler, i)) + continue; //Look for mon in party that is able to be switched into and has ability that sets terrain if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG && i != gBattlerPartyIndexes[gActiveBattler] && i != gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)] && IsBattlerGrounded(gActiveBattler) @@ -305,7 +307,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) } } } - + //Check if Active Pokemon can KO opponent instead of switching //Will still fall asleep, but take out opposing Pokemon first if (AiExpectsToFaintPlayer()) @@ -328,7 +330,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) && AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE && AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE && !(gBattleMons[gActiveBattler].status2 & STATUS2_FORESIGHT) - && !(gStatuses3[gActiveBattler] & STATUS3_MIRACLE_EYED)) + && !(gStatuses3[gActiveBattler] & STATUS3_MIRACLE_EYED)) switchMon = FALSE; } @@ -343,7 +345,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) && gBattleMons[gActiveBattler].hp >= (gBattleMons[gActiveBattler].maxHP / 3) && (Random() % (moduloChance*chanceReducer)) == 0) switchMon = TRUE; - + //Cursed moduloChance = 2; //50% if (gBattleMons[gActiveBattler].status2 & STATUS2_CURSED @@ -370,7 +372,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) //Todo //Pass Wish Heal - + //Semi-Invulnerable if (gStatuses3[opposingBattler] & STATUS3_SEMI_INVULNERABLE) { @@ -416,7 +418,7 @@ static bool8 ShouldSwitchIfAbilityBenefit(void) switch(AI_DATA->abilities[gActiveBattler]) { case ABILITY_NATURAL_CURE: moduloChance = 4; //25% - //Attempt to cure bad ailment + //Attempt to cure bad ailment if (gBattleMons[gActiveBattler].status1 & (STATUS1_SLEEP | STATUS1_FREEZE | STATUS1_TOXIC_POISON) && GetMostSuitableMonToSwitchInto() != PARTY_SIZE) break; @@ -432,17 +434,17 @@ static bool8 ShouldSwitchIfAbilityBenefit(void) case ABILITY_REGENERATOR: moduloChance = 2; //50% //Don't switch if ailment - if (gBattleMons[gActiveBattler].status1 & STATUS1_ANY) - return FALSE; + if (gBattleMons[gActiveBattler].status1 & STATUS1_ANY) + return FALSE; if ((gBattleMons[gActiveBattler].hp <= ((gBattleMons[gActiveBattler].maxHP * 2) / 3)) && GetMostSuitableMonToSwitchInto() != PARTY_SIZE && Random() % (moduloChance*chanceReducer) == 0) break; - + return FALSE; default: - return FALSE; + return FALSE; } *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; @@ -564,9 +566,8 @@ static bool8 FindMonWithFlagsAndSuperEffective(u16 flags, u8 moduloPercent) if (GetMonData(&party[i], MON_DATA_HP) == 0) continue; - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE) - continue; - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG); + if (species == SPECIES_NONE || species == SPECIES_EGG) continue; if (i == gBattlerPartyIndexes[battlerIn1]) continue; @@ -576,16 +577,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u16 flags, u8 moduloPercent) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && i == (CalculateEnemyPartyCount()-1)) + if (IsAceMon(gActiveBattler, i)) continue; - - species = GetMonData(&party[i], MON_DATA_SPECIES); - if (GetMonData(&party[i], MON_DATA_ABILITY_NUM) != 0) - monAbility = gSpeciesInfo[species].abilities[1]; - else - monAbility = gSpeciesInfo[species].abilities[0]; + monAbility = GetMonAbility(&party[i]); CalcPartyMonTypeEffectivenessMultiplier(gLastLandedMoves[gActiveBattler], species, monAbility); if (gMoveResultFlags & flags) @@ -619,6 +614,7 @@ bool32 ShouldSwitch(void) struct Pokemon *party; s32 i; s32 availableToSwitch; + bool32 hasAceMon = FALSE; if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) return FALSE; @@ -656,9 +652,9 @@ bool32 ShouldSwitch(void) { if (GetMonData(&party[i], MON_DATA_HP) == 0) continue; - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE) + if (GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_NONE) continue; - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + if (GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_EGG) continue; if (i == gBattlerPartyIndexes[battlerIn1]) continue; @@ -668,15 +664,22 @@ bool32 ShouldSwitch(void) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && i == (CalculateEnemyPartyCount()-1)) + if (IsAceMon(gActiveBattler, i)) + { + hasAceMon = TRUE; continue; + } availableToSwitch++; } if (availableToSwitch == 0) - return FALSE; + { + if (hasAceMon) // If the ace mon is the only available mon, use it + availableToSwitch++; + else + return FALSE; + } //NOTE: The sequence of the below functions matter! Do not change unless you have carefully considered the outcome. //Since the order is sequencial, and some of these functions prompt switch to specific party members. @@ -694,14 +697,14 @@ bool32 ShouldSwitch(void) return TRUE; if (ShouldSwitchIfAbilityBenefit()) return TRUE; - + //Removing switch capabilites under specific conditions //These Functions prevent the "FindMonWithFlagsAndSuperEffective" from getting out of hand. if (HasSuperEffectiveMoveAgainstOpponents(FALSE)) return FALSE; if (AreStatsRaised()) return FALSE; - + //Default Function //Can prompt switch if AI has a pokemon in party that resists current opponent & has super effective move if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 2) @@ -758,8 +761,7 @@ void AI_TrySwitchOrUseItem(void) continue; if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && monToSwitchId == (CalculateEnemyPartyCount()-1)) + if (IsAceMon(gActiveBattler, monToSwitchId)) continue; break; @@ -916,7 +918,7 @@ u8 GetMostSuitableMonToSwitchInto(void) s32 lastId = 0; // + 1 struct Pokemon *party; s32 i, j, aliveCount = 0; - u8 invalidMons = 0; + u32 invalidMons = 0, aceMonId = PARTY_SIZE; if (*(gBattleStruct->monToSwitchIntoId + gActiveBattler) != PARTY_SIZE) return *(gBattleStruct->monToSwitchIntoId + gActiveBattler); @@ -952,18 +954,27 @@ u8 GetMostSuitableMonToSwitchInto(void) // Get invalid slots ids. for (i = firstId; i < lastId; i++) { - if (GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_NONE + u16 species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG); + if (species == SPECIES_NONE + || species == SPECIES_EGG || GetMonData(&party[i], MON_DATA_HP) == 0 || gBattlerPartyIndexes[battlerIn1] == i || gBattlerPartyIndexes[battlerIn2] == i || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2) - || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(gActiveBattler, opposingBattler)) // While not really invalid per say, not really wise to switch into this mon. - || ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON) - && i == (CalculateEnemyPartyCount() - 1))) //Save Ace Pokemon for last + || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(gActiveBattler, opposingBattler))) // While not really invalid per say, not really wise to switch into this mon.) + { + invalidMons |= gBitTable[i]; + } + else if (IsAceMon(gActiveBattler, i))// Save Ace Pokemon for last. + { + aceMonId = i; invalidMons |= gBitTable[i]; + } else + { aliveCount++; + } } bestMonId = GetBestMonBatonPass(party, firstId, lastId, invalidMons, aliveCount); @@ -978,23 +989,12 @@ u8 GetMostSuitableMonToSwitchInto(void) if (bestMonId != PARTY_SIZE) return bestMonId; - return PARTY_SIZE; -} + // If ace mon is the last available Pokemon and U-Turn/Volt Switch was used - switch to the mon. + if (aceMonId != PARTY_SIZE + && (gBattleMoves[gLastUsedMove].effect == EFFECT_HIT_ESCAPE || gBattleMoves[gLastUsedMove].effect == EFFECT_PARTING_SHOT)) + return aceMonId; -static u8 GetAI_ItemType(u16 itemId, const u8 *itemEffect) -{ - if (itemId == ITEM_FULL_RESTORE) - return AI_ITEM_FULL_RESTORE; - else if (itemEffect[4] & ITEM4_HEAL_HP) - return AI_ITEM_HEAL_HP; - else if (itemEffect[3] & ITEM3_STATUS_ALL) - return AI_ITEM_CURE_CONDITION; - else if ((itemEffect[0] & ITEM0_DIRE_HIT) || itemEffect[1]) - return AI_ITEM_X_STAT; - else if (itemEffect[3] & ITEM3_GUARD_SPEC) - return AI_ITEM_GUARD_SPEC; - else - return AI_ITEM_NOT_RECOGNIZABLE; + return PARTY_SIZE; } static bool32 AiExpectsToFaintPlayer(void) @@ -1042,8 +1042,8 @@ static bool8 ShouldUseItem(void) for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) { validMons++; } @@ -1056,96 +1056,70 @@ static bool8 ShouldUseItem(void) u8 paramOffset; u8 battlerSide; - if (i != 0 && validMons > (gBattleResources->battleHistory->itemsNo - i) + 1) - continue; item = gBattleResources->battleHistory->trainerItems[i]; if (item == ITEM_NONE) continue; - if (gItemEffectTable[item - ITEM_POTION] == NULL) + itemEffects = GetItemEffect(item); + if (itemEffects == NULL) continue; - if (item == ITEM_ENIGMA_BERRY_E_READER) - itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect; - else - itemEffects = gItemEffectTable[item - ITEM_POTION]; - - *(gBattleStruct->AI_itemType + gActiveBattler / 2) = GetAI_ItemType(item, itemEffects); - - switch (*(gBattleStruct->AI_itemType + gActiveBattler / 2)) + switch (ItemId_GetBattleUsage(item)) { - case AI_ITEM_FULL_RESTORE: + case EFFECT_ITEM_HEAL_AND_CURE_STATUS: shouldUse = AI_ShouldHeal(0); break; - case AI_ITEM_HEAL_HP: + case EFFECT_ITEM_RESTORE_HP: shouldUse = AI_ShouldHeal(itemEffects[GetItemEffectParamOffset(item, 4, 4)]); break; - case AI_ITEM_CURE_CONDITION: - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0; + case EFFECT_ITEM_CURE_STATUS: if (itemEffects[3] & ITEM3_SLEEP && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) - { - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_SLEEP); shouldUse = TRUE; - } if (itemEffects[3] & ITEM3_POISON && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON)) - { - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_POISON); shouldUse = TRUE; - } if (itemEffects[3] & ITEM3_BURN && gBattleMons[gActiveBattler].status1 & STATUS1_BURN) - { - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_BURN); shouldUse = TRUE; - } - if (itemEffects[3] & ITEM3_FREEZE && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE) - { - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_FREEZE); + if (itemEffects[3] & ITEM3_FREEZE && (gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE || gBattleMons[gActiveBattler].status1 & STATUS1_FROSTBITE)) shouldUse = TRUE; - } if (itemEffects[3] & ITEM3_PARALYSIS && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS) - { - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_PARALYSIS); shouldUse = TRUE; - } if (itemEffects[3] & ITEM3_CONFUSION && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION) - { - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_CONFUSION); shouldUse = TRUE; - } break; - case AI_ITEM_X_STAT: - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0; - if (gDisableStructs[gActiveBattler].isFirstTurn == 0) + case EFFECT_ITEM_INCREASE_STAT: + case EFFECT_ITEM_INCREASE_ALL_STATS: + if (!gDisableStructs[gActiveBattler].isFirstTurn + || AI_OpponentCanFaintAiWithMod(0)) + break; + shouldUse = TRUE; + break; + case EFFECT_ITEM_SET_FOCUS_ENERGY: + if (!gDisableStructs[gActiveBattler].isFirstTurn + || gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY + || AI_OpponentCanFaintAiWithMod(0)) break; - if (itemEffects[1] & ITEM1_X_ATTACK) - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_ATTACK); - if (itemEffects[1] & ITEM1_X_DEFENSE) - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_DEFEND); - if (itemEffects[1] & ITEM1_X_SPEED) - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_SPEED); - if (itemEffects[1] & ITEM1_X_SPATK) - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_SPATK); - if (itemEffects[1] & ITEM1_X_SPDEF) - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_SPDEF); - if (itemEffects[1] & ITEM1_X_ACCURACY) - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_ACCURACY); - if (itemEffects[0] & ITEM0_DIRE_HIT) - *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_DIRE_HIT); shouldUse = TRUE; break; - case AI_ITEM_GUARD_SPEC: + case EFFECT_ITEM_SET_MIST: battlerSide = GetBattlerSide(gActiveBattler); - if (gDisableStructs[gActiveBattler].isFirstTurn != 0 && gSideTimers[battlerSide].mistTimer == 0) + if (gDisableStructs[gActiveBattler].isFirstTurn && gSideTimers[battlerSide].mistTimer == 0) shouldUse = TRUE; break; - case AI_ITEM_NOT_RECOGNIZABLE: + case EFFECT_ITEM_REVIVE: + gBattleStruct->itemPartyIndex[gActiveBattler] = GetFirstFaintedPartyIndex(gActiveBattler); + if (gBattleStruct->itemPartyIndex[gActiveBattler] != PARTY_SIZE) // Revive if possible. + shouldUse = TRUE; + break; + default: return FALSE; } - if (shouldUse) { + // Set selected party ID to current battler if none chosen. + if (gBattleStruct->itemPartyIndex[gActiveBattler] == PARTY_SIZE) + gBattleStruct->itemPartyIndex[gActiveBattler] = gBattlerPartyIndexes[gActiveBattler]; BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0); - *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2) = item; + gBattleStruct->chosenItem[gActiveBattler] = item; gBattleResources->battleHistory->trainerItems[i] = 0; return shouldUse; } diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 22e88aac4c8e..7730604c8798 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -331,6 +331,7 @@ static const u16 sEncouragedEncoreEffects[] = EFFECT_SPIT_UP, EFFECT_SWALLOW, EFFECT_HAIL, + EFFECT_SNOWSCAPE, EFFECT_TORMENT, EFFECT_WILL_O_WISP, EFFECT_FOLLOW_ME, @@ -457,7 +458,7 @@ void RecordLastUsedMoveByTarget(void) RecordKnownMove(gBattlerTarget, gLastMoves[gBattlerTarget]); } -bool32 IsBattlerAIControlled(u32 battlerId) +bool32 BattlerHasAi(u32 battlerId) { switch (GetBattlerPosition(battlerId)) { @@ -473,6 +474,14 @@ bool32 IsBattlerAIControlled(u32 battlerId) } } +bool32 IsAiBattlerAware(u32 battlerId) +{ + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_OMNISCIENT) + return TRUE; + + return BattlerHasAi(battlerId); +} + void ClearBattlerMoveHistory(u8 battlerId) { memset(BATTLE_HISTORY->usedMoves[battlerId], 0, sizeof(BATTLE_HISTORY->usedMoves[battlerId])); @@ -529,7 +538,7 @@ void ClearBattlerItemEffectHistory(u8 battlerId) void SaveBattlerData(u8 battlerId) { - if (!IsBattlerAIControlled(battlerId)) + if (!BattlerHasAi(battlerId)) { u32 i; @@ -539,44 +548,92 @@ void SaveBattlerData(u8 battlerId) for (i = 0; i < 4; i++) AI_THINKING_STRUCT->saved[battlerId].moves[i] = gBattleMons[battlerId].moves[i]; } + // Save and restore types even for AI controlled battlers in case it gets changed during move evaluation process. + AI_THINKING_STRUCT->saved[battlerId].types[0] = gBattleMons[battlerId].type1; + AI_THINKING_STRUCT->saved[battlerId].types[1] = gBattleMons[battlerId].type2; +} + +static bool32 ShouldFailForIllusion(u16 illusionSpecies, u32 battlerId) +{ + u32 i, j; + + if (BATTLE_HISTORY->abilities[battlerId] == ABILITY_ILLUSION) + return FALSE; + + // Don't fall for Illusion if the mon used a move it cannot know. + for (i = 0; i < MAX_MON_MOVES; i++) + { + u16 move = BATTLE_HISTORY->usedMoves[battlerId][i]; + if (move == MOVE_NONE) + continue; + + for (j = 0; gLevelUpLearnsets[illusionSpecies][j].move != MOVE_UNAVAILABLE; j++) + { + if (gLevelUpLearnsets[illusionSpecies][j].move == move) + break; + } + // The used move is in the learnsets of the fake species. + if (gLevelUpLearnsets[illusionSpecies][j].move != MOVE_UNAVAILABLE) + continue; + + // The used move can be learned from Tm/Hm or Move Tutors. + if (CanLearnTeachableMove(illusionSpecies, move)) + continue; + + // 'Illegal move', AI won't fail for the illusion. + return FALSE; + } + + return TRUE; } void SetBattlerData(u8 battlerId) { - if (!IsBattlerAIControlled(battlerId)) + if (!BattlerHasAi(battlerId)) { - struct Pokemon *illusionMon; - u32 i; + u32 i, species, illusionSpecies, side; + side = GetBattlerSide(battlerId); + + // Simulate Illusion + species = gBattleMons[battlerId].species; + illusionSpecies = GetIllusionMonSpecies(battlerId); + if (illusionSpecies != SPECIES_NONE && ShouldFailForIllusion(illusionSpecies, battlerId)) + { + // If the battler's type has not been changed, AI assumes the types of the illusion mon. + if (gBattleMons[battlerId].type1 == gSpeciesInfo[species].types[0] + && gBattleMons[battlerId].type2 == gSpeciesInfo[species].types[1]) + { + gBattleMons[battlerId].type1 = gSpeciesInfo[illusionSpecies].types[0]; + gBattleMons[battlerId].type2 = gSpeciesInfo[illusionSpecies].types[1]; + } + species = illusionSpecies; + } // Use the known battler's ability. - if (BATTLE_HISTORY->abilities[battlerId] != ABILITY_NONE) - gBattleMons[battlerId].ability = BATTLE_HISTORY->abilities[battlerId]; + if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].ability != ABILITY_NONE) + gBattleMons[battlerId].ability = AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].ability; // Check if mon can only have one ability. - else if (gSpeciesInfo[gBattleMons[battlerId].species].abilities[1] == ABILITY_NONE - || gSpeciesInfo[gBattleMons[battlerId].species].abilities[1] == gSpeciesInfo[gBattleMons[battlerId].species].abilities[0]) - gBattleMons[battlerId].ability = gSpeciesInfo[gBattleMons[battlerId].species].abilities[0]; + else if (gSpeciesInfo[species].abilities[1] == ABILITY_NONE + || gSpeciesInfo[species].abilities[1] == gSpeciesInfo[species].abilities[0]) + gBattleMons[battlerId].ability = gSpeciesInfo[species].abilities[0]; // The ability is unknown. else gBattleMons[battlerId].ability = ABILITY_NONE; - if (BATTLE_HISTORY->itemEffects[battlerId] == 0) + if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].heldEffect == 0) gBattleMons[battlerId].item = 0; - for (i = 0; i < 4; i++) + for (i = 0; i < MAX_MON_MOVES; i++) { - if (BATTLE_HISTORY->usedMoves[battlerId][i] == 0) + if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].moves[i] == 0) gBattleMons[battlerId].moves[i] = 0; } - - // Simulate Illusion - if ((illusionMon = GetIllusionMonPtr(battlerId)) != NULL) - gBattleMons[battlerId].species = GetMonData(illusionMon, MON_DATA_SPECIES2); } } void RestoreBattlerData(u8 battlerId) { - if (!IsBattlerAIControlled(battlerId)) + if (!BattlerHasAi(battlerId)) { u32 i; @@ -586,6 +643,8 @@ void RestoreBattlerData(u8 battlerId) for (i = 0; i < 4; i++) gBattleMons[battlerId].moves[i] = AI_THINKING_STRUCT->saved[battlerId].moves[i]; } + gBattleMons[battlerId].type1 = AI_THINKING_STRUCT->saved[battlerId].types[0]; + gBattleMons[battlerId].type2 = AI_THINKING_STRUCT->saved[battlerId].types[1]; } u32 GetHealthPercentage(u8 battlerId) @@ -753,6 +812,7 @@ s32 AI_CalcDamage(u16 move, u8 battlerAtk, u8 battlerDef, u8 *typeEffectiveness, if (gBattleMoves[move].power) { + ProteanTryChangeType(battlerAtk, AI_DATA->abilities[battlerAtk], move, moveType); critChance = GetInverseCritChance(battlerAtk, battlerDef, move); normalDmg = CalculateMoveDamageAndEffectiveness(move, battlerAtk, battlerDef, moveType, &effectivenessMultiplier); critDmg = CalculateMoveDamage(move, battlerAtk, battlerDef, moveType, 0, TRUE, FALSE, FALSE); @@ -762,47 +822,47 @@ s32 AI_CalcDamage(u16 move, u8 battlerAtk, u8 battlerDef, u8 *typeEffectiveness, else dmg = (critDmg + normalDmg * (critChance - 1)) / critChance; - // Handle dynamic move damage - switch (gBattleMoves[move].effect) + if (!gBattleStruct->zmove.active) { - case EFFECT_LEVEL_DAMAGE: - case EFFECT_PSYWAVE: - dmg = gBattleMons[battlerAtk].level * (AI_DATA->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); - break; - case EFFECT_DRAGON_RAGE: - dmg = 40 * (AI_DATA->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); - break; - case EFFECT_SONICBOOM: - dmg = 20 * (AI_DATA->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); - break; - case EFFECT_MULTI_HIT: - dmg *= (AI_DATA->abilities[battlerAtk] == ABILITY_SKILL_LINK ? 5 : 3); - break; - case EFFECT_TRIPLE_KICK: - dmg *= (AI_DATA->abilities[battlerAtk] == ABILITY_SKILL_LINK ? 6 : 5); - break; - case EFFECT_ENDEAVOR: - // If target has less HP than user, Endeavor does no damage - dmg = max(0, gBattleMons[battlerDef].hp - gBattleMons[battlerAtk].hp); - break; - case EFFECT_SUPER_FANG: - dmg = (AI_DATA->abilities[battlerAtk] == ABILITY_PARENTAL_BOND - ? max(2, gBattleMons[battlerDef].hp * 3 / 4) - : max(1, gBattleMons[battlerDef].hp / 2)); - break; - case EFFECT_FINAL_GAMBIT: - dmg = gBattleMons[battlerAtk].hp; - break; - } + // Handle dynamic move damage + switch (gBattleMoves[move].effect) + { + case EFFECT_LEVEL_DAMAGE: + case EFFECT_PSYWAVE: + dmg = gBattleMons[battlerAtk].level * (AI_DATA->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); + break; + case EFFECT_DRAGON_RAGE: + dmg = 40 * (AI_DATA->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); + break; + case EFFECT_SONICBOOM: + dmg = 20 * (AI_DATA->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); + break; + case EFFECT_MULTI_HIT: + dmg *= (AI_DATA->abilities[battlerAtk] == ABILITY_SKILL_LINK ? 5 : 3); + break; + case EFFECT_ENDEAVOR: + // If target has less HP than user, Endeavor does no damage + dmg = max(0, gBattleMons[battlerDef].hp - gBattleMons[battlerAtk].hp); + break; + case EFFECT_SUPER_FANG: + dmg = (AI_DATA->abilities[battlerAtk] == ABILITY_PARENTAL_BOND + ? max(2, gBattleMons[battlerDef].hp * 3 / 4) + : max(1, gBattleMons[battlerDef].hp / 2)); + break; + case EFFECT_FINAL_GAMBIT: + dmg = gBattleMons[battlerAtk].hp; + break; + } - // Handle other multi-strike moves - if (gBattleMoves[move].flags & FLAG_TWO_STRIKES) - dmg *= 2; - else if (move == MOVE_SURGING_STRIKES || (move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH)) - dmg *= 3; + // Handle other multi-strike moves + if (gBattleMoves[move].flags & FLAG_TWO_STRIKES) + dmg *= 2; + else if (gBattleMoves[move].flags & FLAG_THREE_STRIKES || (move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH)) + dmg *= 3; - if (dmg == 0) - dmg = 1; + if (dmg == 0) + dmg = 1; + } } else { @@ -1071,7 +1131,7 @@ bool32 CanTargetFaintAi(u8 battlerDef, u8 battlerAtk) { s32 i, dmg; u32 unusable = AI_DATA->moveLimitations[battlerDef]; - u16 *moves = gBattleResources->battleHistory->usedMoves[battlerDef]; + u16 *moves = GetMovesArray(battlerDef); for (i = 0; i < MAX_MON_MOVES; i++) { @@ -1173,15 +1233,15 @@ s32 AI_GetAbility(u32 battlerId) return gBattleStruct->overwrittenAbilities[battlerId]; // The AI knows its own ability. - if (IsBattlerAIControlled(battlerId)) + if (IsAiBattlerAware(battlerId)) return knownAbility; // Check neutralizing gas, gastro acid if (knownAbility == ABILITY_NONE) return knownAbility; - if (BATTLE_HISTORY->abilities[battlerId] != ABILITY_NONE) - return BATTLE_HISTORY->abilities[battlerId]; + if (AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability != ABILITY_NONE) + return AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability; // Abilities that prevent fleeing - treat as always known if (knownAbility == ABILITY_SHADOW_TAG || knownAbility == ABILITY_MAGNET_PULL || knownAbility == ABILITY_ARENA_TRAP) @@ -1206,8 +1266,8 @@ u16 AI_GetHoldEffect(u32 battlerId) { u32 holdEffect; - if (!IsBattlerAIControlled(battlerId)) - holdEffect = BATTLE_HISTORY->itemEffects[battlerId]; + if (!IsAiBattlerAware(battlerId)) + holdEffect = AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect; else holdEffect = GetBattlerHoldEffect(battlerId, FALSE); @@ -1446,7 +1506,7 @@ bool32 IsMoveEncouragedToHit(u8 battlerAtk, u8 battlerDef, u16 move) // increased accuracy but don't always hit if ((AI_WeatherHasEffect() && (((gBattleWeather & B_WEATHER_RAIN) && (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE)) - || (((gBattleWeather & B_WEATHER_HAIL) && move == MOVE_BLIZZARD)))) + || (((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && move == MOVE_BLIZZARD)))) || (gBattleMoves[move].effect == EFFECT_VITAL_THROW) #if B_MINIMIZE_DMG_ACC >= GEN_6 || ((gStatuses3[battlerDef] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE)) @@ -1521,7 +1581,7 @@ bool32 ShouldSetHail(u8 battler, u16 ability, u16 holdEffect) { if (!AI_WeatherHasEffect()) return FALSE; - else if (gBattleWeather & B_WEATHER_HAIL) + else if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) return FALSE; if (ability == ABILITY_SNOW_CLOAK @@ -1591,6 +1651,26 @@ bool32 ShouldSetSun(u8 battlerAtk, u16 atkAbility, u16 holdEffect) return FALSE; } +bool32 ShouldSetSnow(u8 battler, u16 ability, u16 holdEffect) +{ + if (!AI_WeatherHasEffect()) + return FALSE; + else if (gBattleWeather & (B_WEATHER_SNOW | B_WEATHER_HAIL)) + return FALSE; + + if (ability == ABILITY_SNOW_CLOAK + || ability == ABILITY_ICE_BODY + || ability == ABILITY_FORECAST + || ability == ABILITY_SLUSH_RUSH + || IS_BATTLER_OF_TYPE(battler, TYPE_ICE) + || HasMove(battler, MOVE_BLIZZARD) + || HasMoveEffect(battler, EFFECT_AURORA_VEIL) + || HasMoveEffect(battler, EFFECT_WEATHER_BALL)) + { + return TRUE; + } + return FALSE; +} void ProtectChecks(u8 battlerAtk, u8 battlerDef, u16 move, u16 predictedMove, s16 *score) { @@ -1620,7 +1700,7 @@ void ProtectChecks(u8 battlerAtk, u8 battlerDef, u16 move, u16 predictedMove, s1 (*score) -= min(uses, 3); } - if (gBattleMons[battlerAtk].status1 & (STATUS1_PSN_ANY | STATUS1_BURN) + if (gBattleMons[battlerAtk].status1 & (STATUS1_PSN_ANY | STATUS1_BURN | STATUS1_FROSTBITE) || gBattleMons[battlerAtk].status2 & (STATUS2_CURSED | STATUS2_INFATUATION) || gStatuses3[battlerAtk] & (STATUS3_PERISH_SONG | STATUS3_LEECHSEED | STATUS3_YAWN)) { @@ -1831,7 +1911,7 @@ bool32 CanIndexMoveFaintTarget(u8 battlerAtk, u8 battlerDef, u8 index, u8 numHit u16 *GetMovesArray(u32 battler) { - if (IsBattlerAIControlled(battler) || IsBattlerAIControlled(BATTLE_PARTNER(battler))) + if (IsAiBattlerAware(battler) || IsAiBattlerAware(BATTLE_PARTNER(battler))) return gBattleMons[battler].moves; else return gBattleResources->battleHistory->usedMoves[battler]; @@ -2708,6 +2788,7 @@ bool32 AI_CanSleep(u8 battler, u16 ability) { if (ability == ABILITY_INSOMNIA || ability == ABILITY_VITAL_SPIRIT + || ability == ABILITY_COMATOSE || gBattleMons[battler].status1 & STATUS1_ANY || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || (gFieldStatuses & (STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN)) @@ -2781,6 +2862,7 @@ bool32 AI_CanPoison(u8 battlerAtk, u8 battlerDef, u16 defAbility, u16 move, u16 static bool32 AI_CanBeParalyzed(u8 battler, u16 ability) { if (ability == ABILITY_LIMBER + || ability == ABILITY_COMATOSE || IS_BATTLER_OF_TYPE(battler, TYPE_ELECTRIC) || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityStatusProtected(battler)) @@ -2826,6 +2908,7 @@ bool32 AI_CanBeBurned(u8 battler, u16 ability) { if (ability == ABILITY_WATER_VEIL || ability == ABILITY_WATER_BUBBLE + || ability == ABILITY_COMATOSE || IS_BATTLER_OF_TYPE(battler, TYPE_FIRE) || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityStatusProtected(battler) @@ -2834,6 +2917,18 @@ bool32 AI_CanBeBurned(u8 battler, u16 ability) return TRUE; } +bool32 AI_CanGetFrostbite(u8 battler, u16 ability) +{ + if (ability == ABILITY_MAGMA_ARMOR + || ability == ABILITY_COMATOSE + || IS_BATTLER_OF_TYPE(battler, TYPE_ICE) + || gBattleMons[battler].status1 & STATUS1_ANY + || IsAbilityStatusProtected(battler) + || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD) + return FALSE; + return TRUE; +} + bool32 ShouldBurnSelf(u8 battler, u16 ability) { if (AI_CanBeBurned(battler, ability) && ( @@ -2860,14 +2955,24 @@ bool32 AI_CanBurn(u8 battlerAtk, u8 battlerDef, u16 defAbility, u8 battlerAtkPar return TRUE; } -bool32 AI_CanBeInfatuated(u8 battlerAtk, u8 battlerDef, u16 defAbility, u8 atkGender, u8 defGender) +bool32 AI_CanGiveFrostbite(u8 battlerAtk, u8 battlerDef, u16 defAbility, u8 battlerAtkPartner, u16 move, u16 partnerMove) +{ + if (!AI_CanGetFrostbite(battlerDef, defAbility) + || AI_GetMoveEffectiveness(move, battlerAtk, battlerDef) == AI_EFFECTIVENESS_x0 + || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) + || PartnerMoveEffectIsStatusSameTarget(battlerAtkPartner, battlerDef, partnerMove)) + { + return FALSE; + } + return TRUE; +} + +bool32 AI_CanBeInfatuated(u8 battlerAtk, u8 battlerDef, u16 defAbility) { if ((gBattleMons[battlerDef].status2 & STATUS2_INFATUATION) || AI_GetMoveEffectiveness(AI_THINKING_STRUCT->moveConsidered, battlerAtk, battlerDef) == AI_EFFECTIVENESS_x0 || defAbility == ABILITY_OBLIVIOUS - || atkGender == defGender - || atkGender == MON_GENDERLESS - || defGender == MON_GENDERLESS + || !AreBattlersOfOppositeGender(battlerAtk, battlerDef) || AI_IsAbilityOnSide(battlerDef, ABILITY_AROMA_VEIL)) return FALSE; return TRUE; @@ -3052,7 +3157,7 @@ bool32 ShouldSetScreen(u8 battlerAtk, u8 battlerDef, u16 moveEffect) { case EFFECT_AURORA_VEIL: // Use only in Hail and only if AI doesn't already have Reflect, Light Screen or Aurora Veil itself active. - if (gBattleWeather & B_WEATHER_HAIL + if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && !(gSideStatuses[atkSide] & (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL))) return TRUE; break; @@ -3086,7 +3191,7 @@ u16 GetAllyChosenMove(u8 battlerId) { u8 partnerBattler = BATTLE_PARTNER(battlerId); - if (!IsBattlerAlive(partnerBattler) || !IsBattlerAIControlled(partnerBattler)) + if (!IsBattlerAlive(partnerBattler) || !IsAiBattlerAware(partnerBattler)) return MOVE_NONE; else if (partnerBattler > battlerId) // Battler with the lower id chooses the move first. return gLastMoves[partnerBattler]; @@ -3157,7 +3262,8 @@ bool32 PartnerMoveEffectIsWeather(u8 battlerAtkPartner, u16 partnerMove) && (gBattleMoves[partnerMove].effect == EFFECT_SUNNY_DAY || gBattleMoves[partnerMove].effect == EFFECT_RAIN_DANCE || gBattleMoves[partnerMove].effect == EFFECT_SANDSTORM - || gBattleMoves[partnerMove].effect == EFFECT_HAIL)) + || gBattleMoves[partnerMove].effect == EFFECT_HAIL + || gBattleMoves[partnerMove].effect == EFFECT_SNOWSCAPE)) return TRUE; return FALSE; @@ -3327,8 +3433,8 @@ s32 CountUsablePartyMons(u8 battlerId) { if (i != battlerOnField1 && i != battlerOnField2 && GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) { ret++; } @@ -3351,8 +3457,8 @@ bool32 IsPartyFullyHealedExceptBattler(u8 battlerId) { if (i != gBattlerPartyIndexes[battlerId] && GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG && GetMonData(&party[i], MON_DATA_HP) < GetMonData(&party[i], MON_DATA_MAX_HP)) return FALSE; } @@ -3362,7 +3468,7 @@ bool32 IsPartyFullyHealedExceptBattler(u8 battlerId) bool32 PartyHasMoveSplit(u8 battlerId, u8 split) { u8 firstId, lastId; - struct Pokemon* party = GetBattlerPartyData(battlerId); + struct Pokemon *party = GetBattlerParty(battlerId); u32 i, j; for (i = 0; i < PARTY_SIZE; i++) @@ -3659,6 +3765,25 @@ void IncreaseConfusionScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score) } } +void IncreaseFrostbiteScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score) +{ + if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + return; + + if (AI_CanGiveFrostbite(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) + { + (*score)++; // frostbite is good + if (HasMoveWithSplit(battlerDef, SPLIT_SPECIAL)) + { + if (CanTargetFaintAi(battlerDef, battlerAtk)) + *score += 2; // frostbiting the target to stay alive is cool + } + + if (HasMoveEffect(battlerAtk, EFFECT_HEX) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_HEX)) + (*score)++; + } +} + bool32 AI_MoveMakesContact(u32 ability, u32 holdEffect, u16 move) { if (TestMoveFlags(move, FLAG_MAKES_CONTACT) @@ -3699,3 +3824,8 @@ bool32 ShouldUseZMove(u8 battlerAtk, u8 battlerDef, u16 chosenMove) return FALSE; } + +bool32 AI_IsBattlerAsleepOrComatose(u8 battlerId) +{ + return (gBattleMons[battlerId].status1 & STATUS1_SLEEP) || AI_DATA->abilities[battlerId] == ABILITY_COMATOSE; +} diff --git a/src/battle_anim.c b/src/battle_anim.c index a7faec1fda43..f051fc7fa8d9 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -119,6 +119,7 @@ EWRAM_DATA u8 gBattleAnimAttacker = 0; EWRAM_DATA u8 gBattleAnimTarget = 0; EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gAnimCustomPanning = 0; +EWRAM_DATA static bool8 sAnimHideHpBoxes = FALSE; #include "data/battle_anim.h" @@ -232,7 +233,6 @@ void LaunchBattleAnimation(u32 animType, u32 animId) { s32 i; const u8 *const *animsTable; - bool32 hideHpBoxes; if (gTestRunnerEnabled) { @@ -261,7 +261,7 @@ void LaunchBattleAnimation(u32 animType, u32 animId) break; } - hideHpBoxes = !(animType == ANIM_TYPE_MOVE && animId == MOVE_TRANSFORM); + sAnimHideHpBoxes = !(animType == ANIM_TYPE_MOVE && animId == MOVE_TRANSFORM); if (animType != ANIM_TYPE_MOVE) { switch (animId) @@ -274,11 +274,12 @@ void LaunchBattleAnimation(u32 animType, u32 animId) case B_ANIM_DOOM_DESIRE_HIT: case B_ANIM_WISH_HEAL: case B_ANIM_MEGA_EVOLUTION: + case B_ANIM_PRIMAL_REVERSION: case B_ANIM_GULP_MISSILE: - hideHpBoxes = TRUE; + sAnimHideHpBoxes = TRUE; break; default: - hideHpBoxes = FALSE; + sAnimHideHpBoxes = FALSE; break; } } @@ -286,7 +287,7 @@ void LaunchBattleAnimation(u32 animType, u32 animId) if (!IsContest()) { InitPrioritiesForVisibleBattlers(); - UpdateOamPriorityInAllHealthboxes(0, hideHpBoxes); + UpdateOamPriorityInAllHealthboxes(0, sAnimHideHpBoxes); for (i = 0; i < MAX_BATTLERS_COUNT; i++) { if (GetBattlerSide(i) != B_SIDE_PLAYER) @@ -439,22 +440,24 @@ static u8 GetBattleAnimMoveTargets(u8 battlerArgIndex, u8 *targets) case MOVE_TARGET_BOTH: targets[0] = gBattleAnimArgs[battlerArgIndex]; numTargets = 1; - if (IsBattlerAlive(targets[0] ^ BIT_FLANK)) { - targets[1] = targets[0] ^ BIT_FLANK; - numTargets++; + if (IsBattlerAlive(BATTLE_PARTNER(targets[0]))) + { + targets[1] = BATTLE_PARTNER(targets[0]); + numTargets = 2; } break; case MOVE_TARGET_FOES_AND_ALLY: targets[0] = gBattleAnimArgs[battlerArgIndex]; numTargets = 1; - - if (IsBattlerAlive(targets[0] ^ BIT_FLANK)) { - targets[1] = targets[0] ^ BIT_FLANK; + if (IsBattlerAlive(BATTLE_PARTNER(targets[0]))) + { + targets[1] = BATTLE_PARTNER(targets[0]); numTargets++; } - - if (IsBattlerAlive(gBattleAnimAttacker ^ BIT_FLANK)) { - targets[2] = gBattleAnimAttacker ^ BIT_FLANK; + + if (IsBattlerAlive(BATTLE_PARTNER(BATTLE_OPPOSITE(targets[0])))) + { + targets[2] = BATTLE_PARTNER(BATTLE_OPPOSITE(targets[0])); numTargets++; } break; @@ -463,14 +466,14 @@ static u8 GetBattleAnimMoveTargets(u8 battlerArgIndex, u8 *targets) numTargets = 1; break; } - + return numTargets; } static s16 GetSubpriorityForMoveAnim(u8 argVar) { s16 subpriority; - + if (argVar & ANIMSPRITE_IS_TARGET) { argVar ^= ANIMSPRITE_IS_TARGET; @@ -493,7 +496,7 @@ static s16 GetSubpriorityForMoveAnim(u8 argVar) if (subpriority < 3) subpriority = 3; - + return subpriority; } @@ -519,7 +522,7 @@ static void Cmd_createsprite(void) gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); sBattleAnimScriptPtr += 2; } - + subpriority = GetSubpriorityForMoveAnim(argVar); CreateSpriteAndAnimate( @@ -536,22 +539,22 @@ static void CreateSpriteOnTargets(const struct SpriteTemplate *template, u8 argV u8 targets[MAX_BATTLERS_COUNT]; int ntargets; s16 subpriority; - + for (i = 0; i < argsCount; i++) { gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); sBattleAnimScriptPtr += 2; } - + subpriority = GetSubpriorityForMoveAnim(argVar); - + ntargets = GetBattleAnimMoveTargets(battlerArgIndex, targets); - + for (i = 0; i < ntargets; i++) { - + if (overwriteAnimTgt) gBattleAnimArgs[battlerArgIndex] = targets[i]; - + CreateSpriteAndAnimate( template, GetBattlerSpriteCoord(targets[i], BATTLER_COORD_X_2), @@ -575,13 +578,13 @@ static void Cmd_createspriteontargets_onpos(void) argVar = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; - + battlerArgIndex = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; argsCount = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; - + CreateSpriteOnTargets(template, argVar, battlerArgIndex, argsCount, FALSE); } @@ -599,13 +602,13 @@ static void Cmd_createspriteontargets(void) argVar = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; - + battlerArgIndex = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; argsCount = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; - + CreateSpriteOnTargets(template, argVar, battlerArgIndex, argsCount, TRUE); } @@ -656,21 +659,21 @@ static void Cmd_createvisualtaskontargets(void) taskPriority = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; - + battlerArgIndex = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; numArgs = sBattleAnimScriptPtr[0]; sBattleAnimScriptPtr++; - + // copy task arguments for (i = 0; i < numArgs; i++) { gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); sBattleAnimScriptPtr += 2; } - + numArgs = GetBattleAnimMoveTargets(battlerArgIndex, targets); - + for (i = 0; i < numArgs; i++) { gBattleAnimArgs[battlerArgIndex] = targets[i]; @@ -761,7 +764,8 @@ static void Cmd_end(void) if (!IsContest()) { InitPrioritiesForVisibleBattlers(); - UpdateOamPriorityInAllHealthboxes(1, TRUE); + UpdateOamPriorityInAllHealthboxes(1, sAnimHideHpBoxes); + sAnimHideHpBoxes = FALSE; } gAnimScriptActive = FALSE; } @@ -1076,27 +1080,15 @@ static void Task_UpdateMonBg(u8 taskId) if (!gTasks[taskId].t2_InBg2) { - u16 *src; - u16 *dst; - gBattle_BG1_X = x + gTasks[taskId].t2_BgX; gBattle_BG1_Y = y + gTasks[taskId].t2_BgY; - - src = &gPlttBufferFaded[0x100 + battlerId * 16]; - dst = &gPlttBufferFaded[0x100 + animBg.paletteId * 16 - 256]; - CpuCopy32(src, dst, 32); + CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battlerId)], &gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId)], PLTT_SIZE_4BPP); } else { - u16 *src; - u16 *dst; - gBattle_BG2_X = x + gTasks[taskId].t2_BgX; gBattle_BG2_Y = y + gTasks[taskId].t2_BgY; - - src = &gPlttBufferFaded[0x100 + battlerId * 16]; - dst = &gPlttBufferFaded[0x100 - 112]; - CpuCopy32(src, dst, 32); + CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battlerId)], &gPlttBufferFaded[BG_PLTT_ID(9)], PLTT_SIZE_4BPP); } } diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 8dae62029324..a9111bce3ad9 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -5116,7 +5116,7 @@ static void AnimProtect(struct Sprite *sprite) sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[2] = (IndexOfSpritePaletteTag(ANIM_TAG_PROTECT) << 4) + 0x100; + sprite->data[2] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(ANIM_TAG_PROTECT)); sprite->data[7] = 16; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); @@ -6404,7 +6404,7 @@ void AnimTask_MusicNotesRainbowBlend(u8 taskId) index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[0][0]); if (index != 0xFF) { - index = (index << 4) + 0x100; + index = OBJ_PLTT_ID(index); for (i = 1; i < ARRAY_COUNT(gParticlesColorBlendTable[0]); i++) gPlttBufferFaded[index + i] = gParticlesColorBlendTable[0][i]; } @@ -6414,7 +6414,7 @@ void AnimTask_MusicNotesRainbowBlend(u8 taskId) index = AllocSpritePalette(gParticlesColorBlendTable[j][0]); if (index != 0xFF) { - index = (index << 4) + 0x100; + index = OBJ_PLTT_ID(index); for (i = 1; i < ARRAY_COUNT(gParticlesColorBlendTable[0]); i++) gPlttBufferFaded[index + i] = gParticlesColorBlendTable[j][i]; } diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 8aaab10a5cd1..b3aedb300cb4 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -1787,7 +1787,7 @@ void AnimTask_AirCutterProjectile(u8 taskId) static void AnimVoidLines(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); - sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sVoidLinesSpriteTemplate.paletteTag) << 4); + sprite->data[0] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(sVoidLinesSpriteTemplate.paletteTag)); sprite->callback = AnimVoidLines_Step; } @@ -3059,7 +3059,7 @@ void AnimTask_LoadMusicNotesPals(u8 taskId) for (i = 1; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i); - gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000); + gMonSpritesGfxPtr->buffer = AllocZeroed(MON_PIC_SIZE * MAX_MON_PIC_FRAMES); LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->buffer); for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) LoadPalette(&gMonSpritesGfxPtr->buffer[i * 32], (u16)(OBJ_PLTT_ID(paletteNums[i])), PLTT_SIZE_4BPP); diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index ff5f044464af..513a992fe08e 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1465,11 +1465,11 @@ static void SetPsychicBackground_Step(u8 taskId) if (++gTasks[taskId].data[5] == 4) { - lastColor = gPlttBufferFaded[paletteIndex * 16 + 11]; + lastColor = gPlttBufferFaded[BG_PLTT_ID(paletteIndex) + 11]; for (i = 10; i > 0; i--) - gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i]; + gPlttBufferFaded[BG_PLTT_ID(paletteIndex) + i + 1] = gPlttBufferFaded[BG_PLTT_ID(paletteIndex) + i]; - gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor; + gPlttBufferFaded[BG_PLTT_ID(paletteIndex) + 1] = lastColor; gTasks[taskId].data[5] = 0; } @@ -1491,15 +1491,15 @@ static void FadeScreenToWhite_Step(u8 taskId) if (++gTasks[taskId].data[5] == 4) { - lastColor = gPlttBufferFaded[paletteIndex * 16 + 11]; + lastColor = gPlttBufferFaded[BG_PLTT_ID(paletteIndex) + 11]; for (i = 10; i > 0; i--) - gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i]; - gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor; + gPlttBufferFaded[BG_PLTT_ID(paletteIndex) + i + 1] = gPlttBufferFaded[BG_PLTT_ID(paletteIndex) + i]; + gPlttBufferFaded[BG_PLTT_ID(paletteIndex) + 1] = lastColor; - lastColor = gPlttBufferUnfaded[paletteIndex * 16 + 11]; + lastColor = gPlttBufferUnfaded[BG_PLTT_ID(paletteIndex) + 11]; for (i = 10; i > 0; i--) - gPlttBufferUnfaded[paletteIndex * 16 + i + 1] = gPlttBufferUnfaded[paletteIndex * 16 + i]; - gPlttBufferUnfaded[paletteIndex * 16 + 1] = lastColor; + gPlttBufferUnfaded[BG_PLTT_ID(paletteIndex) + i + 1] = gPlttBufferUnfaded[BG_PLTT_ID(paletteIndex) + i]; + gPlttBufferUnfaded[BG_PLTT_ID(paletteIndex) + 1] = lastColor; gTasks[taskId].data[5] = 0; } @@ -2350,6 +2350,8 @@ void AnimTask_TransformMon(u8 taskId) SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 1); gTasks[taskId].data[10] = gBattleAnimArgs[0]; + gTasks[taskId].data[11] = gBattleAnimArgs[1]; + gTasks[taskId].data[12] = gBattleAnimArgs[2]; gTasks[taskId].data[0]++; break; case 1: @@ -2364,7 +2366,7 @@ void AnimTask_TransformMon(u8 taskId) } break; case 2: - HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gBattleAnimArgs[1], TRUE); + HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gTasks[taskId].data[11], gTasks[taskId].data[12]); GetBgDataForTransform(&animBg, gBattleAnimAttacker); if (IsContest()) @@ -5601,6 +5603,8 @@ void AnimTask_GetWeather(u8 taskId) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SANDSTORM; else if (gWeatherMoveAnim & B_WEATHER_HAIL) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_HAIL; + else if (gWeatherMoveAnim & B_WEATHER_SNOW) + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SNOW; DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c index 2735ea447838..f595de962c4c 100644 --- a/src/battle_anim_flying.c +++ b/src/battle_anim_flying.c @@ -383,17 +383,17 @@ static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId) { gTasks[taskId].data[10] = 0; data2 = gTasks[taskId].data[2]; - temp = gPlttBufferFaded[16 * data2 + 0x108]; + temp = gPlttBufferFaded[OBJ_PLTT_ID(data2) + 8]; i = 7; - base = data2 * 16; + base = PLTT_ID(data2); do { - gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i]; + gPlttBufferFaded[base + OBJ_PLTT_OFFSET + 1 + i] = gPlttBufferFaded[base + OBJ_PLTT_OFFSET + i]; i--; } while (i > 0); - gPlttBufferFaded[base + 0x101] = temp; + gPlttBufferFaded[base + OBJ_PLTT_OFFSET + 1] = temp; } if (--gTasks[taskId].data[0] == 0) diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index bf2c6a42b7ca..870c83f60886 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -693,7 +693,7 @@ static void AnimTask_SpiteTargetShadow_Step1(u8 taskId) task->data[2] = 0; task->data[3] = 16; task->data[13] = GetAnimBattlerSpriteId(ANIM_TARGET); - task->data[4] = (gSprites[task->data[13]].oam.paletteNum + 16) * 16; + task->data[4] = OBJ_PLTT_ID2(gSprites[task->data[13]].oam.paletteNum); if (position == 1) { u16 mask = DISPCNT_BG1_ON; mask2 = mask; diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 44c1a4f22cc2..e6a5607b5aee 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -1289,7 +1289,7 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite) sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - + #if B_UPDATED_MOVE_DATA >= GEN_5 { s16 x, y; diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 17b04cc2b81b..ca338791c15e 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -1415,18 +1415,17 @@ void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) struct PlttData *originalColor; struct PlttData *destColor; u16 average; - - paletteNum *= 16; + u16 paletteOffset = PLTT_ID(paletteNum); if (!restoreOriginalColor) { for (i = 0; i < 16; i++) { - originalColor = (struct PlttData *)&gPlttBufferUnfaded[paletteNum + i]; + originalColor = (struct PlttData *)&gPlttBufferUnfaded[paletteOffset + i]; average = originalColor->r + originalColor->g + originalColor->b; average /= 3; - destColor = (struct PlttData *)&gPlttBufferFaded[paletteNum + i]; + destColor = (struct PlttData *)&gPlttBufferFaded[paletteOffset + i]; destColor->r = average; destColor->g = average; destColor->b = average; @@ -1434,7 +1433,7 @@ void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) } else { - CpuCopy32(&gPlttBufferUnfaded[paletteNum], &gPlttBufferFaded[paletteNum], 32); + CpuCopy32(&gPlttBufferUnfaded[paletteOffset], &gPlttBufferFaded[paletteOffset], PLTT_SIZE_4BPP); } } @@ -2138,7 +2137,7 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 u16 palette = AllocSpritePalette(sSpriteTemplates_MoveEffectMons[id].paletteTag); if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->buffer == NULL) - gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000); + gMonSpritesGfxPtr->buffer = AllocZeroed(MON_PIC_SIZE * MAX_MON_PIC_FRAMES); if (!isBackpic) { LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index b3502fcb9e00..715e5b3e26d6 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -7897,9 +7897,6 @@ void AnimTask_TerrainPulse(u8 taskId) void AnimTask_AffectionHangedOn(u8 taskId) { - int side = GetBattlerSide(gBattleAnimTarget); - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; - gBattleAnimArgs[0] = GetBattlerFriendshipScore(gBattleAnimTarget); DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index 2ec5b2600d2a..1c998e9c56e9 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -585,7 +585,7 @@ static void AnimDefensiveWall(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; } - sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16; + sprite->data[0] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(gBattleAnimArgs[2])); if (isContest) { diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index d96a4cea467e..bd4638224f0e 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -283,6 +283,11 @@ void SoundTask_WaitForCry(u8 taskId) } } +void SoundTask_PlayNormalCry(u8 taskId) +{ + PlayCry_ByMode(gBattleMons[gBattleAnimAttacker].species, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER), CRY_MODE_NORMAL); + gTasks[taskId].func = SoundTask_WaitForCry; +} #define tSpecies data[1] #define tPan data[2] diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index 0111b4d6d33b..da5cd346ef0f 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -442,10 +442,10 @@ static void AnimTask_FrozenIceCube_Step2(u8 taskId) { u16 temp; - temp = gPlttBufferFaded[0x100 + palIndex * 16 + 13]; - gPlttBufferFaded[0x100 + palIndex * 16 + 13] = gPlttBufferFaded[0x100 + palIndex * 16 + 14]; - gPlttBufferFaded[0x100 + palIndex * 16 + 14] = gPlttBufferFaded[0x100 + palIndex * 16 + 15]; - gPlttBufferFaded[0x100 + palIndex * 16 + 15] = temp; + temp = gPlttBufferFaded[OBJ_PLTT_ID(palIndex) + 13]; + gPlttBufferFaded[OBJ_PLTT_ID(palIndex) + 13] = gPlttBufferFaded[OBJ_PLTT_ID(palIndex) + 14]; + gPlttBufferFaded[OBJ_PLTT_ID(palIndex) + 14] = gPlttBufferFaded[OBJ_PLTT_ID(palIndex) + 15]; + gPlttBufferFaded[OBJ_PLTT_ID(palIndex) + 15] = temp; gTasks[taskId].data[2] = 0; gTasks[taskId].data[3]++; diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index a3197d4477a9..4a3cf7cf276a 100755 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -2484,9 +2484,14 @@ void TryShinyAnimation(u8 battler, struct Pokemon *mon) u32 otId, personality; u32 shinyValue; u8 taskCirc, taskDgnl; + struct Pokemon* illusionMon; isShiny = FALSE; gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = TRUE; + illusionMon = GetIllusionMonPtr(battler); + if (illusionMon != NULL) + mon = illusionMon; + otId = GetMonData(mon, MON_DATA_OT_ID); personality = GetMonData(mon, MON_DATA_PERSONALITY); @@ -2736,23 +2741,37 @@ void AnimTask_SetAttackerTargetLeftPos(u8 taskId) void AnimTask_GetTrappedMoveAnimId(u8 taskId) { - if (gBattleSpritesDataPtr->animationData->animArg == MOVE_FIRE_SPIN) + switch (gBattleSpritesDataPtr->animationData->animArg) + { + case MOVE_FIRE_SPIN: gBattleAnimArgs[0] = TRAP_ANIM_FIRE_SPIN; - else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_WHIRLPOOL) + break; + case MOVE_WHIRLPOOL: gBattleAnimArgs[0] = TRAP_ANIM_WHIRLPOOL; - else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_CLAMP) + break; + case MOVE_CLAMP: gBattleAnimArgs[0] = TRAP_ANIM_CLAMP; - else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SAND_TOMB) + break; + case MOVE_SAND_TOMB: gBattleAnimArgs[0] = TRAP_ANIM_SAND_TOMB; - else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_MAGMA_STORM) + break; + case MOVE_MAGMA_STORM: gBattleAnimArgs[0] = TRAP_ANIM_MAGMA_STORM; - else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_INFESTATION) + break; + case MOVE_INFESTATION: gBattleAnimArgs[0] = TRAP_ANIM_INFESTATION; - else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SNAP_TRAP) + break; + case MOVE_SNAP_TRAP: gBattleAnimArgs[0] = TRAP_ANIM_SNAP_TRAP; - else + break; + case MOVE_THUNDER_CAGE: + gBattleAnimArgs[0] = TRAP_ANIM_THUNDER_CAGE; + break; + default: gBattleAnimArgs[0] = TRAP_ANIM_BIND; - + break; + } + DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index c569d54e864b..4885a7ef371b 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -664,7 +664,7 @@ static void SetPalettesToColor(u32 selectedPalettes, u16 color) { if (selectedPalettes & 1) { - u16 curOffset = i * 16; + u16 curOffset = PLTT_ID(i); u16 paletteOffset = curOffset; while (curOffset < paletteOffset + 16) { @@ -906,7 +906,7 @@ void AnimTask_GetFieldTerrain(u8 taskId) void AnimTask_AllocBackupPalBuffer(u8 taskId) { - gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000); + gMonSpritesGfxPtr->buffer = AllocZeroed(MON_PIC_SIZE * MAX_MON_PIC_FRAMES); DestroyAnimVisualTask(taskId); } @@ -939,7 +939,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId) paletteIndex = gBattleAnimTarget + 16; } - memcpy(&gMonSpritesGfxPtr->buffer[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32); + memcpy(&gMonSpritesGfxPtr->buffer[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[PLTT_ID(paletteIndex)], PLTT_SIZE_4BPP); DestroyAnimVisualTask(taskId); } @@ -966,7 +966,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId) paletteIndex = gBattleAnimTarget + 16; } - memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->buffer[gBattleAnimArgs[1] * 16], 32); + memcpy(&gPlttBufferUnfaded[PLTT_ID(paletteIndex)], &gMonSpritesGfxPtr->buffer[gBattleAnimArgs[1] * 16], PLTT_SIZE_4BPP); DestroyAnimVisualTask(taskId); } @@ -993,7 +993,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) paletteIndex = gBattleAnimTarget + 16; } - memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gPlttBufferFaded[paletteIndex * 16], 32); + memcpy(&gPlttBufferUnfaded[PLTT_ID(paletteIndex)], &gPlttBufferFaded[PLTT_ID(paletteIndex)], PLTT_SIZE_4BPP); DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c index a82398ce2177..961f154baa2b 100644 --- a/src/battle_anim_water.c +++ b/src/battle_anim_water.c @@ -778,7 +778,7 @@ static void AnimAuroraBeamRings_Step(struct Sprite *sprite) void AnimTask_RotateAuroraRingColors(u8 taskId) { gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_RAINBOW_RINGS) * 16 + 256; + gTasks[taskId].data[2] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(ANIM_TAG_RAINBOW_RINGS)); gTasks[taskId].func = AnimTask_RotateAuroraRingColors_Step; } @@ -1080,12 +1080,12 @@ static void AnimTask_CreateSurfWave_Step1(u8 taskId) gTasks[taskId].data[2] += gTasks[taskId].data[1]; if (++gTasks[taskId].data[5] == 4) { - rgbBuffer = gPlttBufferFaded[animBg.paletteId * 16 + 7]; + rgbBuffer = gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId) + 7]; for (i = 6; i != 0; i--) { - gPlttBufferFaded[animBg.paletteId * 16 + 1 + i] = gPlttBufferFaded[animBg.paletteId * 16 + 1 + i - 1]; // 1 + i - 1 is needed to match for some bizarre reason + gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId) + 1 + i] = gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId) + 1 + i - 1]; // 1 + i - 1 is needed to match for some bizarre reason } - gPlttBufferFaded[animBg.paletteId * 16 + 1] = rgbBuffer; + gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId) + 1] = rgbBuffer; gTasks[taskId].data[5] = 0; } if (++gTasks[taskId].data[6] > 1) diff --git a/src/battle_bg.c b/src/battle_bg.c index 0ed1eec2e787..b3fea1a203ee 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -22,6 +22,7 @@ #include "trig.h" #include "window.h" #include "constants/map_types.h" +#include "constants/rgb.h" #include "constants/songs.h" #include "constants/trainers.h" #include "constants/battle_anim.h" @@ -1068,7 +1069,7 @@ void InitLinkBattleVsScreen(u8 taskId) break; case 1: palId = AllocSpritePalette(TAG_VS_LETTERS); - gPlttBufferUnfaded[palId * 16 + 0x10F] = gPlttBufferFaded[palId * 16 + 0x10F] = 0x7FFF; + gPlttBufferUnfaded[OBJ_PLTT_ID(palId) + 15] = gPlttBufferFaded[OBJ_PLTT_ID(palId) + 15] = RGB_WHITE; gBattleStruct->linkBattleVsSpriteId_V = CreateSprite(&sVsLetter_V_SpriteTemplate, 111, 80, 0); gBattleStruct->linkBattleVsSpriteId_S = CreateSprite(&sVsLetter_S_SpriteTemplate, 129, 80, 0); gSprites[gBattleStruct->linkBattleVsSpriteId_V].invisible = TRUE; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 908363907b3c..b4936da5c20c 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1395,6 +1395,7 @@ static void LinkOpponentHandleMoveAnimation(void) gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16]; gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDoMoveAnimation; BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr); diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 1ef5d6355547..d07a92e93f71 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -1232,6 +1232,7 @@ static void LinkPartnerHandleMoveAnimation(void) gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16]; gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDoMoveAnimation; BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr); diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 79283b0674e9..c3e4a9037418 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -20,6 +20,7 @@ #include "main.h" #include "m4a.h" #include "palette.h" +#include "party_menu.h" #include "pokeball.h" #include "pokemon.h" #include "random.h" @@ -33,6 +34,7 @@ #include "constants/battle_anim.h" #include "constants/items.h" #include "constants/moves.h" +#include "constants/party_menu.h" #include "constants/songs.h" #include "constants/trainers.h" #include "trainer_hill.h" @@ -226,9 +228,11 @@ static void Intro_DelayAndEnd(void) } } -static bool32 TwoIntroMons(u32 battlerId) // Double battle with both player pokemon active. +static bool32 TwoIntroMons(u32 battlerId) // Double battle with both opponent pokemon active. { - return (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)]])); + return (IsDoubleBattle() + && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[battlerId]]) + && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)]])); } static void Intro_WaitForShinyAnimAndHealthbox(void) @@ -1466,6 +1470,7 @@ static void OpponentHandleMoveAnimation(void) gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16]; gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattlerControllerFuncs[gActiveBattler] = OpponentDoMoveAnimation; } @@ -1665,7 +1670,7 @@ static void OpponentHandleChooseMove(void) static void OpponentHandleChooseItem(void) { - BtlController_EmitOneReturnValue(BUFFER_B, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2)); + BtlController_EmitOneReturnValue(BUFFER_B, gBattleStruct->chosenItem[gActiveBattler]); OpponentBufferExecCompleted(); } @@ -1674,7 +1679,13 @@ static void OpponentHandleChoosePokemon(void) s32 chosenMonId; s32 pokemonInBattle = 1; - if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == PARTY_SIZE) + // Choosing Revival Blessing target + if ((gBattleResources->bufferA[gActiveBattler][1] & 0xF) == PARTY_ACTION_CHOOSE_FAINTED_MON) + { + chosenMonId = gSelectedMonPartyId = GetFirstFaintedPartyIndex(gActiveBattler); + } + // Switching out + else if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == PARTY_SIZE) { chosenMonId = GetMostSuitableMonToSwitchInto(); @@ -1709,17 +1720,17 @@ static void OpponentHandleChoosePokemon(void) } } } + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId; } else { chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler); *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId; } - - - *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId; BtlController_EmitChosenMonReturnValue(BUFFER_B, chosenMonId, NULL); OpponentBufferExecCompleted(); + } static u8 CountAIAliveNonEggMonsExcept(u8 slotToIgnore) @@ -1961,7 +1972,7 @@ static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite) static void Task_StartSendOutAnim(u8 taskId) { - u8 savedActiveBank = gActiveBattler; + u8 savedActiveBattler = gActiveBattler; gActiveBattler = gTasks[taskId].data[0]; if ((!TwoIntroMons(gActiveBattler) || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) && !BATTLE_TWO_VS_ONE_OPPONENT) @@ -1969,7 +1980,7 @@ static void Task_StartSendOutAnim(u8 taskId) gBattleResources->bufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; StartSendOutAnim(gActiveBattler, FALSE); } - else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)) + else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) || (BATTLE_TWO_VS_ONE_OPPONENT && !TwoIntroMons(gActiveBattler))) { gBattleResources->bufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; StartSendOutAnim(gActiveBattler, FALSE); @@ -1984,7 +1995,7 @@ static void Task_StartSendOutAnim(u8 taskId) gActiveBattler ^= BIT_FLANK; } gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox; - gActiveBattler = savedActiveBank; + gActiveBattler = savedActiveBattler; DestroyTask(taskId); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 82a9d7b7a926..c88dbff78f07 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -312,13 +312,10 @@ static void HandleInputChooseAction(void) && !(gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { + // Return item to bag if partner had selected one. if (gBattleResources->bufferA[gActiveBattler][1] == B_ACTION_USE_ITEM) { - // Add item to bag if it is a ball - if (itemId <= LAST_BALL) - AddBagItem(itemId, 1); - else - return; + AddBagItem(itemId, 1); } PlaySE(SE_SELECT); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_CANCEL_PARTNER, 0); @@ -2709,6 +2706,7 @@ static void PlayerHandleMoveAnimation(void) gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16]; gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattlerControllerFuncs[gActiveBattler] = PlayerDoMoveAnimation; BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr); @@ -2907,7 +2905,8 @@ static void PlayerHandleChoosePokemon(void) for (i = 0; i < ARRAY_COUNT(gBattlePartyCurrentOrder); i++) gBattlePartyCurrentOrder[i] = gBattleResources->bufferA[gActiveBattler][4 + i]; - if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleResources->bufferA[gActiveBattler][1] & 0xF) != PARTY_ACTION_CANT_SWITCH) + if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleResources->bufferA[gActiveBattler][1] & 0xF) != PARTY_ACTION_CANT_SWITCH + && (gBattleResources->bufferA[gActiveBattler][1] & 0xF) != PARTY_ACTION_CHOOSE_FAINTED_MON) { BtlController_EmitChosenMonReturnValue(BUFFER_B, gBattlerPartyIndexes[gActiveBattler] + 1, gBattlePartyCurrentOrder); PlayerBufferExecCompleted(); diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 88bc4f974df4..b94d5347aa75 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -16,6 +16,7 @@ #include "main.h" #include "m4a.h" #include "palette.h" +#include "party_menu.h" #include "pokeball.h" #include "pokemon.h" #include "reshow_battle_screen.h" @@ -27,6 +28,7 @@ #include "window.h" #include "constants/battle_anim.h" #include "constants/songs.h" +#include "constants/party_menu.h" #include "constants/trainers.h" static void PlayerPartnerHandleGetMonData(void); @@ -1431,6 +1433,7 @@ static void PlayerPartnerHandleMoveAnimation(void) gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16]; gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattlerControllerFuncs[gActiveBattler] = PlayerPartnerDoMoveAnimation; } @@ -1549,25 +1552,33 @@ static void PlayerPartnerHandleChooseItem(void) static void PlayerPartnerHandleChoosePokemon(void) { - s32 chosenMonId = GetMostSuitableMonToSwitchInto(); - - if (chosenMonId == PARTY_SIZE) // just switch to the next mon + s32 chosenMonId; + // Choosing Revival Blessing target + if ((gBattleResources->bufferA[gActiveBattler][1] & 0xF) == PARTY_ACTION_CHOOSE_FAINTED_MON) { - u8 playerMonIdentity = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); - u8 selfIdentity = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); - - for (chosenMonId = PARTY_SIZE / 2; chosenMonId < PARTY_SIZE; chosenMonId++) + chosenMonId = gSelectedMonPartyId = GetFirstFaintedPartyIndex(gActiveBattler); + } + // Switching out + else + { + chosenMonId = GetMostSuitableMonToSwitchInto(); + if (chosenMonId == PARTY_SIZE) // just switch to the next mon { - if (GetMonData(&gPlayerParty[chosenMonId], MON_DATA_HP) != 0 - && chosenMonId != gBattlerPartyIndexes[playerMonIdentity] - && chosenMonId != gBattlerPartyIndexes[selfIdentity]) + u8 playerMonIdentity = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + u8 selfIdentity = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + + for (chosenMonId = PARTY_SIZE / 2; chosenMonId < PARTY_SIZE; chosenMonId++) { - break; + if (GetMonData(&gPlayerParty[chosenMonId], MON_DATA_HP) != 0 + && chosenMonId != gBattlerPartyIndexes[playerMonIdentity] + && chosenMonId != gBattlerPartyIndexes[selfIdentity]) + { + break; + } } } + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId; } - - *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId; BtlController_EmitChosenMonReturnValue(BUFFER_B, chosenMonId, NULL); PlayerPartnerBufferExecCompleted(); } diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 2e93d625d7e4..d1c60343acd8 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -10,11 +10,13 @@ #include "battle_tv.h" #include "bg.h" #include "data.h" +#include "item_menu.h" #include "item_use.h" #include "link.h" #include "main.h" #include "m4a.h" #include "palette.h" +#include "party_menu.h" #include "pokeball.h" #include "pokemon.h" #include "recorded_battle.h" @@ -1325,6 +1327,7 @@ static void RecordedOpponentHandleMoveAnimation(void) gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16]; gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattlerControllerFuncs[gActiveBattler] = RecordedOpponentDoMoveAnimation; } @@ -1436,12 +1439,19 @@ static void RecordedOpponentHandleChooseMove(void) static void RecordedOpponentHandleChooseItem(void) { + u8 byte1 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler); + u8 byte2 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler); + gBattleStruct->chosenItem[gActiveBattler] = (byte1 << 8) | byte2; + gBattleStruct->itemPartyIndex[gActiveBattler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_TARGET, gActiveBattler); + gBattleStruct->itemMoveIndex[gActiveBattler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_MOVE, gActiveBattler); + BtlController_EmitOneReturnValue(BUFFER_B, gBattleStruct->chosenItem[gActiveBattler]); RecordedOpponentBufferExecCompleted(); } static void RecordedOpponentHandleChoosePokemon(void) { *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(RECORDED_PARTY_INDEX, gActiveBattler); + gSelectedMonPartyId = gBattleStruct->monToSwitchIntoId[gActiveBattler]; // Revival Blessing BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL); RecordedOpponentBufferExecCompleted(); } diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 1906df8a8a4f..46f3de4f1251 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -7,11 +7,13 @@ #include "battle_interface.h" #include "bg.h" #include "data.h" +#include "item_menu.h" #include "item_use.h" #include "link.h" #include "main.h" #include "m4a.h" #include "palette.h" +#include "party_menu.h" #include "pokeball.h" #include "pokemon.h" #include "recorded_battle.h" @@ -1333,6 +1335,7 @@ static void RecordedPlayerHandleMoveAnimation(void) gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16]; gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattlerControllerFuncs[gActiveBattler] = RecordedPlayerDoMoveAnimation; } @@ -1460,12 +1463,19 @@ static void RecordedPlayerHandleChooseMove(void) static void RecordedPlayerHandleChooseItem(void) { + u8 byte1 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler); + u8 byte2 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler); + gBattleStruct->chosenItem[gActiveBattler] = (byte1 << 8) | byte2; + gBattleStruct->itemPartyIndex[gActiveBattler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_TARGET, gActiveBattler); + gBattleStruct->itemMoveIndex[gActiveBattler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_MOVE, gActiveBattler); + BtlController_EmitOneReturnValue(BUFFER_B, gBattleStruct->chosenItem[gActiveBattler]); RecordedPlayerBufferExecCompleted(); } static void RecordedPlayerHandleChoosePokemon(void) { *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(RECORDED_PARTY_INDEX, gActiveBattler); + gSelectedMonPartyId = gBattleStruct->monToSwitchIntoId[gActiveBattler]; // Revival Blessing BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL); RecordedPlayerBufferExecCompleted(); } diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index ae20c54ecf81..fa1fa00fb2a0 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -1115,6 +1115,7 @@ static void WallyHandleMoveAnimation(void) gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16]; gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattlerControllerFuncs[gActiveBattler] = WallyDoMoveAnimation; } diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 0814f6d12612..d5d3e479e0b7 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -589,10 +589,10 @@ static void InitLinkBtlControllers(void) bool32 IsValidForBattle(struct Pokemon *mon) { - u32 species = GetMonData(mon, MON_DATA_SPECIES2); + u32 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); return (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(mon, MON_DATA_HP) != 0 - && GetMonData(mon, MON_DATA_IS_EGG) == 0); + && GetMonData(mon, MON_DATA_IS_EGG) == FALSE); } static void SetBattlePartyIds(void) diff --git a/src/battle_debug.c b/src/battle_debug.c index 027be03a452a..5712c98819af 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -181,6 +181,7 @@ static const u8 sText_SideStatus[] = _("Side Status"); static const u8 sText_MaxHp[] = _("HP Max"); static const u8 sText_CurrHp[] = _("HP Current"); static const u8 sText_Freeze[] = _("Freeze"); +static const u8 sText_Frostbite[] = _("Frostbite"); static const u8 sText_ToxicPoison[] = _("Toxic Poison"); static const u8 sText_ToxicCounter[] = _("Toxic Counter"); static const u8 sText_Flinch[] = _("Flinch"); @@ -258,6 +259,7 @@ static const struct BitfieldInfo sStatus1Bitfield[] = {/*Paralysis*/1, 6}, {/*Toxic Poison*/ 1, 7}, {/*Toxic Counter*/ 4, 8}, + {/*Frostbite*/ 1, 12}, }; static const struct BitfieldInfo sStatus2Bitfield[] = @@ -397,6 +399,7 @@ static const struct ListMenuItem sStatus1ListItems[] = {gText_Paralysis, 4}, {sText_ToxicPoison, 5}, {sText_ToxicCounter, 6}, + {sText_Frostbite, 7}, }; static const struct ListMenuItem sStatus2ListItems[] = @@ -774,7 +777,7 @@ static void Task_ShowAiPoints(u8 taskId) // Swap battler if it's player mon data->aiBattlerId = data->battlerId; - while (!IsBattlerAIControlled(data->aiBattlerId)) + while (!BattlerHasAi(data->aiBattlerId)) { if (++data->aiBattlerId >= gBattlersCount) data->aiBattlerId = 0; @@ -931,7 +934,7 @@ static void Task_ShowAiKnowledge(u8 taskId) // Swap battler if it's player mon data->aiBattlerId = data->battlerId; - while (!IsBattlerAIControlled(data->aiBattlerId)) + while (!BattlerHasAi(data->aiBattlerId)) { if (++data->aiBattlerId >= gBattlersCount) data->aiBattlerId = 0; @@ -1012,11 +1015,13 @@ static void Task_ShowAiParty(u8 taskId) gSprites[gSprites[data->spriteIds.aiPartyIcons[i]].sConditionSpriteId].oam.priority = 0; if (aiMons[i].isFainted) ailment = AILMENT_FNT; - else if (aiMons[i].status) + else ailment = GetAilmentFromStatus(aiMons[i].status); + + if (ailment != AILMENT_NONE) + StartSpriteAnim(&gSprites[gSprites[data->spriteIds.aiPartyIcons[i]].sConditionSpriteId], ailment - 1); else - ailment = AILMENT_FNT + 1; // blank - StartSpriteAnim(&gSprites[gSprites[data->spriteIds.aiPartyIcons[i]].sConditionSpriteId], ailment - 1); + gSprites[gSprites[data->spriteIds.aiPartyIcons[i]].sConditionSpriteId].invisible = TRUE; } for (; i < PARTY_SIZE; i++) data->spriteIds.aiPartyIcons[i] = 0xFF; diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index 15f74831c694..6366404ce3e3 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -1183,7 +1183,7 @@ static void CB2_InitSelectScreen(void) #else if (sFactorySelectScreen->fromSummaryScreen == TRUE) #endif - gPlttBufferUnfaded[228] = sFactorySelectScreen->speciesNameColorBackup; + gPlttBufferUnfaded[BG_PLTT_ID(14) + 4] = sFactorySelectScreen->speciesNameColorBackup; LoadPalette(sMonPicBg_Pal, BG_PLTT_ID(2), PLTT_SIZEOF(2)); gMain.state++; break; @@ -1449,7 +1449,7 @@ static void Select_Task_OpenSummaryScreen(u8 taskId) switch (gTasks[taskId].tState) { case STATE_SUMMARY_FADE: - gPlttBufferUnfaded[228] = gPlttBufferFaded[228]; + gPlttBufferUnfaded[BG_PLTT_ID(14) + 4] = gPlttBufferFaded[BG_PLTT_ID(14) + 4]; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); gTasks[taskId].tState = STATE_SUMMARY_CLEAN; break; @@ -1468,7 +1468,7 @@ static void Select_Task_OpenSummaryScreen(u8 taskId) } break; case STATE_SUMMARY_SHOW: - sFactorySelectScreen->speciesNameColorBackup = gPlttBufferUnfaded[228]; + sFactorySelectScreen->speciesNameColorBackup = gPlttBufferUnfaded[BG_PLTT_ID(14) + 4]; DestroyTask(taskId); sFactorySelectScreen->fromSummaryScreen = TRUE; currMonId = sFactorySelectScreen->cursorPos; @@ -1641,8 +1641,8 @@ static void Select_Task_HandleMenu(u8 taskId) { if (sFactorySelectScreen->fromSummaryScreen == TRUE) { - gPlttBufferFaded[228] = sFactorySelectScreen->speciesNameColorBackup; - gPlttBufferUnfaded[228] = gPlttBufferUnfaded[244]; + gPlttBufferFaded[BG_PLTT_ID(14) + 4] = sFactorySelectScreen->speciesNameColorBackup; + gPlttBufferUnfaded[BG_PLTT_ID(14) + 4] = gPlttBufferUnfaded[BG_PLTT_ID(15) + 4]; } sFactorySelectScreen->fromSummaryScreen = FALSE; gTasks[taskId].tState = STATE_MENU_HANDLE_INPUT; @@ -2388,7 +2388,7 @@ static void Swap_Task_OpenSummaryScreen(u8 taskId) case STATE_SUMMARY_SHOW: DestroyTask(taskId); sFactorySwapScreen->fromSummaryScreen = TRUE; - sFactorySwapScreen->speciesNameColorBackup = gPlttBufferUnfaded[244]; + sFactorySwapScreen->speciesNameColorBackup = gPlttBufferUnfaded[BG_PLTT_ID(15) + 4]; ShowPokemonSummaryScreen(SUMMARY_MODE_NORMAL, gPlayerParty, sFactorySwapScreen->cursorPos, FRONTIER_PARTY_SIZE - 1, CB2_InitSwapScreen); break; } @@ -2761,7 +2761,7 @@ static void Swap_Task_FadeOutSpeciesName(u8 taskId) if (sFactorySwapScreen->fadeSpeciesNameCoeffDelay > 3) { sFactorySwapScreen->fadeSpeciesNameCoeffDelay = 0; - gPlttBufferUnfaded[244] = gPlttBufferFaded[228]; + gPlttBufferUnfaded[BG_PLTT_ID(15) + 4] = gPlttBufferFaded[BG_PLTT_ID(14) + 4]; sFactorySwapScreen->fadeSpeciesNameCoeff++; } BlendPalettes(0x4000, sFactorySwapScreen->fadeSpeciesNameCoeff, 0); @@ -3125,7 +3125,7 @@ static void Swap_Task_ScreenInfoTransitionIn(u8 taskId) if (gTasks[taskId].tSlideFinishedPkmn == TRUE && gTasks[taskId].tSlideFinishedCancel == TRUE) { - gPlttBufferFaded[226] = sPokeballGray_Pal[37]; + gPlttBufferFaded[BG_PLTT_ID(14) + 2] = sPokeballGray_Pal[37]; Swap_PrintActionStrings(); PutWindowTilemap(SWAP_WIN_ACTION_FADE); gTasks[taskId].tState++; @@ -3864,7 +3864,7 @@ static void Swap_PrintMonSpeciesAtFade(void) CpuCopy16(sSwapText_Pal, pal, 8); if (!sFactorySwapScreen->fromSummaryScreen) - pal[4] = gPlttBufferFaded[228]; + pal[4] = gPlttBufferFaded[BG_PLTT_ID(14) + 4]; else pal[4] = sFactorySwapScreen->speciesNameColorBackup; LoadPalette(pal, BG_PLTT_ID(15), sizeof(sSwapText_Pal)); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 389832fb20e2..5f168d88ba26 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -398,7 +398,7 @@ void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status) gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 1; if (!isStatus2) { - if (status == STATUS1_FREEZE) + if (status == STATUS1_FREEZE || status == STATUS1_FROSTBITE) LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_FRZ); else if (status == STATUS1_POISON || status & STATUS1_TOXIC_POISON) LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_PSN); @@ -492,6 +492,7 @@ static bool8 ShouldAnimBeDoneRegardlessOfSubstitute(u8 animId) case B_ANIM_SUN_CONTINUES: case B_ANIM_SANDSTORM_CONTINUES: case B_ANIM_HAIL_CONTINUES: + case B_ANIM_SNOW_CONTINUES: case B_ANIM_SNATCH_MOVE: return TRUE; default: @@ -551,7 +552,7 @@ bool8 IsBattleSEPlaying(u8 battlerId) static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 opponent) { - u32 monsPersonality, currentPersonality, otId, species, paletteOffset, position; + u32 monsPersonality, currentPersonality, otId, currentOtId, species, paletteOffset, position; const void *lzPaletteData; struct Pokemon *illusionMon = GetIllusionMonPtr(battlerId); if (illusionMon != NULL) @@ -561,18 +562,26 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op return; monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + otId = GetMonData(mon, MON_DATA_OT_ID); + if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) { species = GetMonData(mon, MON_DATA_SPECIES); currentPersonality = monsPersonality; + currentOtId = otId; } else { species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies; - currentPersonality = gTransformedPersonalities[battlerId]; + #if B_TRANSFORM_SHINY >= GEN_4 + currentPersonality = gTransformedPersonalities[battlerId]; + currentOtId = gTransformedOtIds[battlerId]; + #else + currentPersonality = monsPersonality; + currentOtId = otId; + #endif } - otId = GetMonData(mon, MON_DATA_OT_ID); position = GetBattlerPosition(battlerId); if (opponent) { @@ -592,7 +601,7 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) lzPaletteData = GetMonFrontSpritePal(mon); else - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality); + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, currentOtId, currentPersonality); LZDecompressWram(lzPaletteData, gDecompressionBuffer); LoadPalette(gDecompressionBuffer, paletteOffset, PLTT_SIZE_4BPP); @@ -609,7 +618,7 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE) { BlendPalette(paletteOffset, 16, 6, RGB_WHITE); - CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); + CpuCopy32(&gPlttBufferFaded[paletteOffset], &gPlttBufferUnfaded[paletteOffset], PLTT_SIZEOF(16)); } } @@ -691,6 +700,7 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) { LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]); LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]); + MegaIndicator_LoadSpritesGfx(); } else if (!IsDoubleBattle()) { @@ -879,10 +889,18 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) { + #if B_TRANSFORM_SHINY >= GEN_4 if (trackEnemyPersonality) + { personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + } else + #endif + { personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + } otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); HandleLoadSpecialPokePic(FALSE, @@ -892,11 +910,19 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo } else { + #if B_TRANSFORM_SHINY >= GEN_4 if (trackEnemyPersonality) + { personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + + } else + #endif + { personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); - otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + } HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[position], @@ -916,7 +942,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo if (gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies != SPECIES_NONE) { BlendPalette(paletteOffset, 16, 6, RGB_WHITE); - CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); + CpuCopy32(&gPlttBufferFaded[paletteOffset], &gPlttBufferUnfaded[paletteOffset], PLTT_SIZEOF(16)); } gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk); } @@ -940,7 +966,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo if (!megaEvo) { BlendPalette(paletteOffset, 16, 6, RGB_WHITE); - CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); + CpuCopy32(&gPlttBufferFaded[paletteOffset], &gPlttBufferUnfaded[paletteOffset], PLTT_SIZEOF(16)); } if (!IsContest() && !megaEvo) diff --git a/src/battle_interface.c b/src/battle_interface.c index 9c0db8b07481..518bad2c9433 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -73,6 +73,9 @@ enum HEALTHBOX_GFX_STATUS_BRN_BATTLER0, //status brn HEALTHBOX_GFX_34, HEALTHBOX_GFX_35, + HEALTHBOX_GFX_STATUS_FSB_BATTLER0, //status fsb + HEALTHBOX_GFX_116, + HEALTHBOX_GFX_117, HEALTHBOX_GFX_36, //misc [Black section] HEALTHBOX_GFX_37, //misc [Black section] HEALTHBOX_GFX_38, //misc [Black section] @@ -123,6 +126,9 @@ enum HEALTHBOX_GFX_STATUS_BRN_BATTLER1, //status2 "BRN" HEALTHBOX_GFX_84, HEALTHBOX_GFX_85, + HEALTHBOX_GFX_STATUS_FSB_BATTLER1, //status2 "FSB" + HEALTHBOX_GFX_118, + HEALTHBOX_GFX_119, HEALTHBOX_GFX_STATUS_PSN_BATTLER2, //status3 "PSN" HEALTHBOX_GFX_87, HEALTHBOX_GFX_88, @@ -138,6 +144,9 @@ enum HEALTHBOX_GFX_STATUS_BRN_BATTLER2, //status3 "BRN" HEALTHBOX_GFX_99, HEALTHBOX_GFX_100, + HEALTHBOX_GFX_STATUS_FSB_BATTLER2, //status3 "FSB" + HEALTHBOX_GFX_120, + HEALTHBOX_GFX_121, HEALTHBOX_GFX_STATUS_PSN_BATTLER3, //status4 "PSN" HEALTHBOX_GFX_102, HEALTHBOX_GFX_103, @@ -153,6 +162,9 @@ enum HEALTHBOX_GFX_STATUS_BRN_BATTLER3, //status4 "BRN" HEALTHBOX_GFX_114, HEALTHBOX_GFX_115, + HEALTHBOX_GFX_STATUS_FSB_BATTLER3, //status4 "FSB" + HEALTHBOX_GFX_122, + HEALTHBOX_GFX_123, HEALTHBOX_GFX_FRAME_END, HEALTHBOX_GFX_FRAME_END_BAR, }; @@ -182,6 +194,10 @@ static void SpriteCB_StatusSummaryBalls_Exit(struct Sprite *); static void SpriteCB_StatusSummaryBalls_OnSwitchout(struct Sprite *); static void SpriteCb_MegaTrigger(struct Sprite *); +static void MegaIndicator_SetVisibilities(u32 healthboxId, bool32 invisible); +static void MegaIndicator_UpdateLevel(u32 healthboxId, u32 level); +static void MegaIndicator_CreateSprites(u32 battlerId, u32 healthboxSpriteId); +static void MegaIndicator_UpdateOamPriorities(u32 healthboxId, u32 oamPriority); static void SpriteCb_MegaIndicator(struct Sprite *); static u8 GetStatusIconForBattlerId(u8, u8); @@ -602,7 +618,7 @@ static const struct WindowTemplate sHealthboxWindowTemplate = { .baseBlock = 0 }; -static const u8 sMegaTriggerGfx[] = INCBIN_U8("graphics/battle_interface/mega_trigger.4bpp"); +static const u8 ALIGNED(4) sMegaTriggerGfx[] = INCBIN_U8("graphics/battle_interface/mega_trigger.4bpp"); static const u16 sMegaTriggerPal[] = INCBIN_U16("graphics/battle_interface/mega_trigger.gbapal"); static const struct SpriteSheet sSpriteSheet_MegaTrigger = @@ -660,90 +676,6 @@ static const struct SpriteTemplate sSpriteTemplate_MegaTrigger = .callback = SpriteCb_MegaTrigger }; -static const u8 sMegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/mega_indicator.4bpp"); -static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal"); - -static const struct SpriteSheet sSpriteSheet_MegaIndicator = -{ - sMegaIndicatorGfx, sizeof(sMegaIndicatorGfx), TAG_MEGA_INDICATOR_TILE -}; -static const struct SpritePalette sSpritePalette_MegaIndicator = -{ - sMegaIndicatorPal, TAG_MEGA_INDICATOR_PAL -}; - -static const u8 sAlphaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/alpha_indicator.4bpp"); -static const u16 sAlphaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/alpha_indicator.gbapal"); -static const u8 sOmegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/omega_indicator.4bpp"); -static const u16 sOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/omega_indicator.gbapal"); - -static const struct SpriteSheet sSpriteSheet_AlphaIndicator = -{ - sAlphaIndicatorGfx, sizeof(sAlphaIndicatorGfx), TAG_ALPHA_INDICATOR_TILE -}; -static const struct SpritePalette sSpritePalette_AlphaIndicator = -{ - sAlphaIndicatorPal, TAG_ALPHA_INDICATOR_PAL -}; -static const struct SpriteSheet sSpriteSheet_OmegaIndicator = -{ - sOmegaIndicatorGfx, sizeof(sOmegaIndicatorGfx), TAG_OMEGA_INDICATOR_TILE -}; -static const struct SpritePalette sSpritePalette_OmegaIndicator = -{ - sOmegaIndicatorPal, TAG_OMEGA_INDICATOR_PAL -}; - -static const struct OamData sOamData_MegaIndicator = -{ - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 1, - .paletteNum = 0, - .affineParam = 0, -}; - -static const struct SpriteTemplate sSpriteTemplate_MegaIndicator = -{ - .tileTag = TAG_MEGA_INDICATOR_TILE, - .paletteTag = TAG_MEGA_INDICATOR_PAL, - .oam = &sOamData_MegaIndicator, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCb_MegaIndicator, -}; - -static const struct SpriteTemplate sSpriteTemplate_AlphaIndicator = -{ - .tileTag = TAG_ALPHA_INDICATOR_TILE, - .paletteTag = TAG_ALPHA_INDICATOR_PAL, - .oam = &sOamData_MegaIndicator, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCb_MegaIndicator, -}; - -static const struct SpriteTemplate sSpriteTemplate_OmegaIndicator = -{ - .tileTag = TAG_OMEGA_INDICATOR_TILE, - .paletteTag = TAG_OMEGA_INDICATOR_PAL, - .oam = &sOamData_MegaIndicator, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCb_MegaIndicator, -}; - // Because the healthbox is too large to fit into one sprite, it is divided into two sprites. // healthboxLeft or healthboxMain is the left part that is used as the 'main' sprite. // healthboxRight or healthboxOther is the right part of the healthbox. @@ -751,26 +683,18 @@ static const struct SpriteTemplate sSpriteTemplate_OmegaIndicator = // data fields for healthboxMain // oam.affineParam holds healthboxRight spriteId +#define hMain_MegaIndicatorIds data[3] // Mega, Alpha, Omega as u8 in data[3], data[3] + 1, data[4] #define hMain_HealthBarSpriteId data[5] #define hMain_Battler data[6] #define hMain_Data7 data[7] // data fields for healthboxRight #define hOther_HealthBoxSpriteId data[5] -#define hOther_IndicatorSpriteId data[6] // For Mega Evo // data fields for healthbar #define hBar_HealthBoxSpriteId data[5] #define hBar_Data6 data[6] -u8 GetMegaIndicatorSpriteId(u32 healthboxSpriteId) -{ - u8 spriteId = gSprites[healthboxSpriteId].oam.affineParam; - if (spriteId >= MAX_SPRITES) - return 0xFF; - return gSprites[spriteId].hOther_IndicatorSpriteId; -} - static void InitLastUsedBallAssets(void) { gBattleStruct->ballSpriteIds[0] = MAX_SPRITES; @@ -778,12 +702,17 @@ static void InitLastUsedBallAssets(void) } // This function is here to cover a specific case - one player's mon in a 2 vs 1 double battle. In this scenario - display singles layout. +// The same goes for a 2 vs 1 where opponent has only one pokemon. u32 WhichBattleCoords(u32 battlerId) // 0 - singles, 1 - doubles { if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT && gPlayerPartyCount == 1 && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) return 0; + else if (GetBattlerPosition(battlerId) == B_POSITION_OPPONENT_LEFT + && gEnemyPartyCount == 1 + && !(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)) + return 0; else return IsDoubleBattle(); } @@ -864,19 +793,13 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId) gSprites[healthboxLeftSpriteId].invisible = TRUE; gSprites[healthboxRightSpriteId].invisible = TRUE; - gSprites[healthboxRightSpriteId].hOther_IndicatorSpriteId = 0xFF; healthBarSpritePtr->hBar_HealthBoxSpriteId = healthboxLeftSpriteId; healthBarSpritePtr->hBar_Data6 = data6; healthBarSpritePtr->invisible = TRUE; - // Create mega indicator sprite if is a mega evolved or a primal reverted mon. - if (gBattleStruct->mega.evolvedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]] - || gBattleStruct->mega.primalRevertedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]]) - { - megaIndicatorSpriteId = CreateMegaIndicatorSprite(battlerId, 0); - gSprites[megaIndicatorSpriteId].invisible = TRUE; - } + // Create mega indicator sprites. + MegaIndicator_CreateSprites(battlerId, healthboxLeftSpriteId); gBattleStruct->ballSpriteIds[0] = MAX_SPRITES; gBattleStruct->ballSpriteIds[1] = MAX_SPRITES; @@ -899,8 +822,6 @@ u8 CreateSafariPlayerHealthboxSprites(void) gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId; gSprites[healthboxRightSpriteId].hOther_HealthBoxSpriteId = healthboxLeftSpriteId; - gSprites[healthboxRightSpriteId].hOther_IndicatorSpriteId = 0xFF; - gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther; return healthboxLeftSpriteId; @@ -940,19 +861,12 @@ static void SpriteCB_HealthBar(struct Sprite *sprite) static void SpriteCB_HealthBoxOther(struct Sprite *sprite) { u8 healthboxMainSpriteId = sprite->hOther_HealthBoxSpriteId; - u8 megaSpriteId = sprite->hOther_IndicatorSpriteId; sprite->x = gSprites[healthboxMainSpriteId].x + 64; sprite->y = gSprites[healthboxMainSpriteId].y; sprite->x2 = gSprites[healthboxMainSpriteId].x2; sprite->y2 = gSprites[healthboxMainSpriteId].y2; - - if (megaSpriteId != 0xFF) - { - gSprites[megaSpriteId].x2 = sprite->x2; - gSprites[megaSpriteId].y2 = sprite->y2; - } } void SetBattleBarStruct(u8 battlerId, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue) @@ -966,28 +880,18 @@ void SetBattleBarStruct(u8 battlerId, u8 healthboxSpriteId, s32 maxVal, s32 oldV void SetHealthboxSpriteInvisible(u8 healthboxSpriteId) { - DestroyMegaIndicatorSprite(healthboxSpriteId); gSprites[healthboxSpriteId].invisible = TRUE; gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = TRUE; gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = TRUE; + MegaIndicator_SetVisibilities(healthboxSpriteId, TRUE); } void SetHealthboxSpriteVisible(u8 healthboxSpriteId) { - u8 battlerId = gSprites[healthboxSpriteId].hMain_Battler; - gSprites[healthboxSpriteId].invisible = FALSE; gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = FALSE; gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = FALSE; - if (gBattleStruct->mega.evolvedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]] - || gBattleStruct->mega.primalRevertedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]]) - { - u8 spriteId = GetMegaIndicatorSpriteId(healthboxSpriteId); - if (spriteId != 0xFF) - gSprites[spriteId].invisible = FALSE; - else - CreateMegaIndicatorSprite(battlerId, 0); - } + MegaIndicator_SetVisibilities(healthboxSpriteId, FALSE); } static void UpdateSpritePos(u8 spriteId, s16 x, s16 y) @@ -996,39 +900,24 @@ static void UpdateSpritePos(u8 spriteId, s16 x, s16 y) gSprites[spriteId].y = y; } -void DestoryHealthboxSprite(u8 healthboxSpriteId) -{ - DestroyMegaIndicatorSprite(healthboxSpriteId); - DestroySprite(&gSprites[gSprites[healthboxSpriteId].oam.affineParam]); - DestroySprite(&gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId]); - DestroySprite(&gSprites[healthboxSpriteId]); -} - void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBattlerOnly) { } -static void TryToggleHealboxVisibility(u8 priority, u8 healthboxLeftSpriteId, u8 healthboxRightSpriteId, u8 healthbarSpriteId, u8 indicatorSpriteId) +static void TryToggleHealboxVisibility(u32 priority, u32 healthboxLeftSpriteId, u32 healthboxRightSpriteId, u32 healthbarSpriteId) { - u8 spriteIds[4] = {healthboxLeftSpriteId, healthboxRightSpriteId, healthbarSpriteId, indicatorSpriteId}; - int i; + bool32 invisible = FALSE; - for (i = 0; i < NELEMS(spriteIds); i++) - { - if (spriteIds[i] == 0xFF) - continue; + if (priority == 0) // start of anim -> make invisible + invisible = TRUE; + else if (priority == 1) // end of anim -> make visible + invisible = FALSE; - switch (priority) - { - case 0: //start of anim -> make invisible - gSprites[spriteIds[i]].invisible = TRUE; - break; - case 1: //end of anim -> make visible - gSprites[spriteIds[i]].invisible = FALSE; - break; - } - } + gSprites[healthboxLeftSpriteId].invisible = invisible; + gSprites[healthboxRightSpriteId].invisible = invisible; + gSprites[healthbarSpriteId].invisible = invisible; + MegaIndicator_SetVisibilities(healthboxLeftSpriteId, invisible); } void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) @@ -1040,17 +929,16 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) u8 healthboxLeftSpriteId = gHealthboxSpriteIds[i]; u8 healthboxRightSpriteId = gSprites[gHealthboxSpriteIds[i]].oam.affineParam; u8 healthbarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId; - u8 indicatorSpriteId = GetMegaIndicatorSpriteId(healthboxLeftSpriteId); gSprites[healthboxLeftSpriteId].oam.priority = priority; gSprites[healthboxRightSpriteId].oam.priority = priority; gSprites[healthbarSpriteId].oam.priority = priority; - if (indicatorSpriteId != 0xFF) - gSprites[indicatorSpriteId].oam.priority = priority; + + MegaIndicator_UpdateOamPriorities(healthboxLeftSpriteId, priority); #if B_HIDE_HEALTHBOX_IN_ANIMS if (hideHPBoxes && IsBattlerAlive(i)) - TryToggleHealboxVisibility(priority, healthboxLeftSpriteId, healthboxRightSpriteId, healthbarSpriteId, indicatorSpriteId); + TryToggleHealboxVisibility(priority, healthboxLeftSpriteId, healthboxRightSpriteId, healthbarSpriteId); #endif } } @@ -1104,11 +992,12 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) u8 battler = gSprites[healthboxSpriteId].hMain_Battler; // Don't print Lv char if mon is mega evolved or primal reverted. - if (gBattleStruct->mega.evolvedPartyIds[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]] - || gBattleStruct->mega.primalRevertedPartyIds[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]]) + if (IsBattlerMegaEvolved(battler) || IsBattlerPrimalReverted(battler)) { objVram = ConvertIntToDecimalStringN(text, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); xPos = 5 * (3 - (objVram - (text + 2))) - 1; + MegaIndicator_UpdateLevel(healthboxSpriteId, lvl); + MegaIndicator_SetVisibilities(healthboxSpriteId, FALSE); } else { @@ -1119,7 +1008,6 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) xPos = 5 * (3 - (objVram - (text + 2))); } - xPos = 5 * (3 - (objVram - (text + 2))); windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId); spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; @@ -1418,7 +1306,7 @@ void SwapHpBarsWithHpText(void) } } -// Mega Evolution gfx functions. +// Mega Evolution Trigger icon functions. void ChangeMegaTriggerSprite(u8 spriteId, u8 animId) { StartSpriteAnim(&gSprites[spriteId], animId); @@ -1543,6 +1431,64 @@ void DestroyMegaTriggerSprite(void) gBattleStruct->mega.triggerSpriteId = 0xFF; } +#undef tBattler +#undef tHide + +// Code for Mega Evolution (And Alpha/Omega) Trigger icon visible on the battler's healthbox. +enum +{ + INDICATOR_MEGA, + INDICATOR_ALPHA, + INDICATOR_OMEGA, + INDICATOR_COUNT, +}; + +static const u8 ALIGNED(4) sMegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/mega_indicator.4bpp"); +static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal"); +static const u8 ALIGNED(4) sAlphaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/alpha_indicator.4bpp"); +static const u8 ALIGNED(4) sOmegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/omega_indicator.4bpp"); +static const u16 sAlphaOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/alpha_indicator.gbapal"); + +static const struct SpriteSheet sMegaIndicator_SpriteSheets[] = +{ + [INDICATOR_MEGA] = {sMegaIndicatorGfx, sizeof(sMegaIndicatorGfx), TAG_MEGA_INDICATOR_TILE}, + [INDICATOR_ALPHA] = {sAlphaIndicatorGfx, sizeof(sAlphaIndicatorGfx), TAG_ALPHA_INDICATOR_TILE}, + [INDICATOR_OMEGA] = {sOmegaIndicatorGfx, sizeof(sOmegaIndicatorGfx), TAG_OMEGA_INDICATOR_TILE}, + [INDICATOR_COUNT] = {0} +}; +static const struct SpritePalette sMegaIndicator_SpritePalettes[] = +{ + [INDICATOR_MEGA] = {sMegaIndicatorPal, TAG_MEGA_INDICATOR_PAL}, + [INDICATOR_ALPHA] = {sAlphaOmegaIndicatorPal, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_COUNT] = {0} +}; + +static const struct OamData sOamData_MegaIndicator = +{ + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 1, +}; + +static const struct SpriteTemplate sSpriteTemplate_MegaIndicator = +{ + .tileTag = TAG_MEGA_INDICATOR_TILE, + .paletteTag = TAG_MEGA_INDICATOR_PAL, + .oam = &sOamData_MegaIndicator, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCb_MegaIndicator, +}; + +static const u16 sMegaIndicatorTags[][2] = +{ + [INDICATOR_MEGA] = {TAG_MEGA_INDICATOR_TILE, TAG_MEGA_INDICATOR_PAL}, + [INDICATOR_ALPHA] = {TAG_ALPHA_INDICATOR_TILE, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_OMEGA] = {TAG_OMEGA_INDICATOR_TILE, TAG_ALPHA_OMEGA_INDICATOR_PAL}, +}; + static const s8 sIndicatorPositions[][2] = { [B_POSITION_PLAYER_LEFT] = {52, -9}, @@ -1551,89 +1497,125 @@ static const s8 sIndicatorPositions[][2] = [B_POSITION_OPPONENT_RIGHT] = {44, -9}, }; -u32 CreateMegaIndicatorSprite(u32 battlerId, u32 which) +// for sprite data fields +#define tBattler data[0] +#define tType data[1] // Indicator type: mega, alpha, omega +#define tPosX data[2] +#define tLevelXDelta data[3] // X position depends whether level has 3, 2 or 1 digit + +void MegaIndicator_LoadSpritesGfx(void) { - u32 spriteId, position; - s16 x, y; + LoadSpriteSheets(sMegaIndicator_SpriteSheets); + LoadSpritePalettes(sMegaIndicator_SpritePalettes); +} - if (gBattleStruct->mega.evolvedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]]) +static bool32 MegaIndicator_ShouldBeInvisible(u32 battlerId, u32 indicatorType) +{ + u32 side = GetBattlerSide(battlerId); + if (indicatorType == INDICATOR_MEGA) { - LoadSpritePalette(&sSpritePalette_MegaIndicator); - LoadSpriteSheet(&sSpriteSheet_MegaIndicator); + if (IsBattlerMegaEvolved(battlerId)) + return FALSE; } - else if (gBattleStruct->mega.primalRevertedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]]) + else { - if (GET_BASE_SPECIES_ID(gBattleMons[battlerId].species) == SPECIES_GROUDON) - { - LoadSpritePalette(&sSpritePalette_OmegaIndicator); - LoadSpriteSheet(&sSpriteSheet_OmegaIndicator); - } - else if (GET_BASE_SPECIES_ID(gBattleMons[battlerId].species) == SPECIES_KYOGRE) - { - LoadSpritePalette(&sSpritePalette_AlphaIndicator); - LoadSpriteSheet(&sSpriteSheet_AlphaIndicator); - } + if (indicatorType == INDICATOR_ALPHA && gBattleMons[battlerId].species != SPECIES_KYOGRE_PRIMAL) + return TRUE; + else if (indicatorType == INDICATOR_OMEGA && gBattleMons[battlerId].species != SPECIES_GROUDON_PRIMAL) + return TRUE; + if (IsBattlerPrimalReverted(battlerId)) + return FALSE; } + return TRUE; +} - position = GetBattlerPosition(battlerId); - GetBattlerHealthboxCoords(battlerId, &x, &y); +static u8 *MegaIndicator_GetSpriteIds(u32 healthboxSpriteId) +{ + u8 *spriteIds = (u8 *)(&gSprites[healthboxSpriteId].hMain_MegaIndicatorIds); + return spriteIds; +} - x += sIndicatorPositions[position][0]; - y += sIndicatorPositions[position][1]; +void MegaIndicator_SetVisibilities(u32 healthboxId, bool32 invisible) +{ + u32 i; + u8 *spriteIds = MegaIndicator_GetSpriteIds(healthboxId); + u32 battlerId = gSprites[healthboxId].hMain_Battler; - if (gBattleMons[battlerId].level >= 100) - x -= 4; - else if (gBattleMons[battlerId].level < 10) - x += 5; + if (GetSafariZoneFlag()) + return; - if (gBattleStruct->mega.evolvedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]]) - { - spriteId = CreateSpriteAtEnd(&sSpriteTemplate_MegaIndicator, x, y, 0); - } - else if (gBattleStruct->mega.primalRevertedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]]) + for (i = 0; i < INDICATOR_COUNT; i++) { - if (GET_BASE_SPECIES_ID(gBattleMons[battlerId].species) == SPECIES_GROUDON) - spriteId = CreateSpriteAtEnd(&sSpriteTemplate_OmegaIndicator, x, y, 0); - else if (GET_BASE_SPECIES_ID(gBattleMons[battlerId].species) == SPECIES_KYOGRE) - spriteId = CreateSpriteAtEnd(&sSpriteTemplate_AlphaIndicator, x, y, 0); + if (invisible == TRUE) + gSprites[spriteIds[i]].invisible = TRUE; + else // Try visible. + gSprites[spriteIds[i]].invisible = MegaIndicator_ShouldBeInvisible(battlerId, i); } +} - gSprites[gSprites[gHealthboxSpriteIds[battlerId]].oam.affineParam].hOther_IndicatorSpriteId = spriteId; - gSprites[spriteId].tBattler = battlerId; - return spriteId; +static void MegaIndicator_UpdateOamPriorities(u32 healthboxId, u32 oamPriority) +{ + u32 i; + u8 *spriteIds = MegaIndicator_GetSpriteIds(healthboxId); + for (i = 0; i < INDICATOR_COUNT; i++) + gSprites[spriteIds[i]].oam.priority = oamPriority; } -void DestroyMegaIndicatorSprite(u32 healthboxSpriteId) +static void MegaIndicator_UpdateLevel(u32 healthboxId, u32 level) { u32 i; - s16 *spriteId = &gSprites[gSprites[healthboxSpriteId].oam.affineParam].hOther_IndicatorSpriteId; + s16 xDelta = 0; + u8 *spriteIds = MegaIndicator_GetSpriteIds(healthboxId); - if (*spriteId != 0xFF) - { - DestroySprite(&gSprites[*spriteId]); - *spriteId = 0xFF; - } + if (level >= 100) + xDelta -= 4; + else if (level < 10) + xDelta += 5; - for (i = 0; i < MAX_BATTLERS_COUNT; i++) - { - if (gSprites[gSprites[gHealthboxSpriteIds[i]].oam.affineParam].hOther_IndicatorSpriteId != 0xFF) - break; - } - // Free Sprite pal/tiles only if no indicator sprite is active for all battlers. - if (i == MAX_BATTLERS_COUNT) + for (i = 0; i < INDICATOR_COUNT; i++) + gSprites[spriteIds[i]].tLevelXDelta = xDelta; +} + +static void MegaIndicator_CreateSprites(u32 battlerId, u32 healthboxSpriteId) +{ + u32 position, i, level; + u8 *spriteIds; + s16 xHealthbox = 0, y = 0; + s32 x = 0; + + position = GetBattlerPosition(battlerId); + GetBattlerHealthboxCoords(battlerId, &xHealthbox, &y); + + x = sIndicatorPositions[position][0]; + y += sIndicatorPositions[position][1]; + + spriteIds = MegaIndicator_GetSpriteIds(healthboxSpriteId); + for (i = 0; i < INDICATOR_COUNT; i++) { - FreeSpritePaletteByTag(TAG_MEGA_INDICATOR_PAL); - FreeSpriteTilesByTag(TAG_MEGA_INDICATOR_TILE); + struct SpriteTemplate sprTemplate = sSpriteTemplate_MegaIndicator; + sprTemplate.tileTag = sMegaIndicatorTags[i][0]; + sprTemplate.paletteTag = sMegaIndicatorTags[i][1]; + spriteIds[i] = CreateSpriteAtEnd(&sprTemplate, 0, y, 0); + gSprites[spriteIds[i]].tType = i; + gSprites[spriteIds[i]].tBattler = battlerId; + gSprites[spriteIds[i]].tPosX = x; + gSprites[spriteIds[i]].invisible = TRUE; } } static void SpriteCb_MegaIndicator(struct Sprite *sprite) { + u32 battlerId = sprite->tBattler; + sprite->x = gSprites[gHealthboxSpriteIds[battlerId]].x + sprite->tPosX + sprite->tLevelXDelta; + sprite->x2 = gSprites[gHealthboxSpriteIds[battlerId]].x2; + sprite->y2 = gSprites[gHealthboxSpriteIds[battlerId]].y2; } #undef tBattler -#undef tHide +#undef tType +#undef tPosX +#undef tLevelXDelta #define tBattler data[0] #define tSummaryBarSpriteId data[1] @@ -2231,6 +2213,11 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, battlerId)); statusPalId = PAL_STATUS_FRZ; } + else if (status & STATUS1_FROSTBITE) + { + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FSB_BATTLER0, battlerId)); + statusPalId = PAL_STATUS_FRZ; + } else if (status & STATUS1_PARALYSIS) { statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, battlerId)); @@ -2254,7 +2241,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) pltAdder += battlerId + 12; FillPalette(sStatusIconColors[statusPalId], OBJ_PLTT_OFFSET + pltAdder, PLTT_SIZEOF(1)); - CpuCopy16(gPlttBufferUnfaded + OBJ_PLTT_OFFSET + pltAdder, (u16 *)OBJ_PLTT + pltAdder, PLTT_SIZEOF(1)); + CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_OFFSET + pltAdder], (u16 *)OBJ_PLTT + pltAdder, PLTT_SIZEOF(1)); CpuCopy32(statusGfxPtr, (void *)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96); if (WhichBattleCoords(battlerId) == 1 || GetBattlerSide(battlerId) == B_SIDE_OPPONENT) { @@ -2313,6 +2300,16 @@ static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId) else ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER3; break; + case HEALTHBOX_GFX_STATUS_FSB_BATTLER0: + if (battlerId == 0) + ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER0; + else if (battlerId == 1) + ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER1; + else if (battlerId == 2) + ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER2; + else + ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER3; + break; case HEALTHBOX_GFX_STATUS_BRN_BATTLER0: if (battlerId == 0) ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER0; @@ -2788,7 +2785,7 @@ static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 wi #define tSpriteId1 data[6] #define tSpriteId2 data[7] -static const u8 sAbilityPopUpGfx[] = INCBIN_U8("graphics/battle_interface/ability_pop_up.4bpp"); +static const u8 ALIGNED(4) sAbilityPopUpGfx[] = INCBIN_U8("graphics/battle_interface/ability_pop_up.4bpp"); static const u16 sAbilityPopUpPalette[] = INCBIN_U16("graphics/battle_interface/ability_pop_up.gbapal"); static const struct SpriteSheet sSpriteSheet_AbilityPopUp = @@ -3247,9 +3244,9 @@ static const struct SpriteTemplate sSpriteTemplate_LastUsedBallWindow = }; #if B_LAST_USED_BALL_BUTTON == R_BUTTON - static const u8 sLastUsedBallWindowGfx[] = INCBIN_U8("graphics/battle_interface/last_used_ball_r.4bpp"); + static const u8 ALIGNED(4) sLastUsedBallWindowGfx[] = INCBIN_U8("graphics/battle_interface/last_used_ball_r.4bpp"); #else - static const u8 sLastUsedBallWindowGfx[] = INCBIN_U8("graphics/battle_interface/last_used_ball_l.4bpp"); + static const u8 ALIGNED(4) sLastUsedBallWindowGfx[] = INCBIN_U8("graphics/battle_interface/last_used_ball_l.4bpp"); #endif static const struct SpriteSheet sSpriteSheet_LastUsedBallWindow = { diff --git a/src/battle_main.c b/src/battle_main.c index b23d8af5538c..270447a0e104 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -118,6 +118,9 @@ static void HandleEndTurn_FinishBattle(void); static void SpriteCB_UnusedBattleInit(struct Sprite *sprite); static void SpriteCB_UnusedBattleInit_Main(struct Sprite *sprite); static void TrySpecialEvolution(void); +static u32 Crc32B (const u8 *data, u32 size); +static u32 GeneratePartyHash(const struct Trainer *trainer, u32 i); +static void CustomTrainerPartyAssignMoves(struct Pokemon *mon, const struct TrainerMonCustomized *partyEntry); EWRAM_DATA u16 gBattle_BG0_X = 0; EWRAM_DATA u16 gBattle_BG0_Y = 0; @@ -223,6 +226,7 @@ EWRAM_DATA u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gBattlerInMenuId = 0; EWRAM_DATA bool8 gDoingBattleAnim = FALSE; EWRAM_DATA u32 gTransformedPersonalities[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u32 gTransformedOtIds[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gPlayerDpadHoldFrames = 0; EWRAM_DATA struct BattleSpriteData *gBattleSpritesDataPtr = NULL; EWRAM_DATA struct MonSpritesGfx *gMonSpritesGfxPtr = NULL; @@ -591,6 +595,7 @@ static void CB2_InitBattleInternal(void) if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && !BATTLE_TWO_VS_ONE_OPPONENT) CreateNPCTrainerParty(&gEnemyParty[PARTY_SIZE / 2], gTrainerBattleOpponent_B, FALSE); SetWildMonHeldItem(); + CalculateEnemyPartyCount(); } gMain.inBattle = TRUE; @@ -603,53 +608,41 @@ static void CB2_InitBattleInternal(void) for (i = 0; i < PARTY_SIZE; i++) { // Player's side - targetSpecies = GetFormChangeTargetSpecies(&gPlayerParty[i], FORM_BATTLE_BEGIN, 0); - if (targetSpecies != SPECIES_NONE) - { - SetMonData(&gPlayerParty[i], MON_DATA_SPECIES, &targetSpecies); - CalculateMonStats(&gPlayerParty[i]); - TryToSetBattleFormChangeMoves(&gPlayerParty[i]); - } + TryFormChange(i, B_SIDE_PLAYER, FORM_CHANGE_BEGIN_BATTLE); // Opponent's side - targetSpecies = GetFormChangeTargetSpecies(&gEnemyParty[i], FORM_BATTLE_BEGIN, 0); - if (targetSpecies != SPECIES_NONE) - { - SetMonData(&gEnemyParty[i], MON_DATA_SPECIES, &targetSpecies); - CalculateMonStats(&gEnemyParty[i]); - TryToSetBattleFormChangeMoves(&gEnemyParty[i]); - } + TryFormChange(i, B_SIDE_OPPONENT, FORM_CHANGE_BEGIN_BATTLE); } gBattleCommunication[MULTIUSE_STATE] = 0; } -#define BUFFER_PARTY_VS_SCREEN_STATUS(party, flags, i) \ - for ((i) = 0; (i) < PARTY_SIZE; (i)++) \ - { \ - u16 species = GetMonData(&(party)[(i)], MON_DATA_SPECIES2); \ - u16 hp = GetMonData(&(party)[(i)], MON_DATA_HP); \ - u32 status = GetMonData(&(party)[(i)], MON_DATA_STATUS); \ - \ - if (species == SPECIES_NONE) \ - continue; \ - \ - /* Is healthy mon? */ \ - if (species != SPECIES_EGG && hp != 0 && status == 0) \ - (flags) |= 1 << (i) * 2; \ - \ - if (species == SPECIES_NONE) /* Redundant */ \ - continue; \ - \ - /* Is Egg or statused? */ \ - if (hp != 0 && (species == SPECIES_EGG || status != 0)) \ - (flags) |= 2 << (i) * 2; \ - \ - if (species == SPECIES_NONE) /* Redundant */ \ - continue; \ - \ - /* Is fainted? */ \ - if (species != SPECIES_EGG && hp == 0) \ - (flags) |= 3 << (i) * 2; \ +#define BUFFER_PARTY_VS_SCREEN_STATUS(party, flags, i) \ + for ((i) = 0; (i) < PARTY_SIZE; (i)++) \ + { \ + u16 species = GetMonData(&(party)[(i)], MON_DATA_SPECIES_OR_EGG); \ + u16 hp = GetMonData(&(party)[(i)], MON_DATA_HP); \ + u32 status = GetMonData(&(party)[(i)], MON_DATA_STATUS); \ + \ + if (species == SPECIES_NONE) \ + continue; \ + \ + /* Is healthy mon? */ \ + if (species != SPECIES_EGG && hp != 0 && status == 0) \ + (flags) |= 1 << (i) * 2; \ + \ + if (species == SPECIES_NONE) /* Redundant */ \ + continue; \ + \ + /* Is Egg or statused? */ \ + if (hp != 0 && (species == SPECIES_EGG || status != 0)) \ + (flags) |= 2 << (i) * 2; \ + \ + if (species == SPECIES_NONE) /* Redundant */ \ + continue; \ + \ + /* Is fainted? */ \ + if (species != SPECIES_EGG && hp == 0) \ + (flags) |= 3 << (i) * 2; \ } // For Vs Screen at link battle start @@ -1869,72 +1862,152 @@ static void SpriteCB_UnusedBattleInit_Main(struct Sprite *sprite) } } -static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer) +static u32 Crc32B (const u8 *data, u32 size) +{ + s32 i, j; + u32 byte, crc, mask; + + i = 0; + crc = 0xFFFFFFFF; + for (i = 0; i < size; ++i) + { + byte = data[i]; + crc = crc ^ byte; + for (j = 7; j >= 0; --j) + { + mask = -(crc & 1); + crc = (crc >> 1) ^ (0xEDB88320 & mask); + } + } + return ~crc; +} + +static u32 GeneratePartyHash(const struct Trainer *trainer, u32 i) +{ + const u8 *buffer; + u32 n; + if (trainer->partyFlags == 0) + { + buffer = (const u8 *) &trainer->party.NoItemDefaultMoves[i]; + n = sizeof(*trainer->party.NoItemDefaultMoves); + } + else if (trainer->partyFlags == F_TRAINER_PARTY_CUSTOM_MOVESET) + { + buffer = (const u8 *) &trainer->party.NoItemCustomMoves[i]; + n = sizeof(*trainer->party.NoItemCustomMoves); + } + else if (trainer->partyFlags == F_TRAINER_PARTY_HELD_ITEM) + { + buffer = (const u8 *) &trainer->party.ItemDefaultMoves[i]; + n = sizeof(*trainer->party.ItemDefaultMoves); + } + else if (trainer->partyFlags == (F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET)) + { + buffer = (const u8 *) &trainer->party.ItemCustomMoves[i]; + n = sizeof(*trainer->party.ItemCustomMoves); + } + else if (trainer->partyFlags == F_TRAINER_PARTY_EVERYTHING_CUSTOMIZED) + { + buffer = (const u8 *) &trainer->party.EverythingCustomized[i]; + n = sizeof(*trainer->party.EverythingCustomized); + } + return Crc32B(buffer, n); +} + +void ModifyPersonalityForNature(u32 *personality, u32 newNature) +{ + u32 nature = GetNatureFromPersonality(*personality); + s32 diff = abs(nature - newNature); + s32 sign = (nature > newNature) ? 1 : -1; + if (diff > NUM_NATURES / 2) + { + diff = NUM_NATURES - diff; + sign *= -1; + } + *personality -= (diff * sign); +} + +u32 GeneratePersonalityForGender(u32 gender, u32 species) +{ + const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[species]; + if (gender == MON_MALE) + return ((255 - speciesInfo->genderRatio) / 2) + speciesInfo->genderRatio; + else + return speciesInfo->genderRatio / 2; +} + +static void CustomTrainerPartyAssignMoves(struct Pokemon *mon, const struct TrainerMonCustomized *partyEntry) +{ + bool32 noMoveSet = TRUE; + u32 j; + + for (j = 0; j < MAX_MON_MOVES; ++j) + { + if (partyEntry->moves[j] != MOVE_NONE) + noMoveSet = FALSE; + } + if (noMoveSet) + { + // TODO: Figure out a default strategy when moves are not set, to generate a good moveset + return; + } + + for (j = 0; j < MAX_MON_MOVES; ++j) + { + SetMonData(mon, MON_DATA_MOVE1 + j, &partyEntry->moves[j]); + SetMonData(mon, MON_DATA_PP1 + j, &gBattleMoves[partyEntry->moves[j]].pp); + } +} + +u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer *trainer, bool32 firstTrainer, u32 battleTypeFlags) { - u32 nameHash = 0; u32 personalityValue; u8 fixedIV; s32 i, j; u8 monsCount; - u16 ball; - - if (trainerNum == TRAINER_SECRET_BASE) - return 0; - - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER + s32 ball = -1; + if (battleTypeFlags & BATTLE_TYPE_TRAINER && !(battleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER_HILL))) { if (firstTrainer == TRUE) ZeroEnemyPartyMons(); - if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + if (battleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) { - if (gTrainers[trainerNum].partySize > PARTY_SIZE / 2) + if (trainer->partySize > PARTY_SIZE / 2) monsCount = PARTY_SIZE / 2; else - monsCount = gTrainers[trainerNum].partySize; + monsCount = trainer->partySize; } else { - monsCount = gTrainers[trainerNum].partySize; + monsCount = trainer->partySize; } for (i = 0; i < monsCount; i++) { - - if (gTrainers[trainerNum].doubleBattle == TRUE) + u32 personalityHash = GeneratePartyHash(trainer, i); + if (trainer->doubleBattle == TRUE) personalityValue = 0x80; - else if (gTrainers[trainerNum].encounterMusic_gender & F_TRAINER_FEMALE) + else if (trainer->encounterMusic_gender & F_TRAINER_FEMALE) personalityValue = 0x78; // Use personality more likely to result in a female Pokémon else personalityValue = 0x88; // Use personality more likely to result in a male Pokémon - for (j = 0; gTrainers[trainerNum].trainerName[j] != EOS; j++) - nameHash += gTrainers[trainerNum].trainerName[j]; - - switch (gTrainers[trainerNum].partyFlags) + personalityValue += personalityHash << 8; + switch (trainer->partyFlags) { case 0: { - const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves; - - for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) - nameHash += gSpeciesNames[partyData[i].species][j]; - - personalityValue += nameHash << 8; + const struct TrainerMonNoItemDefaultMoves *partyData = trainer->party.NoItemDefaultMoves; fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); break; } case F_TRAINER_PARTY_CUSTOM_MOVESET: { - const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves; - - for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) - nameHash += gSpeciesNames[partyData[i].species][j]; - - personalityValue += nameHash << 8; + const struct TrainerMonNoItemCustomMoves *partyData = trainer->party.NoItemCustomMoves; fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); @@ -1947,12 +2020,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir } case F_TRAINER_PARTY_HELD_ITEM: { - const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves; - - for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) - nameHash += gSpeciesNames[partyData[i].species][j]; - - personalityValue += nameHash << 8; + const struct TrainerMonItemDefaultMoves *partyData = trainer->party.ItemDefaultMoves; fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); @@ -1961,12 +2029,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir } case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: { - const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves; - - for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) - nameHash += gSpeciesNames[partyData[i].species][j]; - - personalityValue += nameHash << 8; + const struct TrainerMonItemCustomMoves *partyData = trainer->party.ItemCustomMoves; fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); @@ -1979,18 +2042,89 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir } break; } + case F_TRAINER_PARTY_EVERYTHING_CUSTOMIZED: + { + const struct TrainerMonCustomized *partyData = trainer->party.EverythingCustomized; + u32 otIdType = OT_ID_RANDOM_NO_SHINY; + u32 fixedOtId = 0; + if (partyData[i].gender == TRAINER_MON_MALE) + personalityValue = (personalityValue & 0xFFFFFF00) | GeneratePersonalityForGender(MON_MALE, partyData[i].species); + else if (partyData[i].gender == TRAINER_MON_FEMALE) + personalityValue = (personalityValue & 0xFFFFFF00) | GeneratePersonalityForGender(MON_FEMALE, partyData[i].species); + if (partyData[i].nature != 0) + ModifyPersonalityForNature(&personalityValue, partyData[i].nature - 1); + if (partyData[i].isShiny) + { + otIdType = OT_ID_PRESET; + fixedOtId = HIHALF(personalityValue) ^ LOHALF(personalityValue); + } + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, 0, TRUE, personalityValue, otIdType, fixedOtId); + SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem); + + CustomTrainerPartyAssignMoves(&party[i], &partyData[i]); + SetMonData(&party[i], MON_DATA_IVS, &(partyData[i].iv)); + if (partyData[i].ev != NULL) + { + SetMonData(&party[i], MON_DATA_HP_EV, &(partyData[i].ev[0])); + SetMonData(&party[i], MON_DATA_ATK_EV, &(partyData[i].ev[1])); + SetMonData(&party[i], MON_DATA_DEF_EV, &(partyData[i].ev[2])); + SetMonData(&party[i], MON_DATA_SPATK_EV, &(partyData[i].ev[3])); + SetMonData(&party[i], MON_DATA_SPDEF_EV, &(partyData[i].ev[4])); + SetMonData(&party[i], MON_DATA_SPEED_EV, &(partyData[i].ev[5])); + } + if (partyData[i].ability != ABILITY_NONE) + { + const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[partyData[i].species]; + u32 maxAbilities = ARRAY_COUNT(speciesInfo->abilities); + for (j = 0; j < maxAbilities; ++j) + { + if (speciesInfo->abilities[j] == partyData[i].ability) + break; + } + if (j < maxAbilities) + SetMonData(&party[i], MON_DATA_ABILITY_NUM, &j); + } + SetMonData(&party[i], MON_DATA_FRIENDSHIP, &(partyData[i].friendship)); + if (partyData[i].ball != ITEM_NONE) + { + ball = partyData[i].ball; + SetMonData(&party[i], MON_DATA_POKEBALL, &ball); + } + if (partyData[i].nickname != NULL) + { + SetMonData(&party[i], MON_DATA_NICKNAME, partyData[i].nickname); + } + CalculateMonStats(&party[i]); + } } #if B_TRAINER_CLASS_POKE_BALLS >= GEN_7 - ball = (sTrainerBallTable[gTrainers[trainerNum].trainerClass]) ? sTrainerBallTable[gTrainers[trainerNum].trainerClass] : ITEM_POKE_BALL; - SetMonData(&party[i], MON_DATA_POKEBALL, &ball); + if (ball == -1) + { + ball = (sTrainerBallTable[trainer->trainerClass]) ? sTrainerBallTable[trainer->trainerClass] : ITEM_POKE_BALL; + SetMonData(&party[i], MON_DATA_POKEBALL, &ball); + } #endif } + } + + return trainer->partySize; +} +static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer) +{ + u8 retVal; + if (trainerNum == TRAINER_SECRET_BASE) + return 0; + retVal = CreateNPCTrainerPartyFromTrainer(party, &gTrainers[trainerNum], firstTrainer, gBattleTypeFlags); + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_TRAINER_HILL))) + { gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle; } - - return gTrainers[trainerNum].partySize; + return retVal; } void VBlankCB_Battle(void) @@ -2878,10 +3012,6 @@ static void SpriteCB_BounceEffect(struct Sprite *sprite) gSprites[bouncerSpriteId].y2 = y; sprite->sSinIndex = (sprite->sSinIndex + sprite->sDelta) & 0xFF; - - bouncerSpriteId = GetMegaIndicatorSpriteId(sprite->sBouncerSpriteId); - if (sprite->sWhich == BOUNCE_HEALTHBOX && bouncerSpriteId != 0xFF) - gSprites[bouncerSpriteId].y2 = y; } #undef sSinIndex @@ -3049,13 +3179,14 @@ static void BattleStartClearSetData(void) { gBattleStruct->usedHeldItems[i][B_SIDE_PLAYER] = 0; gBattleStruct->usedHeldItems[i][B_SIDE_OPPONENT] = 0; - gBattleStruct->itemStolen[i].originalItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + gBattleStruct->itemLost[i].originalItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); gPartyCriticalHits[i] = 0; gBattleStruct->allowedToChangeFormInWeather[i][B_SIDE_PLAYER] = FALSE; gBattleStruct->allowedToChangeFormInWeather[i][B_SIDE_OPPONENT] = FALSE; } gBattleStruct->swapDamageCategory = FALSE; // Photon Geyser, Shell Side Arm, Light That Burns the Sky + gSelectedMonPartyId = PARTY_SIZE; // Revival Blessing } void SwitchInClearSetData(void) @@ -3085,7 +3216,7 @@ void SwitchInClearSetData(void) gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BATTLER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_GASTRO_ACID | STATUS3_EMBARGO | STATUS3_TELEKINESIS | STATUS3_MAGNET_RISE | STATUS3_HEAL_BLOCK | STATUS3_AQUA_RING | STATUS3_POWER_TRICK); - gStatuses4[gActiveBattler] &= (STATUS4_MUD_SPORT | STATUS4_WATER_SPORT); + gStatuses4[gActiveBattler] &= (STATUS4_MUD_SPORT | STATUS4_WATER_SPORT | STATUS4_INFINITE_CONFUSION); for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(gActiveBattler) != GetBattlerSide(i) @@ -3168,6 +3299,9 @@ void SwitchInClearSetData(void) gBattleStruct->overwrittenAbilities[gActiveBattler] = ABILITY_NONE; + // Clear selected party ID so Revival Blessing doesn't get confused. + gSelectedMonPartyId = PARTY_SIZE; + Ai_UpdateSwitchInData(gActiveBattler); } @@ -3266,9 +3400,7 @@ void FaintClearSetData(void) gBattleMons[gActiveBattler].type3 = TYPE_MYSTERY; Ai_UpdateFaintData(gActiveBattler); - UndoFormChange(gBattlerPartyIndexes[gActiveBattler], GET_BATTLER_SIDE(gActiveBattler), FALSE); - if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) - UndoMegaEvolution(gBattlerPartyIndexes[gActiveBattler]); + TryBattleFormChange(gActiveBattler, FORM_CHANGE_FAINT); gBattleStruct->overwrittenAbilities[gActiveBattler] = ABILITY_NONE; @@ -3443,8 +3575,8 @@ static void DoBattleIntro(void) for (i = 0; i < PARTY_SIZE; i++) { - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE - || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_NONE + || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_EGG) { hpStatus[i].hp = HP_EMPTY_SLOT; hpStatus[i].status = 0; @@ -3462,8 +3594,8 @@ static void DoBattleIntro(void) for (i = 0; i < PARTY_SIZE; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE - || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_NONE + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_EGG) { hpStatus[i].hp = HP_EMPTY_SLOT; hpStatus[i].status = 0; @@ -3655,7 +3787,9 @@ static void TryDoEventsBeforeFirstTurn(void) { for (i = 0; i < gBattlersCount; i++) { - if (gBattleMons[i].hp == 0 || gBattleMons[i].species == SPECIES_NONE || GetMonData(GetBattlerPartyData(i), MON_DATA_IS_EGG)) + struct Pokemon *party = GetBattlerParty(i); + struct Pokemon *mon = &party[gBattlerPartyIndexes[i]]; + if (gBattleMons[i].hp == 0 || gBattleMons[i].species == SPECIES_NONE || GetMonData(mon, MON_DATA_IS_EGG)) gAbsentBattlerFlags |= gBitTable[i]; } } @@ -3698,24 +3832,6 @@ static void TryDoEventsBeforeFirstTurn(void) } memset(gTotemBoosts, 0, sizeof(gTotemBoosts)); // erase all totem boosts just to be safe - // Primal Reversion - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerHoldEffect(i, TRUE) == HOLD_EFFECT_PRIMAL_ORB) - { - for (j = 0; j < EVOS_PER_MON; j++) - { - if (gEvolutionTable[gBattleMons[i].species][j].targetSpecies != SPECIES_NONE - && gEvolutionTable[gBattleMons[i].species][j].method == EVO_PRIMAL_REVERSION) - { - gBattlerAttacker = i; - BattleScriptExecute(BattleScript_PrimalReversion); - return; - } - } - } - } - // Check neutralizing gas if (AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, 0, 0, 0, 0) != 0) return; @@ -3724,6 +3840,14 @@ static void TryDoEventsBeforeFirstTurn(void) while (gBattleStruct->switchInAbilitiesCounter < gBattlersCount) { gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->switchInAbilitiesCounter++]; + + // Primal Reversion + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_PRIMAL_ORB + && GetBattleFormChangeTargetSpecies(gBattlerAttacker, FORM_CHANGE_BATTLE_PRIMAL_REVERSION) != SPECIES_NONE) + { + BattleScriptExecute(BattleScript_PrimalReversion); + return; + } if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBattlerAttacker, 0, 0, 0) != 0) return; } @@ -3742,7 +3866,7 @@ static void TryDoEventsBeforeFirstTurn(void) gChosenActionByBattler[i] = B_ACTION_NONE; gChosenMoveByBattler[i] = MOVE_NONE; // Record party slots of player's mons that appeared in battle - if (!IsBattlerAIControlled(i)) + if (!BattlerHasAi(i)) gBattleStruct->appearedInBattle |= gBitTable[gBattlerPartyIndexes[i]]; } TurnValuesCleanUp(FALSE); @@ -3776,6 +3900,9 @@ static void TryDoEventsBeforeFirstTurn(void) StopCryAndClearCrySongs(); BattleScriptExecute(BattleScript_ArenaTurnBeginning); } + + if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_BEFORE_FIRST_TURN))) + BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2); } static void HandleEndTurn_ContinueBattle(void) @@ -3866,8 +3993,18 @@ void BattleTurnPassed(void) BattleScriptExecute(BattleScript_PalacePrintFlavorText); else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->arenaTurnCounter == 0) BattleScriptExecute(BattleScript_ArenaTurnBeginning); - else if (ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), gTrainerBattleOpponent_A, TRAINER_SLIDE_LAST_LOW_HP)) - BattleScriptExecute(BattleScript_TrainerSlideMsgEnd2); + else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_LAST_LOW_HP))) + BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2); + else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_LAST_HALF_HP))) + BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2); + else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_FIRST_CRITICAL_HIT))) + BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2); + else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_FIRST_SUPER_EFFECTIVE_HIT))) + BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2); + else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_FIRST_STAB_MOVE))) + BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2); + else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_PLAYER_MON_UNAFFECTED))) + BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2); } u8 IsRunningFromBattleImpossible(void) @@ -3979,7 +4116,8 @@ static void HandleTurnActionSelectionState(void) // Do AI score computations here so we can use them in AI_TrySwitchOrUseItem if ((gBattleTypeFlags & BATTLE_TYPE_HAS_AI || IsWildMonSmart()) - && (IsBattlerAIControlled(gActiveBattler) && !(gBattleTypeFlags & BATTLE_TYPE_PALACE))) { + && (BattlerHasAi(gActiveBattler) && !(gBattleTypeFlags & BATTLE_TYPE_PALACE))) + { gBattleStruct->aiMoveOrAction[gActiveBattler] = ComputeBattleAiScores(gActiveBattler); } break; @@ -4017,6 +4155,7 @@ static void HandleTurnActionSelectionState(void) } else { + gBattleStruct->itemPartyIndex[gActiveBattler] = PARTY_SIZE; BtlController_EmitChooseAction(BUFFER_A, gChosenActionByBattler[0], gBattleResources->bufferB[0][1] | (gBattleResources->bufferB[0][2] << 8)); MarkBattlerForControllerExec(gActiveBattler); gBattleCommunication[gActiveBattler]++; @@ -4084,10 +4223,11 @@ static void HandleTurnActionSelectionState(void) return; } - if ((gBattleTypeFlags & (BATTLE_TYPE_LINK + if (((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER_NO_PYRAMID | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK)) + && !gTestRunnerEnabled) // Or if currently held by Sky Drop || gStatuses3[gActiveBattler] & STATUS3_SKY_DROPPED) { @@ -4502,7 +4642,7 @@ u32 GetBattlerTotalSpeedStat(u8 battlerId) speed *= 2; else if (ability == ABILITY_SAND_RUSH && gBattleWeather & B_WEATHER_SANDSTORM) speed *= 2; - else if (ability == ABILITY_SLUSH_RUSH && gBattleWeather & B_WEATHER_HAIL) + else if (ability == ABILITY_SLUSH_RUSH && (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW))) speed *= 2; } @@ -4777,9 +4917,6 @@ static void SetActionsAndBattlersTurnOrder(void) turnOrderId++; } } - gBattleMainFunc = CheckMegaEvolutionBeforeTurn; - gBattleStruct->mega.battlerId = 0; - return; } else { @@ -4825,8 +4962,8 @@ static void SetActionsAndBattlersTurnOrder(void) } } } - gBattleMainFunc = CheckMegaEvolutionBeforeTurn; - gBattleStruct->mega.battlerId = 0; + gBattleMainFunc = CheckQuickClaw_CustapBerryActivation; + gBattleStruct->quickClawBattlerId = 0; } static void TurnValuesCleanUp(bool8 var0) @@ -4875,92 +5012,106 @@ void SpecialStatusesClear(void) memset(&gSpecialStatuses, 0, sizeof(gSpecialStatuses)); } -static void CheckMegaEvolutionBeforeTurn(void) +static void PopulateArrayWithBattlers(u8 *battlers) { - if (!(gHitMarker & HITMARKER_RUN)) + u32 i; + for (i = 0; i < gBattlersCount; i++) + battlers[i] = i; +} + +static bool32 TryDoMegaEvosBeforeMoves(void) +{ + if (!(gHitMarker & HITMARKER_RUN) && gBattleStruct->mega.toEvolve) { - while (gBattleStruct->mega.battlerId < gBattlersCount) + u32 i; + struct Pokemon *party; + struct Pokemon *mon; + u8 megaOrder[MAX_BATTLERS_COUNT]; + + PopulateArrayWithBattlers(megaOrder); + SortBattlersBySpeed(megaOrder, FALSE); + for (i = 0; i < gBattlersCount; i++) { - gActiveBattler = gBattlerAttacker = gBattleStruct->mega.battlerId; - gBattleStruct->mega.battlerId++; - if (gBattleStruct->mega.toEvolve & gBitTable[gActiveBattler] - && !(gProtectStructs[gActiveBattler].noValidMoves)) + if (gBattleStruct->mega.toEvolve & gBitTable[megaOrder[i]] + && !(gProtectStructs[megaOrder[i]].noValidMoves)) { - struct Pokemon *mon; - if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) - mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; - else - mon = &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]; + gActiveBattler = gBattlerAttacker = megaOrder[i]; gBattleStruct->mega.toEvolve &= ~(gBitTable[gActiveBattler]); gLastUsedItem = gBattleMons[gActiveBattler].item; - if (GetWishMegaEvolutionSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_MOVE1), GetMonData(mon, MON_DATA_MOVE2), GetMonData(mon, MON_DATA_MOVE3), GetMonData(mon, MON_DATA_MOVE4))) + party = GetBattlerParty(gActiveBattler); + mon = &party[gBattlerPartyIndexes[gActiveBattler]]; + if (GetBattleFormChangeTargetSpecies(gActiveBattler, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE) != SPECIES_NONE) BattleScriptExecute(BattleScript_WishMegaEvolution); else BattleScriptExecute(BattleScript_MegaEvolution); - return; + return TRUE; } } } - #if B_MEGA_EVO_TURN_ORDER <= GEN_6 - gBattleMainFunc = CheckChosenMoveForEffectsBeforeTurnStarts; - gBattleStruct->focusPunchBattlerId = 0; - #else - gBattleMainFunc = TryChangeTurnOrder; // This will just do nothing if no mon has mega evolved + #if B_MEGA_EVO_TURN_ORDER >= GEN_7 + TryChangeTurnOrder(); // This will just do nothing if no mon has mega evolved. #endif + return FALSE; } -// In gen7, priority and speed are recalculated during the turn in which a pokemon mega evolves -static void TryChangeTurnOrder(void) -{ - s32 i, j; - for (i = 0; i < gBattlersCount - 1; i++) - { - for (j = i + 1; j < gBattlersCount; j++) - { - u8 battler1 = gBattlerByTurnOrder[i]; - u8 battler2 = gBattlerByTurnOrder[j]; - if (gActionsByTurnOrder[i] == B_ACTION_USE_MOVE - && gActionsByTurnOrder[j] == B_ACTION_USE_MOVE) - { - if (GetWhoStrikesFirst(battler1, battler2, FALSE)) - SwapTurnOrder(i, j); - } - } - } - gBattleMainFunc = CheckChosenMoveForEffectsBeforeTurnStarts; - gBattleStruct->focusPunchBattlerId = 0; -} - -static void CheckChosenMoveForEffectsBeforeTurnStarts(void) +static bool32 TryDoMoveEffectsBeforeMoves(void) { - u32 i; - if (!(gHitMarker & HITMARKER_RUN)) { - while (gBattleStruct->focusPunchBattlerId < gBattlersCount) + u32 i; + struct Pokemon *mon; + u8 battlers[MAX_BATTLERS_COUNT]; + + PopulateArrayWithBattlers(battlers); + SortBattlersBySpeed(battlers, FALSE); + for (i = 0; i < gBattlersCount; i++) { - gActiveBattler = gBattlerAttacker = gBattleStruct->focusPunchBattlerId; - gBattleStruct->focusPunchBattlerId++; - if (!(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) - && !(gDisableStructs[gBattlerAttacker].truantCounter) - && !(gProtectStructs[gActiveBattler].noValidMoves)) + if (!(gBattleStruct->focusPunchBattlers & gBitTable[battlers[i]]) + && !(gBattleMons[battlers[i]].status1 & STATUS1_SLEEP) + && !(gDisableStructs[battlers[i]].truantCounter) + && !(gProtectStructs[battlers[i]].noValidMoves)) { + gBattleStruct->focusPunchBattlers |= gBitTable[battlers[i]]; + gActiveBattler = gBattlerAttacker = battlers[i]; switch (gChosenMoveByBattler[gActiveBattler]) { case MOVE_FOCUS_PUNCH: BattleScriptExecute(BattleScript_FocusPunchSetUp); - return; + return TRUE; case MOVE_BEAK_BLAST: BattleScriptExecute(BattleScript_BeakBlastSetUp); - return; + return TRUE; + case MOVE_SHELL_TRAP: + BattleScriptExecute(BattleScript_ShellTrapSetUp); + return TRUE; } } } } - gBattleMainFunc = CheckQuickClaw_CustapBerryActivation; - gBattleStruct->quickClawBattlerId = 0; + return FALSE; +} + +// In gen7, priority and speed are recalculated during the turn in which a pokemon mega evolves +static void TryChangeTurnOrder(void) +{ + u32 i, j; + for (i = 0; i < gBattlersCount - 1; i++) + { + for (j = i + 1; j < gBattlersCount; j++) + { + u32 battler1 = gBattlerByTurnOrder[i]; + u32 battler2 = gBattlerByTurnOrder[j]; + + if (gActionsByTurnOrder[i] == B_ACTION_USE_MOVE + && gActionsByTurnOrder[j] == B_ACTION_USE_MOVE) + { + if (GetWhoStrikesFirst(battler1, battler2, FALSE)) + SwapTurnOrder(i, j); + } + } + } } static void CheckQuickClaw_CustapBerryActivation(void) @@ -5015,6 +5166,8 @@ static void CheckQuickClaw_CustapBerryActivation(void) gCurrentTurnActionNumber = 0; gCurrentActionFuncId = gActionsByTurnOrder[0]; gBattleStruct->dynamicMoveType = 0; + gBattleStruct->effectsBeforeUsingMoveDone = FALSE; + gBattleStruct->focusPunchBattlers = 0; for (i = 0; i < MAX_BATTLERS_COUNT; i++) { gBattleStruct->ateBoost[i] = FALSE; @@ -5033,6 +5186,16 @@ static void RunTurnActionsFunctions(void) if (gBattleOutcome != 0) gCurrentActionFuncId = B_ACTION_FINISHED; + // Mega Evolve / Focus Punch-like moves after switching, items, running, but before using a move. + if (gCurrentActionFuncId == B_ACTION_USE_MOVE && !gBattleStruct->effectsBeforeUsingMoveDone) + { + if (TryDoMegaEvosBeforeMoves()) + return; + else if (TryDoMoveEffectsBeforeMoves()) + return; + gBattleStruct->effectsBeforeUsingMoveDone = TRUE; + } + *(&gBattleStruct->savedTurnActionNumber) = gCurrentTurnActionNumber; sTurnActionsFuncsTable[gCurrentActionFuncId](); @@ -5240,27 +5403,36 @@ static void HandleEndTurn_FinishBattle(void) TestRunner_Battle_AfterLastTurn(); BeginFastPaletteFade(3); FadeOutMapMusic(5); - #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - TryRestoreStolenItems(); + #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE || B_RESTORE_HELD_BATTLE_ITEMS == TRUE + TryRestoreHeldItems(); #endif for (i = 0; i < PARTY_SIZE; i++) { - UndoMegaEvolution(i); - UndoFormChange(i, B_SIDE_PLAYER, FALSE); - DoBurmyFormChange(i); + bool8 changedForm = FALSE; + + // Appeared in battle and didn't faint + if ((gBattleStruct->appearedInBattle & gBitTable[i]) && GetMonData(&gPlayerParty[i], MON_DATA_HP, NULL) != 0) + changedForm = TryFormChange(i, B_SIDE_PLAYER, FORM_CHANGE_END_BATTLE_TERRAIN); + + if (!changedForm) + changedForm = TryFormChange(i, B_SIDE_PLAYER, FORM_CHANGE_END_BATTLE); + + // Clear original species field + gBattleStruct->changedSpecies[i] = SPECIES_NONE; + + #if B_RECALCULATE_STATS >= GEN_5 + // Recalculate the stats of every party member before the end + if (!changedForm) + CalculateMonStats(&gPlayerParty[i]); + #endif } - #if B_RECALCULATE_STATS >= GEN_5 - // Recalculate the stats of every party member before the end - for (i = 0; i < PARTY_SIZE; i++) + // Clear battle mon species to avoid a bug on the next battle that causes + // healthboxes loading incorrectly due to it trying to create a Mega Indicator + // if the previous battler would've had it. + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) - { - CalculateMonStats(&gPlayerParty[i]); - } + gBattleMons[i].species = SPECIES_NONE; } - #endif gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions; gCB2_AfterEvolution = BattleMainCB2; } @@ -5439,7 +5611,7 @@ void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk) gBattleStruct->dynamicMoveType = TYPE_ROCK | F_DYNAMIC_TYPE_2; else if (gBattleWeather & B_WEATHER_SUN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA) gBattleStruct->dynamicMoveType = TYPE_FIRE | F_DYNAMIC_TYPE_2; - else if (gBattleWeather & B_WEATHER_HAIL) + else if (gBattleWeather & (B_WEATHER_HAIL |B_WEATHER_SNOW)) gBattleStruct->dynamicMoveType = TYPE_ICE | F_DYNAMIC_TYPE_2; else gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2; diff --git a/src/battle_message.c b/src/battle_message.c index 2b8005f64b14..3edb02f60028 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -101,8 +101,10 @@ static const u8 sText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is alr static const u8 sText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!"); static const u8 sText_PkmnEnergyDrained[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!"); static const u8 sText_PkmnWasBurned[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!"); +static const u8 sText_PkmnGotFrostbite[] = _("{B_EFF_NAME_WITH_PREFIX} got frostbite!"); static const u8 sText_PkmnBurnedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnHurtByBurn[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!"); +static const u8 sText_PkmnHurtByFrostbite[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its frostbite!"); static const u8 sText_PkmnAlreadyHasBurn[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn."); static const u8 sText_PkmnWasFrozen[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!"); static const u8 sText_PkmnFrozenBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!"); @@ -110,6 +112,9 @@ static const u8 sText_PkmnIsFrozen[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen so static const u8 sText_PkmnWasDefrosted[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!"); static const u8 sText_PkmnWasDefrosted2[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!"); static const u8 sText_PkmnWasDefrostedBy[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!"); +static const u8 sText_PkmnFrostbiteHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nfrostbite was healed!"); +static const u8 sText_PkmnFrostbiteHealed2[] = _("{B_ATK_NAME_WITH_PREFIX}'s\nfrostbite was healed!"); +static const u8 sText_PkmnFrostbiteHealedBy[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nhealed its frostbite!"); static const u8 sText_PkmnWasParalyzed[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!"); static const u8 sText_PkmnWasParalyzedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!"); static const u8 sText_PkmnIsParalyzed[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can't move!"); @@ -177,8 +182,8 @@ static const u8 sText_PkmnCausedUproar[] = _("{B_ATK_NAME_WITH_PREFIX} caused\na static const u8 sText_PkmnMakingUproar[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!"); static const u8 sText_PkmnCalmedDown[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down."); static const u8 sText_PkmnCantSleepInUproar[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); -static const u8 sText_PkmnStockpiled[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!"); -static const u8 sText_PkmnCantStockpile[] = _("{B_ATK_NAME_WITH_PREFIX} can't\nSTOCKPILE any more!"); +static const u8 sText_PkmnStockpiled[] = _("{B_ATK_NAME_WITH_PREFIX} stockpiled\n{B_BUFF1}!"); +static const u8 sText_PkmnCantStockpile[] = _("{B_ATK_NAME_WITH_PREFIX} can't\nstockpile any more!"); static const u8 sText_PkmnCantSleepInUproar2[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); static const u8 sText_UproarKeptPkmnAwake[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!"); static const u8 sText_PkmnStayedAwakeUsing[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!"); @@ -209,7 +214,7 @@ static const u8 sText_PkmnFellIntoNightmare[] = _("{B_DEF_NAME_WITH_PREFIX} fell static const u8 sText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!"); static const u8 sText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnAfflictedByCurse[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!"); -static const u8 sText_SpikesScattered[] = _("Spikes were scattered all around\nthe opponent's side!"); +static const u8 sText_SpikesScattered[] = _("Spikes were scattered all around\n{B_DEF_TEAM2} team!"); static const u8 sText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby spikes!"); static const u8 sText_PkmnIdentified[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnPerishCountFell[] = _("{B_ATK_NAME_WITH_PREFIX}'s PERISH count\nfell to {B_BUFF1}!"); @@ -260,7 +265,7 @@ static const u8 sText_XFoundOneY[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_L static const u8 sText_SoothingAroma[] = _("A soothing aroma wafted\nthrough the area!"); static const u8 sText_ItemsCantBeUsedNow[] = _("Items can't be used now.{PAUSE 64}"); static const u8 sText_ForXCommaYZ[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}"); -static const u8 sText_PkmnUsedXToGetPumped[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!"); +static const u8 sText_PkmnUsedXToGetPumped[] = _("{B_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!"); static const u8 sText_PkmnLostFocus[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn't move!"); static const u8 sText_PkmnWasDraggedOut[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p"); static const u8 sText_TheWallShattered[] = _("The wall shattered!"); @@ -284,7 +289,7 @@ static const u8 sText_PkmnPreventsPoisoningWith[] = _("{B_EFF_NAME_WITH_PREFIX}' static const u8 sText_PkmnPreventsConfusionWith[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents confusion!"); static const u8 sText_PkmnRaisedFirePowerWith[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its FIRE power!"); static const u8 sText_PkmnAnchorsItselfWith[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!"); -static const u8 sText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK!"); +static const u8 sText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}'s attack!"); static const u8 sText_PkmnPreventsStatLossWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); static const u8 sText_PkmnHurtsWith[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt by\n{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); static const u8 sText_PkmnTraced[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}'s {B_BUFF2}!"); @@ -360,8 +365,11 @@ static const u8 sText_SunlightFaded[] = _("The sunlight faded."); static const u8 sText_StartedHail[] = _("It started to hail!"); static const u8 sText_HailContinues[] = _("Hail continues to fall."); static const u8 sText_HailStopped[] = _("The hail stopped."); -static const u8 sText_FailedToSpitUp[] = _("But it failed to SPIT UP\na thing!"); -static const u8 sText_FailedToSwallow[] = _("But it failed to SWALLOW\na thing!"); +static const u8 sText_StartedSnow[] = _("It started to snow!"); +static const u8 sText_SnowContinues[] = _("Snow continues to fall."); +static const u8 sText_SnowStopped[] = _("The snow stopped."); +static const u8 sText_FailedToSpitUp[] = _("But it failed to spit up\na thing!"); +static const u8 sText_FailedToSwallow[] = _("But it failed to swallow\na thing!"); static const u8 sText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!"); static const u8 sText_StatChangesGone[] = _("All stat changes were\neliminated!"); static const u8 sText_CoinsScattered[] = _("Coins scattered everywhere!"); @@ -435,11 +443,11 @@ static const u8 sText_ExclamationMark3[] = _("!"); static const u8 sText_ExclamationMark4[] = _("!"); static const u8 sText_ExclamationMark5[] = _("!"); static const u8 sText_HP[] = _("HP"); -static const u8 sText_Attack[] = _("attack"); -static const u8 sText_Defense[] = _("defense"); -static const u8 sText_Speed[] = _("speed"); -static const u8 sText_SpAttack[] = _("sp. attack"); -static const u8 sText_SpDefense[] = _("sp. defense"); +static const u8 sText_Attack[] = _("Attack"); +static const u8 sText_Defense[] = _("Defense"); +static const u8 sText_Speed[] = _("Speed"); +static const u8 sText_SpAttack[] = _("Sp. Atk"); +static const u8 sText_SpDefense[] = _("Sp. Def"); static const u8 sText_Accuracy[] = _("accuracy"); static const u8 sText_Evasiveness[] = _("evasiveness"); @@ -465,9 +473,9 @@ const u8 *const gPokeblockWasTooXStringTable[FLAVOR_COUNT] = [FLAVOR_SOUR] = sText_PokeblockWasTooSour }; -static const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!"); +static const u8 sText_PlayerUsedItem[] = _("You used\n{B_LAST_ITEM}!"); static const u8 sText_WallyUsedItem[] = _("WALLY used\n{B_LAST_ITEM}!"); -static const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!"); +static const u8 sText_Trainer1UsedItem[] = _("{B_ATK_TRAINER_CLASS} {B_ATK_TRAINER_NAME}\nused {B_LAST_ITEM}!"); static const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); static const u8 sText_DontBeAThief[] = _("Don't be a thief!"); static const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can't be caught!"); @@ -476,8 +484,8 @@ static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); -static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_DEF_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"); -static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_DEF_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"); +static const u8 sText_GotchaPkmnCaughtPlayer[] = _("Gotcha!\n{B_DEF_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"); +static const u8 sText_GotchaPkmnCaughtWally[] = _("Gotcha!\n{B_DEF_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"); static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_DEF_NAME}?"); static const u8 sText_PkmnSentToPC[] = _("{B_DEF_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); static const u8 sText_Someones[] = _("someone's"); @@ -491,6 +499,7 @@ static const u8 sText_BerrySuffix[] = _(" BERRY"); static const u8 sText_PkmnsItemCuredParalysis[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); static const u8 sText_PkmnsItemCuredPoison[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); static const u8 sText_PkmnsItemHealedBurn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its burn!"); +static const u8 sText_PkmnsItemHealedFrostbite[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its frostbite!"); static const u8 sText_PkmnsItemDefrostedIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ndefrosted it!"); static const u8 sText_PkmnsItemWokeIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwoke it from its sleep!"); static const u8 sText_PkmnsItemSnappedOut[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nsnapped it out of confusion!"); @@ -555,7 +564,7 @@ static const u8 sText_VanishedInstantly[] =_("{B_ATK_NAME_WITH_PREFIX} vanished\ static const u8 sText_ProtectedTeam[] =_("{B_CURRENT_MOVE} protected\n{B_ATK_TEAM2} team!"); static const u8 sText_SharedItsGuard[] =_("{B_ATK_NAME_WITH_PREFIX} shared its\nguard with the target!"); static const u8 sText_SharedItsPower[] =_("{B_ATK_NAME_WITH_PREFIX} shared its\npower with the target!"); -static const u8 sText_SwapsDefAndSpDefOfAllPkmn[] =_("It created a bizarre area in which the\nDefense and Sp.Def stats are swapped!"); +static const u8 sText_SwapsDefAndSpDefOfAllPkmn[] =_("It created a bizarre area in which the\nDefense and Sp. Def stats are swapped!"); static const u8 sText_BecameNimble[] =_("{B_ATK_NAME_WITH_PREFIX} became nimble!"); static const u8 sText_HurledIntoTheAir[] =_("{B_DEF_NAME_WITH_PREFIX} was hurled\ninto the air!"); static const u8 sText_HeldItemsLoseEffects[] =_("It created a bizarre area in which\nPokémon's held items lose their effects!"); @@ -608,6 +617,7 @@ static const u8 sText_AnticipationActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFI static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto the {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); static const u8 sText_IceBodyHpGain[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nhealed it a little bit!"); static const u8 sText_SnowWarningHail[] = _("It started to hail!"); +static const u8 sText_SnowWarningSnow[] = _("It started to snow!"); static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!"); static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!"); static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!"); @@ -631,6 +641,10 @@ static const u8 sText_NotDoneYet[] = _("This move effect is not done yet!\p"); static const u8 sText_PkmnBlewAwayToxicSpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nToxic Spikes!"); static const u8 sText_PkmnBlewAwayStickyWeb[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSticky Web!"); static const u8 sText_PkmnBlewAwayStealthRock[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nStealth Rock!"); +static const u8 sText_SpikesDisappearedFromTeam[] = _("The spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!"); +static const u8 sText_ToxicSpikesDisappearedFromTeam[] = _("The poison spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!"); +static const u8 sText_StealthRockDisappearedFromTeam[] = _("The pointed stones disappeared\nfrom around {B_ATK_TEAM2} team!"); +static const u8 sText_StickyWebDisappearedFromTeam[] = _("The sticky web has disappeared from\nthe ground around {B_ATK_TEAM2} team!"); static const u8 sText_StickyWebUsed[] = _("A sticky web spreads out on the\nground around {B_DEF_TEAM2} team!"); static const u8 sText_QuashSuccess[] = _("The opposing {B_DEF_NAME_WITH_PREFIX}'s\nmove was postponed!"); static const u8 sText_IonDelugeOn[] = _("A deluge of ions showers\nthe battlefield!"); @@ -764,6 +778,7 @@ static const u8 sText_AttackerExpelledThePoison[] = _("{B_ATK_NAME_WITH_PREFIX} static const u8 sText_AttackerShookItselfAwake[] = _("{B_ATK_NAME_WITH_PREFIX} shook itself awake!"); static const u8 sText_AttackerBrokeThroughParalysis[] = _("{B_ATK_NAME_WITH_PREFIX} gathered all its energy\nto overcome its paralysis!"); static const u8 sText_AttackerHealedItsBurn[] = _("{B_ATK_NAME_WITH_PREFIX} healed its burn with\nits sheer determination!"); +static const u8 sText_AttackerHealedItsFrostbite[] = _("{B_ATK_NAME_WITH_PREFIX} healed its frostbite with\nits sheer determination!"); static const u8 sText_AttackerMeltedTheIce[] = _("{B_ATK_NAME_WITH_PREFIX} melted the ice with\nits fiery determination!"); static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!"); static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!"); @@ -774,9 +789,27 @@ static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p"); static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!"); +static const u8 sText_PrepareShellTrap[] = _("{B_ATK_NAME_WITH_PREFIX} set a shell trap!"); +static const u8 sText_ShellTrapDidntWork[] = _("{B_ATK_NAME_WITH_PREFIX}'s shell trap didn't work!"); +static const u8 sText_CouldntFullyProtect[] = _("{B_DEF_NAME_WITH_PREFIX} couldn't fully protect\nitself and got hurt!"); +static const u8 sText_StockpiledEffectWoreOff[] = _("{B_ATK_NAME_WITH_PREFIX}'s stockpiled\neffect wore off!"); +static const u8 sText_PkmnRevivedReadyToFight[] = _("{B_BUFF1} was revived and\nis ready to fight again!"); +static const u8 sText_ItemRestoredSpeciesHealth[] = _("{B_BUFF1} had its\nHP restored!"); +static const u8 sText_ItemCuredSpeciesStatus[] = _("{B_BUFF1} had\nits status healed!"); +static const u8 sText_ItemRestoredSpeciesPP[] = _("{B_BUFF1} had its\nPP restored!"); +static const u8 sText_AtkTrappedDef[] = _("{B_ATK_NAME_WITH_PREFIX} trapped\nthe {B_DEF_NAME_WITH_PREFIX}!"); +static const u8 sText_MirrorHerbCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used its {B_LAST_ITEM}\nto mirror its opponent's stat changes!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_MIRRORHERBCOPIED - BATTLESTRINGS_TABLE_START] = sText_MirrorHerbCopied, + [STRINGID_THUNDERCAGETRAPPED - BATTLESTRINGS_TABLE_START] = sText_AtkTrappedDef, + [STRINGID_ITEMRESTOREDSPECIESHEALTH - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesHealth, + [STRINGID_ITEMCUREDSPECIESSTATUS - BATTLESTRINGS_TABLE_START] = sText_ItemCuredSpeciesStatus, + [STRINGID_ITEMRESTOREDSPECIESPP - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesPP, + [STRINGID_PKMNREVIVEDREADYTOFIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnRevivedReadyToFight, + [STRINGID_STOCKPILEDEFFECTWOREOFF - BATTLESTRINGS_TABLE_START] = sText_StockpiledEffectWoreOff, + [STRINGID_COULDNTFULLYPROTECT - BATTLESTRINGS_TABLE_START] = sText_CouldntFullyProtect, [STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen, [STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat, [STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility, @@ -800,6 +833,8 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ZMOVEHPTRAP - BATTLESTRINGS_TABLE_START] = sText_ZMoveHpSwitchInTrap, [STRINGID_PLAYERLOSTTOENEMYTRAINER - BATTLESTRINGS_TABLE_START] = sText_PlayerLostToEnemyTrainer, [STRINGID_PLAYERPAIDPRIZEMONEY - BATTLESTRINGS_TABLE_START] = sText_PlayerPaidPrizeMoney, + [STRINGID_SHELLTRAPDIDNTWORK - BATTLESTRINGS_TABLE_START] = sText_ShellTrapDidntWork, + [STRINGID_PREPARESHELLTRAP - BATTLESTRINGS_TABLE_START] = sText_PrepareShellTrap, [STRINGID_COURTCHANGE - BATTLESTRINGS_TABLE_START] = sText_CourtChange, [STRINGID_HEATUPBEAK - BATTLESTRINGS_TABLE_START] = sText_HeatingUpBeak, [STRINGID_METEORBEAMCHARGING - BATTLESTRINGS_TABLE_START] = sText_MeteorBeamCharging, @@ -1112,6 +1147,9 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_STARTEDHAIL - BATTLESTRINGS_TABLE_START] = sText_StartedHail, [STRINGID_HAILCONTINUES - BATTLESTRINGS_TABLE_START] = sText_HailContinues, [STRINGID_HAILSTOPPED - BATTLESTRINGS_TABLE_START] = sText_HailStopped, + [STRINGID_STARTEDSNOW - BATTLESTRINGS_TABLE_START] = sText_StartedSnow, + [STRINGID_SNOWCONTINUES -BATTLESTRINGS_TABLE_START] = sText_SnowContinues, + [STRINGID_SNOWSTOPPED - BATTLESTRINGS_TABLE_START] = sText_SnowStopped, [STRINGID_FAILEDTOSPITUP - BATTLESTRINGS_TABLE_START] = sText_FailedToSpitUp, [STRINGID_FAILEDTOSWALLOW - BATTLESTRINGS_TABLE_START] = sText_FailedToSwallow, [STRINGID_WINDBECAMEHEATWAVE - BATTLESTRINGS_TABLE_START] = sText_WindBecameHeatWave, @@ -1133,8 +1171,8 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ITAPPEAREDCAUGHT - BATTLESTRINGS_TABLE_START] = sText_ItAppearedCaught, [STRINGID_AARGHALMOSTHADIT - BATTLESTRINGS_TABLE_START] = sText_AarghAlmostHadIt, [STRINGID_SHOOTSOCLOSE - BATTLESTRINGS_TABLE_START] = sText_ShootSoClose, - [STRINGID_GOTCHAPKMNCAUGHT - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaught, - [STRINGID_GOTCHAPKMNCAUGHT2 - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaught2, + [STRINGID_GOTCHAPKMNCAUGHTPLAYER - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaughtPlayer, + [STRINGID_GOTCHAPKMNCAUGHTWALLY - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaughtWally, [STRINGID_GIVENICKNAMECAPTURED - BATTLESTRINGS_TABLE_START] = sText_GiveNicknameCaptured, [STRINGID_PKMNSENTTOPC - BATTLESTRINGS_TABLE_START] = sText_PkmnSentToPC, [STRINGID_PKMNDATAADDEDTODEX - BATTLESTRINGS_TABLE_START] = sText_PkmnDataAddedToDex, @@ -1332,6 +1370,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_FOREWARNACTIVATES - BATTLESTRINGS_TABLE_START] = sText_ForewarnActivates, [STRINGID_ICEBODYHPGAIN - BATTLESTRINGS_TABLE_START] = sText_IceBodyHpGain, [STRINGID_SNOWWARNINGHAIL - BATTLESTRINGS_TABLE_START] = sText_SnowWarningHail, + [STRINGID_SNOWWARNINGSNOW - BATTLESTRINGS_TABLE_START] = sText_SnowWarningSnow, [STRINGID_FRISKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_FriskActivates, [STRINGID_UNNERVEENTERS - BATTLESTRINGS_TABLE_START] = sText_UnnerveEnters, [STRINGID_HARVESTBERRY - BATTLESTRINGS_TABLE_START] = sText_HarvestBerry, @@ -1361,6 +1400,10 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_PKMNBLEWAWAYTOXICSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayToxicSpikes, [STRINGID_PKMNBLEWAWAYSTICKYWEB - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStickyWeb, [STRINGID_PKMNBLEWAWAYSTEALTHROCK - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStealthRock, + [STRINGID_SPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SpikesDisappearedFromTeam, + [STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesDisappearedFromTeam, + [STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StealthRockDisappearedFromTeam, + [STRINGID_STICKYWEBDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StickyWebDisappearedFromTeam, [STRINGID_IONDELUGEON - BATTLESTRINGS_TABLE_START] = sText_IonDelugeOn, [STRINGID_TOPSYTURVYSWITCHEDSTATS - BATTLESTRINGS_TABLE_START] = sText_TopsyTurvySwitchedStats, [STRINGID_TERRAINBECOMESMISTY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesMisty, @@ -1404,6 +1447,18 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_TARGETTOOHEAVY - BATTLESTRINGS_TABLE_START] = sText_TargetTooHeavy, [STRINGID_ATTACKERLOSTELECTRICTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostElectricType, [STRINGID_PKMNSABILITYPREVENTSABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnsAbilityPreventsAbility, + [STRINGID_PKMNHURTBYFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByFrostbite, + [STRINGID_PKMNGOTFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnGotFrostbite, + [STRINGID_PKMNSITEMHEALEDFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemHealedFrostbite, + [STRINGID_ATTACKERHEALEDITSFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_AttackerHealedItsFrostbite, + [STRINGID_PKMNFROSTBITEHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed, + [STRINGID_PKMNFROSTBITEHEALED2 - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed2, + [STRINGID_PKMNFROSTBITEHEALEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealedBy, +}; + +const u16 gTrainerUsedItemStringIds[] = +{ + STRINGID_PLAYERUSEDITEM, STRINGID_TRAINER1USEDITEM }; const u16 gZEffectStringIds[] = @@ -1432,9 +1487,12 @@ const u16 gTerrainStringIds[] = STRINGID_TERRAINBECOMESMISTY, STRINGID_TERRAINBECOMESGRASSY, STRINGID_TERRAINBECOMESELECTRIC, STRINGID_TERRAINBECOMESPSYCHIC, STRINGID_TERRAINREMOVED, }; -const u16 gTerrainEndingStringIds[] = +const u16 gTerrainEndingStringIds[B_MSG_TERRAINENDS_COUNT] = { - STRINGID_MISTYTERRAINENDS, STRINGID_GRASSYTERRAINENDS, STRINGID_ELECTRICTERRAINENDS, STRINGID_PSYCHICTERRAINENDS + [B_MSG_TERRAINENDS_MISTY] = STRINGID_MISTYTERRAINENDS, + [B_MSG_TERRAINENDS_ELECTRIC] = STRINGID_ELECTRICTERRAINENDS, + [B_MSG_TERRAINENDS_PSYCHIC] = STRINGID_PSYCHICTERRAINENDS, + [B_MSG_TERRAINENDS_GRASS] = STRINGID_GRASSYTERRAINENDS, }; const u16 gTerrainPreventsStringIds[] = @@ -1456,7 +1514,10 @@ const u16 gHealingWishStringIds[] = const u16 gDmgHazardsStringIds[] = { - STRINGID_PKMNHURTBYSPIKES, STRINGID_STEALTHROCKDMG + [B_MSG_PKMNHURTBYSPIKES] = STRINGID_PKMNHURTBYSPIKES, + [B_MSG_STEALTHROCKDMG] = STRINGID_STEALTHROCKDMG, + [B_MSG_POINTEDSTONESFLOAT] = STRINGID_POINTEDSTONESFLOAT, + [B_MSG_SPIKESSCATTERED] = STRINGID_SPIKESSCATTERED }; const u16 gSwitchInAbilityStringIds[] = @@ -1506,12 +1567,14 @@ const u16 gMoveWeatherChangeStringIds[] = [B_MSG_STARTED_SANDSTORM] = STRINGID_SANDSTORMBREWED, [B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT, [B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL, + [B_MSG_STARTED_SNOW] = STRINGID_STARTEDSNOW, }; -const u16 gSandStormHailContinuesStringIds[] = +const u16 gSandStormHailSnowContinuesStringIds[] = { [B_MSG_SANDSTORM] = STRINGID_SANDSTORMRAGES, - [B_MSG_HAIL] = STRINGID_HAILCONTINUES + [B_MSG_HAIL] = STRINGID_HAILCONTINUES, + [B_MSG_SNOW] = STRINGID_SNOWCONTINUES, }; const u16 gSandStormHailDmgStringIds[] = @@ -1520,10 +1583,11 @@ const u16 gSandStormHailDmgStringIds[] = [B_MSG_HAIL] = STRINGID_PKMNPELTEDBYHAIL }; -const u16 gSandStormHailEndStringIds[] = +const u16 gSandStormHailSnowEndStringIds[] = { [B_MSG_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED, - [B_MSG_HAIL] = STRINGID_HAILSTOPPED + [B_MSG_HAIL] = STRINGID_HAILSTOPPED, + [B_MSG_SNOW] = STRINGID_SNOWSTOPPED, }; const u16 gRainContinuesStringIds[] = @@ -1644,6 +1708,7 @@ const u16 gWrappedStringIds[NUM_TRAPPING_MOVES] = [B_MSG_WRAPPED_MAGMA_STORM] = STRINGID_TRAPPEDBYSWIRLINGMAGMA, // MOVE_MAGMA_STORM [B_MSG_WRAPPED_INFESTATION] = STRINGID_INFESTATION, // MOVE_INFESTATION [B_MSG_WRAPPED_SNAP_TRAP] = STRINGID_PKMNINSNAPTRAP, // MOVE_SNAP_TRAP + [B_MSG_WRAPPED_THUNDER_CAGE]= STRINGID_THUNDERCAGETRAPPED, // MOVE_THUNDER_CAGE }; const u16 gMistUsedStringIds[] = @@ -1694,6 +1759,17 @@ const u16 gGotBurnedStringIds[] = [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNBURNEDBY }; +const u16 gGotFrostbiteStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNGOTFROSTBITE +}; + +const u16 gFrostbiteHealedStringIds[] = +{ + [B_MSG_FROSTBITE_HEALED] = STRINGID_PKMNFROSTBITEHEALED2, + [B_MSG_FROSTBITE_HEALED_BY_MOVE] = STRINGID_PKMNFROSTBITEHEALEDBY +}; + const u16 gGotFrozenStringIds[] = { [B_MSG_STATUSED] = STRINGID_PKMNWASFROZEN, @@ -1796,16 +1872,6 @@ const u16 gSafariPokeblockResultStringIds[] = [B_MSG_MON_IGNORED] = STRINGID_PKMNIGNOREDX }; -const u16 gTrainerItemCuredStatusStringIds[] = -{ - [AI_HEAL_CONFUSION] = STRINGID_PKMNSITEMSNAPPEDOUT, - [AI_HEAL_PARALYSIS] = STRINGID_PKMNSITEMCUREDPARALYSIS, - [AI_HEAL_FREEZE] = STRINGID_PKMNSITEMDEFROSTEDIT, - [AI_HEAL_BURN] = STRINGID_PKMNSITEMHEALEDBURN, - [AI_HEAL_POISON] = STRINGID_PKMNSITEMCUREDPOISON, - [AI_HEAL_SLEEP] = STRINGID_PKMNSITEMWOKEIT -}; - const u16 gBerryEffectStringIds[] = { [B_MSG_CURED_PROBLEM] = STRINGID_PKMNSITEMCUREDPROBLEM, @@ -1864,7 +1930,7 @@ const u16 gRoomsStringIds[] = const u16 gStatusConditionsStringIds[] = { - STRINGID_PKMNWASPOISONED, STRINGID_PKMNBADLYPOISONED, STRINGID_PKMNWASBURNED, STRINGID_PKMNWASPARALYZED, STRINGID_PKMNFELLASLEEP + STRINGID_PKMNWASPOISONED, STRINGID_PKMNBADLYPOISONED, STRINGID_PKMNWASBURNED, STRINGID_PKMNWASPARALYZED, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNGOTFROSTBITE }; const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); @@ -3008,7 +3074,11 @@ static const u8 *BattleStringGetPlayerName(u8 *text, u8 battlerId) toCpy = gSaveBlock2Ptr->playerName; break; case B_POSITION_PLAYER_RIGHT: - if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_MULTI)) + if ((gBattleTypeFlags & BATTLE_TYPE_RECORDED) && !(gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER))) + { + toCpy = gLinkPlayers[0].name; + } + else if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_MULTI)) { toCpy = gLinkPlayers[2].name; } @@ -3822,11 +3892,11 @@ void SetPpNumbersPaletteInMoveSelection(void) else var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBattler]], gBattleMoves[gMoveSelectionCursor[gActiveBattler]].pp); - gPlttBufferUnfaded[92] = palPtr[(var * 2) + 0]; - gPlttBufferUnfaded[91] = palPtr[(var * 2) + 1]; + gPlttBufferUnfaded[BG_PLTT_ID(5) + 12] = palPtr[(var * 2) + 0]; + gPlttBufferUnfaded[BG_PLTT_ID(5) + 11] = palPtr[(var * 2) + 1]; - CpuCopy16(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], sizeof(u16)); - CpuCopy16(&gPlttBufferUnfaded[91], &gPlttBufferFaded[91], sizeof(u16)); + CpuCopy16(&gPlttBufferUnfaded[BG_PLTT_ID(5) + 12], &gPlttBufferFaded[BG_PLTT_ID(5) + 12], PLTT_SIZEOF(1)); + CpuCopy16(&gPlttBufferUnfaded[BG_PLTT_ID(5) + 11], &gPlttBufferFaded[BG_PLTT_ID(5) + 11], PLTT_SIZEOF(1)); } u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp) @@ -3868,6 +3938,14 @@ struct TrainerSlide const u8 *msgLastSwitchIn; const u8 *msgLastLowHp; const u8 *msgFirstDown; + const u8 *msgLastHalfHp; + const u8 *msgFirstCriticalHit; + const u8 *msgFirstSuperEffectiveHit; + const u8 *msgFirstSTABMove; + const u8 *msgPlayerMonUnaffected; + const u8 *msgMegaEvolution; + const u8 *msgZMove; + const u8 *msgBeforeFirstTurn; }; static const struct TrainerSlide sTrainerSlides[] = @@ -3879,17 +3957,25 @@ static const struct TrainerSlide sTrainerSlides[] = .msgLastSwitchIn = sText_AarghAlmostHadIt, .msgLastLowHp = sText_BoxIsFull, .msgFirstDown = sText_123Poof, + .msgLastHalfHp = sText_ShootSoClose, + .msgFirstCriticalHit = sText_CriticalHit, + .msgFirstSuperEffectiveHit = sText_SuperEffective, + .msgFirstSTABMove = sText_ABoosted, + .msgPlayerMonUnaffected = sText_ButNoEffect, + .msgMegaEvolution = sText_PowderExplodes, + .msgZMove = sText_Electromagnetism, + .msgBeforeFirstTurn = sText_GravityIntensified, }, */ }; -static u32 GetEnemyMonCount(bool32 onlyAlive) +static u32 GetEnemyMonCount(u32 firstId, u32 lastId, bool32 onlyAlive) { u32 i, count = 0; - for (i = 0; i < PARTY_SIZE; i++) + for (i = firstId; i < lastId; i++) { - u32 species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL); + u32 species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES_OR_EGG, NULL); if (species != SPECIES_NONE && species != SPECIES_EGG && (!onlyAlive || GetMonData(&gEnemyParty[i], MON_DATA_HP, NULL))) @@ -3899,20 +3985,64 @@ static u32 GetEnemyMonCount(bool32 onlyAlive) return count; } -static bool32 IsBattlerHpLow(u32 battler) +enum { - if ((gBattleMons[battler].hp * 100) / gBattleMons[battler].maxHP < 25) - return TRUE; - else - return FALSE; + LESS_THAN, + EQUAL, + GREATER_THAN, + LESS_THAN_OR_EQUAL, + GREATER_THAN_OR_EQUAL, + NOT_EQUAL, +}; + +u32 BattlerHPPercentage(u32 battlerId, u32 operation, u32 threshold) +{ + switch (operation) + { + case LESS_THAN: + return gBattleMons[battlerId].hp < (gBattleMons[battlerId].maxHP / threshold); + case EQUAL: + return gBattleMons[battlerId].hp == (gBattleMons[battlerId].maxHP / threshold); + case GREATER_THAN: + return gBattleMons[battlerId].hp > (gBattleMons[battlerId].maxHP / threshold); + case LESS_THAN_OR_EQUAL: + return gBattleMons[battlerId].hp <= (gBattleMons[battlerId].maxHP / threshold); + case GREATER_THAN_OR_EQUAL: + return gBattleMons[battlerId].hp >= (gBattleMons[battlerId].maxHP / threshold); + case NOT_EQUAL: + return gBattleMons[battlerId].hp != (gBattleMons[battlerId].maxHP / threshold); + default: + break; + } } -bool32 ShouldDoTrainerSlide(u32 battlerId, u32 trainerId, u32 which) +u32 ShouldDoTrainerSlide(u32 battlerId, u32 which) { - s32 i; + u32 i, firstId, lastId, trainerId, retValue = 1; if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) || GetBattlerSide(battlerId) != B_SIDE_OPPONENT) - return FALSE; + return 0; + + // Two opponents support. + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + { + if (gBattlerPartyIndexes[battlerId] >= 3) + { + firstId = 3, lastId = PARTY_SIZE; + trainerId = gTrainerBattleOpponent_B; + retValue = 2; + } + else + { + firstId = 0, lastId = 3; + trainerId = gTrainerBattleOpponent_A; + } + } + else + { + firstId = 0, lastId = PARTY_SIZE; + trainerId = gTrainerBattleOpponent_A; + } for (i = 0; i < ARRAY_COUNT(sTrainerSlides); i++) { @@ -3922,27 +4052,100 @@ bool32 ShouldDoTrainerSlide(u32 battlerId, u32 trainerId, u32 which) switch (which) { case TRAINER_SLIDE_LAST_SWITCHIN: - if (sTrainerSlides[i].msgLastSwitchIn != NULL && GetEnemyMonCount(TRUE) == 1) + if (sTrainerSlides[i].msgLastSwitchIn != NULL && !CanBattlerSwitch(battlerId)) { gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgLastSwitchIn; - return TRUE; + return retValue; } break; case TRAINER_SLIDE_LAST_LOW_HP: if (sTrainerSlides[i].msgLastLowHp != NULL - && GetEnemyMonCount(TRUE) == 1 - && IsBattlerHpLow(battlerId) + && GetEnemyMonCount(firstId, lastId, TRUE) == 1 + && BattlerHPPercentage(battlerId, GREATER_THAN_OR_EQUAL, 4) && !gBattleStruct->trainerSlideLowHpMsgDone) { gBattleStruct->trainerSlideLowHpMsgDone = TRUE; gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgLastLowHp; - return TRUE; + return retValue; } break; case TRAINER_SLIDE_FIRST_DOWN: - if (sTrainerSlides[i].msgFirstDown != NULL && GetEnemyMonCount(TRUE) == GetEnemyMonCount(FALSE) - 1) + if (sTrainerSlides[i].msgFirstDown != NULL && GetEnemyMonCount(firstId, lastId, TRUE) == GetEnemyMonCount(firstId, lastId, FALSE) - 1) { gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgFirstDown; + return retValue; + } + break; + case TRAINER_SLIDE_LAST_HALF_HP: + if (sTrainerSlides[i].msgLastHalfHp != NULL + && GetEnemyMonCount(firstId, lastId, TRUE) == GetEnemyMonCount(firstId, lastId, FALSE) - 1 + && BattlerHPPercentage(battlerId, LESS_THAN_OR_EQUAL, 2) && BattlerHPPercentage(battlerId, GREATER_THAN, 4) + && !gBattleStruct->trainerSlideHalfHpMsgDone) + { + gBattleStruct->trainerSlideHalfHpMsgDone = TRUE; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgLastHalfHp; + return TRUE; + } + break; + case TRAINER_SLIDE_FIRST_CRITICAL_HIT: + if (sTrainerSlides[i].msgFirstCriticalHit != NULL && gBattleStruct->trainerSlideFirstCriticalHitMsgState == 1) + { + gBattleStruct->trainerSlideFirstCriticalHitMsgState = 2; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgFirstCriticalHit; + return TRUE; + } + break; + case TRAINER_SLIDE_FIRST_SUPER_EFFECTIVE_HIT: + if (sTrainerSlides[i].msgFirstSuperEffectiveHit != NULL + && gBattleStruct->trainerSlideFirstSuperEffectiveHitMsgState == 1 + && gBattleMons[battlerId].hp) + { + gBattleStruct->trainerSlideFirstSuperEffectiveHitMsgState = 2; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgFirstSuperEffectiveHit; + return TRUE; + } + break; + case TRAINER_SLIDE_FIRST_STAB_MOVE: + if (sTrainerSlides[i].msgFirstSTABMove != NULL + && gBattleStruct->trainerSlideFirstSTABMoveMsgState == 1 + && GetEnemyMonCount(firstId, lastId, TRUE) == GetEnemyMonCount(firstId, lastId, FALSE)) + { + gBattleStruct->trainerSlideFirstSTABMoveMsgState = 2; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgFirstSTABMove; + return TRUE; + } + break; + case TRAINER_SLIDE_PLAYER_MON_UNAFFECTED: + if (sTrainerSlides[i].msgPlayerMonUnaffected != NULL + && gBattleStruct->trainerSlidePlayerMonUnaffectedMsgState == 1 + && GetEnemyMonCount(firstId, lastId, TRUE) == GetEnemyMonCount(firstId, lastId, FALSE)) + { + gBattleStruct->trainerSlidePlayerMonUnaffectedMsgState = 2; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgPlayerMonUnaffected; + return TRUE; + } + break; + case TRAINER_SLIDE_MEGA_EVOLUTION: + if (sTrainerSlides[i].msgMegaEvolution != NULL && !gBattleStruct->trainerSlideMegaEvolutionMsgDone) + { + gBattleStruct->trainerSlideMegaEvolutionMsgDone = TRUE; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgMegaEvolution; + return TRUE; + } + break; + case TRAINER_SLIDE_Z_MOVE: + if (sTrainerSlides[i].msgZMove != NULL && !gBattleStruct->trainerSlideZMoveMsgDone) + { + gBattleStruct->trainerSlideZMoveMsgDone = TRUE; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgZMove; + return TRUE; + } + break; + case TRAINER_SLIDE_BEFORE_FIRST_TURN: + if (sTrainerSlides[i].msgBeforeFirstTurn != NULL && !gBattleStruct->trainerSlideBeforeFirstTurnMsgDone) + { + gBattleStruct->trainerSlideBeforeFirstTurnMsgDone = TRUE; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgBeforeFirstTurn; return TRUE; } break; @@ -3951,5 +4154,5 @@ bool32 ShouldDoTrainerSlide(u32 battlerId, u32 trainerId, u32 which) } } - return FALSE; + return 0; } diff --git a/src/battle_pike.c b/src/battle_pike.c index 9751d565de5c..37dfd9997d19 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -729,6 +729,7 @@ static void GetRoomInflictedStatus(void) switch (sStatusFlags) { case STATUS1_FREEZE: + case STATUS1_FROSTBITE: gSpecialVar_Result = PIKE_STATUS_FREEZE; break; case STATUS1_BURN: @@ -818,6 +819,7 @@ static bool8 DoesAbilityPreventStatus(struct Pokemon *mon, u32 status) switch (status) { case STATUS1_FREEZE: + case STATUS1_FROSTBITE: if (ability == ABILITY_MAGMA_ARMOR) ret = TRUE; break; @@ -853,6 +855,7 @@ static bool8 DoesTypePreventStatus(u16 species, u32 status) ret = TRUE; break; case STATUS1_FREEZE: + case STATUS1_FROSTBITE: if (gSpeciesInfo[species].types[0] == TYPE_ICE || gSpeciesInfo[species].types[1] == TYPE_ICE) ret = TRUE; break; @@ -913,7 +916,11 @@ static bool8 TryInflictRandomStatus(void) if (rand < 35) sStatusFlags = STATUS1_TOXIC_POISON; else if (rand < 60) + #if B_USE_FROSTBITE == TRUE + sStatusFlags = STATUS1_FROSTBITE; + #else sStatusFlags = STATUS1_FREEZE; + #endif else if (rand < 80) sStatusFlags = STATUS1_PARALYSIS; else if (rand < 90) @@ -950,6 +957,7 @@ static bool8 TryInflictRandomStatus(void) switch (sStatusFlags) { case STATUS1_FREEZE: + case STATUS1_FROSTBITE: sStatusMon = PIKE_STATUSMON_DUSCLOPS; break; case STATUS1_BURN: diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index ffed24980566..211488ee560f 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1185,7 +1185,7 @@ static void Task_SetPyramidFloorPalette(u8 taskId) { if (gPaletteFade.active) { - CpuCopy16(gBattlePyramidFloor_Pal[gSaveBlock2Ptr->frontier.curChallengeBattleNum], &gPlttBufferUnfaded[96], 32); + CpuCopy16(gBattlePyramidFloor_Pal[gSaveBlock2Ptr->frontier.curChallengeBattleNum], &gPlttBufferUnfaded[BG_PLTT_ID(6)], PLTT_SIZE_4BPP); DestroyTask(taskId); } } diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index d580cf680072..9d5cee94a573 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -1299,11 +1299,18 @@ static void TryCloseBagToGiveItem(u8 taskId) static void BagAction_UseInBattle(u8 taskId) { - if (ItemId_GetBattleFunc(gSpecialVar_ItemId) != NULL) - { - CloseMenuActionWindow(); - ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); - } + // Safety check + u16 type = ItemId_GetType(gSpecialVar_ItemId); + if (!ItemId_GetBattleUsage(gSpecialVar_ItemId)) + return; + + CloseMenuActionWindow(); + if (type == ITEM_USE_BAG_MENU) + ItemUseInBattle_BagMenu(taskId); + else if (type == ITEM_USE_PARTY_MENU) + ItemUseInBattle_PartyMenu(taskId); + else if (type == ITEM_USE_PARTY_MENU_MOVES) + ItemUseInBattle_PartyMenuChooseMove(taskId); } static void Task_BeginItemSwap(u8 taskId) diff --git a/src/battle_records.c b/src/battle_records.c index 4463a9ebfc74..edc48d820273 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -444,7 +444,7 @@ static void LoadTrainerHillRecordsWindowGfx(u8 bgId) { LoadBgTiles(bgId, sTrainerHillWindowTileset, sizeof(sTrainerHillWindowTileset), 0); CopyToBgTilemapBufferRect(bgId, sTrainerHillWindowTilemap, 0, 0, 0x20, 0x20); - LoadPalette(sTrainerHillWindowPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(sTrainerHillWindowPalette, BG_PLTT_ID(0), sizeof(sTrainerHillWindowPalette)); } static void VblankCB_TrainerHillRecords(void) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 5452a6836d68..7f4b4b1212d6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -23,6 +23,7 @@ #include "main.h" #include "palette.h" #include "money.h" +#include "malloc.h" #include "bg.h" #include "string_util.h" #include "pokemon_icon.h" @@ -51,6 +52,7 @@ #include "constants/battle_string_ids.h" #include "constants/hold_effects.h" #include "constants/items.h" +#include "constants/item_effects.h" #include "constants/map_types.h" #include "constants/moves.h" #include "constants/party_menu.h" @@ -59,6 +61,7 @@ #include "constants/trainers.h" #include "battle_util.h" #include "constants/pokemon.h" +#include "config/battle.h" // Helper for accessing command arguments and advancing gBattlescriptCurrInstr. // @@ -350,6 +353,7 @@ static bool32 CriticalCapture(u32 odds); static void BestowItem(u32 battlerAtk, u32 battlerDef); static bool8 IsFinalStrikeEffect(u16 move); static void TryUpdateRoundTurnOrder(void); +static bool32 ChangeOrderTargetAfterAttacker(void); static void Cmd_attackcanceler(void); static void Cmd_accuracycheck(void); @@ -893,6 +897,7 @@ static const u32 sStatusFlagsForMoveEffects[NUM_MOVE_EFFECTS] = [MOVE_EFFECT_FREEZE] = STATUS1_FREEZE, [MOVE_EFFECT_PARALYSIS] = STATUS1_PARALYSIS, [MOVE_EFFECT_TOXIC] = STATUS1_TOXIC_POISON, + [MOVE_EFFECT_FROSTBITE] = STATUS1_FROSTBITE, [MOVE_EFFECT_CONFUSION] = STATUS2_CONFUSION, [MOVE_EFFECT_FLINCH] = STATUS2_FLINCHED, [MOVE_EFFECT_UPROAR] = STATUS2_UPROAR, @@ -916,6 +921,7 @@ static const u8 *const sMoveEffectBS_Ptrs[] = [MOVE_EFFECT_UPROAR] = BattleScript_MoveEffectUproar, [MOVE_EFFECT_PAYDAY] = BattleScript_MoveEffectPayDay, [MOVE_EFFECT_WRAP] = BattleScript_MoveEffectWrap, + [MOVE_EFFECT_FROSTBITE] = BattleScript_MoveEffectFrostbite, }; static const struct WindowTemplate sUnusedWinTemplate = @@ -976,6 +982,7 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_STRUGGLE] = 0xFF, // Neither Struggle [MOVE_AFTER_YOU] = FORBIDDEN_METRONOME, [MOVE_APPLE_ACID] = FORBIDDEN_METRONOME, + [MOVE_ARMOR_CANNON] = FORBIDDEN_METRONOME, [MOVE_ARM_THRUST] = FORBIDDEN_PARENTAL_BOND, [MOVE_ASSIST] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_ASTRAL_BARRAGE] = FORBIDDEN_METRONOME, @@ -991,6 +998,7 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_BESTOW] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_BIDE] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, // Note: Bide should work with Parental Bond. This will be addressed in future. [MOVE_BLAST_BURN] = FORBIDDEN_INSTRUCT, + [MOVE_BLAZING_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_BODY_PRESS] = FORBIDDEN_METRONOME, [MOVE_BONE_RUSH] = FORBIDDEN_PARENTAL_BOND, [MOVE_BONEMERANG] = FORBIDDEN_PARENTAL_BOND, @@ -1002,9 +1010,14 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_BUZZY_BUZZ] = FORBIDDEN_METRONOME, [MOVE_CELEBRATE] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_CHATTER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_MIMIC | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, + [MOVE_CHILLING_WATER] = FORBIDDEN_METRONOME, + [MOVE_CHILLY_RECEPTION] = FORBIDDEN_METRONOME, [MOVE_CIRCLE_THROW] = FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_CLANGOROUS_SOUL] = FORBIDDEN_METRONOME, + [MOVE_COLLISION_COURSE] = FORBIDDEN_METRONOME, + [MOVE_COMBAT_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_COMET_PUNCH] = FORBIDDEN_PARENTAL_BOND, + [MOVE_COMEUPPANCE] = FORBIDDEN_METRONOME, [MOVE_COPYCAT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_COUNTER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_COVET] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, @@ -1015,9 +1028,11 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_DIAMOND_STORM] = FORBIDDEN_METRONOME, [MOVE_DIG] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, [MOVE_DIVE] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, + [MOVE_DOODLE] = FORBIDDEN_METRONOME, [MOVE_DOUBLE_IRON_BASH] = FORBIDDEN_METRONOME | FORBIDDEN_PARENTAL_BOND, [MOVE_DOUBLE_HIT] = FORBIDDEN_PARENTAL_BOND, [MOVE_DOUBLE_KICK] = FORBIDDEN_PARENTAL_BOND, + [MOVE_DOUBLE_SHOCK] = FORBIDDEN_METRONOME, [MOVE_DOUBLE_SLAP] = FORBIDDEN_PARENTAL_BOND, [MOVE_DRAGON_ASCENT] = FORBIDDEN_METRONOME, [MOVE_DRAGON_ENERGY] = FORBIDDEN_METRONOME, @@ -1027,6 +1042,7 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_DUAL_CHOP] = FORBIDDEN_PARENTAL_BOND, [MOVE_DUAL_WINGBEAT] = FORBIDDEN_PARENTAL_BOND, [MOVE_DYNAMAX_CANNON] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, + [MOVE_ELECTRO_DRIFT] = FORBIDDEN_METRONOME, [MOVE_ENDEAVOR] = FORBIDDEN_PARENTAL_BOND, [MOVE_ENDURE] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_ETERNABEAM] = FORBIDDEN_METRONOME | FORBIDDEN_INSTRUCT, @@ -1034,6 +1050,7 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_FALSE_SURRENDER] = FORBIDDEN_METRONOME, [MOVE_FEINT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_FIERY_WRATH] = FORBIDDEN_METRONOME, + [MOVE_FILLET_AWAY] = FORBIDDEN_METRONOME, [MOVE_FINAL_GAMBIT] = FORBIDDEN_PARENTAL_BOND, [MOVE_FISSURE] = FORBIDDEN_PARENTAL_BOND, [MOVE_FLEUR_CANNON] = FORBIDDEN_METRONOME, @@ -1059,16 +1076,20 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_HORN_DRILL] = FORBIDDEN_PARENTAL_BOND, [MOVE_HYDRO_CANNON] = FORBIDDEN_INSTRUCT, [MOVE_HYPER_BEAM] = FORBIDDEN_INSTRUCT, + [MOVE_HYPER_DRILL] = FORBIDDEN_METRONOME, [MOVE_HYPERSPACE_FURY] = FORBIDDEN_METRONOME, [MOVE_HYPERSPACE_HOLE] = FORBIDDEN_METRONOME, [MOVE_ICE_BALL] = FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, [MOVE_ICE_BURN] = FORBIDDEN_METRONOME | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, [MOVE_ICICLE_SPEAR] = FORBIDDEN_PARENTAL_BOND, [MOVE_INSTRUCT] = FORBIDDEN_METRONOME | FORBIDDEN_INSTRUCT, + [MOVE_JET_PUNCH] = FORBIDDEN_METRONOME, [MOVE_JUNGLE_HEALING] = FORBIDDEN_METRONOME, [MOVE_KINGS_SHIELD] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_INSTRUCT, [MOVE_LIFE_DEW] = FORBIDDEN_METRONOME, [MOVE_LIGHT_OF_RUIN] = FORBIDDEN_METRONOME, + [MOVE_MAKE_IT_RAIN] = FORBIDDEN_METRONOME, + [MOVE_MAGICAL_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_MAT_BLOCK] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_ME_FIRST] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_METEOR_ASSAULT] = FORBIDDEN_METRONOME | FORBIDDEN_INSTRUCT, @@ -1082,32 +1103,47 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_MOONGEIST_BEAM] = FORBIDDEN_METRONOME, [MOVE_NATURE_POWER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_NATURES_MADNESS] = FORBIDDEN_METRONOME, + [MOVE_NOXIOUS_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_OBSTRUCT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_INSTRUCT, + [MOVE_ORDER_UP] = FORBIDDEN_METRONOME, [MOVE_ORIGIN_PULSE] = FORBIDDEN_METRONOME, [MOVE_OUTRAGE] = FORBIDDEN_INSTRUCT, [MOVE_OVERDRIVE] = FORBIDDEN_METRONOME, [MOVE_PHANTOM_FORCE] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, [MOVE_PHOTON_GEYSER] = FORBIDDEN_METRONOME, + [MOVE_PLASMA_FISTS] = FORBIDDEN_METRONOME, + [MOVE_POPULATION_BOMB] = FORBIDDEN_METRONOME, + [MOVE_POUNCE] = FORBIDDEN_METRONOME, + [MOVE_POWER_SHIFT] = FORBIDDEN_METRONOME, + [MOVE_PRECIPICE_BLADES] = FORBIDDEN_METRONOME, [MOVE_PRISMATIC_LASER] = FORBIDDEN_INSTRUCT, [MOVE_PROTECT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_PYRO_BALL] = FORBIDDEN_METRONOME, [MOVE_QUASH] = FORBIDDEN_METRONOME, [MOVE_QUICK_GUARD] = FORBIDDEN_METRONOME, + [MOVE_RAGE_FIST] = FORBIDDEN_METRONOME, [MOVE_RAGE_POWDER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, + [MOVE_RAGING_BULL] = FORBIDDEN_METRONOME, + [MOVE_RAGING_FURY] = FORBIDDEN_METRONOME, [MOVE_RAZOR_WIND] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, [MOVE_RELIC_SONG] = FORBIDDEN_METRONOME, + [MOVE_REVIVAL_BLESSING] = FORBIDDEN_METRONOME, [MOVE_ROAR] = FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_ROAR_OF_TIME] = FORBIDDEN_INSTRUCT, [MOVE_ROCK_BLAST] = FORBIDDEN_PARENTAL_BOND, [MOVE_ROCK_WRECKER] = FORBIDDEN_INSTRUCT, [MOVE_ROLLOUT] = FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, + [MOVE_RUINATION] = FORBIDDEN_METRONOME, [MOVE_SAPPY_SEED] = FORBIDDEN_METRONOME, + [MOVE_SALT_CURE] = FORBIDDEN_METRONOME, [MOVE_SCALE_SHOT] = FORBIDDEN_PARENTAL_BOND, [MOVE_SECRET_SWORD] = FORBIDDEN_METRONOME, [MOVE_SELF_DESTRUCT] = FORBIDDEN_PARENTAL_BOND, [MOVE_SHADOW_FORCE] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, + [MOVE_SHED_TAIL] = FORBIDDEN_METRONOME, [MOVE_SHEER_COLD] = FORBIDDEN_PARENTAL_BOND, [MOVE_SHELL_TRAP] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, + [MOVE_SILK_TRAP] = FORBIDDEN_METRONOME, [MOVE_SIZZLY_SLIDE] = FORBIDDEN_METRONOME, [MOVE_SKETCH] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_MIMIC | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_SKULL_BASH] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, @@ -1118,10 +1154,12 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_SNARL] = FORBIDDEN_METRONOME, [MOVE_SNATCH] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_INSTRUCT, [MOVE_SNORE] = FORBIDDEN_METRONOME, + [MOVE_SNOWSCAPE] = FORBIDDEN_METRONOME, [MOVE_SOLAR_BEAM] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, [MOVE_SOLAR_BLADE] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, [MOVE_SPARKLY_SWIRL] = FORBIDDEN_METRONOME, [MOVE_SPECTRAL_THIEF] = FORBIDDEN_METRONOME, + [MOVE_SPICY_EXTRACT] = FORBIDDEN_METRONOME, [MOVE_SPIKE_CANNON] = FORBIDDEN_PARENTAL_BOND, [MOVE_SPIKY_SHIELD] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_SPIRIT_BREAK] = FORBIDDEN_METRONOME, @@ -1141,17 +1179,21 @@ static const u8 sForbiddenMoves[MOVES_COUNT] = [MOVE_THRASH] = FORBIDDEN_INSTRUCT, [MOVE_THUNDER_CAGE] = FORBIDDEN_METRONOME, [MOVE_THUNDEROUS_KICK] = FORBIDDEN_METRONOME, + [MOVE_TIDY_UP] = FORBIDDEN_METRONOME, + [MOVE_TRAILBLAZE] = FORBIDDEN_METRONOME, [MOVE_TRANSFORM] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_MIMIC | FORBIDDEN_INSTRUCT, [MOVE_TRICK] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_TRIPLE_AXEL] = FORBIDDEN_PARENTAL_BOND, [MOVE_TRIPLE_KICK] = FORBIDDEN_PARENTAL_BOND, [MOVE_TWINEEDLE] = FORBIDDEN_PARENTAL_BOND, + [MOVE_TWIN_BEAM] = FORBIDDEN_METRONOME, [MOVE_UPROAR] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, [MOVE_V_CREATE] = FORBIDDEN_METRONOME, [MOVE_VEEVEE_VOLLEY] = FORBIDDEN_METRONOME, [MOVE_WATER_SHURIKEN] = FORBIDDEN_PARENTAL_BOND, [MOVE_WHIRLWIND] = FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, [MOVE_WICKED_BLOW] = FORBIDDEN_METRONOME, + [MOVE_WICKED_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, [MOVE_WIDE_GUARD] = FORBIDDEN_METRONOME, [MOVE_ZIPPY_ZAP] = FORBIDDEN_METRONOME, }; @@ -1442,6 +1484,19 @@ static bool32 TryAegiFormChange(void) return TRUE; } +bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType) +{ + if ((ability == ABILITY_PROTEAN || ability == ABILITY_LIBERO) + && (gBattleMons[battler].type1 != moveType || gBattleMons[battler].type2 != moveType + || (gBattleMons[battler].type3 != moveType && gBattleMons[battler].type3 != TYPE_MYSTERY)) + && move != MOVE_STRUGGLE) + { + SET_BATTLER_TYPE(gBattlerAttacker, moveType); + return TRUE; + } + return FALSE; +} + static void Cmd_attackcanceler(void) { CMD_ARGS(); @@ -1498,13 +1553,9 @@ static void Cmd_attackcanceler(void) } // Check Protean activation. - if ((attackerAbility == ABILITY_PROTEAN || attackerAbility == ABILITY_LIBERO) - && (gBattleMons[gBattlerAttacker].type1 != moveType || gBattleMons[gBattlerAttacker].type2 != moveType || - (gBattleMons[gBattlerAttacker].type3 != moveType && gBattleMons[gBattlerAttacker].type3 != TYPE_MYSTERY)) - && gCurrentMove != MOVE_STRUGGLE) + if (ProteanTryChangeType(gBattlerAttacker, attackerAbility, gCurrentMove, moveType)) { PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); - SET_BATTLER_TYPE(gBattlerAttacker, moveType); gBattlerAbility = gBattlerAttacker; BattleScriptPushCursor(); PrepareStringBattle(STRINGID_EMPTYSTRING3, gBattlerAttacker); @@ -1590,6 +1641,14 @@ static void Cmd_attackcanceler(void) return; } + // Z-moves and Max Moves bypass protection, but deal reduced damage (factored in CalcFinalDmg) + if (gBattleStruct->zmove.active && IS_BATTLER_PROTECTED(gBattlerTarget)) + { + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = BattleScript_CouldntFullyProtect; + return; + } + for (i = 0; i < gBattlersCount; i++) { if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) @@ -1753,7 +1812,7 @@ static bool32 AccuracyCalcHelper(u16 move) return TRUE; } #if B_BLIZZARD_HAIL >= GEN_4 - else if ((gBattleWeather & B_WEATHER_HAIL) && move == MOVE_BLIZZARD) + else if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && move == MOVE_BLIZZARD) { // thunder/hurricane ignore acc checks in rain unless target is holding utility umbrella JumpIfMoveFailed(7, move); @@ -1833,7 +1892,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u if (defAbility == ABILITY_SAND_VEIL && WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_SANDSTORM) calc = (calc * 80) / 100; // 1.2 sand veil loss - else if (defAbility == ABILITY_SNOW_CLOAK && WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_HAIL) + else if (defAbility == ABILITY_SNOW_CLOAK && WEATHER_HAS_EFFECT && (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW))) calc = (calc * 80) / 100; // 1.2 snow cloak loss else if (defAbility == ABILITY_TANGLED_FEET && gBattleMons[battlerDef].status2 & STATUS2_CONFUSION) calc = (calc * 50) / 100; // 1.5 tangled feet loss @@ -1899,15 +1958,25 @@ static void Cmd_accuracycheck(void) } else { + u32 accuracy; + GET_MOVE_TYPE(move, type); if (JumpIfMoveAffectedByProtect(move)) return; if (AccuracyCalcHelper(move)) return; - // final calculation - if ((Random() % 100 + 1) > GetTotalAccuracy(gBattlerAttacker, gBattlerTarget, move, GetBattlerAbility(gBattlerAttacker), GetBattlerAbility(gBattlerTarget), - GetBattlerHoldEffect(gBattlerAttacker, TRUE), GetBattlerHoldEffect(gBattlerTarget, TRUE))) + accuracy = GetTotalAccuracy( + gBattlerAttacker, + gBattlerTarget, + move, + GetBattlerAbility(gBattlerAttacker), + GetBattlerAbility(gBattlerTarget), + GetBattlerHoldEffect(gBattlerAttacker, TRUE), + GetBattlerHoldEffect(gBattlerTarget, TRUE) + ); + + if (!RandomPercentage(RNG_ACCURACY, accuracy)) { gMoveResultFlags |= MOVE_RESULT_MISSED; if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_BLUNDER_POLICY) @@ -2086,10 +2155,8 @@ static void Cmd_critcalc(void) gIsCriticalHit = FALSE; else if (critChance == -2) gIsCriticalHit = TRUE; - else if (Random() % sCriticalHitChance[critChance] == 0) - gIsCriticalHit = TRUE; else - gIsCriticalHit = FALSE; + gIsCriticalHit = RandomWeighted(RNG_CRITICAL_HIT, sCriticalHitChance[critChance] - 1, 1); // Counter for EVO_CRITICAL_HITS. partySlot = gBattlerPartyIndexes[gBattlerAttacker]; @@ -2446,6 +2513,7 @@ static void Cmd_datahpupdate(void) gBattleMons[gActiveBattler].species = SPECIES_MIMIKYU_BUSTED; BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_TargetFormChange; + return; } else { @@ -2540,6 +2608,11 @@ static void Cmd_critmessage(void) if (gIsCriticalHit == TRUE && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { PrepareStringBattle(STRINGID_CRITICALHIT, gBattlerAttacker); + + // Signal for the trainer slide-in system. + if (GetBattlerSide(gBattlerTarget) != B_SIDE_PLAYER && gBattleStruct->trainerSlideFirstCriticalHitMsgState != 2) + gBattleStruct->trainerSlideFirstCriticalHitMsgState = 1; + gBattleCommunication[MSG_DISPLAY] = 1; } gBattlescriptCurrInstr = cmd->nextInstr; @@ -2619,7 +2692,13 @@ static void Cmd_resultmessage(void) { case MOVE_RESULT_SUPER_EFFECTIVE: if (!gMultiHitCounter) // Don't print effectiveness on each hit in a multi hit attack + { + // Signal for the trainer slide-in system. + if (GetBattlerSide(gBattlerTarget) != B_SIDE_PLAYER && gBattleStruct->trainerSlideFirstSuperEffectiveHitMsgState != 2) + gBattleStruct->trainerSlideFirstSuperEffectiveHitMsgState = 1; + stringId = STRINGID_SUPEREFFECTIVE; + } break; case MOVE_RESULT_NOT_VERY_EFFECTIVE: if (!gMultiHitCounter) @@ -2867,6 +2946,7 @@ void SetMoveEffect(bool32 primary, u32 certain) bool32 mirrorArmorReflected = (GetBattlerAbility(gBattlerTarget) == ABILITY_MIRROR_ARMOR); u32 flags = 0; u16 battlerAbility; + bool8 activateAfterFaint = FALSE; if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT && gBattleMons[gBattlerTarget].hp != 0 @@ -2881,9 +2961,17 @@ void SetMoveEffect(bool32 primary, u32 certain) case MOVE_EFFECT_KNOCK_OFF: case MOVE_EFFECT_SMACK_DOWN: case MOVE_EFFECT_REMOVE_STATUS: + case MOVE_EFFECT_STOCKPILE_WORE_OFF: gBattleStruct->moveEffect2 = gBattleScripting.moveEffect; gBattlescriptCurrInstr++; return; + case MOVE_EFFECT_STEALTH_ROCK: + case MOVE_EFFECT_SPIKES: + case MOVE_EFFECT_PAYDAY: + case MOVE_EFFECT_STEAL_ITEM: + case MOVE_EFFECT_BUG_BITE: + activateAfterFaint = TRUE; + break; } if (gBattleScripting.moveEffect & MOVE_EFFECT_AFFECTS_USER) @@ -2924,10 +3012,7 @@ void SetMoveEffect(bool32 primary, u32 certain) if (TestSheerForceFlag(gBattlerAttacker, gCurrentMove) && affectsUser != MOVE_EFFECT_AFFECTS_USER) INCREMENT_RESET_RETURN - if (gBattleMons[gEffectBattler].hp == 0 - && gBattleScripting.moveEffect != MOVE_EFFECT_PAYDAY - && gBattleScripting.moveEffect != MOVE_EFFECT_STEAL_ITEM - && gBattleScripting.moveEffect != MOVE_EFFECT_BUG_BITE) + if (gBattleMons[gEffectBattler].hp == 0 && !activateAfterFaint) INCREMENT_RESET_RETURN if (DoesSubstituteBlockMove(gBattlerAttacker, gEffectBattler, gCurrentMove) && affectsUser != MOVE_EFFECT_AFFECTS_USER) @@ -3127,6 +3212,12 @@ void SetMoveEffect(bool32 primary, u32 certain) gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; } break; + case STATUS1_FROSTBITE: + if (!CanGetFrostbite(gEffectBattler)) + break; + + statusChanged = TRUE; + break; } if (statusChanged == TRUE) { @@ -3134,9 +3225,9 @@ void SetMoveEffect(bool32 primary, u32 certain) if (sStatusFlagsForMoveEffects[gBattleScripting.moveEffect] == STATUS1_SLEEP) #if B_SLEEP_TURNS >= GEN_5 - gBattleMons[gEffectBattler].status1 |= ((Random() % 3) + 2); + gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 1, 3)); #else - gBattleMons[gEffectBattler].status1 |= ((Random() % 4) + 3); + gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 2, 5)); #endif else gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; @@ -3285,7 +3376,12 @@ void SetMoveEffect(bool32 primary, u32 certain) } else { - gBattleScripting.moveEffect = Random() % 3 + 3; + #if B_USE_FROSTBITE == TRUE + static const u8 sTriAttackEffects[] = { MOVE_EFFECT_BURN, MOVE_EFFECT_FROSTBITE, MOVE_EFFECT_PARALYSIS }; + #else + static const u8 sTriAttackEffects[] = { MOVE_EFFECT_BURN, MOVE_EFFECT_FREEZE, MOVE_EFFECT_PARALYSIS }; + #endif + gBattleScripting.moveEffect = RandomElement(RNG_TRI_ATTACK, sTriAttackEffects); SetMoveEffect(FALSE, 0); } break; @@ -3539,7 +3635,7 @@ void SetMoveEffect(bool32 primary, u32 certain) { gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gEffectBattler] = gCurrentMove; - gBattleMons[gEffectBattler].status2 |= STATUS2_LOCK_CONFUSE_TURN((Random() & 1) + 2); // thrash for 2-3 turns + gBattleMons[gEffectBattler].status2 |= STATUS2_LOCK_CONFUSE_TURN(RandomUniform(RNG_RAMPAGE_TURNS, 2, 3)); } break; case MOVE_EFFECT_SP_ATK_TWO_DOWN: // Overheat @@ -3742,6 +3838,30 @@ void SetMoveEffect(bool32 primary, u32 certain) TryUpdateRoundTurnOrder(); // If another Pokémon uses Round before the user this turn, the user will use Round directly after it gBattlescriptCurrInstr++; break; + case MOVE_EFFECT_DIRE_CLAW: + if (!gBattleMons[gEffectBattler].status1) + { + static const u8 sDireClawEffects[] = { MOVE_EFFECT_POISON, MOVE_EFFECT_PARALYSIS, MOVE_EFFECT_SLEEP }; + gBattleScripting.moveEffect = RandomElement(RNG_DIRE_CLAW, sDireClawEffects); + SetMoveEffect(TRUE, 0); + } + break; + case MOVE_EFFECT_STEALTH_ROCK: + if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEALTH_ROCK)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_POINTEDSTONESFLOAT; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StealthRockActivates; + } + break; + case MOVE_EFFECT_SPIKES: + if (gSideTimers[GetBattlerSide(gEffectBattler)].spikesAmount < 3) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SPIKESSCATTERED; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SpikesActivates; + } + break; } } } @@ -3760,20 +3880,23 @@ static void Cmd_seteffectwithchance(void) else percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; - if (gBattleScripting.moveEffect & MOVE_EFFECT_CERTAIN - && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) - { - gBattleScripting.moveEffect &= ~MOVE_EFFECT_CERTAIN; - SetMoveEffect(FALSE, MOVE_EFFECT_CERTAIN); - } - else if (Random() % 100 < percentChance - && gBattleScripting.moveEffect - && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleScripting.moveEffect) { - if (percentChance >= 100) + if (gBattleScripting.moveEffect & MOVE_EFFECT_CERTAIN + || percentChance >= 100) + { + gBattleScripting.moveEffect &= ~MOVE_EFFECT_CERTAIN; SetMoveEffect(FALSE, MOVE_EFFECT_CERTAIN); - else + } + else if (RandomPercentage(RNG_SECONDARY_EFFECT, percentChance)) + { SetMoveEffect(FALSE, 0); + } + else + { + gBattlescriptCurrInstr = cmd->nextInstr; + } } else { @@ -4371,15 +4494,7 @@ static void Cmd_getexp(void) if (battlerId != 0xFF) { - gBattleMons[battlerId].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL); - gBattleMons[battlerId].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP); - gBattleMons[battlerId].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); - gBattleMons[battlerId].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); - gBattleMons[battlerId].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); - gBattleMons[battlerId].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); - gBattleMons[battlerId].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); - gBattleMons[battlerId].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF); - + CopyMonLevelAndBaseStatsToBattleMon(battlerId, &gPlayerParty[gBattleStruct->expGetterMonId]); if (gStatuses3[battlerId] & STATUS3_POWER_TRICK) SWAP(gBattleMons[battlerId].attack, gBattleMons[battlerId].defense, temp); } @@ -5017,10 +5132,17 @@ static void Cmd_jumpifabilitypresent(void) { CMD_ARGS(u16 ability, const u8 *jumpInstr); - if (IsAbilityOnField(cmd->ability)) + u16 ability = cmd->ability; + u32 abilityBattler = IsAbilityOnField(ability); + if (abilityBattler) + { + gBattlerAbility = abilityBattler - 1; gBattlescriptCurrInstr = cmd->jumpInstr; + } else + { gBattlescriptCurrInstr = cmd->nextInstr; + } } static void Cmd_endselectionscript(void) @@ -5069,7 +5191,8 @@ static void Cmd_playanimation(void) else if (animId == B_ANIM_RAIN_CONTINUES || animId == B_ANIM_SUN_CONTINUES || animId == B_ANIM_SANDSTORM_CONTINUES - || animId == B_ANIM_HAIL_CONTINUES) + || animId == B_ANIM_HAIL_CONTINUES + || animId == B_ANIM_SNOW_CONTINUES) { BtlController_EmitBattleAnimation(BUFFER_A, animId, *argPtr); MarkBattlerForControllerExec(gActiveBattler); @@ -5118,7 +5241,8 @@ static void Cmd_playanimation_var(void) else if (*animIdPtr == B_ANIM_RAIN_CONTINUES || *animIdPtr == B_ANIM_SUN_CONTINUES || *animIdPtr == B_ANIM_SANDSTORM_CONTINUES - || *animIdPtr == B_ANIM_HAIL_CONTINUES) + || *animIdPtr == B_ANIM_HAIL_CONTINUES + || *animIdPtr == B_ANIM_SNOW_CONTINUES) { BtlController_EmitBattleAnimation(BUFFER_A, *animIdPtr, *argPtr); MarkBattlerForControllerExec(gActiveBattler); @@ -5439,6 +5563,9 @@ static void Cmd_moveend(void) { gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; gBattleMons[gBattlerAttacker].status1 = STATUS1_BURN; + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BeakBlastBurn; effect = 1; @@ -5456,7 +5583,7 @@ static void Cmd_moveend(void) && gBattleMoves[gCurrentMove].power != 0 && CompareStat(gBattlerTarget, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { - gBattleMons[gBattlerTarget].statStages[STAT_ATK]++; + SET_STATCHANGER(STAT_ATK, 1, FALSE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_RageIsBuilding; effect = TRUE; @@ -5467,7 +5594,6 @@ static void Cmd_moveend(void) if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE && gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget - && gSpecialStatuses[gBattlerTarget].specialDmg && (moveType == TYPE_FIRE #if B_BURN_HIT_THAW >= GEN_6 || gBattleMoves[gCurrentMove].effect == EFFECT_BURN_HIT @@ -5483,6 +5609,20 @@ static void Cmd_moveend(void) gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; effect = TRUE; } + if (gBattleMons[gBattlerTarget].status1 & STATUS1_FROSTBITE + && gBattleMons[gBattlerTarget].hp != 0 + && gBattlerAttacker != gBattlerTarget + && gBattleMoves[originallyUsedMove].flags & FLAG_THAW_USER + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FROSTBITE; + gActiveBattler = gBattlerTarget; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); + MarkBattlerForControllerExec(gActiveBattler); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_FrostbiteHealedViaFireMove; + effect = TRUE; + } gBattleScripting.moveendState++; break; case MOVEEND_RECOIL: @@ -5594,6 +5734,15 @@ static void Cmd_moveend(void) case MOVE_EFFECT_KNOCK_OFF: effect = TryKnockOffBattleScript(gBattlerTarget); break; + case MOVE_EFFECT_STOCKPILE_WORE_OFF: + if (gDisableStructs[gBattlerAttacker].stockpileCounter != 0) + { + gDisableStructs[gBattlerAttacker].stockpileCounter = 0; + effect = TRUE; + BattleScriptPush(gBattlescriptCurrInstr); + gBattlescriptCurrInstr = BattleScript_MoveEffectStockpileWoreOff; + } + break; case MOVE_EFFECT_SMACK_DOWN: if (!IsBattlerGrounded(gBattlerTarget) && IsBattlerAlive(gBattlerTarget)) { @@ -5726,6 +5875,22 @@ static void Cmd_moveend(void) else gBattleStruct->lastMoveFailed &= ~(gBitTable[gBattlerAttacker]); + // Set ShellTrap to activate after the attacker's turn if target was hit by a physical move. + if (gBattleMoves[gChosenMoveByBattler[gBattlerTarget]].effect == EFFECT_SHELL_TRAP + && gBattlerTarget != gBattlerAttacker + && GetBattlerSide(gBattlerTarget) != GetBattlerSide(gBattlerAttacker) + && gProtectStructs[gBattlerTarget].physicalDmg + && gProtectStructs[gBattlerTarget].physicalBattlerId == gBattlerAttacker + && !TestSheerForceFlag(gBattlerAttacker, gCurrentMove)) + { + gProtectStructs[gBattlerTarget].shellTrap = TRUE; + // Change move order in double battles, so the hit mon with shell trap moves immediately after being hit. + if (IsDoubleBattle()) + { + ChangeOrderTargetAfterAttacker(); + } + } + if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) { gActiveBattler = gBattlerAttacker; @@ -5969,7 +6134,7 @@ static void Cmd_moveend(void) gBattleScripting.moveendState++; break; case MOVEEND_RED_CARD: - if (gBattleMoves[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET + if ((gBattleMoves[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET || gBattleStruct->hitSwitchTargetFailed) && IsBattlerAlive(gBattlerAttacker) && !TestSheerForceFlag(gBattlerAttacker, gCurrentMove) && GetBattlerAbility(gBattlerAttacker) != ABILITY_GUARD_DOG) @@ -6132,28 +6297,6 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; - case MOVEEND_WEATHER_FORM: - for (i = 0; i < MAX_BATTLERS_COUNT; i++) - { - switch (gBattleMons[i].species) - { - case SPECIES_CASTFORM: - case SPECIES_CASTFORM_RAINY: - case SPECIES_CASTFORM_SNOWY: - case SPECIES_CASTFORM_SUNNY: - case SPECIES_CHERRIM: - case SPECIES_CHERRIM_SUNSHINE: - effect = TryWeatherFormChange(i); - if (effect) - { - BattleScriptPushCursorAndCallback(BattleScript_WeatherFormChange); - gBattleScripting.battler = i; - gBattleStruct->formToChangeInto = effect - 1; - } - } - } - gBattleScripting.moveendState++; - break; case MOVEEND_SYMBIOSIS: for (i = 0; i < gBattlersCount; i++) { @@ -6190,6 +6333,7 @@ static void Cmd_moveend(void) gBattleStruct->targetsDone[gBattlerAttacker] = 0; gProtectStructs[gBattlerAttacker].usesBouncedMove = FALSE; gProtectStructs[gBattlerAttacker].targetAffected = FALSE; + gProtectStructs[gBattlerAttacker].shellTrap = FALSE; gBattleStruct->ateBoost[gBattlerAttacker] = 0; gStatuses3[gBattlerAttacker] &= ~STATUS3_ME_FIRST; gSpecialStatuses[gBattlerAttacker].gemBoost = FALSE; @@ -6200,6 +6344,7 @@ static void Cmd_moveend(void) gBattleStruct->zmove.active = FALSE; gBattleStruct->zmove.toBeUsed[gBattlerAttacker] = MOVE_NONE; gBattleStruct->zmove.effect = EFFECT_HIT; + gBattleStruct->hitSwitchTargetFailed = FALSE; gBattleScripting.moveendState++; break; case MOVEEND_COUNT: @@ -6372,10 +6517,7 @@ bool32 CanBattlerSwitch(u32 battlerId) } else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { - if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT) - party = gEnemyParty; - else - party = gPlayerParty; + party = GetBattlerParty(battlerId); lastMonId = 0; if (battlerId & 2) @@ -6416,10 +6558,7 @@ bool32 CanBattlerSwitch(u32 battlerId) } else { - if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT) - party = gEnemyParty; - else - party = gPlayerParty; + party = GetBattlerParty(battlerId); lastMonId = 0; if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(battlerId)) == TRUE) @@ -6901,6 +7040,35 @@ static void SetDmgHazardsBattlescript(u8 battlerId, u8 multistringId) gBattlescriptCurrInstr = BattleScript_DmgHazardsOnFaintedBattler; } +bool32 DoSwitchInAbilitiesItems(u32 battlerId) +{ + return (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, battlerId, 0, 0, 0) + || (gBattleWeather & B_WEATHER_ANY && WEATHER_HAS_EFFECT && AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, battlerId, 0, 0, 0)) + || (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY && AbilityBattleEffects(ABILITYEFFECT_ON_TERRAIN, battlerId, 0, 0, 0)) + || ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, battlerId, FALSE) + || AbilityBattleEffects(ABILITYEFFECT_TRACE2, 0, 0, 0, 0)); +} + +bool32 ShouldPostponeSwitchInAbilities(u32 battlerId) +{ + bool32 aliveOpposing1 = IsBattlerAlive(BATTLE_OPPOSITE(battlerId)); + bool32 aliveOpposing2 = IsBattlerAlive(BATTLE_PARTNER(BATTLE_OPPOSITE(battlerId))); + // No pokemon on opposing side - postpone. + if (!aliveOpposing1 && !aliveOpposing2) + return TRUE; + + // Checks for double battle, so abilities like Intimidate wait until all battlers are switched-in before activating. + if (IsDoubleBattle()) + { + if (aliveOpposing1 && !aliveOpposing2 && !HasNoMonsToSwitch(BATTLE_PARTNER(BATTLE_OPPOSITE(battlerId)), PARTY_SIZE, PARTY_SIZE)) + return TRUE; + if (!aliveOpposing1 && aliveOpposing2 && !HasNoMonsToSwitch(BATTLE_OPPOSITE(battlerId), PARTY_SIZE, PARTY_SIZE)) + return TRUE; + } + + return FALSE; +} + static void Cmd_switchineffects(void) { CMD_ARGS(u8 battler); @@ -6913,7 +7081,7 @@ static void Cmd_switchineffects(void) gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler); gSpecialStatuses[gActiveBattler].faintedHasReplacement = FALSE; - if (!IsBattlerAIControlled(gActiveBattler)) + if (!BattlerHasAi(gActiveBattler)) gBattleStruct->appearedInBattle |= gBitTable[gBattlerPartyIndexes[gActiveBattler]]; // Neutralizing Gas announces itself before hazards @@ -6925,6 +7093,24 @@ static void Cmd_switchineffects(void) BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SwitchInAbilityMsgRet; } + // Healing Wish activates before hazards. + // Starting from Gen8 - it heals only pokemon which can be healed. In gens 5,6,7 the effect activates anyways. + else if (((gBattleStruct->storedHealingWish & gBitTable[gActiveBattler]) || (gBattleStruct->storedLunarDance & gBitTable[gActiveBattler])) + && (gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP || gBattleMons[gActiveBattler].status1 != 0 || B_HEALING_WISH_SWITCH < GEN_8)) + { + if (gBattleStruct->storedHealingWish & gBitTable[gActiveBattler]) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_HealingWishActivates; + gBattleStruct->storedHealingWish &= ~(gBitTable[gActiveBattler]); + } + else // Lunar Dance + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_LunarDanceActivates; + gBattleStruct->storedLunarDance &= ~(gBitTable[gActiveBattler]); + } + } else if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES) && GetBattlerAbility(gActiveBattler) != ABILITY_MAGIC_GUARD @@ -6937,7 +7123,7 @@ static void Cmd_switchineffects(void) gBattleMoveDamage = 1; gSideStatuses[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED; - SetDmgHazardsBattlescript(gActiveBattler, 0); + SetDmgHazardsBattlescript(gActiveBattler, B_MSG_PKMNHURTBYSPIKES); } else if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_STEALTH_ROCK_DAMAGED) && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_STEALTH_ROCK) @@ -6948,7 +7134,7 @@ static void Cmd_switchineffects(void) gBattleMoveDamage = GetStealthHazardDamage(gBattleMoves[MOVE_STEALTH_ROCK].type, gActiveBattler); if (gBattleMoveDamage != 0) - SetDmgHazardsBattlescript(gActiveBattler, 1); + SetDmgHazardsBattlescript(gActiveBattler, B_MSG_STEALTHROCKDMG); } else if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_TOXIC_SPIKES_DAMAGED) && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_TOXIC_SPIKES) @@ -7017,12 +7203,17 @@ static void Cmd_switchineffects(void) gDisableStructs[gActiveBattler].truantSwitchInHack = 0; - if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0) - || (gBattleWeather & B_WEATHER_ANY && WEATHER_HAS_EFFECT && AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, gActiveBattler, 0, 0, 0)) - || (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY && AbilityBattleEffects(ABILITYEFFECT_ON_TERRAIN, gActiveBattler, 0, 0, 0)) - || ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE) - || AbilityBattleEffects(ABILITYEFFECT_TRACE2, 0, 0, 0, 0)) - return; + // Don't activate switch-in abilities if the opposing field is empty. + // This could happen when a mon uses explosion and causes everyone to faint. + if (ShouldPostponeSwitchInAbilities(gActiveBattler) || gBattleStruct->switchInAbilityPostponed) + { + gBattleStruct->switchInAbilityPostponed |= gBitTable[gActiveBattler]; + } + else + { + if (DoSwitchInAbilitiesItems(gActiveBattler)) + return; + } gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED); @@ -7048,6 +7239,7 @@ static void Cmd_switchineffects(void) gBattlerFainted++; } } + gBattleStruct->forcedSwitch &= ~(gBitTable[gActiveBattler]); gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -7387,6 +7579,12 @@ static u32 GetTrainerMoneyToGive(u16 trainerId) lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; } break; + case F_TRAINER_PARTY_EVERYTHING_CUSTOMIZED: + { + const struct TrainerMonCustomized *party = gTrainers[trainerId].party.EverythingCustomized; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; } for (; gTrainerMoneyTable[i].classId != 0xFF; i++) @@ -7425,8 +7623,8 @@ static void Cmd_getmoneyreward(void) s32 i, count; for (i = 0; i < PARTY_SIZE; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) { if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) > sPartyLevel) sPartyLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); @@ -7514,15 +7712,12 @@ static void Cmd_drawpartystatussummary(void) gActiveBattler = GetBattlerForBattleScript(cmd->battler); - if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; + party = GetBattlerParty(gActiveBattler); for (i = 0; i < PARTY_SIZE; i++) { - if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE - || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + if (GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_NONE + || GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_EGG) { hpStatuses[i].hp = 0xFFFF; hpStatuses[i].status = 0; @@ -7737,7 +7932,7 @@ static void BestowItem(u32 battlerAtk, u32 battlerDef) // Called by Cmd_removeitem. itemId represents the item that was removed, not being given. static bool32 TrySymbiosis(u32 battler, u32 itemId) { - if (!gBattleStruct->itemStolen[gBattlerPartyIndexes[battler]].stolen + if (!gBattleStruct->itemLost[gBattlerPartyIndexes[battler]].stolen && gBattleStruct->changedItems[battler] == ITEM_NONE && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_EJECT_BUTTON && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_EJECT_PACK @@ -7923,7 +8118,7 @@ static void InitLevelUpBanner(void) gBattle_BG2_Y = 0; gBattle_BG2_X = LEVEL_UP_BANNER_START; - LoadPalette(sLevelUpBanner_Pal, BG_PLTT_ID(6), PLTT_SIZE_4BPP); + LoadPalette(sLevelUpBanner_Pal, BG_PLTT_ID(6), sizeof(sLevelUpBanner_Pal)); CopyToWindowPixelBuffer(B_WIN_LEVEL_UP_BANNER, sLevelUpBanner_Gfx, 0, 0); PutWindowTilemap(B_WIN_LEVEL_UP_BANNER); CopyWindowToVram(B_WIN_LEVEL_UP_BANNER, COPYWIN_FULL); @@ -8316,6 +8511,30 @@ bool32 CanUseLastResort(u8 battlerId) return (knownMovesCount >= 2 && usedMovesCount >= knownMovesCount - 1); } +static void RemoveAllTerrains(void) +{ + gFieldTimers.terrainTimer = 0; + switch (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) + { + case STATUS_FIELD_MISTY_TERRAIN: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINENDS_MISTY; + break; + case STATUS_FIELD_GRASSY_TERRAIN: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINENDS_GRASS; + break; + case STATUS_FIELD_ELECTRIC_TERRAIN: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINENDS_ELECTRIC; + break; + case STATUS_FIELD_PSYCHIC_TERRAIN: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINENDS_PSYCHIC; + break; + default: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINENDS_COUNT; // failsafe + break; + } + gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; // remove the terrain +} + #define DEFOG_CLEAR(status, structField, battlescript, move)\ { \ if (*sideStatuses & status) \ @@ -8333,7 +8552,7 @@ bool32 CanUseLastResort(u8 battlerId) } \ } -static bool32 ClearDefogHazards(u8 battlerAtk, bool32 clear) +static bool32 TryDefogClear(u8 battlerAtk, bool32 clear) { s32 i; for (i = 0; i < 2; i++) @@ -8341,7 +8560,7 @@ static bool32 ClearDefogHazards(u8 battlerAtk, bool32 clear) struct SideTimer *sideTimer = &gSideTimers[i]; u32 *sideStatuses = &gSideStatuses[i]; - gBattlerAttacker = i; + gBattlerAttacker = i; // For correct battle string. Ally's / Foe's if (GetBattlerSide(battlerAtk) != i) { DEFOG_CLEAR(SIDE_STATUS_REFLECT, reflectTimer, BattleScript_SideStatusWoreOffReturn, MOVE_REFLECT); @@ -8350,10 +8569,19 @@ static bool32 ClearDefogHazards(u8 battlerAtk, bool32 clear) DEFOG_CLEAR(SIDE_STATUS_AURORA_VEIL, auroraVeilTimer, BattleScript_SideStatusWoreOffReturn, MOVE_AURORA_VEIL); DEFOG_CLEAR(SIDE_STATUS_SAFEGUARD, safeguardTimer, BattleScript_SideStatusWoreOffReturn, MOVE_SAFEGUARD); } - DEFOG_CLEAR(SIDE_STATUS_SPIKES, spikesAmount, BattleScript_SpikesFree, 0); - DEFOG_CLEAR(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, BattleScript_StealthRockFree, 0); - DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesFree, 0); - DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebFree, 0); + DEFOG_CLEAR(SIDE_STATUS_SPIKES, spikesAmount, BattleScript_SpikesDefog, 0); + DEFOG_CLEAR(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, BattleScript_StealthRockDefog, 0); + DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesDefog, 0); + DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebDefog, 0); + #if B_DEFOG_CLEARS_TERRAIN >= GEN_8 + if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) + { + RemoveAllTerrains(); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_TerrainEnds_Ret; + return TRUE; + } + #endif // B_DEFOG_CLEARS_TERRAIN } return FALSE; @@ -8388,22 +8616,6 @@ u32 IsAbilityStatusProtected(u32 battler) || IsShieldsDownProtected(battler); } -static void RecalcBattlerStats(u32 battler, struct Pokemon *mon) -{ - CalculateMonStats(mon); - gBattleMons[battler].level = GetMonData(mon, MON_DATA_LEVEL); - gBattleMons[battler].hp = GetMonData(mon, MON_DATA_HP); - gBattleMons[battler].maxHP = GetMonData(mon, MON_DATA_MAX_HP); - gBattleMons[battler].attack = GetMonData(mon, MON_DATA_ATK); - gBattleMons[battler].defense = GetMonData(mon, MON_DATA_DEF); - gBattleMons[battler].speed = GetMonData(mon, MON_DATA_SPEED); - gBattleMons[battler].spAttack = GetMonData(mon, MON_DATA_SPATK); - gBattleMons[battler].spDefense = GetMonData(mon, MON_DATA_SPDEF); - gBattleMons[battler].ability = GetMonAbility(mon); - gBattleMons[battler].type1 = gSpeciesInfo[gBattleMons[battler].species].types[0]; - gBattleMons[battler].type2 = gSpeciesInfo[gBattleMons[battler].species].types[1]; -} - u32 GetHighestStatId(u32 battlerId) { u32 i, highestId = STAT_ATK, highestStat = gBattleMons[battlerId].attack; @@ -8556,15 +8768,48 @@ static bool32 CourtChangeSwapSideStatuses(void) SWAP(sideTimerPlayer->stickyWebBattlerSide, sideTimerOpp->stickyWebBattlerSide, temp); } +static void HandleScriptMegaPrimal(u32 caseId, u32 battlerId, bool32 isMega) +{ + struct Pokemon *party = GetBattlerParty(battlerId); + struct Pokemon *mon = &party[gBattlerPartyIndexes[battlerId]]; + u32 position = GetBattlerPosition(battlerId); + u32 side = GET_BATTLER_SIDE(battlerId); + + // Change species. + if (caseId == 0) + { + if (isMega) + { + if (!TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM)) + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE); + } + else + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_PRIMAL_REVERSION); + + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[battlerId].species); + + BtlController_EmitSetMonData(BUFFER_A, REQUEST_SPECIES_BATTLE, gBitTable[gBattlerPartyIndexes[battlerId]], sizeof(gBattleMons[battlerId].species), &gBattleMons[battlerId].species); + MarkBattlerForControllerExec(battlerId); + } + // Update healthbox and elevation and play cry. + else + { + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId], mon, HEALTHBOX_ALL); + if (side == B_SIDE_OPPONENT) + SetBattlerShadowSpriteCallback(battlerId, gBattleMons[battlerId].species); + if (isMega) + gBattleStruct->mega.alreadyEvolved[position] = TRUE; + } +} + static bool32 CanTeleport(u8 battlerId) { - u8 side = GetBattlerSide(battlerId); - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + struct Pokemon *party = GetBattlerParty(battlerId); u32 species, count, i; for (i = 0; i < PARTY_SIZE; i++) { - species = GetMonData(&party[i], MON_DATA_SPECIES2); + species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG); if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&party[i], MON_DATA_HP) != 0) count++; } @@ -8584,6 +8829,38 @@ static bool32 CanTeleport(u8 battlerId) return TRUE; } +// Return True if the order was changed, and false if the order was not changed(for example because the target would move after the attacker anyway). +static bool32 ChangeOrderTargetAfterAttacker(void) +{ + u32 i; + u8 data[MAX_BATTLERS_COUNT]; + + if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget) + || GetBattlerTurnOrderNum(gBattlerAttacker) + 1 == GetBattlerTurnOrderNum(gBattlerTarget)) + return FALSE; + + for (i = 0; i < gBattlersCount; i++) + data[i] = gBattlerByTurnOrder[i]; + if (GetBattlerTurnOrderNum(gBattlerAttacker) == 0 && GetBattlerTurnOrderNum(gBattlerTarget) == 2) + { + gBattlerByTurnOrder[1] = gBattlerTarget; + gBattlerByTurnOrder[2] = data[1]; + gBattlerByTurnOrder[3] = data[3]; + } + else if (GetBattlerTurnOrderNum(gBattlerAttacker) == 0 && GetBattlerTurnOrderNum(gBattlerTarget) == 3) + { + gBattlerByTurnOrder[1] = gBattlerTarget; + gBattlerByTurnOrder[2] = data[1]; + gBattlerByTurnOrder[3] = data[2]; + } + else // Attacker == 1, Target == 3 + { + gBattlerByTurnOrder[2] = gBattlerTarget; + gBattlerByTurnOrder[3] = data[2]; + } + return TRUE; +} + static void Cmd_various(void) { CMD_ARGS(u8 battler, u8 id); @@ -9218,7 +9495,6 @@ static void Cmd_various(void) && !NoAliveMonsForEitherParty() && CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { - gBattleMons[gBattlerAttacker].statStages[STAT_ATK]++; SET_STATCHANGER(STAT_ATK, 1, FALSE); PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); BattleScriptPush(cmd->nextInstr); @@ -9242,7 +9518,6 @@ static void Cmd_various(void) && !NoAliveMonsForEitherParty() && CompareStat(gBattlerAttacker, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { - gBattleMons[gBattlerAttacker].statStages[STAT_SPATK]++; SET_STATCHANGER(STAT_SPATK, 1, FALSE); PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK); BattleScriptPush(cmd->nextInstr); @@ -9294,7 +9569,6 @@ static void Cmd_various(void) && !NoAliveMonsForEitherParty() && CompareStat(gBattlerAttacker, i, MAX_STAT_STAGE, CMP_LESS_THAN)) { - gBattleMons[gBattlerAttacker].statStages[i]++; SET_STATCHANGER(i, 1, FALSE); PREPARE_STAT_BUFFER(gBattleTextBuff1, i); BattleScriptPush(cmd->nextInstr); @@ -9314,7 +9588,6 @@ static void Cmd_various(void) && !NoAliveMonsForEitherParty() && CompareStat(gBattleScripting.battler, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { - gBattleMons[gBattleScripting.battler].statStages[STAT_SPATK]++; SET_STATCHANGER(STAT_SPATK, 1, FALSE); PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK); BattleScriptPushCursor(); @@ -9600,95 +9873,14 @@ static void Cmd_various(void) case VARIOUS_HANDLE_MEGA_EVO: { VARIOUS_ARGS(u8 case_); - - if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) - mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; - else - mon = &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]; - - // Change species. - if (cmd->case_ == 0) - { - u16 megaSpecies; - gBattleStruct->mega.evolvedSpecies[gActiveBattler] = gBattleMons[gActiveBattler].species; - if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT - || (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT && !(gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER)))) - { - gBattleStruct->mega.playerEvolvedSpecies = gBattleStruct->mega.evolvedSpecies[gActiveBattler]; - } - //Checks regular Mega Evolution - megaSpecies = GetMegaEvolutionSpecies(gBattleStruct->mega.evolvedSpecies[gActiveBattler], gBattleMons[gActiveBattler].item); - //Checks Wish Mega Evolution - if (megaSpecies == SPECIES_NONE) - { - megaSpecies = GetWishMegaEvolutionSpecies(gBattleStruct->mega.evolvedSpecies[gActiveBattler], gBattleMons[gActiveBattler].moves[0], gBattleMons[gActiveBattler].moves[1], gBattleMons[gActiveBattler].moves[2], gBattleMons[gActiveBattler].moves[3]); - } - - gBattleMons[gActiveBattler].species = megaSpecies; - PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gActiveBattler].species); - - BtlController_EmitSetMonData(BUFFER_A, REQUEST_SPECIES_BATTLE, gBitTable[gBattlerPartyIndexes[gActiveBattler]], sizeof(gBattleMons[gActiveBattler].species), &gBattleMons[gActiveBattler].species); - MarkBattlerForControllerExec(gActiveBattler); - } - // Change stats. - else if (cmd->case_ == 1) - { - RecalcBattlerStats(gActiveBattler, mon); - gBattleStruct->mega.alreadyEvolved[GetBattlerPosition(gActiveBattler)] = TRUE; - gBattleStruct->mega.evolvedPartyIds[GetBattlerSide(gActiveBattler)] |= gBitTable[gBattlerPartyIndexes[gActiveBattler]]; - } - // Update healthbox and elevation. - else - { - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], mon, HEALTHBOX_ALL); - CreateMegaIndicatorSprite(gActiveBattler, 0); - if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) - SetBattlerShadowSpriteCallback(gActiveBattler, gBattleMons[gActiveBattler].species); - } + HandleScriptMegaPrimal(cmd->case_, gActiveBattler, TRUE); gBattlescriptCurrInstr = cmd->nextInstr; return; } case VARIOUS_HANDLE_PRIMAL_REVERSION: { VARIOUS_ARGS(u8 case_); - if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) - mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; - else - mon = &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]; - - // Change species. - if (cmd->case_ == 0) - { - u16 primalSpecies; - gBattleStruct->mega.primalRevertedSpecies[gActiveBattler] = gBattleMons[gActiveBattler].species; - if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT - || (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT && !(gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER)))) - { - gBattleStruct->mega.playerPrimalRevertedSpecies = gBattleStruct->mega.primalRevertedSpecies[gActiveBattler]; - } - // Checks Primal Reversion - primalSpecies = GetPrimalReversionSpecies(gBattleStruct->mega.primalRevertedSpecies[gActiveBattler], gBattleMons[gActiveBattler].item); - - gBattleMons[gActiveBattler].species = primalSpecies; - PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gActiveBattler].species); - - BtlController_EmitSetMonData(BUFFER_A, REQUEST_SPECIES_BATTLE, gBitTable[gBattlerPartyIndexes[gActiveBattler]], sizeof(gBattleMons[gActiveBattler].species), &gBattleMons[gActiveBattler].species); - MarkBattlerForControllerExec(gActiveBattler); - } - // Change stats. - else if (cmd->case_ == 1) - { - RecalcBattlerStats(gActiveBattler, mon); - gBattleStruct->mega.primalRevertedPartyIds[GetBattlerSide(gActiveBattler)] |= gBitTable[gBattlerPartyIndexes[gActiveBattler]]; - } - // Update healthbox and elevation. - else - { - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], mon, HEALTHBOX_ALL); - CreateMegaIndicatorSprite(gActiveBattler, 0); - if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) - SetBattlerShadowSpriteCallback(gActiveBattler, gBattleMons[gActiveBattler].species); - } + HandleScriptMegaPrimal(cmd->case_, gActiveBattler, FALSE); gBattlescriptCurrInstr = cmd->nextInstr; return; } @@ -9753,6 +9945,9 @@ static void Cmd_various(void) case STATUS1_TOXIC_POISON: gBattleScripting.moveEffect = MOVE_EFFECT_TOXIC; break; + case STATUS1_FROSTBITE: + gBattleScripting.moveEffect = MOVE_EFFECT_FROSTBITE; + break; default: gBattleScripting.moveEffect = 0; break; @@ -9775,7 +9970,7 @@ static void Cmd_various(void) && GetBattlerAbility(gBattlerTarget) != ABILITY_GUARD_DOG) { gBattleScripting.switchCase = B_SWITCH_HIT; - gBattlescriptCurrInstr = BattleScript_ForceRandomSwitch; + gBattlescriptCurrInstr = cmd->nextInstr; } else { @@ -9864,14 +10059,14 @@ static void Cmd_various(void) VARIOUS_ARGS(bool8 clear, const u8 *failInstr); if (cmd->clear) // Clear { - if (ClearDefogHazards(gEffectBattler, TRUE)) + if (TryDefogClear(gEffectBattler, TRUE)) return; else gBattlescriptCurrInstr = cmd->nextInstr; } else { - if (ClearDefogHazards(gActiveBattler, FALSE)) + if (TryDefogClear(gActiveBattler, FALSE)) gBattlescriptCurrInstr = cmd->nextInstr; else gBattlescriptCurrInstr = cmd->failInstr; @@ -9921,6 +10116,8 @@ static void Cmd_various(void) gBattleCommunication[MULTISTRING_CHOOSER] = 3; else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) && CanSleep(gBattlerTarget)) gBattleCommunication[MULTISTRING_CHOOSER] = 4; + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_FROSTBITE) && CanBeFrozen(gBattlerTarget)) + gBattleCommunication[MULTISTRING_CHOOSER] = 5; else { gBattlescriptCurrInstr = cmd->failInstr; @@ -9951,34 +10148,14 @@ static void Cmd_various(void) case VARIOUS_AFTER_YOU: { VARIOUS_ARGS(const u8 *failInstr); - if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget) - || GetBattlerTurnOrderNum(gBattlerAttacker) + 1 == GetBattlerTurnOrderNum(gBattlerTarget)) + if (ChangeOrderTargetAfterAttacker()) { - gBattlescriptCurrInstr = cmd->failInstr; + gSpecialStatuses[gBattlerTarget].afterYou = 1; + gBattlescriptCurrInstr = cmd->nextInstr; } else { - for (i = 0; i < gBattlersCount; i++) - data[i] = gBattlerByTurnOrder[i]; - if (GetBattlerTurnOrderNum(gBattlerAttacker) == 0 && GetBattlerTurnOrderNum(gBattlerTarget) == 2) - { - gBattlerByTurnOrder[1] = gBattlerTarget; - gBattlerByTurnOrder[2] = data[1]; - gBattlerByTurnOrder[3] = data[3]; - } - else if (GetBattlerTurnOrderNum(gBattlerAttacker) == 0 && GetBattlerTurnOrderNum(gBattlerTarget) == 3) - { - gBattlerByTurnOrder[1] = gBattlerTarget; - gBattlerByTurnOrder[2] = data[1]; - gBattlerByTurnOrder[3] = data[2]; - } - else - { - gBattlerByTurnOrder[2] = gBattlerTarget; - gBattlerByTurnOrder[3] = data[2]; - } - gSpecialStatuses[gBattlerTarget].afterYou = 1; - gBattlescriptCurrInstr = cmd->nextInstr; + gBattlescriptCurrInstr = cmd->failInstr; } return; } @@ -10019,7 +10196,8 @@ static void Cmd_various(void) VARIOUS_ARGS(u8 case_); if (cmd->case_ == 0) { - gBattleScripting.savedDmg = gBattlerSpriteIds[gActiveBattler]; + // Save sprite IDs, because trainer slide in will overwrite gBattlerSpriteIds variable. + gBattleScripting.savedDmg = (gBattlerSpriteIds[gActiveBattler] & 0xFF) | (gBattlerSpriteIds[BATTLE_PARTNER(gActiveBattler)] << 8); HideBattlerShadowSprite(gActiveBattler); } else if (cmd->case_ == 1) @@ -10029,12 +10207,19 @@ static void Cmd_various(void) } else { - gBattlerSpriteIds[gActiveBattler] = gBattleScripting.savedDmg; - if (gBattleMons[gActiveBattler].hp != 0) + gBattlerSpriteIds[BATTLE_PARTNER(gActiveBattler)] = gBattleScripting.savedDmg >> 8; + gBattlerSpriteIds[gActiveBattler] = gBattleScripting.savedDmg & 0xFF; + if (IsBattlerAlive(gActiveBattler)) { SetBattlerShadowSpriteCallback(gActiveBattler, gBattleMons[gActiveBattler].species); BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); } + i = BATTLE_PARTNER(gActiveBattler); + if (IsBattlerAlive(i)) + { + SetBattlerShadowSpriteCallback(i, gBattleMons[i].species); + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[i]], i); + } } gBattlescriptCurrInstr = cmd->nextInstr; return; @@ -10042,11 +10227,11 @@ static void Cmd_various(void) case VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF: { VARIOUS_ARGS(); - if (ShouldDoTrainerSlide(gActiveBattler, gTrainerBattleOpponent_A, TRAINER_SLIDE_FIRST_DOWN)) + if ((i = ShouldDoTrainerSlide(gActiveBattler, TRAINER_SLIDE_FIRST_DOWN))) { gBattleScripting.battler = gActiveBattler; BattleScriptPush(cmd->nextInstr); - gBattlescriptCurrInstr = BattleScript_TrainerSlideMsgRet; + gBattlescriptCurrInstr = (i == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); return; } break; @@ -10054,11 +10239,11 @@ static void Cmd_various(void) case VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON: { VARIOUS_ARGS(); - if (ShouldDoTrainerSlide(gActiveBattler, gTrainerBattleOpponent_A, TRAINER_SLIDE_LAST_SWITCHIN)) + if ((i = ShouldDoTrainerSlide(gActiveBattler, TRAINER_SLIDE_LAST_SWITCHIN))) { gBattleScripting.battler = gActiveBattler; BattleScriptPush(cmd->nextInstr); - gBattlescriptCurrInstr = BattleScript_TrainerSlideMsgRet; + gBattlescriptCurrInstr = (i == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); return; } break; @@ -10067,7 +10252,7 @@ static void Cmd_various(void) { VARIOUS_ARGS(); if (gSideStatuses[GET_BATTLER_SIDE(gActiveBattler)] & SIDE_STATUS_AURORA_VEIL - || !(WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_HAIL)) + || !(WEATHER_HAS_EFFECT && gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW))) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -10147,13 +10332,7 @@ static void Cmd_various(void) } return; } - case VARIOUS_SET_Z_EFFECT: - { - VARIOUS_ARGS(); - SetZEffect(); //handles battle script jumping internally - return; - } - case VARIOUS_MOVEEND_ITEM_EFFECTS: + case VARIOUS_MOVEEND_ITEM_EFFECTS: { VARIOUS_ARGS(); if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, FALSE)) @@ -10308,26 +10487,7 @@ static void Cmd_various(void) case VARIOUS_REMOVE_TERRAIN: { VARIOUS_ARGS(); - gFieldTimers.terrainTimer = 0; - switch (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) - { - case STATUS_FIELD_MISTY_TERRAIN: - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - break; - case STATUS_FIELD_GRASSY_TERRAIN: - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - break; - case STATUS_FIELD_ELECTRIC_TERRAIN: - gBattleCommunication[MULTISTRING_CHOOSER] = 2; - break; - case STATUS_FIELD_PSYCHIC_TERRAIN: - gBattleCommunication[MULTISTRING_CHOOSER] = 3; - break; - default: - gBattleCommunication[MULTISTRING_CHOOSER] = 4; // failsafe - break; - } - gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; // remove the terrain + RemoveAllTerrains(); break; } case VARIOUS_JUMP_IF_UNDER_200: @@ -10537,15 +10697,7 @@ static void Cmd_various(void) case VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL: { VARIOUS_ARGS(const u8 *jumpInstr); - bool8 canDoPrimalReversion = FALSE; - - for (i = 0; i < EVOS_PER_MON; i++) - { - if (gEvolutionTable[gBattleMons[gActiveBattler].species][i].method == EVO_PRIMAL_REVERSION - && gEvolutionTable[gBattleMons[gActiveBattler].species][i].param == gBattleMons[gActiveBattler].item) - canDoPrimalReversion = TRUE; - } - if (!canDoPrimalReversion) + if (GetBattleFormChangeTargetSpecies(gActiveBattler, FORM_CHANGE_BATTLE_PRIMAL_REVERSION) == SPECIES_NONE) gBattlescriptCurrInstr = cmd->jumpInstr; else gBattlescriptCurrInstr = cmd->nextInstr; @@ -10858,48 +11010,6 @@ static void Cmd_various(void) CourtChangeSwapSideStatuses(); break; } - case VARIOUS_TRY_SYMBIOSIS: //called by Bestow, Fling, and Bug Bite, which don't work with Cmd_removeitem. - { - VARIOUS_ARGS(); - if (SYMBIOSIS_CHECK(gActiveBattler, BATTLE_PARTNER(gActiveBattler))) - { - BestowItem(BATTLE_PARTNER(gActiveBattler), gActiveBattler); - gLastUsedAbility = gBattleMons[BATTLE_PARTNER(gActiveBattler)].ability; - gBattleScripting.battler = gBattlerAbility = BATTLE_PARTNER(gActiveBattler); - gBattlerAttacker = gActiveBattler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SymbiosisActivates; - return; - } - break; - } - case VARIOUS_CAN_TELEPORT: - { - VARIOUS_ARGS(); - gBattleCommunication[0] = CanTeleport(gActiveBattler); - break; - } - case VARIOUS_GET_BATTLER_SIDE: - { - VARIOUS_ARGS(); - if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) - gBattleCommunication[0] = B_SIDE_PLAYER; - else - gBattleCommunication[0] = B_SIDE_OPPONENT; - break; - } - case VARIOUS_CHECK_PARENTAL_BOND_COUNTER: - { - VARIOUS_ARGS(u8 counter, const u8 *jumpInstr); - // Some effects should only happen on the first or second strike of Parental Bond, - // so a way to check this in battle scripts is useful - u8 counter = cmd->counter; - if (gSpecialStatuses[gBattlerAttacker].parentalBondState == counter && gBattleMons[gBattlerTarget].hp != 0) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_SWAP_STATS: { VARIOUS_ARGS(u8 stat); @@ -11016,22 +11126,6 @@ static void Cmd_various(void) AbilityBattleEffects(ABILITYEFFECT_ON_TERRAIN, gActiveBattler, 0, 0, 0); return; } - case VARIOUS_JUMP_IF_NO_VALID_TARGETS: - { - VARIOUS_ARGS(const u8 *jumpInstr); - u32 count = 0; - - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) - count++; - } - if (count == 0) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_JUMP_IF_EMERGENCY_EXITED: { VARIOUS_ARGS(const u8 *jumpInstr); @@ -11041,6 +11135,99 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->nextInstr; return; } + case VARIOUS_STORE_HEALING_WISH: + { + VARIOUS_ARGS(); + if (gCurrentMove == MOVE_LUNAR_DANCE) + gBattleStruct->storedLunarDance |= gBitTable[gActiveBattler]; + else + gBattleStruct->storedHealingWish |= gBitTable[gActiveBattler]; + break; + } + case VARIOUS_HIT_SWITCH_TARGET_FAILED: + { + VARIOUS_ARGS(); + gBattleStruct->hitSwitchTargetFailed = TRUE; + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } + case VARIOUS_JUMP_IF_SHELL_TRAP: + { + VARIOUS_ARGS(const u8 *jumpInstr); + if (gProtectStructs[gActiveBattler].shellTrap) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } + case VARIOUS_TRY_REVIVAL_BLESSING: + { + VARIOUS_ARGS(const u8 *failInstr); + u32 side = GetBattlerSide(gBattlerAttacker); + u8 index = GetFirstFaintedPartyIndex(gBattlerAttacker); + + // Move fails if there are no battlers to revive. + if (index == PARTY_SIZE) + { + gBattlescriptCurrInstr = cmd->failInstr; + return; + } + + // Battler selected! Revive and go to next instruction. + if (gSelectedMonPartyId != PARTY_SIZE) + { + struct Pokemon *party = GetSideParty(side); + + u16 hp = GetMonData(&party[gSelectedMonPartyId], MON_DATA_MAX_HP) / 2; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HP_BATTLE, gBitTable[gSelectedMonPartyId], sizeof(hp), &hp); + MarkBattlerForControllerExec(gBattlerAttacker); + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, GetMonData(&party[gSelectedMonPartyId], MON_DATA_SPECIES)); + + // If an on-field battler is revived, it needs to be sent out again. + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && + gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerAttacker)] == gSelectedMonPartyId) + { + gBattleScripting.battler = BATTLE_PARTNER(gBattlerAttacker); + gBattleCommunication[MULTIUSE_STATE] = TRUE; + } + + gSelectedMonPartyId = PARTY_SIZE; + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } + + // Open party menu, wait to go to next instruction. + else + { + BtlController_EmitChoosePokemon(BUFFER_A, PARTY_ACTION_CHOOSE_FAINTED_MON, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gBattlerAttacker]); + MarkBattlerForControllerExec(gBattlerAttacker); + } + return; + } + case VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE: + { + VARIOUS_ARGS(); + if ((i = ShouldDoTrainerSlide(gActiveBattler, TRAINER_SLIDE_Z_MOVE))) + { + gBattleScripting.battler = gActiveBattler; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = (i == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); + return; + } + break; + } + case VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION: + { + VARIOUS_ARGS(); + if ((i = ShouldDoTrainerSlide(gActiveBattler, TRAINER_SLIDE_MEGA_EVOLUTION))) + { + gBattleScripting.battler = gActiveBattler; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = (i == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); + return; + } + break; + } } // End of switch (cmd->id) gBattlescriptCurrInstr = cmd->nextInstr; @@ -11149,14 +11336,15 @@ static void Cmd_tryexplosion(void) { CMD_ARGS(); + u32 dampBattler; if (gBattleControllerExecFlags) return; - if ((gBattlerTarget = IsAbilityOnField(ABILITY_DAMP))) + if ((dampBattler = IsAbilityOnField(ABILITY_DAMP))) { // Failed, a battler has Damp gLastUsedAbility = ABILITY_DAMP; - RecordAbilityBattle(--gBattlerTarget, ABILITY_DAMP); + gBattlerTarget = --dampBattler; gBattlescriptCurrInstr = BattleScript_DampStopsExplosion; return; } @@ -11166,14 +11354,6 @@ static void Cmd_tryexplosion(void) BtlController_EmitHealthBarUpdate(BUFFER_A, INSTANT_HP_BAR_DROP); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr = cmd->nextInstr; - - for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) - { - if (gBattlerTarget == gBattlerAttacker) - continue; - if (IsBattlerAlive(gBattlerTarget)) - break; - } } static void Cmd_setatkhptozero(void) @@ -11543,10 +11723,7 @@ static void Cmd_stockpiletobasedamage(void) if (!(gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT && gBattleMons[gBattlerTarget].hp != 0)) { - gDisableStructs[gBattlerAttacker].stockpileCounter = 0; - // Restore stat changes from stockpile. - gBattleMons[gBattlerAttacker].statStages[STAT_DEF] -= gDisableStructs[gBattlerAttacker].stockpileDef; - gBattleMons[gBattlerAttacker].statStages[STAT_SPDEF] -= gDisableStructs[gBattlerAttacker].stockpileSpDef; + gBattleStruct->moveEffect2 = MOVE_EFFECT_STOCKPILE_WORE_OFF; } gBattlescriptCurrInstr = cmd->nextInstr; } @@ -11581,14 +11758,10 @@ static void Cmd_stockpiletohpheal(void) gBattleMoveDamage *= -1; gBattleScripting.animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter; - gDisableStructs[gBattlerAttacker].stockpileCounter = 0; + gBattleStruct->moveEffect2 = MOVE_EFFECT_STOCKPILE_WORE_OFF; gBattlescriptCurrInstr = cmd->nextInstr; gBattlerTarget = gBattlerAttacker; } - - // Restore stat changes from stockpile. - gBattleMons[gBattlerAttacker].statStages[STAT_DEF] -= gDisableStructs[gBattlerAttacker].stockpileDef; - gBattleMons[gBattlerAttacker].statStages[STAT_SPDEF] -= gDisableStructs[gBattlerAttacker].stockpileSpDef; } } @@ -11911,6 +12084,20 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr { gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler); gProtectStructs[gActiveBattler].statRaised = TRUE; + + // check mirror herb + for (index = 0; index < gBattlersCount; index++) + { + if (GetBattlerSide(index) == GetBattlerSide(gActiveBattler)) + continue; // Only triggers on opposing side + if (GetBattlerHoldEffect(index, TRUE) == HOLD_EFFECT_MIRROR_HERB + && gBattleMons[index].statStages[statId] < MAX_STAT_STAGE) + { + gProtectStructs[index].eatMirrorHerb = 1; + gTotemBoosts[index].stats |= (1 << (statId - 1)); // -1 to start at atk + gTotemBoosts[index].statChanges[statId - 1] = statValue; + } + } } } @@ -12063,8 +12250,8 @@ static void Cmd_forcerandomswitch(void) s32 lastMonId = 0; // + 1 s32 monsCount; struct Pokemon *party = NULL; - s32 validMons = 0; - s32 minNeeded; + u8 validMons[PARTY_SIZE]; + s32 validMonsCount = 0; bool32 redCardForcedSwitch = FALSE; @@ -12111,17 +12298,13 @@ static void Cmd_forcerandomswitch(void) || redCardForcedSwitch ) { - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; + party = GetBattlerParty(gBattlerTarget); if (BATTLE_TWO_VS_ONE_OPPONENT && GetBattlerSide(gBattlerTarget) == B_SIDE_OPPONENT) { firstMonId = 0; lastMonId = 6; monsCount = 6; - minNeeded = 2; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } @@ -12140,7 +12323,6 @@ static void Cmd_forcerandomswitch(void) lastMonId = PARTY_SIZE / 2; } monsCount = PARTY_SIZE / 2; - minNeeded = 1; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } @@ -12158,7 +12340,6 @@ static void Cmd_forcerandomswitch(void) lastMonId = PARTY_SIZE / 2; } monsCount = PARTY_SIZE / 2; - minNeeded = 1; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } @@ -12169,7 +12350,6 @@ static void Cmd_forcerandomswitch(void) firstMonId = 0; lastMonId = PARTY_SIZE; monsCount = PARTY_SIZE; - minNeeded = 2; // since there are two opponents, it has to be a double battle } else { @@ -12184,7 +12364,6 @@ static void Cmd_forcerandomswitch(void) lastMonId = PARTY_SIZE / 2; } monsCount = PARTY_SIZE / 2; - minNeeded = 1; } battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; @@ -12194,7 +12373,6 @@ static void Cmd_forcerandomswitch(void) firstMonId = 0; lastMonId = PARTY_SIZE; monsCount = PARTY_SIZE; - minNeeded = 2; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } @@ -12203,7 +12381,6 @@ static void Cmd_forcerandomswitch(void) firstMonId = 0; lastMonId = PARTY_SIZE; monsCount = PARTY_SIZE; - minNeeded = 1; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one pokemon out in single battles battler1PartyId = gBattlerPartyIndexes[gBattlerTarget]; } @@ -12212,13 +12389,15 @@ static void Cmd_forcerandomswitch(void) { if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&party[i], MON_DATA_IS_EGG) - && GetMonData(&party[i], MON_DATA_HP) != 0) + && GetMonData(&party[i], MON_DATA_HP) != 0 + && i != battler1PartyId + && i != battler2PartyId) { - validMons++; + validMons[validMonsCount++] = i; } } - if (!redCardForcedSwitch && validMons <= minNeeded) + if (validMonsCount == 0) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -12226,19 +12405,8 @@ static void Cmd_forcerandomswitch(void) { *(gBattleStruct->battlerPartyIndexes + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget]; gBattlescriptCurrInstr = BattleScript_RoarSuccessSwitch; - - do - { - i = Random() % monsCount; - i += firstMonId; - } - while (i == battler2PartyId - || i == battler1PartyId - || GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_NONE - || GetMonData(&party[i], MON_DATA_IS_EGG) == TRUE - || GetMonData(&party[i], MON_DATA_HP) == 0); - - *(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i; + gBattleStruct->forcedSwitch |= gBitTable[gBattlerTarget]; + *(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = validMons[RandomUniform(RNG_FORCE_RANDOM_SWITCH, 0, validMonsCount - 1)]; if (!IsMultiBattle()) SwitchPartyOrder(gBattlerTarget); @@ -12445,7 +12613,7 @@ static void Cmd_tryKO(void) if (gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) odds -= 10; #endif - if (Random() % 100 + 1 < odds && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) + if (RandomPercentage(RNG_ACCURACY, odds) && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) lands = TRUE; } @@ -12567,6 +12735,20 @@ static void Cmd_weatherdamage(void) gBattleMoveDamage = 1; } } + if (gBattleWeather & B_WEATHER_SNOW) + { + if (ability == ABILITY_ICE_BODY + && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + && !BATTLER_MAX_HP(gBattlerAttacker) + && !(gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK)) + { + gBattlerAbility = gBattlerAttacker; + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + } } gBattlescriptCurrInstr = cmd->nextInstr; @@ -12576,26 +12758,6 @@ static void Cmd_tryinfatuating(void) { CMD_ARGS(const u8 *failInstr); - struct Pokemon *monAttacker, *monTarget; - u16 speciesAttacker, speciesTarget; - u32 personalityAttacker, personalityTarget; - - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) - monAttacker = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]; - else - monAttacker = &gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]]; - - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) - monTarget = &gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]; - else - monTarget = &gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]; - - speciesAttacker = GetMonData(monAttacker, MON_DATA_SPECIES); - personalityAttacker = GetMonData(monAttacker, MON_DATA_PERSONALITY); - - speciesTarget = GetMonData(monTarget, MON_DATA_SPECIES); - personalityTarget = GetMonData(monTarget, MON_DATA_PERSONALITY); - if (GetBattlerAbility(gBattlerTarget) == ABILITY_OBLIVIOUS) { gBattlescriptCurrInstr = BattleScript_NotAffectedAbilityPopUp; @@ -12604,10 +12766,8 @@ static void Cmd_tryinfatuating(void) } else { - if (GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) - || gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION - || GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == MON_GENDERLESS - || GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) == MON_GENDERLESS) + if (gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION + || !AreBattlersOfOppositeGender(gBattlerAttacker, gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -12712,6 +12872,7 @@ static void Cmd_transformdataexecution(void) gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE; gDisableStructs[gBattlerAttacker].disableTimer = 0; gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality; + gDisableStructs[gBattlerAttacker].transformedMonOtId = gBattleMons[gBattlerTarget].otId; gDisableStructs[gBattlerAttacker].mimickedMoves = 0; gDisableStructs[gBattlerAttacker].usedMoves = 0; @@ -13329,16 +13490,11 @@ static void Cmd_healpartystatus(void) if (gCurrentMove == MOVE_HEAL_BELL) { - struct Pokemon *party; + struct Pokemon *party = GetBattlerParty(gBattlerAttacker); s32 i; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_BELL; - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; - if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SOUNDPROOF) { gBattleMons[gBattlerAttacker].status1 = 0; @@ -13371,7 +13527,7 @@ static void Cmd_healpartystatus(void) for (i = 0; i < PARTY_SIZE; i++) { - u16 species = GetMonData(&party[i], MON_DATA_SPECIES2); + u16 species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG); u8 abilityNum = GetMonData(&party[i], MON_DATA_ABILITY_NUM); if (species != SPECIES_NONE && species != SPECIES_EGG) @@ -13966,12 +14122,7 @@ static void Cmd_trydobeatup(void) gBattleStruct->beatUpSlot++; gBattlescriptCurrInstr = cmd->nextInstr; #else - struct Pokemon *party; - - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; + struct Pokemon *party = GetBattlerParty(gBattlerAttacker); if (gBattleMons[gBattlerTarget].hp == 0) { @@ -13983,8 +14134,8 @@ static void Cmd_trydobeatup(void) for (;gBattleCommunication[0] < PARTY_SIZE; gBattleCommunication[0]++) { if (GetMonData(&party[gBattleCommunication[0]], MON_DATA_HP) - && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) - && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG && !GetMonData(&party[gBattleCommunication[0]], MON_DATA_STATUS)) break; } @@ -14155,7 +14306,7 @@ static void Cmd_cureifburnedparalysedorpoisoned(void) { CMD_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerAttacker].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)) + if (gBattleMons[gBattlerAttacker].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON | STATUS1_FROSTBITE)) { gBattleMons[gBattlerAttacker].status1 = 0; gBattlescriptCurrInstr = cmd->nextInstr; @@ -14661,38 +14812,37 @@ static void Cmd_assistattackselect(void) s32 chooseableMovesNo = 0; struct Pokemon *party; s32 monId, moveId; - u16 *validMoves = gBattleStruct->assistPossibleMoves; - - if (GET_BATTLER_SIDE(gBattlerAttacker) != B_SIDE_PLAYER) - party = gEnemyParty; - else - party = gPlayerParty; + u16 *validMoves = Alloc(sizeof(u16) * PARTY_SIZE * MAX_MON_MOVES); - for (monId = 0; monId < PARTY_SIZE; monId++) + if (validMoves != NULL) { - if (monId == gBattlerPartyIndexes[gBattlerAttacker]) - continue; - if (GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_NONE) - continue; - if (GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_EGG) - continue; + party = GetBattlerParty(gBattlerAttacker); - for (moveId = 0; moveId < MAX_MON_MOVES; moveId++) + for (monId = 0; monId < PARTY_SIZE; monId++) { - s32 i = 0; - u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); - - if (sForbiddenMoves[move] & FORBIDDEN_ASSIST) + if (monId == gBattlerPartyIndexes[gBattlerAttacker]) + continue; + if (GetMonData(&party[monId], MON_DATA_SPECIES_OR_EGG) == SPECIES_NONE) continue; + if (GetMonData(&party[monId], MON_DATA_SPECIES_OR_EGG) == SPECIES_EGG) + continue; + + for (moveId = 0; moveId < MAX_MON_MOVES; moveId++) + { + u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); - validMoves[chooseableMovesNo] = move; - chooseableMovesNo++; + if (sForbiddenMoves[move] & FORBIDDEN_ASSIST) + continue; + + validMoves[chooseableMovesNo++] = move; + } } } + if (chooseableMovesNo) { gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; - gCalledMove = validMoves[((Random() & 0xFF) * chooseableMovesNo) >> 8]; + gCalledMove = validMoves[Random() % chooseableMovesNo]; gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); gBattlescriptCurrInstr = cmd->nextInstr; } @@ -14700,6 +14850,8 @@ static void Cmd_assistattackselect(void) { gBattlescriptCurrInstr = cmd->failInstr; } + + TRY_FREE_AND_SET_NULL(validMoves); } static void Cmd_trysetmagiccoat(void) @@ -14876,7 +15028,11 @@ u16 GetSecretPowerMoveEffect(void) break; case BATTLE_TERRAIN_SNOW: case BATTLE_TERRAIN_ICE: + #if B_USE_FROSTBITE == TRUE + moveEffect = MOVE_EFFECT_FROSTBITE; + #else moveEffect = MOVE_EFFECT_FREEZE; + #endif break; case BATTLE_TERRAIN_VOLCANO: moveEffect = MOVE_EFFECT_BURN; @@ -14896,21 +15052,20 @@ static void Cmd_pickup(void) { CMD_ARGS(); - s32 i; - u16 species, heldItem; - u16 ability; + u32 i, j; + u16 species, heldItem, ability; u8 lvlDivBy10; - if (InBattlePike()) - { - - } - else if (InBattlePyramid()) + if (!InBattlePike()) // No items in Battle Pike. { + bool32 isInPyramid = InBattlePyramid_(); for (i = 0; i < PARTY_SIZE; i++) { - species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + lvlDivBy10 = (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL)-1) / 10; //Moving this here makes it easier to add in abilities like Honey Gather. + if (lvlDivBy10 > 9) + lvlDivBy10 = 9; ability = gSpeciesInfo[species].abilities[GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)]; @@ -14920,63 +15075,27 @@ static void Cmd_pickup(void) && heldItem == ITEM_NONE && (Random() % 10) == 0) { - heldItem = GetBattlePyramidPickupItemId(); - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); - } - else if (ability == ABILITY_HONEY_GATHER - && species != 0 - && species != SPECIES_EGG - && heldItem == ITEM_NONE) - { - if ((lvlDivBy10 + 1 ) * 5 > Random() % 100) + if (isInPyramid) { - heldItem = ITEM_HONEY; + heldItem = GetBattlePyramidPickupItemId(); SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); } - } - #if P_SHUCKLE_BERRY_JUICE == TRUE - else if (species == SPECIES_SHUCKLE - && heldItem == ITEM_ORAN_BERRY - && (Random() % 16) == 0) - { - heldItem = ITEM_BERRY_JUICE; - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); - } - #endif - } - } - else - { - for (i = 0; i < PARTY_SIZE; i++) - { - species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); - heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - lvlDivBy10 = (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL)-1) / 10; //Moving this here makes it easier to add in abilities like Honey Gather - if (lvlDivBy10 > 9) - lvlDivBy10 = 9; - - ability = gSpeciesInfo[species].abilities[GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)]; - - if (ability == ABILITY_PICKUP - && species != SPECIES_NONE - && species != SPECIES_EGG - && heldItem == ITEM_NONE - && (Random() % 10) == 0) - { - s32 j; - s32 rand = Random() % 100; - - for (j = 0; j < (int)ARRAY_COUNT(sPickupProbabilities); j++) + else { - if (sPickupProbabilities[j] > rand) - { - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[lvlDivBy10 + j]); - break; - } - else if (rand == 99 || rand == 98) + u32 rand = Random() % 100; + + for (j = 0; j < ARRAY_COUNT(sPickupProbabilities); j++) { - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sRarePickupItems[lvlDivBy10 + (99 - rand)]); - break; + if (sPickupProbabilities[j] > rand) + { + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[lvlDivBy10 + j]); + break; + } + else if (rand == 99 || rand == 98) + { + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sRarePickupItems[lvlDivBy10 + (99 - rand)]); + break; + } } } } @@ -14991,7 +15110,7 @@ static void Cmd_pickup(void) SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); } } - #if P_SHUCKLE_BERRY_JUICE == TRUE + #if P_SHUCKLE_BERRY_JUICE == TRUE else if (species == SPECIES_SHUCKLE && heldItem == ITEM_ORAN_BERRY && (Random() % 16) == 0) @@ -14999,7 +15118,7 @@ static void Cmd_pickup(void) heldItem = ITEM_BERRY_JUICE; SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); } - #endif + #endif } } @@ -15025,15 +15144,7 @@ static void Cmd_tryweatherformdatachange(void) { CMD_ARGS(); - u8 form; - - gBattlescriptCurrInstr = cmd->nextInstr; - form = TryWeatherFormChange(gBattleScripting.battler); - if (form) - { - BattleScriptPushCursorAndCallback(BattleScript_WeatherFormChange); - *(&gBattleStruct->formToChangeInto) = form - 1; - } + // removed in favor of new form system } // Water and Mud Sport @@ -15510,7 +15621,7 @@ static void Cmd_handleballthrow(void) if (gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) odds *= 2; - if (gBattleMons[gBattlerTarget].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)) + if (gBattleMons[gBattlerTarget].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON | STATUS1_FROSTBITE)) odds = (odds * 15) / 10; if (gBattleResults.catchAttempts[gLastUsedItem - FIRST_BALL] < 255) @@ -15520,7 +15631,7 @@ static void Cmd_handleballthrow(void) { BtlController_EmitBallThrowAnim(BUFFER_A, BALL_3_SHAKES_SUCCESS); MarkBattlerForControllerExec(gActiveBattler); - UndoFormChange(gBattlerPartyIndexes[gBattlerTarget], GET_BATTLER_SIDE(gBattlerTarget), FALSE); + TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE); gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem); @@ -15574,7 +15685,7 @@ static void Cmd_handleballthrow(void) if (IsCriticalCapture()) gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = TRUE; - UndoFormChange(gBattlerPartyIndexes[gBattlerTarget], GET_BATTLER_SIDE(gBattlerTarget), FALSE); + TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE); gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem); @@ -15970,10 +16081,7 @@ static void Cmd_jumpifoppositegenders(void) { CMD_ARGS(const u8 *jumpInstr); - u32 atkGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerAttacker].species, gBattleMons[gBattlerAttacker].personality); - u32 defGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerTarget].species, gBattleMons[gBattlerTarget].personality); - - if ((atkGender == MON_MALE && defGender == MON_FEMALE) || (atkGender == MON_FEMALE && defGender == MON_MALE)) + if (AreBattlersOfOppositeGender(gBattlerAttacker, gBattlerTarget)) gBattlescriptCurrInstr = cmd->jumpInstr; else gBattlescriptCurrInstr = cmd->nextInstr; @@ -16053,6 +16161,17 @@ void BS_CalcMetalBurstDmg(void) } } +void BS_JumpIfMoreThanHalfHP(void) +{ + NATIVE_ARGS(u8 battler, const u8 *jumpInstr); + + u8 battler = GetBattlerForBattleScript(cmd->battler); + if (gBattleMons[battler].hp > (gBattleMons[battler].maxHP + 1) / 2) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + void BS_JumpIfHoldEffect(void) { u8 battler = gBattlescriptCurrInstr[5]; @@ -16070,6 +16189,31 @@ void BS_JumpIfHoldEffect(void) } } +void BS_DoStockpileStatChangesWearOff(void) +{ + NATIVE_ARGS(u8 battler, const u8 *statChangeInstr); + + u32 battler = GetBattlerForBattleScript(cmd->battler); + if (gDisableStructs[battler].stockpileDef != 0) + { + SET_STATCHANGER(STAT_DEF, abs(gDisableStructs[battler].stockpileDef), TRUE); + gDisableStructs[battler].stockpileDef = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = cmd->statChangeInstr; + } + else if (gDisableStructs[battler].stockpileSpDef) + { + SET_STATCHANGER(STAT_SPDEF, abs(gDisableStructs[battler].stockpileSpDef), TRUE); + gDisableStructs[battler].stockpileSpDef = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = cmd->statChangeInstr; + } + else + { + gBattlescriptCurrInstr = cmd->nextInstr; + } +} + static bool32 CriticalCapture(u32 odds) { #if B_CRITICAL_CAPTURE == TRUE @@ -16142,6 +16286,55 @@ static bool8 IsFinalStrikeEffect(u16 move) return FALSE; } +void BS_CheckParentalBondCounter(void) +{ + NATIVE_ARGS(u8 counter, const u8 *jumpInstr); + // Some effects should only happen on the first or second strike of Parental Bond, + // so a way to check this in battle scripts is useful + if (gSpecialStatuses[gBattlerAttacker].parentalBondState == cmd->counter && gBattleMons[gBattlerTarget].hp != 0) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_GetBattlerSide(void) +{ + NATIVE_ARGS(u8 battler); + gBattleCommunication[0] = GetBattlerSide(GetBattlerForBattleScript(cmd->battler)); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_CanTeleport(void) +{ + NATIVE_ARGS(u8 battler); + gBattleCommunication[0] = CanTeleport(cmd->battler); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_TrySymbiosis(void) +{ + NATIVE_ARGS(); + //called by Bestow, Fling, and Bug Bite, which don't work with Cmd_removeitem. + gActiveBattler = gBattlerAttacker; + if (SYMBIOSIS_CHECK(gBattlerAttacker, BATTLE_PARTNER(gActiveBattler))) + { + BestowItem(BATTLE_PARTNER(gActiveBattler), gActiveBattler); + gLastUsedAbility = gBattleMons[BATTLE_PARTNER(gActiveBattler)].ability; + gBattleScripting.battler = gBattlerAbility = BATTLE_PARTNER(gActiveBattler); + gBattlerAttacker = gActiveBattler; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SymbiosisActivates; + return; + } + + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_SetZEffect(void) +{ + SetZEffect(); // Handles battle script jumping internally +} + static void TryUpdateRoundTurnOrder(void) { if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -16189,3 +16382,225 @@ static void TryUpdateRoundTurnOrder(void) } } +u8 GetFirstFaintedPartyIndex(u8 battlerId) +{ + u32 i; + u32 start = 0; + u32 end = PARTY_SIZE; + struct Pokemon *party = GetBattlerParty(battlerId); + + // Check whether partner is separate trainer. + if ((GetBattlerSide(battlerId) == B_SIDE_PLAYER && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + || (GetBattlerSide(battlerId) == B_SIDE_OPPONENT && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)) + { + if (GetBattlerPosition(battlerId) == B_POSITION_OPPONENT_LEFT + || GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT) + { + end = PARTY_SIZE / 2; + } + else + { + start = PARTY_SIZE / 2; + } + } + + // Loop through to find fainted battler. + for (i = start; i < end; ++i) + { + u32 species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG); + if (species != SPECIES_NONE + && species != SPECIES_EGG + && GetMonData(&party[i], MON_DATA_HP) == 0) + { + return i; + } + } + + // Returns PARTY_SIZE if none found. + return PARTY_SIZE; +} + +void BS_ItemRestoreHP(void) +{ + NATIVE_ARGS(); + u16 healAmount; + u32 battlerId = MAX_BATTLERS_COUNT; + u32 healParam = GetItemEffect(gLastUsedItem)[6]; + u32 side = GetBattlerSide(gBattlerAttacker); + struct Pokemon *party = GetSideParty(side); + u16 hp = GetMonData(&party[gBattleStruct->itemPartyIndex[gBattlerAttacker]], MON_DATA_HP); + u16 maxHP = GetMonData(&party[gBattleStruct->itemPartyIndex[gBattlerAttacker]], MON_DATA_MAX_HP); + gBattleCommunication[MULTIUSE_STATE] = 0; + + // Track the number of Revives used in a battle. + if (hp == 0 && side == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255) + gBattleResults.numRevivesUsed++; + + // Check if the recipient is an active battler. + if (gBattleStruct->itemPartyIndex[gBattlerAttacker] == gBattlerPartyIndexes[gBattlerAttacker]) + battlerId = gBattlerAttacker; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattleStruct->itemPartyIndex[gBattlerAttacker] == gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerAttacker)]) + battlerId = BATTLE_PARTNER(gBattlerAttacker); + + // Get amount to heal. + switch (healParam) + { + case ITEM6_HEAL_HP_FULL: + healAmount = maxHP; + break; + case ITEM6_HEAL_HP_HALF: + healAmount = maxHP / 2; + break; + case ITEM6_HEAL_HP_QUARTER: + healAmount = maxHP / 4; + break; + default: + healAmount = healParam; + break; + } + if (hp + healAmount > maxHP) + healAmount = maxHP - hp; + + // Heal is applied as move damage if battler is active. + if (battlerId != MAX_BATTLERS_COUNT && hp != 0) + { + gBattleMoveDamage = -healAmount; + } + else + { + hp += healAmount; + SetMonData(&party[gBattleStruct->itemPartyIndex[gBattlerAttacker]], MON_DATA_HP, &hp); + + // Revived battlers on the field need to be brought back. + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && battlerId != MAX_BATTLERS_COUNT) + { + gAbsentBattlerFlags &= ~gBitTable[battlerId]; + gBattleScripting.battler = battlerId; + gBattleCommunication[MULTIUSE_STATE] = TRUE; + } + } + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, GetMonData(&party[gBattleStruct->itemPartyIndex[gBattlerAttacker]], MON_DATA_SPECIES)); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_ItemCureStatus(void) +{ + NATIVE_ARGS(); + struct Pokemon *party = GetBattlerParty(gBattlerAttacker); + + // Heal Status1 conditions. + HealStatusConditions(&party[gBattleStruct->itemPartyIndex[gBattlerAttacker]], gBattleStruct->itemPartyIndex[gBattlerAttacker], GetItemStatus1Mask(gLastUsedItem), gBattlerAttacker); + + // Heal Status2 conditions if battler is active. + if (gBattleStruct->itemPartyIndex[gBattlerAttacker] == gBattlerPartyIndexes[gBattlerAttacker]) + { + gBattleMons[gBattlerAttacker].status2 &= ~GetItemStatus2Mask(gLastUsedItem); + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattleStruct->itemPartyIndex[gBattlerAttacker] == gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerAttacker)]) + { + gBattleMons[gBattlerAttacker].status2 &= ~GetItemStatus2Mask(gLastUsedItem); + gBattlerTarget = BATTLE_PARTNER(gBattlerAttacker); + } + + if (GetItemStatus1Mask(gLastUsedItem) & STATUS1_SLEEP) + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; + if (GetItemStatus2Mask(gLastUsedItem) & STATUS2_CONFUSION) + gStatuses4[gBattlerAttacker] &= ~STATUS4_INFINITE_CONFUSION; + + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, GetMonData(&party[gBattleStruct->itemPartyIndex[gBattlerAttacker]], MON_DATA_SPECIES)); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_ItemIncreaseStat(void) +{ + NATIVE_ARGS(); + u16 statId = GetItemEffect(gLastUsedItem)[1]; + u16 stages = ItemId_GetHoldEffectParam(gLastUsedItem); + SET_STATCHANGER(statId, stages, FALSE); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_ItemRestorePP(void) +{ + NATIVE_ARGS(); + const u8 *effect = GetItemEffect(gLastUsedItem); + u32 i, pp, maxPP, moveId, loopEnd; + u32 battlerId = MAX_BATTLERS_COUNT; + struct Pokemon *mon = (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) ? &gPlayerParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]] : &gEnemyParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]]; + + // Check whether to apply to all moves. + if (effect[4] & ITEM4_HEAL_PP_ONE) + { + i = gBattleStruct->itemMoveIndex[gBattlerAttacker]; + loopEnd = i + 1; + } + else + { + i = 0; + loopEnd = MAX_MON_MOVES; + } + + // Check if the recipient is an active battler. + if (gBattleStruct->itemPartyIndex[gBattlerAttacker] == gBattlerPartyIndexes[gBattlerAttacker]) + battlerId = gBattlerAttacker; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattleStruct->itemPartyIndex[gBattlerAttacker] == gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerAttacker)]) + battlerId = BATTLE_PARTNER(gBattlerAttacker); + + // Heal PP! + for (; i < loopEnd; i++) + { + pp = GetMonData(mon, MON_DATA_PP1 + i, NULL); + moveId = GetMonData(mon, MON_DATA_MOVE1 + i, NULL); + maxPP = CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), i); + if (pp != maxPP) + { + pp += effect[6]; + if (pp > maxPP) + pp = maxPP; + SetMonData(mon, MON_DATA_PP1 + i, &pp); + + // Update battler PP if needed. + if (battlerId != MAX_BATTLERS_COUNT + && gBattleStruct->itemPartyIndex[gBattlerAttacker] == gBattlerPartyIndexes[battlerId] + && MOVE_IS_PERMANENT(battlerId, i)) + { + gBattleMons[battlerId].pp[i] = pp; + } + } + } + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, GetMonData(mon, MON_DATA_SPECIES)); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_TryRevertWeatherForm(void) +{ + NATIVE_ARGS(); + if (TryBattleFormChange(gBattlerTarget, FORM_CHANGE_BATTLE_WEATHER)) + { + gBattleScripting.battler = gBattlerTarget; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = BattleScript_TargetFormChangeWithStringNoPopup; + return; + } + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_SetSnow(void) +{ + NATIVE_ARGS(); + + if (!TryChangeBattleWeather(gBattlerAttacker, ENUM_WEATHER_SNOW, FALSE)) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED; + + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SNOW; + } + gBattlescriptCurrInstr = cmd->nextInstr; +} diff --git a/src/battle_setup.c b/src/battle_setup.c index b0b068ef3925..2b8e63e76683 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -741,7 +741,7 @@ static u16 GetSumOfPlayerPartyLevel(u8 numMons) for (i = 0; i < PARTY_SIZE; i++) { - u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) { @@ -798,6 +798,14 @@ static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) sum += party[i].lvl; } break; + case F_TRAINER_PARTY_EVERYTHING_CUSTOMIZED: + { + const struct TrainerMonCustomized *party; + party = gTrainers[opponentId].party.EverythingCustomized; + for (i = 0; i < count; i++) + sum += party[i].lvl; + } + break; } return sum; diff --git a/src/battle_tower.c b/src/battle_tower.c index f66c8c1f7ab7..4e16467f0424 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -23,6 +23,7 @@ #include "field_message_box.h" #include "tv.h" #include "battle_factory.h" +#include "constants/abilities.h" #include "constants/apprentice.h" #include "constants/battle_dome.h" #include "constants/battle_frontier.h" @@ -3007,6 +3008,7 @@ static void FillPartnerParty(u16 trainerId) u16 monId; u32 otID; u8 trainerName[(PLAYER_NAME_LENGTH * 3) + 1]; + s32 ball = -1; SetFacilityPtrsGetLevel(); if (trainerId == TRAINER_STEVEN_PARTNER) @@ -3098,6 +3100,66 @@ static void FillPartnerParty(u16 trainerId) } break; } + case F_TRAINER_PARTY_EVERYTHING_CUSTOMIZED: + { + const struct TrainerMonCustomized *partyData = gTrainers[trainerId - TRAINER_CUSTOM_PARTNER].party.EverythingCustomized; + u32 otIdType = OT_ID_RANDOM_NO_SHINY; + + if (partyData[i].gender == TRAINER_MON_MALE) + j = (j & 0xFFFFFF00) | GeneratePersonalityForGender(MON_MALE, partyData[i].species); + else if (partyData[i].gender == TRAINER_MON_FEMALE) + j = (j & 0xFFFFFF00) | GeneratePersonalityForGender(MON_FEMALE, partyData[i].species); + if (partyData[i].nature != 0) + ModifyPersonalityForNature(&j, partyData[i].nature - 1); + if (partyData[i].isShiny) + { + otIdType = OT_ID_PRESET; + otID = HIHALF(j) ^ LOHALF(j); + } + + CreateMon(&gPlayerParty[i + 3], partyData[i].species, partyData[i].lvl, 0, TRUE, j, otIdType, otID); + SetMonData(&gPlayerParty[i + 3], MON_DATA_HELD_ITEM, &partyData[i].heldItem); + + // TODO: Figure out a default strategy when moves are not set, to generate a good moveset + for (j = 0; j < MAX_MON_MOVES; ++j) + { + SetMonData(&gPlayerParty[i+3], MON_DATA_MOVE1 + j, &partyData[i].moves[j]); + SetMonData(&gPlayerParty[i+3], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); + } + SetMonData(&gPlayerParty[i+3], MON_DATA_IVS, &(partyData[i].iv)); + if (partyData[i].ev != NULL) + { + SetMonData(&gPlayerParty[i+3], MON_DATA_HP_EV, &(partyData[i].ev[0])); + SetMonData(&gPlayerParty[i+3], MON_DATA_ATK_EV, &(partyData[i].ev[1])); + SetMonData(&gPlayerParty[i+3], MON_DATA_DEF_EV, &(partyData[i].ev[2])); + SetMonData(&gPlayerParty[i+3], MON_DATA_SPATK_EV, &(partyData[i].ev[3])); + SetMonData(&gPlayerParty[i+3], MON_DATA_SPDEF_EV, &(partyData[i].ev[4])); + SetMonData(&gPlayerParty[i+3], MON_DATA_SPEED_EV, &(partyData[i].ev[5])); + } + if (partyData[i].ability != ABILITY_NONE) + { + const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[partyData[i].species]; + u32 maxAbilities = ARRAY_COUNT(speciesInfo->abilities); + for (j = 0; j < maxAbilities; ++j) + { + if (speciesInfo->abilities[j] == partyData[i].ability) + break; + } + if (j < maxAbilities) + SetMonData(&gPlayerParty[i+3], MON_DATA_ABILITY_NUM, &j); + } + SetMonData(&gPlayerParty[i+3], MON_DATA_FRIENDSHIP, &(partyData[i].friendship)); + if (partyData[i].ball != ITEM_NONE) + { + ball = partyData[i].ball; + SetMonData(&gPlayerParty[i+3], MON_DATA_POKEBALL, &ball); + } + if (partyData[i].nickname != NULL) + { + SetMonData(&gPlayerParty[i+3], MON_DATA_NICKNAME, partyData[i].nickname); + } + CalculateMonStats(&gPlayerParty[i+3]); + } } StringCopy(trainerName, gTrainers[trainerId - TRAINER_CUSTOM_PARTNER].trainerName); @@ -3381,7 +3443,7 @@ s32 GetHighestLevelInPlayerParty(void) for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG) + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL) != SPECIES_EGG) { s32 level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL, NULL); if (level > highestLevel) diff --git a/src/battle_transition.c b/src/battle_transition.c index 4066f72e581c..2e87b9c1d77e 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1069,7 +1069,7 @@ static void Task_BattleTransition(u8 taskId) static bool8 Transition_StartIntro(struct Task *task) { SetWeatherScreenFadeOut(); - CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, sizeof(gPlttBufferUnfaded)); + CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_SIZE); if (sTasks_Intro[task->tTransitionId] != NULL) { CreateTask(sTasks_Intro[task->tTransitionId], 4); @@ -4498,7 +4498,7 @@ static bool8 FrontierSquares_Shrink(struct Task *task) switch (task->tShrinkState) { case 0: - for (i = 250; i < 255; i++) + for (i = BG_PLTT_ID(15) + 10; i < BG_PLTT_ID(15) + 15; i++) { gPlttBufferUnfaded[i] = RGB_BLACK; gPlttBufferFaded[i] = RGB_BLACK; diff --git a/src/battle_transition_frontier.c b/src/battle_transition_frontier.c index 252721129664..417bd96d63ec 100644 --- a/src/battle_transition_frontier.c +++ b/src/battle_transition_frontier.c @@ -46,7 +46,7 @@ static bool8 CirclesSymmetricSpiralInSeq_End(struct Task *task); #define PALTAG_LOGO_CIRCLES 0x2E90 static const u32 sLogoCenter_Gfx[] = INCBIN_U32("graphics/battle_transitions/frontier_logo_center.4bpp.lz"); -static const u32 sLogoCenter_Tilemap[] = INCBIN_U32("graphics/battle_transitions/frontier_logo_center.bin"); +static const u32 sLogoCenter_Tilemap[] = INCBIN_U32("graphics/battle_transitions/frontier_logo_center.bin.lz"); static const u32 sLogoCircles_Gfx[] = INCBIN_U32("graphics/battle_transitions/frontier_logo_circles.4bpp.lz"); static const u16 sLogo_Pal[] = INCBIN_U16("graphics/battle_transitions/frontier_logo_circles.gbapal"); diff --git a/src/battle_tv.c b/src/battle_tv.c index 10c2144ccdb2..7379b72e4b7f 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -251,6 +251,7 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_SWALLOW] = 3, // [EFFECT_UNUSED_A3] = 1, [EFFECT_HAIL] = 4, + [EFFECT_SNOWSCAPE] = 4, [EFFECT_TORMENT] = 7, [EFFECT_FLATTER] = 7, [EFFECT_WILL_O_WISP] = 5, @@ -481,6 +482,7 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_DOUBLE_SHOCK] = 0, // TODO: Assign points [EFFECT_SPECIAL_ATTACK_UP_HIT] = 1, [EFFECT_VICTORY_DANCE] = 0, // TODO: Assign points + [EFFECT_FROSTBITE_HIT] = 1, }; static const u16 sPoints_Effectiveness[] = @@ -1769,6 +1771,6 @@ static void AddPointsBasedOnWeather(u16 weatherFlags, u16 moveId, u8 moveSlot) AddMovePoints(PTS_SUN, moveId, moveSlot, 0); else if (weatherFlags & B_WEATHER_SANDSTORM) AddMovePoints(PTS_SANDSTORM, moveId, moveSlot, 0); - else if (weatherFlags & B_WEATHER_HAIL) + else if (weatherFlags & (B_WEATHER_HAIL | B_WEATHER_SNOW)) AddMovePoints(PTS_HAIL, moveId, moveSlot, 0); } diff --git a/src/battle_util.c b/src/battle_util.c index 6801e6b293f4..93d02336302d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -7,6 +7,7 @@ #include "battle_controllers.h" #include "battle_interface.h" #include "battle_setup.h" +#include "battle_z_move.h" #include "party_menu.h" #include "pokemon.h" #include "international_string_util.h" @@ -20,6 +21,7 @@ #include "sprite.h" #include "string_util.h" #include "task.h" +#include "test_runner.h" #include "trig.h" #include "window.h" #include "battle_message.h" @@ -61,6 +63,8 @@ static u8 GetFlingPowerFromItemId(u16 itemId); static void SetRandomMultiHitCounter(); static u32 GetBattlerItemHoldEffectParam(u8 battlerId, u16 item); static u16 GetInverseTypeMultiplier(u16 multiplier); +static u16 GetSupremeOverlordModifier(u8 battlerId); +static bool8 CanBeInfinitelyConfused(u8 battlerId); extern const u8 *const gBattleScriptsForMoveEffects[]; extern const u8 *const gBattlescriptsForRunningByItem[]; @@ -222,14 +226,9 @@ static const u16 sEntrainmentTargetSimpleBeamBannedAbilities[] = static u8 CalcBeatUpPower(void) { - struct Pokemon *party; u8 basePower; u16 species; - - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; + struct Pokemon *party = GetBattlerParty(gBattlerAttacker); // Party slot is incremented by the battle script for Beat Up after this damage calculation species = GetMonData(&party[gBattleStruct->beatUpSlot], MON_DATA_SPECIES); @@ -543,98 +542,18 @@ void HandleAction_Switch(void) if (gBattleResults.playerSwitchesCounter < 255) gBattleResults.playerSwitchesCounter++; - UndoFormChange(gBattlerPartyIndexes[gBattlerAttacker], GetBattlerSide(gBattlerAttacker), TRUE); + TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_SWITCH); } void HandleAction_UseItem(void) { - gBattlerAttacker = gBattlerTarget = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; ClearFuryCutterDestinyBondGrudge(gBattlerAttacker); gLastUsedItem = gBattleResources->bufferB[gBattlerAttacker][1] | (gBattleResources->bufferB[gBattlerAttacker][2] << 8); - - if (gLastUsedItem <= LAST_BALL) // is ball - { - gBattlescriptCurrInstr = BattleScript_BallThrow; - } - else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL) - { - gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0]; // BattleScript_RunByUsingItem - } - else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) - { - gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0]; // BattleScript_PlayerUsesItem - } - else - { - gBattleScripting.battler = gBattlerAttacker; - - switch (*(gBattleStruct->AI_itemType + (gBattlerAttacker >> 1))) - { - case AI_ITEM_FULL_RESTORE: - case AI_ITEM_HEAL_HP: - break; - case AI_ITEM_CURE_CONDITION: - gBattleCommunication[MULTISTRING_CHOOSER] = AI_HEAL_CONFUSION; - if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & (1 << AI_HEAL_CONFUSION)) - { - if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 0x3E) - gBattleCommunication[MULTISTRING_CHOOSER] = AI_HEAL_SLEEP; - } - else - { - // Check for other statuses, stopping at first (shouldn't be more than one) - while (!(*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1)) - { - *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1; - gBattleCommunication[MULTISTRING_CHOOSER]++; - // MULTISTRING_CHOOSER will be either AI_HEAL_PARALYSIS, AI_HEAL_FREEZE, - // AI_HEAL_BURN, AI_HEAL_POISON, or AI_HEAL_SLEEP - } - } - break; - case AI_ITEM_X_STAT: - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STAT_ROSE_ITEM; - if (*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1)) & (1 << AI_DIRE_HIT)) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_USED_DIRE_HIT; - } - else - { - PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK) - PREPARE_STRING_BUFFER(gBattleTextBuff2, CHAR_X) - - while (!((*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1))) & 1)) - { - *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1; - gBattleTextBuff1[2]++; - } - - gBattleScripting.animArg1 = gBattleTextBuff1[2] + 14; - gBattleScripting.animArg2 = 0; - } - break; - case AI_ITEM_GUARD_SPEC: - // It seems probable that at some point there was a special message for - // an AI trainer using Guard Spec in a double battle. - // There isn't now however, and the assignment to 2 below goes out of - // bounds for gMistUsedStringIds and instead prints "{mon} is getting pumped" - // from the next table, gFocusEnergyUsedStringIds. - // In any case this isn't an issue in the retail version, as no trainers - // are ever given any Guard Spec to use. -#ifndef UBFIX - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - gBattleCommunication[MULTISTRING_CHOOSER] = 2; - else -#endif - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_MIST; - break; - } - - gBattlescriptCurrInstr = gBattlescriptsForUsingItem[*(gBattleStruct->AI_itemType + gBattlerAttacker / 2)]; - } + gBattlescriptCurrInstr = gBattlescriptsForUsingItem[ItemId_GetBattleUsage(gLastUsedItem) - 1]; gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; } @@ -912,7 +831,7 @@ void HandleAction_ActionFinished(void) u32 i, j; bool32 afterYouActive = gSpecialStatuses[gBattlerByTurnOrder[gCurrentTurnActionNumber + 1]].afterYou; #endif - *(gBattleStruct->monToSwitchIntoId + gBattlerByTurnOrder[gCurrentTurnActionNumber]) = PARTY_SIZE; + *(gBattleStruct->monToSwitchIntoId + gBattlerByTurnOrder[gCurrentTurnActionNumber]) = gSelectedMonPartyId = PARTY_SIZE; gCurrentTurnActionNumber++; gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; SpecialStatusesClear(); @@ -948,7 +867,8 @@ void HandleAction_ActionFinished(void) u8 battler1 = gBattlerByTurnOrder[i]; u8 battler2 = gBattlerByTurnOrder[j]; - if (gProtectStructs[battler1].quash || gProtectStructs[battler2].quash) + if (gProtectStructs[battler1].quash || gProtectStructs[battler2].quash + || gProtectStructs[battler1].shellTrap || gProtectStructs[battler2].shellTrap) continue; // We recalculate order only for action of the same priority. If any action other than switch/move has been taken, they should @@ -1607,6 +1527,12 @@ void PrepareStringBattle(u16 stringId, u8 battler) } #endif + // Signal for the trainer slide-in system. + if ((stringId == STRINGID_ITDOESNTAFFECT || stringId == STRINGID_PKMNWASNTAFFECTED || stringId == STRINGID_PKMNUNAFFECTED) + && GetBattlerSide(gBattlerTarget) == B_SIDE_OPPONENT + && gBattleStruct->trainerSlidePlayerMonUnaffectedMsgState != 2) + gBattleStruct->trainerSlidePlayerMonUnaffectedMsgState = 1; + gActiveBattler = battler; BtlController_EmitPrintString(BUFFER_A, stringId); MarkBattlerForControllerExec(gActiveBattler); @@ -1672,7 +1598,8 @@ void BattleScriptPushCursor(void) void BattleScriptPop(void) { - gBattlescriptCurrInstr = gBattleResources->battleScriptsStack->ptr[--gBattleResources->battleScriptsStack->size]; + if (gBattleResources->battleScriptsStack->size != 0) + gBattlescriptCurrInstr = gBattleResources->battleScriptsStack->ptr[--gBattleResources->battleScriptsStack->size]; } static bool32 IsGravityPreventingMove(u32 move) @@ -2064,7 +1991,7 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move) u32 GetBattlerFriendshipScore(u8 battlerId) { u8 side = GetBattlerSide(battlerId); - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + struct Pokemon *party = GetSideParty(side); u16 species = GetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); if (side != B_SIDE_PLAYER) @@ -2106,6 +2033,7 @@ enum ENDTURN_SANDSTORM, ENDTURN_SUN, ENDTURN_HAIL, + ENDTURN_SNOW, ENDTURN_GRAVITY, ENDTURN_WATER_SPORT, ENDTURN_MUD_SPORT, @@ -2124,6 +2052,24 @@ enum ENDTURN_FIELD_COUNT, }; +static bool32 EndTurnTerrain(u32 terrainFlag, u32 stringTableId) +{ + if (gFieldStatuses & terrainFlag) + { + if (terrainFlag & STATUS_FIELD_GRASSY_TERRAIN) + BattleScriptExecute(BattleScript_GrassyTerrainHeals); + if (!(gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.terrainTimer == 0) + { + gFieldStatuses &= ~terrainFlag; + TryToRevertMimicry(); + gBattleCommunication[MULTISTRING_CHOOSER] = stringTableId; + BattleScriptExecute(BattleScript_TerrainEnds); + return TRUE; + } + } + return FALSE; +} + u8 DoFieldEndTurnEffects(void) { u8 effect = 0; @@ -2393,7 +2339,7 @@ u8 DoFieldEndTurnEffects(void) if (!(gBattleWeather & B_WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~B_WEATHER_SANDSTORM_TEMPORARY; - gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; + gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds; } else { @@ -2433,7 +2379,7 @@ u8 DoFieldEndTurnEffects(void) if (!(gBattleWeather & B_WEATHER_HAIL_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~B_WEATHER_HAIL_TEMPORARY; - gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; + gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds; } else { @@ -2447,6 +2393,26 @@ u8 DoFieldEndTurnEffects(void) } gBattleStruct->turnCountersTracker++; break; + case ENDTURN_SNOW: + if (gBattleWeather & B_WEATHER_SNOW) + { + if (!(gBattleWeather & B_WEATHER_SNOW_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~B_WEATHER_SNOW_TEMPORARY; + gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds; + } + else + { + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } + + gBattleScripting.animArg1 = B_ANIM_SNOW_CONTINUES; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SNOW; + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; case ENDTURN_TRICK_ROOM: if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && --gFieldTimers.trickRoomTimer == 0) { @@ -2475,50 +2441,19 @@ u8 DoFieldEndTurnEffects(void) gBattleStruct->turnCountersTracker++; break; case ENDTURN_ELECTRIC_TERRAIN: - if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN - && (!(gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.terrainTimer == 0)) - { - gFieldStatuses &= ~(STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_TERRAIN_PERMANENT); - TryToRevertMimicry(); - BattleScriptExecute(BattleScript_ElectricTerrainEnds); - effect++; - } + effect = EndTurnTerrain(STATUS_FIELD_ELECTRIC_TERRAIN, B_MSG_TERRAINENDS_ELECTRIC); gBattleStruct->turnCountersTracker++; break; case ENDTURN_MISTY_TERRAIN: - if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN - && (!(gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.terrainTimer == 0)) - { - gFieldStatuses &= ~STATUS_FIELD_MISTY_TERRAIN; - TryToRevertMimicry(); - BattleScriptExecute(BattleScript_MistyTerrainEnds); - effect++; - } + effect = EndTurnTerrain(STATUS_FIELD_MISTY_TERRAIN, B_MSG_TERRAINENDS_MISTY); gBattleStruct->turnCountersTracker++; break; case ENDTURN_GRASSY_TERRAIN: - if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN) - { - if (!(gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) - && (gFieldTimers.terrainTimer == 0 || --gFieldTimers.terrainTimer == 0)) - { - gFieldStatuses &= ~STATUS_FIELD_GRASSY_TERRAIN; - TryToRevertMimicry(); - } - BattleScriptExecute(BattleScript_GrassyTerrainHeals); - effect++; - } + effect = EndTurnTerrain(STATUS_FIELD_GRASSY_TERRAIN, B_MSG_TERRAINENDS_GRASS); gBattleStruct->turnCountersTracker++; break; case ENDTURN_PSYCHIC_TERRAIN: - if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN - && (!(gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.terrainTimer == 0)) - { - gFieldStatuses &= ~STATUS_FIELD_PSYCHIC_TERRAIN; - TryToRevertMimicry(); - BattleScriptExecute(BattleScript_PsychicTerrainEnds); - effect++; - } + effect = EndTurnTerrain(STATUS_FIELD_PSYCHIC_TERRAIN, B_MSG_TERRAINENDS_PSYCHIC); gBattleStruct->turnCountersTracker++; break; case ENDTURN_WATER_SPORT: @@ -2571,8 +2506,16 @@ u8 DoFieldEndTurnEffects(void) gBattleStruct->turnCountersTracker++; break; case ENDTURN_WEATHER_FORM: - AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, 0, 0, 0, 0); - gBattleStruct->turnCountersTracker++; + for (i = 0; i < gBattlersCount; i++) + { + if (AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, i, 0, 0, 0)) + { + effect++; + break; + } + } + if (effect == 0) + gBattleStruct->turnCountersTracker++; break; case ENDTURN_STATUS_HEAL: for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) @@ -2609,6 +2552,7 @@ enum ENDTURN_POISON, ENDTURN_BAD_POISON, ENDTURN_BURN, + ENDTURN_FROSTBITE, ENDTURN_NIGHTMARES, ENDTURN_CURSE, ENDTURN_WRAP, @@ -2822,6 +2766,23 @@ u8 DoBattlerEndTurnEffects(void) } gBattleStruct->turnEffectsTracker++; break; + case ENDTURN_FROSTBITE: // burn + if ((gBattleMons[gActiveBattler].status1 & STATUS1_FROSTBITE) + && gBattleMons[gActiveBattler].hp != 0) + { + MAGIC_GUARD_CHECK; + #if B_BURN_DAMAGE >= GEN_7 + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + #else + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + #endif + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_FrostbiteTurnDmg); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; case ENDTURN_NIGHTMARES: // spooky nightmares if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0) @@ -3301,7 +3262,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void) return FALSE; } -#define FAINTED_ACTIONS_MAX_CASE 7 +#define FAINTED_ACTIONS_MAX_CASE 8 bool8 HandleFaintedMonActions(void) { @@ -3386,7 +3347,19 @@ bool8 HandleFaintedMonActions(void) else gBattleStruct->faintedActionsState = 4; break; - case 6: + case 6: // All battlers switch-in abilities happen here to prevent them happening against an empty field. + for (i = 0; i < gBattlersCount; i++) + { + if (gBattleStruct->switchInAbilityPostponed & gBitTable[i]) + { + if (DoSwitchInAbilitiesItems(i)) + return TRUE; + gBattleStruct->switchInAbilityPostponed &= ~(gBitTable[i]); + } + } + gBattleStruct->faintedActionsState++; + break; + case 7: if (ItemBattleEffects(ITEMEFFECT_NORMAL, 0, TRUE)) return TRUE; gBattleStruct->faintedActionsState++; @@ -3481,7 +3454,7 @@ u8 AtkCanceller_UnableToUseMove(void) case CANCELLER_FROZEN: // check being frozen if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE && !(gBattleMoves[gCurrentMove].flags & FLAG_THAW_USER)) { - if (Random() % 5) + if (!RandomPercentage(RNG_FROZEN, 20)) { gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; gHitMarker |= HITMARKER_NO_ATTACKSTRING; @@ -3594,14 +3567,15 @@ u8 AtkCanceller_UnableToUseMove(void) case CANCELLER_CONFUSED: // confusion if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION) { - gBattleMons[gBattlerAttacker].status2 -= STATUS2_CONFUSION_TURN(1); + if (!(gStatuses4[gBattlerAttacker] & STATUS4_INFINITE_CONFUSION)) + gBattleMons[gBattlerAttacker].status2 -= STATUS2_CONFUSION_TURN(1); if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION) { // confusion dmg #if B_CONFUSION_SELF_DMG_CHANCE >= GEN_7 - if (Random() % 3 == 0) + if (RandomWeighted(RNG_CONFUSION, 2, 1)) #else - if (Random() % 2 == 0) + if (RandomWeighted(RNG_CONFUSION, 1, 1)) #endif { gBattleCommunication[MULTISTRING_CHOOSER] = TRUE; @@ -3627,7 +3601,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_PARALYSED: // paralysis - if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && (Random() % 4) == 0) + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && !RandomPercentage(RNG_PARALYSIS, 75)) { gProtectStructs[gBattlerAttacker].prlzImmobility = TRUE; // This is removed in FRLG and Emerald for some reason @@ -3642,7 +3616,7 @@ u8 AtkCanceller_UnableToUseMove(void) if (gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) { gBattleScripting.battler = CountTrailingZeroBits((gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) >> 0x10); - if (Random() & 1) + if (!RandomPercentage(RNG_INFATUATION, 50)) { BattleScriptPushCursor(); } @@ -3700,6 +3674,17 @@ u8 AtkCanceller_UnableToUseMove(void) } effect = 2; } + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FROSTBITE && (gBattleMoves[gCurrentMove].flags & FLAG_THAW_USER)) + { + if (!(gBattleMoves[gCurrentMove].effect == EFFECT_BURN_UP && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE))) + { + gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FROSTBITE; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfrostbite; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FROSTBITE_HEALED_BY_MOVE; + } + effect = 2; + } gBattleStruct->atkCancellerTracker++; break; case CANCELLER_POWDER_MOVE: @@ -3813,7 +3798,7 @@ u8 AtkCanceller_UnableToUseMove(void) // TODO } } - else if (gBattleMoves[gCurrentMove].effect == EFFECT_TRIPLE_KICK || gCurrentMove == MOVE_SURGING_STRIKES) + else if (gBattleMoves[gCurrentMove].effect == EFFECT_TRIPLE_KICK || gBattleMoves[gCurrentMove].flags & FLAG_THREE_STRIKES) { gMultiHitCounter = 3; PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) @@ -3821,14 +3806,9 @@ u8 AtkCanceller_UnableToUseMove(void) #if B_BEAT_UP >= GEN_5 else if (gBattleMoves[gCurrentMove].effect == EFFECT_BEAT_UP) { - struct Pokemon* party; + struct Pokemon* party = GetBattlerParty(gBattlerAttacker); int i; - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; - for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&party[i], MON_DATA_HP) @@ -3915,8 +3895,8 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG && i != partyIdBattlerOn1 && i != partyIdBattlerOn2 && i != *(gBattleStruct->monToSwitchIntoId + flankId) && i != playerId[gBattleStruct->monToSwitchIntoId]) break; @@ -3925,17 +3905,14 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) } else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; + party = GetBattlerParty(battler); playerId = ((battler & BIT_FLANK) / 2); for (i = playerId * MULTI_PARTY_SIZE; i < playerId * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE; i++) { if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) break; } return (i == playerId * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE); @@ -3962,20 +3939,15 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) else { flankId = GetBattlerMultiplayerId(battler); - - if (GetBattlerSide(battler) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; - + party = GetBattlerParty(battler); playerId = GetLinkTrainerFlankId(flankId); } for (i = playerId * MULTI_PARTY_SIZE; i < playerId * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE; i++) { if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) break; } return (i == playerId * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE); @@ -3992,8 +3964,8 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) for (i = playerId; i < playerId + MULTI_PARTY_SIZE; i++) { if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) break; } return (i == playerId + 3); @@ -4021,8 +3993,8 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG && i != partyIdBattlerOn1 && i != partyIdBattlerOn2 && i != *(gBattleStruct->monToSwitchIntoId + flankId) && i != playerId[gBattleStruct->monToSwitchIntoId]) break; @@ -4031,96 +4003,6 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) } } -u8 TryWeatherFormChange(u8 battler) -{ - u8 ret = 0; - bool32 weatherEffect = WEATHER_HAS_EFFECT; - u16 holdEffect = GetBattlerHoldEffect(battler, TRUE); - - switch (gBattleMons[battler].species) - { - case SPECIES_CASTFORM: -/* Placeholder - case SPECIES_CASTFORM_RAINY: - case SPECIES_CASTFORM_SNOWY: - case SPECIES_CASTFORM_SUNNY:*/ -#if B_WEATHER_FORMS >= GEN_5 - if (gBattleMons[battler].hp == 0) - { - ret = 0; // No change - } - else if (GetBattlerAbility(battler) != ABILITY_FORECAST || !weatherEffect) - { - if (!IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)) - { - SET_BATTLER_TYPE(battler, TYPE_NORMAL); - ret = CASTFORM_NORMAL + 1; - } - else - { - ret = 0; // No change - } - } -#else - if (GetBattlerAbility(battler) != ABILITY_FORECAST || gBattleMons[battler].hp == 0) - { - ret = 0; // No change - } - else if (!weatherEffect) - { - if (!IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)) - { - SET_BATTLER_TYPE(battler, TYPE_NORMAL); - ret = CASTFORM_NORMAL + 1; - } - else - { - ret = 0; // No change - } - } -#endif - else if (holdEffect == HOLD_EFFECT_UTILITY_UMBRELLA || (!(gBattleWeather & (B_WEATHER_RAIN | B_WEATHER_SUN | B_WEATHER_HAIL)) && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL))) - { - SET_BATTLER_TYPE(battler, TYPE_NORMAL); - ret = CASTFORM_NORMAL + 1; - } - else if (gBattleWeather & B_WEATHER_SUN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA && !IS_BATTLER_OF_TYPE(battler, TYPE_FIRE)) - { - SET_BATTLER_TYPE(battler, TYPE_FIRE); - ret = CASTFORM_FIRE + 1; - } - else if (gBattleWeather & B_WEATHER_RAIN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA && !IS_BATTLER_OF_TYPE(battler, TYPE_WATER)) - { - SET_BATTLER_TYPE(battler, TYPE_WATER); - ret = CASTFORM_WATER + 1; - } - else if (gBattleWeather & B_WEATHER_HAIL && !IS_BATTLER_OF_TYPE(battler, TYPE_ICE)) - { - SET_BATTLER_TYPE(battler, TYPE_ICE); - ret = CASTFORM_ICE + 1; - } - break; - case SPECIES_CHERRIM: -// case SPECIES_CHERRIM_SUNSHINE: - if (gBattleMons[battler].hp == 0) - ret = 0; // No change -#if B_WEATHER_FORMS >= GEN_5 - if (GetBattlerAbility(battler) != ABILITY_FLOWER_GIFT) - if (gBattleMonForms[battler] != 0) - ret = CHERRIM_OVERCAST + 1; - else - ret = 0; // No change -#endif - else if (gBattleMonForms[battler] == 0 && weatherEffect && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA && gBattleWeather & B_WEATHER_SUN) - ret = CHERRIM_SUNSHINE + 1; - else if (gBattleMonForms[battler] != 0 && (!weatherEffect || holdEffect == HOLD_EFFECT_UTILITY_UMBRELLA || !(gBattleWeather & B_WEATHER_SUN))) - ret = CHERRIM_OVERCAST + 1; - break; - } - - return ret; -} - static const u16 sWeatherFlagsInfo[][3] = { [ENUM_WEATHER_RAIN] = {B_WEATHER_RAIN_TEMPORARY, B_WEATHER_RAIN_PERMANENT, HOLD_EFFECT_DAMP_ROCK}, @@ -4130,13 +4012,14 @@ static const u16 sWeatherFlagsInfo[][3] = [ENUM_WEATHER_SANDSTORM] = {B_WEATHER_SANDSTORM_TEMPORARY, B_WEATHER_SANDSTORM_PERMANENT, HOLD_EFFECT_SMOOTH_ROCK}, [ENUM_WEATHER_HAIL] = {B_WEATHER_HAIL_TEMPORARY, B_WEATHER_HAIL_PERMANENT, HOLD_EFFECT_ICY_ROCK}, [ENUM_WEATHER_STRONG_WINDS] = {B_WEATHER_STRONG_WINDS, B_WEATHER_STRONG_WINDS, HOLD_EFFECT_NONE}, + [ENUM_WEATHER_SNOW] = {B_WEATHER_SNOW_TEMPORARY, B_WEATHER_SNOW_PERMANENT, HOLD_EFFECT_ICY_ROCK}, }; static void ShouldChangeFormInWeather(u8 battler) { int i; int side = GetBattlerSide(battler); - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + struct Pokemon *party = GetSideParty(side); for (i = 0; i < PARTY_SIZE; i++) { @@ -4150,7 +4033,6 @@ static void ShouldChangeFormInWeather(u8 battler) bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility) { u16 battlerAbility = GetBattlerAbility(battler); - if (gBattleWeather & B_WEATHER_PRIMAL_ANY && battlerAbility != ABILITY_DESOLATE_LAND && battlerAbility != ABILITY_PRIMORDIAL_SEA @@ -4176,7 +4058,6 @@ bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility) ShouldChangeFormInWeather(battler); return TRUE; } - return FALSE; } @@ -4199,51 +4080,6 @@ static bool32 TryChangeBattleTerrain(u32 battler, u32 statusFlag, u8 *timer) return FALSE; } -static bool32 ShouldChangeFormHpBased(u32 battler) -{ - // Ability, form >, form <=, hp divided - static const u16 forms[][4] = - { - {ABILITY_ZEN_MODE, SPECIES_DARMANITAN, SPECIES_DARMANITAN_ZEN_MODE, 2}, - {ABILITY_SHIELDS_DOWN, SPECIES_MINIOR, SPECIES_MINIOR_CORE_RED, 2}, - {ABILITY_SHIELDS_DOWN, SPECIES_MINIOR_METEOR_BLUE, SPECIES_MINIOR_CORE_BLUE, 2}, - {ABILITY_SHIELDS_DOWN, SPECIES_MINIOR_METEOR_GREEN, SPECIES_MINIOR_CORE_GREEN, 2}, - {ABILITY_SHIELDS_DOWN, SPECIES_MINIOR_METEOR_INDIGO, SPECIES_MINIOR_CORE_INDIGO, 2}, - {ABILITY_SHIELDS_DOWN, SPECIES_MINIOR_METEOR_ORANGE, SPECIES_MINIOR_CORE_ORANGE, 2}, - {ABILITY_SHIELDS_DOWN, SPECIES_MINIOR_METEOR_VIOLET, SPECIES_MINIOR_CORE_VIOLET, 2}, - {ABILITY_SHIELDS_DOWN, SPECIES_MINIOR_METEOR_YELLOW, SPECIES_MINIOR_CORE_YELLOW, 2}, - {ABILITY_SCHOOLING, SPECIES_WISHIWASHI_SCHOOL, SPECIES_WISHIWASHI, 4}, - {ABILITY_GULP_MISSILE, SPECIES_CRAMORANT, SPECIES_CRAMORANT_GORGING, 2}, - {ABILITY_GULP_MISSILE, SPECIES_CRAMORANT, SPECIES_CRAMORANT_GULPING, 1}, - {ABILITY_ZEN_MODE, SPECIES_DARMANITAN_GALARIAN, SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, 2}, - }; - u32 i; - u16 battlerAbility = GetBattlerAbility(battler); - - if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED) - return FALSE; - - for (i = 0; i < ARRAY_COUNT(forms); i++) - { - if (battlerAbility == forms[i][0]) - { - if (gBattleMons[battler].species == forms[i][2] - && gBattleMons[battler].hp > gBattleMons[battler].maxHP / forms[i][3]) - { - gBattleMons[battler].species = forms[i][1]; - return TRUE; - } - if (gBattleMons[battler].species == forms[i][1] - && gBattleMons[battler].hp <= gBattleMons[battler].maxHP / forms[i][3]) - { - gBattleMons[battler].species = forms[i][2]; - return TRUE; - } - } - } - return FALSE; -} - static u8 ForewarnChooseMove(u32 battler) { struct Forewarn { @@ -4322,11 +4158,31 @@ bool8 ChangeTypeBasedOnTerrain(u8 battlerId) return TRUE; } +// Supreme Overlord adds a damage boost for each fainted ally. +// The first ally adds a x1.2 boost, and subsequent allies add an extra x0.1 boost each. +static u16 GetSupremeOverlordModifier(u8 battlerId) +{ + u32 i; + struct Pokemon *party = GetBattlerParty(battlerId); + u16 modifier = UQ_4_12(1.0); + bool8 appliedFirstBoost = FALSE; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) == 0) + modifier += (!appliedFirstBoost) ? UQ_4_12(0.2) : UQ_4_12(0.1); + appliedFirstBoost = TRUE; + } + + return modifier; +} + u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 moveArg) { u8 effect = 0; u32 speciesAtk, speciesDef; - u32 pidAtk, pidDef; u32 moveType, move; u32 i, j; @@ -4337,10 +4193,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move gBattlerAttacker = battler; speciesAtk = gBattleMons[gBattlerAttacker].species; - pidAtk = gBattleMons[gBattlerAttacker].personality; - speciesDef = gBattleMons[gBattlerTarget].species; - pidDef = gBattleMons[gBattlerTarget].personality; if (special) gLastUsedAbility = special; @@ -4602,7 +4455,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN)) { - gBattleMons[battler].statStages[statId]++; SET_STATCHANGER(statId, 1, FALSE); gBattlerAttacker = battler; PREPARE_STAT_BUFFER(gBattleTextBuff1, statId); @@ -4705,11 +4557,19 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITY_SNOW_WARNING: + #if B_SNOW_WARNING >= GEN_9 + if (TryChangeBattleWeather(battler, ENUM_WEATHER_SNOW, TRUE)) + { + BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesSnow); + effect++; + } + #else if (TryChangeBattleWeather(battler, ENUM_WEATHER_HAIL, TRUE)) { - BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivates); + BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesHail); effect++; } + #endif else if (gBattleWeather & B_WEATHER_PRIMAL_ANY && WEATHER_HAS_EFFECT && !gSpecialStatuses[battler].switchInAbilityDone) { gSpecialStatuses[battler].switchInAbilityDone = TRUE; @@ -4749,6 +4609,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_INTIMIDATE: if (!gSpecialStatuses[battler].switchInAbilityDone) { + gBattlerAttacker = battler; gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_ATK, 1, TRUE); BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivates); @@ -4774,8 +4635,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_SCHOOLING: if (gBattleMons[battler].level < 20) break; + // Fallthrough + case ABILITY_ZEN_MODE: case ABILITY_SHIELDS_DOWN: - if (ShouldChangeFormHpBased(battler)) + if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_HP_PERCENT)) { BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3); effect++; @@ -4869,6 +4732,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (!gSpecialStatuses[battler].switchInAbilityDone && CountUsablePartyMons(battler) < PARTY_SIZE) { gSpecialStatuses[battler].switchInAbilityDone = TRUE; + gBattleStruct->supremeOverlordModifier[battler] = GetSupremeOverlordModifier(battler); BattleScriptPushCursorAndCallback(BattleScript_SupremeOverlordActivates); effect++; } @@ -4887,12 +4751,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; -#if B_WEATHER_FORMS < GEN_5 - default: - if (gBattleMons[battler].species == SPECIES_CHERRIM) - goto TRY_WEATHER_FORM; - break; -#endif } break; case ABILITYEFFECT_ENDTURN: // 1 @@ -4948,7 +4806,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); if (gBattleMons[battler].status1 & STATUS1_BURN) StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - if (gBattleMons[battler].status1 & STATUS1_FREEZE) + if (gBattleMons[battler].status1 & (STATUS1_FREEZE | STATUS1_FROSTBITE)) StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); gBattleMons[battler].status1 = 0; @@ -4963,9 +4821,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_SPEED_BOOST: if (CompareStat(battler, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN) && gDisableStructs[battler].isFirstTurn != 2) { - gBattleMons[battler].statStages[STAT_SPEED]++; - gBattleScripting.animArg1 = 14 + STAT_SPEED; - gBattleScripting.animArg2 = 0; + SET_STATCHANGER(STAT_SPEED, 1, FALSE); BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates); gBattleScripting.battler = battler; effect++; @@ -5045,17 +4901,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_SCHOOLING: if (gBattleMons[battler].level < 20) break; + // Fallthrough case ABILITY_ZEN_MODE: case ABILITY_SHIELDS_DOWN: - if ((effect = ShouldChangeFormHpBased(battler))) - BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3); - break; case ABILITY_POWER_CONSTRUCT: - if ((gBattleMons[battler].species == SPECIES_ZYGARDE || gBattleMons[battler].species == SPECIES_ZYGARDE_10) - && gBattleMons[battler].hp <= gBattleMons[battler].maxHP / 2) + if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_HP_PERCENT)) { - gBattleStruct->changedSpecies[gBattlerPartyIndexes[battler]] = gBattleMons[battler].species; - gBattleMons[battler].species = SPECIES_ZYGARDE_COMPLETE; BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3); effect++; } @@ -5075,18 +4926,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITY_HUNGER_SWITCH: - if (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)) + if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_TURN_END)) { - if (gBattleMons[battler].species == SPECIES_MORPEKO) - { - gBattleMons[battler].species = SPECIES_MORPEKO_HANGRY; - BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3NoPopup); - } - else if (gBattleMons[battler].species == SPECIES_MORPEKO_HANGRY) - { - gBattleMons[battler].species = SPECIES_MORPEKO; - BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3NoPopup); - } + BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3NoPopup); effect++; } break; @@ -5274,7 +5116,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move SET_STATCHANGER(statId, statAmount, FALSE); #if B_ABSORBING_ABILITY_STRING < GEN_5 - gBattleMons[battler].statStages[statId]++; PREPARE_STAT_BUFFER(gBattleTextBuff1, statId); #endif } @@ -5623,7 +5464,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && TARGET_TURN_DAMAGED && CanBePoisoned(gBattlerTarget, gBattlerAttacker) && IsMoveMakingContact(move, gBattlerAttacker) - && (Random() % 3) == 0) + && RandomWeighted(RNG_POISON_POINT, 2, 1)) { gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); @@ -5641,7 +5482,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && TARGET_TURN_DAMAGED && CanBeParalyzed(gBattlerAttacker) && IsMoveMakingContact(move, gBattlerAttacker) - && (Random() % 3) == 0) + && RandomWeighted(RNG_STATIC, 2, 1)) { gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS; BattleScriptPushCursor(); @@ -5657,7 +5498,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && (IsMoveMakingContact(move, gBattlerAttacker)) && TARGET_TURN_DAMAGED && CanBeBurned(gBattlerAttacker) - && (Random() % 3) == 0) + && RandomWeighted(RNG_FLAME_BODY, 2, 1)) { gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN; BattleScriptPushCursor(); @@ -5670,16 +5511,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && (IsMoveMakingContact(move, gBattlerAttacker)) && TARGET_TURN_DAMAGED && gBattleMons[gBattlerTarget].hp != 0 - && (Random() % 3) == 0 - && GetBattlerAbility(gBattlerAttacker) != ABILITY_OBLIVIOUS - && !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL) - && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) + && RandomWeighted(RNG_CUTE_CHARM, 2, 1) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) - && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != MON_GENDERLESS - && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != MON_GENDERLESS) + && AreBattlersOfOppositeGender(gBattlerAttacker, gBattlerTarget) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_OBLIVIOUS + && IsMoveMakingContact(move, gBattlerAttacker) + && !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL)) { gBattleMons[gBattlerAttacker].status2 |= STATUS2_INFATUATED_WITH(gBattlerTarget); BattleScriptPushCursor(); @@ -5770,7 +5609,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { if (gBattleMons[gBattlerTarget].species == SPECIES_CRAMORANT_GORGING) { - gBattleStruct->changedSpecies[gBattlerPartyIndexes[gBattlerTarget]] = gBattleMons[gBattlerTarget].species; gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; if (GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { @@ -5784,7 +5622,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } else if (gBattleMons[gBattlerTarget].species == SPECIES_CRAMORANT_GULPING) { - gBattleStruct->changedSpecies[gBattlerPartyIndexes[gBattlerTarget]] = gBattleMons[gBattlerTarget].species; gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; if (GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { @@ -5828,6 +5665,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED + && IsBattlerAlive(gBattlerTarget) && (gBattleMons[gBattlerTarget].hp <= gBattleMons[gBattlerTarget].maxHP / 2) && !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove))) { @@ -5893,7 +5731,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleMons[gBattlerTarget].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && (Random() % 10) == 0 + && RandomWeighted(RNG_STENCH, 9, 1) && !IS_MOVE_STATUS(move) && !sMovesNotAffectedByStench[gCurrentMove]) { @@ -5906,7 +5744,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move break; case ABILITY_GULP_MISSILE: if (((gCurrentMove == MOVE_SURF && TARGET_TURN_DAMAGED) || gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER) - && (effect = ShouldChangeFormHpBased(gBattlerAttacker))) + && TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_HP_PERCENT)) { BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AttackerFormChange; @@ -5989,7 +5827,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITY_MAGMA_ARMOR: - if (gBattleMons[battler].status1 & STATUS1_FREEZE) + if (gBattleMons[battler].status1 & (STATUS1_FREEZE | STATUS1_FROSTBITE)) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); effect = 1; @@ -6012,7 +5850,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; break; case 2: // get rid of confusion - gBattleMons[battler].status2 &= ~STATUS2_CONFUSION; + RemoveConfusionStatus(battler); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; break; @@ -6180,20 +6018,18 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move switch (gLastUsedAbility) { case ABILITY_FORECAST: -#if B_WEATHER_FORMS >= GEN_5 case ABILITY_FLOWER_GIFT: -#else - TRY_WEATHER_FORM: -#endif - effect = TryWeatherFormChange(battler); - if (effect != 0) + if ((IsBattlerWeatherAffected(battler, gBattleWeather) + || gBattleWeather == B_WEATHER_NONE + || !WEATHER_HAS_EFFECT) // Air Lock active + && TryBattleFormChange(battler, FORM_CHANGE_BATTLE_WEATHER)) { - BattleScriptPushCursorAndCallback(BattleScript_WeatherFormChange); - *(&gBattleStruct->formToChangeInto) = effect - 1; + BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3); + effect++; } break; case ABILITY_ICE_FACE: - if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL) + if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL | B_WEATHER_SNOW) && gBattleMons[battler].species == SPECIES_EISCUE_NOICE_FACE && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) && gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)]) @@ -6467,7 +6303,6 @@ bool32 CanBePoisoned(u8 battlerAttacker, u8 battlerTarget) || ability == ABILITY_IMMUNITY || ability == ABILITY_COMATOSE || IsAbilityOnSide(battlerTarget, ABILITY_PASTEL_VEIL) - || gBattleMons[battlerTarget].status1 & STATUS1_ANY || IsAbilityStatusProtected(battlerTarget) || IsBattlerTerrainAffected(battlerTarget, STATUS_FIELD_MISTY_TERRAIN)) return FALSE; @@ -6522,6 +6357,20 @@ bool32 CanBeFrozen(u8 battlerId) return TRUE; } +bool32 CanGetFrostbite(u8 battlerId) +{ + u16 ability = GetBattlerAbility(battlerId); + if (IS_BATTLER_OF_TYPE(battlerId, TYPE_ICE) + || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_SAFEGUARD + || ability == ABILITY_MAGMA_ARMOR + || ability == ABILITY_COMATOSE + || gBattleMons[battlerId].status1 & STATUS1_ANY + || IsAbilityStatusProtected(battlerId) + || IsBattlerTerrainAffected(battlerId, STATUS_FIELD_MISTY_TERRAIN)) + return FALSE; + return TRUE; +} + bool32 CanBeConfused(u8 battlerId) { if (GetBattlerAbility(battlerId) == ABILITY_OWN_TEMPO @@ -6848,6 +6697,26 @@ static bool32 GetMentalHerbEffect(u8 battlerId) return ret; } +static u8 TryConsumeMirrorHerb(u8 battlerId, bool32 execute) +{ + u8 effect = 0; + + if (gProtectStructs[battlerId].eatMirrorHerb) { + gLastUsedItem = gBattleMons[battlerId].item; + gBattleScripting.savedBattler = gBattlerAttacker; + gBattleScripting.battler = gBattlerAttacker = battlerId; + gProtectStructs[battlerId].eatMirrorHerb = 0; + if (execute) { + BattleScriptExecute(BattleScript_MirrorHerbCopyStatChangeEnd2); + } else { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MirrorHerbCopyStatChange; + } + effect = ITEM_STATS_CHANGE; + } + return effect; +} + static u8 ItemEffectMoveEnd(u32 battlerId, u16 holdEffect) { u8 effect = 0; @@ -6936,6 +6805,13 @@ static u8 ItemEffectMoveEnd(u32 battlerId, u16 holdEffect) gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; effect = ITEM_STATUS_CHANGE; } + if (gBattleMons[battlerId].status1 & STATUS1_FROSTBITE && !UnnerveOn(battlerId, gLastUsedItem)) + { + gBattleMons[battlerId].status1 &= ~STATUS1_FROSTBITE; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureFsbRet; + effect = ITEM_STATUS_CHANGE; + } break; case HOLD_EFFECT_CURE_SLP: if (gBattleMons[battlerId].status1 & STATUS1_SLEEP && !UnnerveOn(battlerId, gLastUsedItem)) @@ -6950,7 +6826,7 @@ static u8 ItemEffectMoveEnd(u32 battlerId, u16 holdEffect) case HOLD_EFFECT_CURE_CONFUSION: if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION && !UnnerveOn(battlerId, gLastUsedItem)) { - gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; + RemoveConfusionStatus(battlerId); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; effect = ITEM_EFFECT_OTHER; @@ -6984,14 +6860,14 @@ static u8 ItemEffectMoveEnd(u32 battlerId, u16 holdEffect) if (gBattleMons[battlerId].status1 & STATUS1_BURN) StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE || gBattleMons[battlerId].status1 & STATUS1_FROSTBITE) StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); gBattleMons[battlerId].status1 = 0; - gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; + RemoveConfusionStatus(battlerId); BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM; gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; @@ -7029,6 +6905,24 @@ static u8 ItemEffectMoveEnd(u32 battlerId, u16 holdEffect) effect = ITEM_EFFECT_OTHER; } break; + case HOLD_EFFECT_BERSERK_GENE: + BufferStatChange(battlerId, STAT_ATK, STRINGID_STATROSE); + gEffectBattler = battlerId; + if (CanBeInfinitelyConfused(gEffectBattler)) + { + gStatuses4[gEffectBattler] |= STATUS4_INFINITE_CONFUSION; + } + SET_STATCHANGER(STAT_ATK, 2, FALSE); + + gBattleScripting.animArg1 = 14 + STAT_ATK; + gBattleScripting.animArg2 = 0; + + BattleScriptPushCursorAndCallback(BattleScript_BerserkGeneRet); + effect = ITEM_STATS_CHANGE; + break; + case HOLD_EFFECT_MIRROR_HERB: + effect = TryConsumeMirrorHerb(battlerId, FALSE); + break; } return effect; @@ -7157,6 +7051,12 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) BattleScriptExecute(BattleScript_BerryCureFrzEnd2); effect = ITEM_STATUS_CHANGE; } + if (gBattleMons[battlerId].status1 & STATUS1_FROSTBITE && !UnnerveOn(battlerId, gLastUsedItem)) + { + gBattleMons[battlerId].status1 &= ~STATUS1_FROSTBITE; + BattleScriptExecute(BattleScript_BerryCureFsbEnd2); + effect = ITEM_STATUS_CHANGE; + } break; case HOLD_EFFECT_CURE_SLP: if (gBattleMons[battlerId].status1 & STATUS1_SLEEP && !UnnerveOn(battlerId, gLastUsedItem)) @@ -7192,7 +7092,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); i++; } - if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE || gBattleMons[battlerId].status1 & STATUS1_FROSTBITE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); i++; @@ -7207,7 +7107,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) else gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NORMALIZED_STATUS; gBattleMons[battlerId].status1 = 0; - gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; + RemoveConfusionStatus(battlerId); BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); effect = ITEM_STATUS_CHANGE; } @@ -7268,6 +7168,21 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } } break; + case HOLD_EFFECT_BERSERK_GENE: + BufferStatChange(battlerId, STAT_ATK, STRINGID_STATROSE); + gEffectBattler = battlerId; + if (CanBeInfinitelyConfused(gEffectBattler)) + { + gStatuses4[gEffectBattler] |= STATUS4_INFINITE_CONFUSION; + } + SET_STATCHANGER(STAT_ATK, 2, FALSE); + + gBattleScripting.animArg1 = 14 + STAT_ATK; + gBattleScripting.animArg2 = 0; + + BattleScriptPushCursorAndCallback(BattleScript_BerserkGeneRet); + effect = ITEM_STATS_CHANGE; + break; } if (effect != 0) { @@ -7303,11 +7218,11 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_RESTORE_PP: if (!moveTurn) { - struct Pokemon *mon; + struct Pokemon *party = GetBattlerParty(battlerId); + struct Pokemon *mon = &party[gBattlerPartyIndexes[battlerId]]; u8 ppBonuses; u16 move; - mon = GetBattlerPartyData(battlerId); for (i = 0; i < MAX_MON_MOVES; i++) { move = GetMonData(mon, MON_DATA_MOVE1 + i); @@ -7475,6 +7390,12 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) BattleScriptExecute(BattleScript_BerryCureFrzEnd2); effect = ITEM_STATUS_CHANGE; } + if (gBattleMons[battlerId].status1 & STATUS1_FROSTBITE && !UnnerveOn(battlerId, gLastUsedItem)) + { + gBattleMons[battlerId].status1 &= ~STATUS1_FROSTBITE; + BattleScriptExecute(BattleScript_BerryCureFsbEnd2); + effect = ITEM_STATUS_CHANGE; + } break; case HOLD_EFFECT_CURE_SLP: if (gBattleMons[battlerId].status1 & STATUS1_SLEEP && !UnnerveOn(battlerId, gLastUsedItem)) @@ -7488,7 +7409,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_CONFUSION: if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION && !UnnerveOn(battlerId, gLastUsedItem)) { - gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; + RemoveConfusionStatus(battlerId); BattleScriptExecute(BattleScript_BerryCureConfusionEnd2); effect = ITEM_EFFECT_OTHER; } @@ -7518,7 +7439,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); i++; } - if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE || gBattleMons[battlerId].status1 & STATUS1_FROSTBITE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); i++; @@ -7533,7 +7454,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) else gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NORMALIZED_STATUS; gBattleMons[battlerId].status1 = 0; - gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; + RemoveConfusionStatus(battlerId); BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); effect = ITEM_STATUS_CHANGE; } @@ -7551,6 +7472,24 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) if (!moveTurn) effect = TrySetMicleBerry(battlerId, gLastUsedItem, TRUE); break; + case HOLD_EFFECT_BERSERK_GENE: + BufferStatChange(battlerId, STAT_ATK, STRINGID_STATROSE); + gEffectBattler = battlerId; + if (CanBeInfinitelyConfused(gEffectBattler)) + { + gStatuses4[gEffectBattler] |= STATUS4_INFINITE_CONFUSION; + } + SET_STATCHANGER(STAT_ATK, 2, FALSE); + + gBattleScripting.animArg1 = 14 + STAT_ATK; + gBattleScripting.animArg2 = 0; + + BattleScriptPushCursorAndCallback(BattleScript_BerserkGeneRet); + effect = ITEM_STATS_CHANGE; + break; + case HOLD_EFFECT_MIRROR_HERB: + effect = TryConsumeMirrorHerb(battlerId, TRUE); + break; } if (effect != 0) @@ -7613,7 +7552,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) if (gBattleMoveDamage != 0 // Need to have done damage && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && TARGET_TURN_DAMAGED - && (Random() % 100) < atkHoldEffectParam + && RandomPercentage(RNG_HOLD_EFFECT_FLINCH, atkHoldEffectParam) && gBattleMoves[gCurrentMove].flags & FLAG_KINGS_ROCK_AFFECTED && gBattleMons[gBattlerTarget].hp) { @@ -8014,14 +7953,14 @@ u32 GetMoveTarget(u16 move, u8 setTarget) return targetBattler; } -static bool32 IsMonEventLegal(u8 battlerId) +static bool32 IsBattlerModernFatefulEncounter(u8 battlerId) { if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT) return TRUE; if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_MEW) return TRUE; - return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_EVENT_LEGAL, NULL); + return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MODERN_FATEFUL_ENCOUNTER, NULL); } u8 IsMonDisobedient(void) @@ -8036,7 +7975,7 @@ u8 IsMonDisobedient(void) if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT) return 0; - if (IsMonEventLegal(gBattlerAttacker)) // only false if illegal Mew or Deoxys + if (IsBattlerModernFatefulEncounter(gBattlerAttacker)) // only false if illegal Mew or Deoxys { if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gBattlerAttacker) == 2) return 0; @@ -8065,8 +8004,6 @@ u8 IsMonDisobedient(void) if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) levelReferenced = gBattleMons[gBattlerAttacker].metLevel; else -#else - if (gBattleMons[gBattlerAttacker].level <= obedienceLevel) #endif levelReferenced = gBattleMons[gBattlerAttacker].level; @@ -8178,7 +8115,6 @@ u32 GetBattlerHoldEffect(u8 battlerId, bool32 checkNegating) return ItemId_GetHoldEffect(gBattleMons[battlerId].item); } -// static u32 GetBattlerItemHoldEffectParam(u8 battlerId, u16 item) { if (item == ITEM_ENIGMA_BERRY_E_READER) @@ -8229,9 +8165,15 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) return FALSE; } - if (move == MOVE_TEATIME) + if (move == MOVE_TEATIME) { - return FALSE; + return FALSE; + } + + // Z-Moves and Max Moves bypass protection + if (gBattleStruct->zmove.active) + { + return FALSE; } // Protective Pads doesn't stop Unseen Fist from bypassing Protect effects, so IsMoveMakingContact() isn't used here. @@ -8512,7 +8454,7 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) u32 weight, hpFraction, speed; if (gBattleStruct->zmove.active) - return gBattleMoves[gBattleStruct->zmove.baseMoves[battlerAtk]].zMovePower; + return GetZMovePower(gBattleStruct->zmove.baseMoves[battlerAtk]); switch (gBattleMoves[move].effect) { @@ -8557,7 +8499,10 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) basePower = gBattleStruct->presentBasePower; break; case EFFECT_TRIPLE_KICK: - basePower *= (4 - gMultiHitCounter); + if (gMultiHitCounter == 0) // Calc damage with max BP for move consideration + basePower *= 6; + else + basePower *= (4 - gMultiHitCounter); break; case EFFECT_SPIT_UP: basePower = 100 * gDisableStructs[battlerAtk].stockpileCounter; @@ -8574,7 +8519,7 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) basePower *= 2; break; case EFFECT_PURSUIT: - if (gActionsByTurnOrder[GetBattlerTurnOrderNum(gBattlerTarget)] == B_ACTION_SWITCH) + if (gActionsByTurnOrder[GetBattlerTurnOrderNum(battlerDef)] == B_ACTION_SWITCH) basePower *= 2; break; case EFFECT_NATURAL_GIFT: @@ -8708,12 +8653,12 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) #if B_HIDDEN_POWER_DMG < GEN_6 u8 powerBits; - powerBits = ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1) - | ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0) - | ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1) - | ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2) - | ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3) - | ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4); + powerBits = ((gBattleMons[battlerAtk].hpIV & 2) >> 1) + | ((gBattleMons[battlerAtk].attackIV & 2) << 0) + | ((gBattleMons[battlerAtk].defenseIV & 2) << 1) + | ((gBattleMons[battlerAtk].speedIV & 2) << 2) + | ((gBattleMons[battlerAtk].spAttackIV & 2) << 3) + | ((gBattleMons[battlerAtk].spDefenseIV & 2) << 4); basePower = (40 * powerBits) / 63 + 30; #endif @@ -8725,15 +8670,15 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) break; case EFFECT_TERRAIN_PULSE: if ((gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) - && IsBattlerGrounded(gBattlerAttacker)) + && IsBattlerGrounded(battlerAtk)) basePower *= 2; break; case EFFECT_EXPANDING_FORCE: - if (IsBattlerTerrainAffected(gBattlerAttacker, STATUS_FIELD_PSYCHIC_TERRAIN)) + if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_PSYCHIC_TERRAIN)) MulModifier(&basePower, UQ_4_12(1.5)); break; case EFFECT_RISING_VOLTAGE: - if (IsBattlerTerrainAffected(gBattlerTarget, STATUS_FIELD_ELECTRIC_TERRAIN)) + if (IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_ELECTRIC_TERRAIN)) basePower *= 2; break; case EFFECT_BEAT_UP: @@ -8741,6 +8686,10 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) basePower = CalcBeatUpPower(); #endif break; + case EFFECT_PSYBLADE: + if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_ELECTRIC_TERRAIN)) + MulModifier(&basePower, UQ_4_12(1.5)); + break; } // Move-specific base power changes @@ -8757,28 +8706,6 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) return basePower; } -// Supreme Overlord adds a damage boost for each fainted ally. -// The first ally adds a x1.2 boost, and subsequent allies add an extra x0.1 boost each. -static u16 GetSupremeOverlordModifier(u8 battlerId) -{ - u32 i; - u8 side = GetBattlerSide(battlerId); - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; - u16 modifier = UQ_4_12(1.0); - bool8 appliedFirstBoost = FALSE; - - for (i = 0; i < PARTY_SIZE; i++) - { - if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE - && !GetMonData(&party[i], MON_DATA_IS_EGG) - && GetMonData(&party[i], MON_DATA_HP) == 0) - modifier += (!appliedFirstBoost) ? UQ_4_12(0.2) : UQ_4_12(0.1); - appliedFirstBoost = TRUE; - } - - return modifier; -} - static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, bool32 updateFlags) { u32 i; @@ -8823,15 +8750,10 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(1.3)); break; case ABILITY_RIVALRY: - if (GetGenderFromSpeciesAndPersonality(gBattleMons[battlerAtk].species, gBattleMons[battlerAtk].personality) != MON_GENDERLESS - && GetGenderFromSpeciesAndPersonality(gBattleMons[battlerDef].species, gBattleMons[battlerDef].personality) != MON_GENDERLESS) - { - if (GetGenderFromSpeciesAndPersonality(gBattleMons[battlerAtk].species, gBattleMons[battlerAtk].personality) - == GetGenderFromSpeciesAndPersonality(gBattleMons[battlerDef].species, gBattleMons[battlerDef].personality)) - MulModifier(&modifier, UQ_4_12(1.25)); - else - MulModifier(&modifier, UQ_4_12(0.75)); - } + if (AreBattlersOfOppositeGender(battlerAtk, battlerDef)) + MulModifier(&modifier, UQ_4_12(1.25)); + else + MulModifier(&modifier, UQ_4_12(0.75)); break; case ABILITY_ANALYTIC: if (GetBattlerTurnOrderNum(battlerAtk) == gBattlersCount - 1 && move != MOVE_FUTURE_SIGHT && move != MOVE_DOOM_DESIRE) @@ -8928,7 +8850,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_SUPREME_OVERLORD: - MulModifier(&modifier, GetSupremeOverlordModifier(battlerAtk)); + MulModifier(&modifier, gBattleStruct->supremeOverlordModifier[battlerAtk]); break; } @@ -9099,13 +9021,14 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe switch (gBattleMoves[move].effect) { case EFFECT_FACADE: - if (gBattleMons[battlerAtk].status1 & (STATUS1_BURN | STATUS1_PSN_ANY | STATUS1_PARALYSIS)) + if (gBattleMons[battlerAtk].status1 & (STATUS1_BURN | STATUS1_PSN_ANY | STATUS1_PARALYSIS | STATUS1_FROSTBITE)) MulModifier(&modifier, UQ_4_12(2.0)); break; case EFFECT_BRINE: if (gBattleMons[battlerDef].hp <= (gBattleMons[battlerDef].maxHP / 2)) MulModifier(&modifier, UQ_4_12(2.0)); break; + case EFFECT_BARB_BARRAGE: case EFFECT_VENOSHOCK: if (gBattleMons[battlerDef].status1 & STATUS1_PSN_ANY) MulModifier(&modifier, UQ_4_12(2.0)); @@ -9115,7 +9038,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(2.0)); break; case EFFECT_SOLAR_BEAM: - if (IsBattlerWeatherAffected(battlerAtk, (B_WEATHER_HAIL | B_WEATHER_SANDSTORM | B_WEATHER_RAIN))) + if (IsBattlerWeatherAffected(battlerAtk, (B_WEATHER_HAIL | B_WEATHER_SANDSTORM | B_WEATHER_RAIN | B_WEATHER_SNOW))) MulModifier(&modifier, UQ_4_12(0.5)); break; case EFFECT_STOMPING_TANTRUM: @@ -9271,7 +9194,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b #if B_PLUS_MINUS_INTERACTION >= GEN_5 case ABILITY_PLUS: case ABILITY_MINUS: - if (IsBattlerAlive(BATTLE_PARTNER(battlerAtk))) + if (IS_MOVE_SPECIAL(move) && IsBattlerAlive(BATTLE_PARTNER(battlerAtk))) { u32 partnerAbility = GetBattlerAbility(BATTLE_PARTNER(battlerAtk)); if (partnerAbility == ABILITY_PLUS || partnerAbility == ABILITY_MINUS) @@ -9280,16 +9203,16 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b break; #else case ABILITY_PLUS: - if (IsBattlerAlive(BATTLE_PARTNER(battlerAtk)) && GetBattlerAbility(BATTLE_PARTNER(battlerAtk)) == ABILITY_MINUS) + if (IS_MOVE_SPECIAL(move) && IsBattlerAlive(BATTLE_PARTNER(battlerAtk)) && GetBattlerAbility(BATTLE_PARTNER(battlerAtk)) == ABILITY_MINUS) MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_MINUS: - if (IsBattlerAlive(BATTLE_PARTNER(battlerAtk)) && GetBattlerAbility(BATTLE_PARTNER(battlerAtk)) == ABILITY_PLUS) + if (IS_MOVE_SPECIAL(move) && IsBattlerAlive(BATTLE_PARTNER(battlerAtk)) && GetBattlerAbility(BATTLE_PARTNER(battlerAtk)) == ABILITY_PLUS) MulModifier(&modifier, UQ_4_12(1.5)); break; #endif case ABILITY_FLOWER_GIFT: - if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM && IsBattlerWeatherAffected(battlerAtk, B_WEATHER_SUN) && IS_MOVE_PHYSICAL(move)) + if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM_SUNSHINE && IsBattlerWeatherAffected(battlerAtk, B_WEATHER_SUN) && IS_MOVE_PHYSICAL(move)) MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_HUSTLE: @@ -9329,7 +9252,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b switch (GetBattlerAbility(BATTLE_PARTNER(battlerAtk))) { case ABILITY_FLOWER_GIFT: - if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM && IsBattlerWeatherAffected(BATTLE_PARTNER(battlerAtk), B_WEATHER_SUN) && IS_MOVE_PHYSICAL(move)) + if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM_SUNSHINE && IsBattlerWeatherAffected(BATTLE_PARTNER(battlerAtk), B_WEATHER_SUN) && IS_MOVE_PHYSICAL(move)) MulModifier(&modifier, UQ_4_12(1.5)); break; } @@ -9376,10 +9299,7 @@ static bool32 CanEvolve(u32 species) for (i = 0; i < EVOS_PER_MON; i++) { - if (gEvolutionTable[species][i].method - && gEvolutionTable[species][i].method != EVO_MEGA_EVOLUTION - && gEvolutionTable[species][i].method != EVO_MOVE_MEGA_EVOLUTION - && gEvolutionTable[species][i].method != EVO_PRIMAL_REVERSION) + if (gEvolutionTable[species][i].method) return TRUE; } return FALSE; @@ -9466,7 +9386,7 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, } break; case ABILITY_FLOWER_GIFT: - if (gBattleMons[battlerDef].species == SPECIES_CHERRIM && IsBattlerWeatherAffected(battlerDef, B_WEATHER_SUN) && !usesDefStat) + if (gBattleMons[battlerDef].species == SPECIES_CHERRIM_SUNSHINE && IsBattlerWeatherAffected(battlerDef, B_WEATHER_SUN) && !usesDefStat) MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_PUNK_ROCK: @@ -9485,7 +9405,7 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, switch (GetBattlerAbility(BATTLE_PARTNER(battlerDef))) { case ABILITY_FLOWER_GIFT: - if (gBattleMons[BATTLE_PARTNER(battlerDef)].species == SPECIES_CHERRIM && IsBattlerWeatherAffected(BATTLE_PARTNER(battlerDef), B_WEATHER_SUN) && !usesDefStat) + if (gBattleMons[BATTLE_PARTNER(battlerDef)].species == SPECIES_CHERRIM_SUNSHINE && IsBattlerWeatherAffected(BATTLE_PARTNER(battlerDef), B_WEATHER_SUN) && !usesDefStat) MulModifier(&modifier, UQ_4_12(1.5)); break; } @@ -9523,6 +9443,9 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, // sandstorm sp.def boost for rock types if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ROCK) && gBattleWeather & B_WEATHER_SANDSTORM && WEATHER_HAS_EFFECT && !usesDefStat) MulModifier(&modifier, UQ_4_12(1.5)); + // snow def boost for ice types + if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE) && gBattleWeather & B_WEATHER_SNOW && WEATHER_HAS_EFFECT && usesDefStat) + MulModifier(&modifier, UQ_4_12(1.5)); // The defensive stats of a Player's Pokémon are boosted by x1.1 (+10%) if they have the 5th badge and 7th badges. // Having the 5th badge boosts physical defense while having the 7th badge boosts special defense. @@ -9570,6 +9493,14 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move && abilityAtk != ABILITY_GUTS) dmg = ApplyModifier(UQ_4_12(0.5), dmg); + // check frostbite + if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && !IS_MOVE_PHYSICAL(move) + #if B_BURN_FACADE_DMG >= GEN_6 + && gBattleMoves[move].effect != EFFECT_FACADE + #endif + && abilityAtk != ABILITY_GUTS) + dmg = ApplyModifier(UQ_4_12(0.5), dmg); + // check sunny/rain weather if (IsBattlerWeatherAffected(battlerAtk, B_WEATHER_RAIN)) { @@ -9580,7 +9511,7 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move } else if (IsBattlerWeatherAffected(battlerAtk, B_WEATHER_SUN)) { - if (moveType == TYPE_FIRE) + if (moveType == TYPE_FIRE || gBattleMoves[move].effect == EFFECT_HYDRO_STEAM) dmg = ApplyModifier(UQ_4_12(1.5), dmg); else if (moveType == TYPE_WATER) dmg = ApplyModifier(UQ_4_12(0.5), dmg); @@ -9601,7 +9532,7 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move || (gSideStatuses[defSide] & SIDE_STATUS_AURORA_VEIL)) && abilityAtk != ABILITY_INFILTRATOR && !(isCrit) - && !gProtectStructs[gBattlerAttacker].confusionSelfDmg) + && !gProtectStructs[battlerAtk].confusionSelfDmg) { if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) MulModifier(&finalModifier, UQ_4_12(0.66)); @@ -9610,7 +9541,7 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move } // Parental Bond Second Strike - if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_2ND_HIT) + if (gSpecialStatuses[battlerAtk].parentalBondState == PARENTAL_BOND_2ND_HIT) { if (B_PARENTAL_BOND_DMG < GEN_7) MulModifier(&finalModifier, UQ_4_12(0.5)); @@ -9618,6 +9549,12 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move MulModifier(&finalModifier, UQ_4_12(0.25)); } + // Z-Moves and Max Moves bypass Protect and do 25% of their original damage + if (gBattleStruct->zmove.active && IS_BATTLER_PROTECTED(battlerDef)) + { + MulModifier(&finalModifier, UQ_4_12(0.25)); + } + // attacker's abilities switch (abilityAtk) { @@ -9740,7 +9677,7 @@ static s32 DoMoveDamageCalc(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, // Add a random factor. if (randomFactor) { - dmg *= 100 - (Random() % 16); + dmg *= 100 - RandomUniform(RNG_DAMAGE_MODIFIER, 0, 15); dmg /= 100; } @@ -9803,6 +9740,18 @@ static void MulByTypeEffectiveness(u16 *modifier, u16 move, u8 moveType, u8 batt MulModifier(modifier, mod); } +static void TryNoticeIllusionInTypeEffectiveness(u32 move, u32 moveType, u32 battlerAtk, u32 battlerDef, u16 resultingModifier, u32 illusionSpecies) +{ + // Check if the type effectiveness would've been different if the pokemon really had the types as the disguise. + u16 presumedModifier = UQ_4_12(1.0); + MulByTypeEffectiveness(&presumedModifier, move, moveType, battlerDef, gSpeciesInfo[illusionSpecies].types[0], battlerAtk, FALSE); + if (gSpeciesInfo[illusionSpecies].types[1] != gSpeciesInfo[illusionSpecies].types[0]) + MulByTypeEffectiveness(&presumedModifier, move, moveType, battlerDef, gSpeciesInfo[illusionSpecies].types[1], battlerAtk, FALSE); + + if (presumedModifier != resultingModifier) + RecordAbilityBattle(battlerDef, ABILITY_ILLUSION); +} + static void UpdateMoveResultFlags(u16 modifier) { if (modifier == UQ_4_12(0.0)) @@ -9828,6 +9777,7 @@ static void UpdateMoveResultFlags(u16 modifier) static u16 CalcTypeEffectivenessMultiplierInternal(u16 move, u8 moveType, u8 battlerAtk, u8 battlerDef, bool32 recordAbilities, u16 modifier) { + u32 illusionSpecies; u16 defAbility = GetBattlerAbility(battlerDef); MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, gBattleMons[battlerDef].type1, battlerAtk, recordAbilities); @@ -9837,15 +9787,18 @@ static u16 CalcTypeEffectivenessMultiplierInternal(u16 move, u8 moveType, u8 bat && gBattleMons[battlerDef].type3 != gBattleMons[battlerDef].type1) MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, gBattleMons[battlerDef].type3, battlerAtk, recordAbilities); + if (recordAbilities && (illusionSpecies = GetIllusionMonSpecies(battlerDef))) + TryNoticeIllusionInTypeEffectiveness(move, moveType, battlerAtk, battlerDef, modifier, illusionSpecies); + if (gBattleMoves[move].split == SPLIT_STATUS && move != MOVE_THUNDER_WAVE) { modifier = UQ_4_12(1.0); - #if B_GLARE_GHOST <= GEN_3 - if (move == MOVE_GLARE && IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST)) - { - modifier = UQ_4_12(0.0); - } - #endif + #if B_GLARE_GHOST <= GEN_3 + if (move == MOVE_GLARE && IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST)) + { + modifier = UQ_4_12(0.0); + } + #endif } else if (moveType == TYPE_GROUND && !IsBattlerGrounded2(battlerDef, TRUE) && !(gBattleMoves[move].flags & FLAG_DMG_UNGROUNDED_IGNORE_TYPE_IF_FLYING)) { @@ -9888,6 +9841,10 @@ static u16 CalcTypeEffectivenessMultiplierInternal(u16 move, u8 moveType, u8 bat } } + // Signal for the trainer slide-in system. + if (GetBattlerSide(battlerDef) != B_SIDE_PLAYER && modifier && gBattleStruct->trainerSlideFirstSTABMoveMsgState != 2) + gBattleStruct->trainerSlideFirstSTABMoveMsgState = 1; + return modifier; } @@ -10017,46 +9974,27 @@ bool32 IsPartnerMonFromSameTrainer(u8 battlerId) return TRUE; } -u16 GetMegaEvolutionSpecies(u16 preEvoSpecies, u16 heldItemId) +bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId) { u32 i; + const struct FormChange *formChanges = gFormChangeTablePointers[species]; - for (i = 0; i < EVOS_PER_MON; i++) + if (formChanges != NULL) { - if (gEvolutionTable[preEvoSpecies][i].method == EVO_MEGA_EVOLUTION - && gEvolutionTable[preEvoSpecies][i].param == heldItemId) - return gEvolutionTable[preEvoSpecies][i].targetSpecies; - } - return SPECIES_NONE; -} - -u16 GetPrimalReversionSpecies(u16 preEvoSpecies, u16 heldItemId) -{ - u32 i; - - for (i = 0; i < EVOS_PER_MON; i++) - { - if (gEvolutionTable[preEvoSpecies][i].method == EVO_PRIMAL_REVERSION - && gEvolutionTable[preEvoSpecies][i].param == heldItemId) - return gEvolutionTable[preEvoSpecies][i].targetSpecies; - } - return SPECIES_NONE; -} - -u16 GetWishMegaEvolutionSpecies(u16 preEvoSpecies, u16 moveId1, u16 moveId2, u16 moveId3, u16 moveId4) -{ - u32 i, par; - - for (i = 0; i < EVOS_PER_MON; i++) - { - if (gEvolutionTable[preEvoSpecies][i].method == EVO_MOVE_MEGA_EVOLUTION) + for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) { - par = gEvolutionTable[preEvoSpecies][i].param; - if (par == moveId1 || par == moveId2 || par == moveId3 || par == moveId4) - return gEvolutionTable[preEvoSpecies][i].targetSpecies; + switch (formChanges[i].method) + { + case FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM: + case FORM_CHANGE_BATTLE_PRIMAL_REVERSION: + case FORM_CHANGE_ITEM_HOLD: + if (formChanges[i].param1 == heldItemId) + return TRUE; + break; + } } } - return SPECIES_NONE; + return FALSE; } bool32 CanMegaEvolve(u8 battlerId) @@ -10099,7 +10037,7 @@ bool32 CanMegaEvolve(u8 battlerId) itemId = GetMonData(mon, MON_DATA_HELD_ITEM); // Check if there is an entry in the evolution table for regular Mega Evolution. - if (GetMegaEvolutionSpecies(species, itemId) != SPECIES_NONE) + if (GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM) != SPECIES_NONE) { #if DEBUG_BATTLE_MENU == TRUE if (gBattleStruct->debugHoldEffects[battlerId]) @@ -10117,85 +10055,178 @@ bool32 CanMegaEvolve(u8 battlerId) } // Check if there is an entry in the evolution table for Wish Mega Evolution. - if (GetWishMegaEvolutionSpecies(species, GetMonData(mon, MON_DATA_MOVE1), GetMonData(mon, MON_DATA_MOVE2), GetMonData(mon, MON_DATA_MOVE3), GetMonData(mon, MON_DATA_MOVE4))) + if (GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE) != SPECIES_NONE) return TRUE; // No checks passed, the mon CAN'T mega evolve. return FALSE; } -void UndoMegaEvolution(u32 monId) +bool32 IsBattlerMegaEvolved(u8 battlerId) { - u16 baseSpecies = GET_BASE_SPECIES_ID(GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES)); + // While Transform does copy stats and visuals, it shouldn't be counted as true Mega Evolution. + if (gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) + return FALSE; + return (gSpeciesInfo[gBattleMons[battlerId].species].flags & SPECIES_FLAG_MEGA_EVOLUTION); +} - if (gBattleStruct->mega.evolvedPartyIds[B_SIDE_PLAYER] & gBitTable[monId]) - { - gBattleStruct->mega.evolvedPartyIds[B_SIDE_PLAYER] &= ~(gBitTable[monId]); - SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleStruct->mega.playerEvolvedSpecies); - CalculateMonStats(&gPlayerParty[monId]); - } - else if (gBattleStruct->mega.primalRevertedPartyIds[B_SIDE_PLAYER] & gBitTable[monId]) - { - gBattleStruct->mega.primalRevertedPartyIds[B_SIDE_PLAYER] &= ~(gBitTable[monId]); - SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &baseSpecies); - CalculateMonStats(&gPlayerParty[monId]); - } - // While not exactly a mega evolution, Zygarde follows the same rules. - else if (GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL) == SPECIES_ZYGARDE_COMPLETE) - { - SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleStruct->changedSpecies[monId]); - gBattleStruct->changedSpecies[monId] = 0; - CalculateMonStats(&gPlayerParty[monId]); - } +bool32 IsBattlerPrimalReverted(u8 battlerId) +{ + // While Transform does copy stats and visuals, it shouldn't be counted as true Primal Revesion. + if (gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) + return FALSE; + return (gSpeciesInfo[gBattleMons[battlerId].species].flags & SPECIES_FLAG_PRIMAL_REVERSION); } -void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut) +// Returns SPECIES_NONE if no form change is possible +u16 GetBattleFormChangeTargetSpecies(u8 battlerId, u16 method) { - u32 i, currSpecies, targetSpecies; - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; - static const u16 species[][3] = - { - // Changed Form ID Default Form ID Should change on switch - {SPECIES_EISCUE_NOICE_FACE, SPECIES_EISCUE, TRUE}, - {SPECIES_MIMIKYU_BUSTED, SPECIES_MIMIKYU, FALSE}, - {SPECIES_GRENINJA_ASH, SPECIES_GRENINJA_BATTLE_BOND, FALSE}, - {SPECIES_MELOETTA_PIROUETTE, SPECIES_MELOETTA, FALSE}, - {SPECIES_AEGISLASH_BLADE, SPECIES_AEGISLASH, TRUE}, - {SPECIES_DARMANITAN_ZEN_MODE, SPECIES_DARMANITAN, TRUE}, - {SPECIES_MINIOR, SPECIES_MINIOR_CORE_RED, TRUE}, - {SPECIES_MINIOR_METEOR_BLUE, SPECIES_MINIOR_CORE_BLUE, TRUE}, - {SPECIES_MINIOR_METEOR_GREEN, SPECIES_MINIOR_CORE_GREEN, TRUE}, - {SPECIES_MINIOR_METEOR_INDIGO, SPECIES_MINIOR_CORE_INDIGO, TRUE}, - {SPECIES_MINIOR_METEOR_ORANGE, SPECIES_MINIOR_CORE_ORANGE, TRUE}, - {SPECIES_MINIOR_METEOR_VIOLET, SPECIES_MINIOR_CORE_VIOLET, TRUE}, - {SPECIES_MINIOR_METEOR_YELLOW, SPECIES_MINIOR_CORE_YELLOW, TRUE}, - {SPECIES_WISHIWASHI_SCHOOL, SPECIES_WISHIWASHI, TRUE}, - {SPECIES_CRAMORANT_GORGING, SPECIES_CRAMORANT, TRUE}, - {SPECIES_CRAMORANT_GULPING, SPECIES_CRAMORANT, TRUE}, - {SPECIES_MORPEKO_HANGRY, SPECIES_MORPEKO, TRUE}, - {SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, SPECIES_DARMANITAN_GALARIAN, TRUE}, - }; + u32 i, j; + u16 targetSpecies = SPECIES_NONE; + u16 species = gBattleMons[battlerId].species; + const struct FormChange *formChanges = gFormChangeTablePointers[species]; + u16 heldItem; + u32 ability; - currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL); - for (i = 0; i < ARRAY_COUNT(species); i++) + if (formChanges != NULL) { - if (currSpecies == species[i][0] && (!isSwitchingOut || species[i][2] == TRUE)) + heldItem = gBattleMons[battlerId].item; + ability = GetBattlerAbility(battlerId); + + for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) { - SetMonData(&party[monId], MON_DATA_SPECIES, &species[i][1]); - CalculateMonStats(&party[monId]); - break; + if (method == formChanges[i].method && species != formChanges[i].targetSpecies) + { + switch (method) + { + case FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM: + case FORM_CHANGE_BATTLE_PRIMAL_REVERSION: + if (heldItem == formChanges[i].param1) + targetSpecies = formChanges[i].targetSpecies; + break; + case FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE: + if (gBattleMons[battlerId].moves[0] == formChanges[i].param1 + || gBattleMons[battlerId].moves[1] == formChanges[i].param1 + || gBattleMons[battlerId].moves[2] == formChanges[i].param1 + || gBattleMons[battlerId].moves[3] == formChanges[i].param1) + targetSpecies = formChanges[i].targetSpecies; + break; + case FORM_CHANGE_BATTLE_SWITCH: + targetSpecies = formChanges[i].targetSpecies; + break; + case FORM_CHANGE_BATTLE_HP_PERCENT: + if (formChanges[i].param1 == GetBattlerAbility(battlerId)) + { + // We multiply by 100 to make sure that integer division doesn't mess with the health check. + u32 hpCheck = gBattleMons[battlerId].hp * 100 * 100 / gBattleMons[battlerId].maxHP; + switch(formChanges[i].param2) + { + case HP_HIGHER_THAN: + if (hpCheck > formChanges[i].param3 * 100) + targetSpecies = formChanges[i].targetSpecies; + break; + case HP_LOWER_EQ_THAN: + if (hpCheck <= formChanges[i].param3 * 100) + targetSpecies = formChanges[i].targetSpecies; + break; + } + } + break; + case FORM_CHANGE_BATTLE_WEATHER: + // Check if there is a required ability and if the battler's ability does not match it + // or is suppressed. If so, revert to the no weather form. + if (formChanges[i].param2 + && GetBattlerAbility(battlerId) != formChanges[i].param2 + && formChanges[i].param1 == B_WEATHER_NONE) + { + targetSpecies = formChanges[i].targetSpecies; + } + // We need to revert the weather form if the field is under Air Lock, too. + else if (!WEATHER_HAS_EFFECT && formChanges[i].param1 == B_WEATHER_NONE) + { + targetSpecies = formChanges[i].targetSpecies; + } + // Otherwise, just check for a match between the weather and the form change table. + else if (gBattleWeather & formChanges[i].param1 + || (gBattleWeather == B_WEATHER_NONE && formChanges[i].param1 == B_WEATHER_NONE)) + { + targetSpecies = formChanges[i].targetSpecies; + } + break; + case FORM_CHANGE_BATTLE_TURN_END: + if (formChanges[i].param1 == GetBattlerAbility(battlerId)) + targetSpecies = formChanges[i].targetSpecies; + break; + } + } } } - if (!isSwitchingOut) + + return targetSpecies; +} + +bool32 CanBattlerFormChange(u8 battlerId, u16 method) +{ + // Can't change form if transformed. + if (gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED + && B_TRANSFORM_FORM_CHANGES >= GEN_5) + return FALSE; + // Mega Evolved Pokémon should always revert to normal upon fainting or ending the battle. + if (IsBattlerMegaEvolved(battlerId) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_END_BATTLE)) + return TRUE; + else if (IsBattlerPrimalReverted(battlerId) && (method == FORM_CHANGE_END_BATTLE)) + return TRUE; + return DoesSpeciesHaveFormChangeMethod(gBattleMons[battlerId].species, method); +} + +bool32 TryBattleFormChange(u8 battlerId, u16 method) +{ + u8 monId = gBattlerPartyIndexes[battlerId]; + u8 side = GET_BATTLER_SIDE(battlerId); + struct Pokemon *party = GetBattlerParty(battlerId); + u16 targetSpecies; + + if (!CanBattlerFormChange(battlerId, method)) + return FALSE; + + targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, method); + if (targetSpecies == SPECIES_NONE) + targetSpecies = GetFormChangeTargetSpecies(&party[monId], method, 0); + if (targetSpecies != SPECIES_NONE) + { + // Saves the original species on the first form change for the player. + if (side == B_SIDE_PLAYER && gBattleStruct->changedSpecies[monId] == SPECIES_NONE) + gBattleStruct->changedSpecies[monId] = gBattleMons[battlerId].species; + + TryToSetBattleFormChangeMoves(&party[monId], method); + SetMonData(&party[monId], MON_DATA_SPECIES, &targetSpecies); + gBattleMons[battlerId].species = targetSpecies; + RecalcBattlerStats(battlerId, &party[monId]); + return TRUE; + } + else if (gBattleStruct->changedSpecies[monId] != SPECIES_NONE) { - targetSpecies = GetFormChangeTargetSpecies(&party[monId], FORM_BATTLE_END, 0); - if (targetSpecies != SPECIES_NONE) + bool8 restoreSpecies = FALSE; + + // Mega Evolved Pokémon should always revert to normal upon fainting or ending the battle, so no need to add it to the form change tables. + if (IsBattlerMegaEvolved(battlerId) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_END_BATTLE)) + restoreSpecies = TRUE; + + // Unlike Megas, Primal Reversion isn't canceled on fainting. + else if (IsBattlerPrimalReverted(battlerId) && (method == FORM_CHANGE_END_BATTLE)) + restoreSpecies = TRUE; + + if (restoreSpecies) { - SetMonData(&party[monId], MON_DATA_SPECIES, &targetSpecies); - CalculateMonStats(&party[monId]); - TryToSetBattleFormChangeMoves(&party[monId]); + // Reverts the original species + TryToSetBattleFormChangeMoves(&party[monId], method); + SetMonData(&party[monId], MON_DATA_SPECIES, &gBattleStruct->changedSpecies[monId]); + RecalcBattlerStats(battlerId, &party[monId]); + return TRUE; } } + + return FALSE; } bool32 DoBattlersShareType(u32 battler1, u32 battler2) @@ -10226,24 +10257,10 @@ bool32 CanBattlerGetOrLoseItem(u8 battlerId, u16 itemId) // Mail can be stolen now if (itemId == ITEM_ENIGMA_BERRY_E_READER) return FALSE; - // Primal Reversion inducing items cannot be lost if pokemon's base species can undergo primal reversion with it. - else if (holdEffect == HOLD_EFFECT_PRIMAL_ORB && (GetPrimalReversionSpecies(GET_BASE_SPECIES_ID(species), itemId) != SPECIES_NONE)) - return FALSE; - // Mega stone cannot be lost if pokemon's base species can mega evolve with it. - else if (holdEffect == HOLD_EFFECT_MEGA_STONE && (GetMegaEvolutionSpecies(GET_BASE_SPECIES_ID(species), itemId) != SPECIES_NONE)) - return FALSE; - else if (GET_BASE_SPECIES_ID(species) == SPECIES_GIRATINA && itemId == ITEM_GRISEOUS_ORB) + else if (DoesSpeciesUseHoldItemToChangeForm(species, itemId)) return FALSE; - else if (GET_BASE_SPECIES_ID(species) == SPECIES_GENESECT && holdEffect == HOLD_EFFECT_DRIVE) - return FALSE; - else if (GET_BASE_SPECIES_ID(species) == SPECIES_SILVALLY && holdEffect == HOLD_EFFECT_MEMORY) - return FALSE; - else if (GET_BASE_SPECIES_ID(species) == SPECIES_ARCEUS && holdEffect == HOLD_EFFECT_PLATE) - return FALSE; -#ifdef HOLD_EFFECT_Z_CRYSTAL else if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) return FALSE; -#endif else return TRUE; } @@ -10282,15 +10299,19 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battlerId) { struct Pokemon *party, *partnerMon; s32 i, id; + u8 side, partyCount; gBattleStruct->illusion[battlerId].set = 1; if (GetMonAbility(mon) != ABILITY_ILLUSION) return FALSE; - if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; + party = GetBattlerParty(battlerId); + side = GetBattlerSide(battlerId); + partyCount = side == B_SIDE_PLAYER ? gPlayerPartyCount : gEnemyPartyCount; + + // If this pokemon is last in the party, ignore Illusion. + if (&party[partyCount - 1] == mon) + return FALSE; if (IsBattlerAlive(BATTLE_PARTNER(battlerId))) partnerMon = &party[gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)]]; @@ -10415,17 +10436,6 @@ bool32 TestMoveFlags(u16 move, u32 flag) return FALSE; } -struct Pokemon *GetBattlerPartyData(u8 battlerId) -{ - struct Pokemon *mon; - if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) - mon = &gPlayerParty[gBattlerPartyIndexes[battlerId]]; - else - mon = &gEnemyParty[gBattlerPartyIndexes[battlerId]]; - - return mon; -} - static u8 GetFlingPowerFromItemId(u16 itemId) { if (itemId >= ITEM_TM01 && itemId <= ITEM_HM08) @@ -10541,7 +10551,7 @@ bool32 IsEntrainmentTargetOrSimpleBeamBannedAbility(u16 ability) void SortBattlersBySpeed(u8 *battlers, bool8 slowToFast) { int i, j, currSpeed, currBattler; - u16 speeds[4] = {0}; + u16 speeds[MAX_BATTLERS_COUNT] = {0}; for (i = 0; i < gBattlersCount; i++) speeds[i] = GetBattlerTotalSpeedStat(battlers[i]); @@ -10576,18 +10586,20 @@ void SortBattlersBySpeed(u8 *battlers, bool8 slowToFast) } } -void TryRestoreStolenItems(void) +void TryRestoreHeldItems(void) { u32 i; - u16 stolenItem = ITEM_NONE; + u16 lostItem = ITEM_NONE; for (i = 0; i < PARTY_SIZE; i++) { - if (gBattleStruct->itemStolen[i].stolen) + #if B_RESTORE_HELD_BATTLE_ITEMS == FALSE + if (gBattleStruct->itemLost[i].stolen) + #endif { - stolenItem = gBattleStruct->itemStolen[i].originalItem; - if (stolenItem != ITEM_NONE && ItemId_GetPocket(stolenItem) != POCKET_BERRIES) - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &stolenItem); // Restore stolen non-berry items + lostItem = gBattleStruct->itemLost[i].originalItem; + if (lostItem != ITEM_NONE && ItemId_GetPocket(lostItem) != POCKET_BERRIES) + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &lostItem); // Restore stolen non-berry items } } } @@ -10641,8 +10653,8 @@ void TrySaveExchangedItem(u8 battlerId, u16 stolenItem) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && GetBattlerSide(battlerId) == B_SIDE_PLAYER - && stolenItem == gBattleStruct->itemStolen[gBattlerPartyIndexes[battlerId]].originalItem) - gBattleStruct->itemStolen[gBattlerPartyIndexes[battlerId]].stolen = TRUE; + && stolenItem == gBattleStruct->itemLost[gBattlerPartyIndexes[battlerId]].originalItem) + gBattleStruct->itemLost[gBattlerPartyIndexes[battlerId]].stolen = TRUE; #endif } @@ -10766,46 +10778,6 @@ bool32 TryRoomService(u8 battlerId) } } -void DoBurmyFormChange(u32 monId) -{ - u16 newSpecies, currSpecies; - struct Pokemon *party = gPlayerParty; - - currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL); - - if ((GET_BASE_SPECIES_ID(currSpecies) == SPECIES_BURMY) - && (gBattleStruct->appearedInBattle & gBitTable[monId]) // Burmy appeared in battle - && GetMonData(&party[monId], MON_DATA_HP, NULL) != 0) // Burmy isn't fainted - { - switch (gBattleTerrain) - { - case BATTLE_TERRAIN_GRASS: - case BATTLE_TERRAIN_LONG_GRASS: - case BATTLE_TERRAIN_POND: - case BATTLE_TERRAIN_MOUNTAIN: - case BATTLE_TERRAIN_PLAIN: - newSpecies = SPECIES_BURMY; - break; - case BATTLE_TERRAIN_CAVE: - case BATTLE_TERRAIN_SAND: - newSpecies = SPECIES_BURMY_SANDY_CLOAK; - break; - case BATTLE_TERRAIN_BUILDING: - newSpecies = SPECIES_BURMY_TRASH_CLOAK; - break; - default: // Don't change form if last battle was water-related - newSpecies = SPECIES_NONE; - break; - } - - if (newSpecies != SPECIES_NONE) - { - SetMonData(&party[monId], MON_DATA_SPECIES, &newSpecies); - CalculateMonStats(&party[monId]); - } - } -} - bool32 BlocksPrankster(u16 move, u8 battlerPrankster, u8 battlerDef, bool32 checkTarget) { #if B_PRANKSTER_DARK_TYPES >= GEN_7 @@ -10898,3 +10870,61 @@ static void SetRandomMultiHitCounter() gMultiHitCounter = 5 - (Random() & 1); } } + +void CopyMonLevelAndBaseStatsToBattleMon(u32 battler, struct Pokemon *mon) +{ + gBattleMons[battler].level = GetMonData(mon, MON_DATA_LEVEL); + gBattleMons[battler].hp = GetMonData(mon, MON_DATA_HP); + gBattleMons[battler].maxHP = GetMonData(mon, MON_DATA_MAX_HP); + gBattleMons[battler].attack = GetMonData(mon, MON_DATA_ATK); + gBattleMons[battler].defense = GetMonData(mon, MON_DATA_DEF); + gBattleMons[battler].speed = GetMonData(mon, MON_DATA_SPEED); + gBattleMons[battler].spAttack = GetMonData(mon, MON_DATA_SPATK); + gBattleMons[battler].spDefense = GetMonData(mon, MON_DATA_SPDEF); +} + +void CopyMonAbilityAndTypesToBattleMon(u32 battler, struct Pokemon *mon) +{ + gBattleMons[battler].ability = GetMonAbility(mon); + gBattleMons[battler].type1 = gSpeciesInfo[gBattleMons[battler].species].types[0]; + gBattleMons[battler].type2 = gSpeciesInfo[gBattleMons[battler].species].types[1]; + gBattleMons[battler].type3 = TYPE_MYSTERY; +} + +void RecalcBattlerStats(u32 battler, struct Pokemon *mon) +{ + CalculateMonStats(mon); + CopyMonLevelAndBaseStatsToBattleMon(battler, mon); + CopyMonAbilityAndTypesToBattleMon(battler, mon); +} + +void RemoveConfusionStatus(u8 battlerId) +{ + gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; + gStatuses4[battlerId] &= ~STATUS4_INFINITE_CONFUSION; +} + +static bool8 CanBeInfinitelyConfused(u8 battlerId) +{ + if (gBattleMons[battlerId].ability == ABILITY_OWN_TEMPO + || IsBattlerTerrainAffected(battlerId, STATUS_FIELD_MISTY_TERRAIN) + || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_SAFEGUARD) + { + return FALSE; + } + return TRUE; +} + +u8 GetBattlerGender(u8 battlerId) +{ + return GetGenderFromSpeciesAndPersonality(gBattleMons[battlerId].species, + gBattleMons[battlerId].personality); +} + +bool8 AreBattlersOfOppositeGender(u8 battler1, u8 battler2) +{ + u8 gender1 = GetBattlerGender(battler1); + u8 gender2 = GetBattlerGender(battler2); + + return (gender1 != MON_GENDERLESS && gender2 != MON_GENDERLESS && gender1 != gender2); +} diff --git a/src/battle_z_move.c b/src/battle_z_move.c index 0fe777a2bab4..2e06323ba2eb 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -215,11 +215,7 @@ bool32 IsViableZMove(u8 battlerId, u16 move) if (move != MOVE_NONE && zMove != MOVE_Z_STATUS && gBattleMoves[move].type == ItemId_GetSecondaryId(item)) { - if (IS_MOVE_STATUS(move)) - gBattleStruct->zmove.chosenZMove = move; - else - gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, battlerId); - + gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, battlerId); return TRUE; } } @@ -535,7 +531,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove) static void ZMoveSelectionDisplayPower(u16 move, u16 zMove) { u8 *txtPtr; - u16 power = gBattleMoves[move].zMovePower; + u16 power = GetZMovePower(move); if (zMove >= MOVE_CATASTROPIKA) power = gBattleMoves[zMove].power; @@ -589,7 +585,7 @@ const u8 *GetZMoveName(u16 move) return gZMoveNames[0]; // Failsafe } -#define Z_EFFECT_BS_LENGTH 3 +#define Z_EFFECT_BS_LENGTH 5 // This function kinda cheats by setting a return battle script to after the setzeffect various command // and then jumping to a z effect script void SetZEffect(void) @@ -680,7 +676,7 @@ void SetZEffect(void) gBattlescriptCurrInstr = BattleScript_StatUpZMove; break; default: - gBattlescriptCurrInstr += 3; + gBattlescriptCurrInstr += Z_EFFECT_BS_LENGTH; break; } @@ -698,3 +694,45 @@ static bool32 AreStatsMaxed(u8 battlerId, u8 n) return TRUE; } +u16 GetZMovePower(u16 move) +{ + if (gBattleMoves[move].split == SPLIT_STATUS) + return 0; + if (gBattleMoves[move].effect == EFFECT_OHKO) + return 180; + + switch (move) + { + case MOVE_MEGA_DRAIN: return 120; + case MOVE_CORE_ENFORCER: return 140; + case MOVE_WEATHER_BALL: return 160; + case MOVE_HEX: return 160; + case MOVE_FLYING_PRESS: return 170; + case MOVE_GEAR_GRIND: return 180; + case MOVE_V_CREATE: return 220; + default: + { + if (gBattleMoves[move].power >= 140) + return 200; + else if (gBattleMoves[move].power >= 130) + return 195; + else if (gBattleMoves[move].power >= 120) + return 190; + else if (gBattleMoves[move].power >= 110) + return 185; + else if (gBattleMoves[move].power >= 100) + return 180; + else if (gBattleMoves[move].power >= 90) + return 175; + else if (gBattleMoves[move].power >= 80) + return 160; + else if (gBattleMoves[move].power >= 70) + return 140; + else if (gBattleMoves[move].power >= 60) + return 120; + else + return 100; + } + } +} + diff --git a/src/berry_blender.c b/src/berry_blender.c index e4ed5d0bfa99..60c38370f796 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1033,11 +1033,12 @@ static void InitBerryBlenderWindows(void) s32 i; DeactivateAllTextPrinters(); - for (i = 0; i < 5; i++) + // Initialize only the main text windows (player names and message box; excludes results screen) + for (i = 0; i < WIN_RESULTS; i++) FillWindowPixelBuffer(i, PIXEL_FILL(0)); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT); - Menu_LoadStdPalAt(0xE0); + Menu_LoadStdPalAt(BG_PLTT_ID(14)); } } diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 5c8af3378518..216aff69674a 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -367,7 +367,7 @@ static void HandleInitWindows(void) InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); - LoadPalette(sFontPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); + LoadPalette(sFontPalette, BG_PLTT_ID(15), sizeof(sFontPalette)); for (i = 0; i < ARRAY_COUNT(sWindowTemplates) - 1; i++) PutWindowTilemap(i); ScheduleBgCopyTilemapToVram(0); diff --git a/src/bike.c b/src/bike.c index 8f3faa2da040..10596418fd29 100644 --- a/src/bike.c +++ b/src/bike.c @@ -863,23 +863,23 @@ static u8 Bike_DPadToDirection(u16 heldKeys) static u8 GetBikeCollision(u8 direction) { - u8 metatitleBehavior; + u8 metatileBehavior; struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; s16 x = playerObjEvent->currentCoords.x; s16 y = playerObjEvent->currentCoords.y; MoveCoords(direction, &x, &y); - metatitleBehavior = MapGridGetMetatileBehaviorAt(x, y); - return GetBikeCollisionAt(playerObjEvent, x, y, direction, metatitleBehavior); + metatileBehavior = MapGridGetMetatileBehaviorAt(x, y); + return GetBikeCollisionAt(playerObjEvent, x, y, direction, metatileBehavior); } -static u8 GetBikeCollisionAt(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatitleBehavior) +static u8 GetBikeCollisionAt(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior) { - u8 collision = CheckForObjectEventCollision(objectEvent, x, y, direction, metatitleBehavior); + u8 collision = CheckForObjectEventCollision(objectEvent, x, y, direction, metatileBehavior); if (collision > COLLISION_OBJECT_EVENT) return collision; - if (collision == COLLISION_NONE && IsRunningDisallowedByMetatile(metatitleBehavior)) + if (collision == COLLISION_NONE && IsRunningDisallowedByMetatile(metatileBehavior)) collision = COLLISION_IMPASSABLE; if (collision) diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 6b5d66d315c4..348742849535 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -93,11 +93,11 @@ bool8 CheckRelicanthWailord(void) { // Emerald change: why did they flip it? // First comes Wailord - if (GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2, 0) == SPECIES_WAILORD) + if (GetMonData(&gPlayerParty[0], MON_DATA_SPECIES_OR_EGG, 0) == SPECIES_WAILORD) { CalculatePlayerPartyCount(); // Last comes Relicanth - if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES2, 0) == SPECIES_RELICANTH) + if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES_OR_EGG, 0) == SPECIES_RELICANTH) return TRUE; } return FALSE; diff --git a/src/cable_car.c b/src/cable_car.c index 4eb4c3080492..7d18df7b7f36 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -27,9 +27,11 @@ #define STATE_END 0xFF -#define TAG_CABLE_CAR 1 -#define TAG_DOOR 2 -#define TAG_CABLE 3 +enum { + TAG_CABLE_CAR = 1, + TAG_DOOR, + TAG_CABLE, +}; struct CableCar { @@ -62,8 +64,8 @@ struct CableCar u16 *groundTilemap; u16 *treesTilemap; u16 *bgMountainsTilemap; - const u16 *pylonHookTilemapEntries; - u8 *pylonStemTilemap; + const u16 *pylonTopTilemap; + u16 *pylonPoleTilemap; }; static EWRAM_DATA struct CableCar *sCableCar = NULL; @@ -129,24 +131,11 @@ static const struct BgTemplate sBgTemplates[4] = { }, }; -static const u8 sGround_Tilemap[] = INCBIN_U8("graphics/cable_car/ground.bin.lz"); -static const u8 sTrees_Tilemap[] = INCBIN_U8("graphics/cable_car/trees.bin.lz"); -static const u8 sBgMountains_Tilemap[] = INCBIN_U8("graphics/cable_car/bg_mountains.bin.lz"); - -static const u16 sPylonHook_TilemapEntries[] = { - 0x3000, - 0x3001, - 0x3002, - 0x3003, - 0x3004, - 0x3005, - 0x3006, - 0x3007, - 0x3008, - 0x3009, -}; - -static const u8 sPylonStems_Tilemap[] = INCBIN_U8("graphics/cable_car/pylons.bin.lz"); +static const u16 sGround_Tilemap[] = INCBIN_U16("graphics/cable_car/ground.bin.lz"); +static const u16 sTrees_Tilemap[] = INCBIN_U16("graphics/cable_car/trees.bin.lz"); +static const u16 sBgMountains_Tilemap[] = INCBIN_U16("graphics/cable_car/bg_mountains.bin.lz"); +static const u16 sPylonTop_Tilemap[] = INCBIN_U16("graphics/cable_car/pylon_top.bin"); +static const u16 sPylonPole_Tilemap[] = INCBIN_U16("graphics/cable_car/pylon_pole.bin.lz"); static const struct CompressedSpriteSheet sSpriteSheets[] = { { gCableCar_Gfx, 0x800, TAG_CABLE_CAR }, @@ -299,8 +288,8 @@ static void CB2_LoadCableCar(void) sCableCar->groundTilemap = malloc_and_decompress(sGround_Tilemap, &sizeOut); sCableCar->treesTilemap = malloc_and_decompress(sTrees_Tilemap, &sizeOut); sCableCar->bgMountainsTilemap = malloc_and_decompress(sBgMountains_Tilemap, &sizeOut); - sCableCar->pylonStemTilemap = malloc_and_decompress(sPylonStems_Tilemap, &sizeOut); - sCableCar->pylonHookTilemapEntries = sPylonHook_TilemapEntries; + sCableCar->pylonPoleTilemap = malloc_and_decompress(sPylonPole_Tilemap, &sizeOut); + sCableCar->pylonTopTilemap = sPylonTop_Tilemap; DecompressAndCopyTileDataToVram(0, gCableCarBg_Gfx, 0, 0, 0); gMain.state++; break; @@ -335,8 +324,8 @@ static void CB2_LoadCableCar(void) case 6: CopyToBgTilemapBufferRect_ChangePalette(1, sCableCar->treesTilemap, 0, 17, 32, 15, 17); CopyToBgTilemapBufferRect_ChangePalette(2, sCableCar->bgMountainsTilemap, 0, 0, 30, 20, 17); - CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonHookTilemapEntries, 0, 0, 5, 2, 17); - CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonStemTilemap, 0, 2, 2, 20, 17); + CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonTopTilemap, 0, 0, 5, 2, 17); + CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonPoleTilemap, 0, 2, 2, 20, 17); gMain.state++; break; case 7: @@ -404,8 +393,8 @@ static void CB2_EndCableCar(void) UnsetBgTilemapBuffer(2); UnsetBgTilemapBuffer(3); ResetBgsAndClearDma3BusyFlags(0); - sCableCar->pylonHookTilemapEntries = NULL; - FREE_AND_SET_NULL(sCableCar->pylonStemTilemap); + sCableCar->pylonTopTilemap = NULL; + FREE_AND_SET_NULL(sCableCar->pylonPoleTilemap); FREE_AND_SET_NULL(sCableCar->bgMountainsTilemap); FREE_AND_SET_NULL(sCableCar->treesTilemap); FREE_AND_SET_NULL(sCableCar->groundTilemap); @@ -514,8 +503,8 @@ static void Task_AnimateBgGoingUp(u8 taskId) FillBgTilemapBufferRect(3, 0, 2, 0, 1, 2, 17); break; case 16: - CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonHookTilemapEntries, 0, 0, 5, 2, 17); - CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonStemTilemap, 0, 2, 2, 30, 17); + CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonTopTilemap, 0, 0, 5, 2, 17); + CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonPoleTilemap, 0, 2, 2, 30, 17); sCableCar->bg3VerticalOffset = 64; break; } @@ -542,7 +531,7 @@ static void Task_AnimateBgGoingDown(u8 taskId) switch (sCableCar->bg3HorizontalOffset) { case 176: - CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonStemTilemap, 0, 2, 2, 30, 17); + CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonPoleTilemap, 0, 2, 2, 30, 17); break; case 16: FillBgTilemapBufferRect(3, 0, 2, 0, 3, 2, 17); @@ -550,14 +539,14 @@ static void Task_AnimateBgGoingDown(u8 taskId) sCableCar->bg3VerticalOffset = 192; break; case 32: - FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[2], 2, 0, 1, 1, 17); - FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[3], 3, 0, 1, 1, 17); - FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[7], 2, 1, 1, 1, 17); - FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[8], 3, 1, 1, 1, 17); + FillBgTilemapBufferRect(3, sCableCar->pylonTopTilemap[2], 2, 0, 1, 1, 17); + FillBgTilemapBufferRect(3, sCableCar->pylonTopTilemap[3], 3, 0, 1, 1, 17); + FillBgTilemapBufferRect(3, sCableCar->pylonTopTilemap[7], 2, 1, 1, 1, 17); + FillBgTilemapBufferRect(3, sCableCar->pylonTopTilemap[8], 3, 1, 1, 1, 17); break; case 40: - FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[4], 4, 0, 1, 1, 17); - FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[9], 4, 1, 1, 1, 17); + FillBgTilemapBufferRect(3, sCableCar->pylonTopTilemap[4], 4, 0, 1, 1, 17); + FillBgTilemapBufferRect(3, sCableCar->pylonTopTilemap[9], 4, 1, 1, 1, 17); break; } } diff --git a/src/contest.c b/src/contest.c index 047f135262ad..55207eb3ebf8 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1076,10 +1076,10 @@ static void LoadContestPalettes(void) { s32 i; - LoadPalette(sText_Pal, BG_PLTT_ID(15), PLTT_SIZE_4BPP); + LoadPalette(sText_Pal, BG_PLTT_ID(15), sizeof(sText_Pal)); SetBackdropFromColor(RGB_BLACK); for (i = 10; i < 14; i++) - LoadPalette(gPlttBufferUnfaded + BG_PLTT_ID(15) + 1, BG_PLTT_ID(15) + i, PLTT_SIZEOF(1)); + LoadPalette(&gPlttBufferUnfaded[BG_PLTT_ID(15) + 1], BG_PLTT_ID(15) + i, PLTT_SIZEOF(1)); FillPalette(RGB(31, 17, 31), BG_PLTT_ID(15) + 3, PLTT_SIZEOF(1)); } @@ -1331,10 +1331,10 @@ static bool8 SetupContestGraphics(u8 *stateVar) break; case 5: LoadCompressedPalette(gContestInterfaceAudiencePalette, BG_PLTT_OFFSET, BG_PLTT_SIZE); - CpuCopy32(gPlttBufferUnfaded + BG_PLTT_ID(8), tempPalette1, PLTT_SIZE_4BPP); - CpuCopy32(gPlttBufferUnfaded + BG_PLTT_ID(5 + gContestPlayerMonIndex), tempPalette2, PLTT_SIZE_4BPP); - CpuCopy32(tempPalette2, gPlttBufferUnfaded + BG_PLTT_ID(8), PLTT_SIZE_4BPP); - CpuCopy32(tempPalette1, gPlttBufferUnfaded + BG_PLTT_ID(5 + gContestPlayerMonIndex), PLTT_SIZE_4BPP); + CpuCopy32(&gPlttBufferUnfaded[BG_PLTT_ID(8)], tempPalette1, PLTT_SIZE_4BPP); + CpuCopy32(&gPlttBufferUnfaded[BG_PLTT_ID(5 + gContestPlayerMonIndex)], tempPalette2, PLTT_SIZE_4BPP); + CpuCopy32(tempPalette2, &gPlttBufferUnfaded[BG_PLTT_ID(8)], PLTT_SIZE_4BPP); + CpuCopy32(tempPalette1, &gPlttBufferUnfaded[BG_PLTT_ID(5 + gContestPlayerMonIndex)], PLTT_SIZE_4BPP); DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedWindowPalettes, sizeof(eContestTempSave.cachedWindowPalettes)); LoadContestPalettes(); break; @@ -1475,7 +1475,7 @@ static void Task_DisplayAppealNumberText(u8 taskId) gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; ContestDebugDoPrint(); - DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2); + DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedPlttBufferUnfaded, PLTT_SIZE); ConvertIntToDecimalStringN(gStringVar1, eContest.appealNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gText_AppealNumWhichMoveWillBePlayed); @@ -1674,8 +1674,8 @@ static void Task_HideMoveSelectScreen(u8 taskId) } Contest_SetBgCopyFlags(0); // This seems to be a bug; it should have just copied PLTT_BUFFER_SIZE. - DmaCopy32Defvars(3, gPlttBufferFaded, eContestTempSave.cachedPlttBufferFaded, PLTT_BUFFER_SIZE * 2); - LoadPalette(eContestTempSave.cachedPlttBufferUnfaded, 0, PLTT_BUFFER_SIZE * 2); + DmaCopy32Defvars(3, gPlttBufferFaded, eContestTempSave.cachedPlttBufferFaded, PLTT_SIZE); + LoadPalette(eContestTempSave.cachedPlttBufferUnfaded, 0, PLTT_SIZE); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; gTasks[taskId].func = Task_HideApplauseMeterForAppealStart; @@ -2561,7 +2561,7 @@ static void Task_WaitForHeartSliders(u8 taskId) static void Task_RestorePlttBufferUnfaded(u8 taskId) { - DmaCopy32Defvars(3, eContestTempSave.cachedPlttBufferUnfaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2); + DmaCopy32Defvars(3, eContestTempSave.cachedPlttBufferUnfaded, gPlttBufferUnfaded, PLTT_SIZE); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 2; gTasks[taskId].func = Task_WaitPrintRoundResult; @@ -4065,14 +4065,14 @@ static void UpdateBlendTaskContestantData(u8 contestant) palOffset1 = contestant + 5; DmaCopy16Defvars(3, - gPlttBufferUnfaded + palOffset1 * 16 + 10, - gPlttBufferFaded + palOffset1 * 16 + 10, - 2); - palOffset2 = (contestant + 5) * 16 + 12 + contestant; + &gPlttBufferUnfaded[PLTT_ID(palOffset1) + 10], + &gPlttBufferFaded[PLTT_ID(palOffset1) + 10], + PLTT_SIZEOF(1)); + palOffset2 = PLTT_ID(contestant + 5) + 12 + contestant; DmaCopy16Defvars(3, - gPlttBufferUnfaded + palOffset2, - gPlttBufferFaded + palOffset2, - 2); + &gPlttBufferUnfaded[palOffset2], + &gPlttBufferFaded[palOffset2], + PLTT_SIZEOF(1)); } // See comments on CreateUnusedBlendTask @@ -5500,7 +5500,7 @@ static void ContestBG_FillBoxWithTile(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 wi static bool32 Contest_RunTextPrinters(void) { RunTextPrinters(); - return IsTextPrinterActive(4); + return IsTextPrinterActive(WIN_GENERAL_TEXT); } static void Contest_SetBgCopyFlags(u32 flagIndex) diff --git a/src/contest_util.c b/src/contest_util.c index 53a81dea0426..5da02a285bdf 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -456,7 +456,7 @@ static void LoadContestResultsBgGfx(void) CopyToBgTilemapBuffer(2, gContestResults_Interface_Tilemap, 0, 0); CopyToBgTilemapBuffer(0, gContestResults_WinnerBanner_Tilemap, 0, 0); LoadContestResultsTitleBarTilemaps(); - LoadCompressedPalette(gContestResults_Pal, BG_PLTT_ID(0), 16 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gContestResults_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); LoadPalette(sResultsTextWindow_Pal, BG_PLTT_ID(15), sizeof(sResultsTextWindow_Pal)); for (i = 0; i < CONTESTANT_COUNT; i++) diff --git a/src/data.c b/src/data.c index 4b216cfd257e..1ced9ce81d18 100644 --- a/src/data.c +++ b/src/data.c @@ -3,6 +3,7 @@ #include "battle.h" #include "data.h" #include "graphics.h" +#include "constants/abilities.h" #include "constants/items.h" #include "constants/moves.h" #include "constants/trainers.h" @@ -48,68 +49,68 @@ const struct SpriteFrameImage gBattlerPicTable_OpponentRight[] = const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] = { - gTrainerBackPic_Brendan, 0x0800, - gTrainerBackPic_Brendan + 0x0800, 0x0800, - gTrainerBackPic_Brendan + 0x1000, 0x0800, - gTrainerBackPic_Brendan + 0x1800, 0x0800, + gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, + gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, + gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, + gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, }; const struct SpriteFrameImage gTrainerBackPicTable_May[] = { - gTrainerBackPic_May, 0x0800, - gTrainerBackPic_May + 0x0800, 0x0800, - gTrainerBackPic_May + 0x1000, 0x0800, - gTrainerBackPic_May + 0x1800, 0x0800, + gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, + gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, + gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, + gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, }; const struct SpriteFrameImage gTrainerBackPicTable_Red[] = { - gTrainerBackPic_Red, 0x0800, - gTrainerBackPic_Red + 0x0800, 0x0800, - gTrainerBackPic_Red + 0x1000, 0x0800, - gTrainerBackPic_Red + 0x1800, 0x0800, - gTrainerBackPic_Red + 0x2000, 0x0800, + gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, + gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, + gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, + gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, + gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE, }; const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] = { - gTrainerBackPic_Leaf, 0x0800, - gTrainerBackPic_Leaf + 0x0800, 0x0800, - gTrainerBackPic_Leaf + 0x1000, 0x0800, - gTrainerBackPic_Leaf + 0x1800, 0x0800, - gTrainerBackPic_Leaf + 0x2000, 0x0800, + gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, + gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, + gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, + gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, + gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE, }; const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] = { - gTrainerBackPic_RubySapphireBrendan, 0x0800, - gTrainerBackPic_RubySapphireBrendan + 0x0800, 0x0800, - gTrainerBackPic_RubySapphireBrendan + 0x1000, 0x0800, - gTrainerBackPic_RubySapphireBrendan + 0x1800, 0x0800, + gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, + gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, + gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, + gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, }; const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] = { - gTrainerBackPic_RubySapphireMay, 0x0800, - gTrainerBackPic_RubySapphireMay + 0x0800, 0x0800, - gTrainerBackPic_RubySapphireMay + 0x1000, 0x0800, - gTrainerBackPic_RubySapphireMay + 0x1800, 0x0800, + gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, + gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, + gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, + gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, }; const struct SpriteFrameImage gTrainerBackPicTable_Wally[] = { - gTrainerBackPic_Wally, 0x0800, - gTrainerBackPic_Wally + 0x0800, 0x0800, - gTrainerBackPic_Wally + 0x1000, 0x0800, - gTrainerBackPic_Wally + 0x1800, 0x0800, + gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, + gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, + gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, + gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, }; const struct SpriteFrameImage gTrainerBackPicTable_Steven[] = { - gTrainerBackPic_Steven, 0x0800, - gTrainerBackPic_Steven + 0x0800, 0x0800, - gTrainerBackPic_Steven + 0x1000, 0x0800, - gTrainerBackPic_Steven + 0x1800, 0x0800, + gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, + gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, + gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, + gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, }; static const union AnimCmd sAnim_GeneralFrame0[] = @@ -290,7 +291,7 @@ static const union AnimCmd sAnim_MonPic_3[] = ANIMCMD_END, }; -const union AnimCmd *const gAnims_MonPic[] = +const union AnimCmd *const gAnims_MonPic[MAX_MON_PIC_FRAMES] = { sAnim_MonPic_0, sAnim_MonPic_1, diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index b1f158310a70..46293e3a0a8d 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1079,7 +1079,7 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST}, {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT}, {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING}, -#if NEW_ROCKS_PARTICLE +#if B_NEW_ROCKS_PARTICLE == TRUE {gBattleAnimSpriteGfx_NewRocks, 0x0C00, ANIM_TAG_ROCKS}, #else {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS}, @@ -1529,7 +1529,7 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST}, {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT}, {gBattleAnimSpritePal_Ring, ANIM_TAG_RING}, -#if NEW_ROCKS_PARTICLE +#if B_NEW_ROCKS_PARTICLE == TRUE {gBattleAnimSpritePal_NewRocks, ANIM_TAG_ROCKS}, #else {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS}, diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 0f2aa1ffa4c4..ef6ad52a1c62 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -26,7 +26,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -42,7 +41,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -58,7 +56,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -74,7 +71,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -90,7 +86,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -106,7 +101,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -122,13 +116,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_ICE_PUNCH] = { - .effect = EFFECT_FREEZE_HIT, + #if B_USE_FROSTBITE == TRUE + .effect = EFFECT_FROSTBITE_HIT, + #else + .effect = EFFECT_FREEZE_HIT, + #endif .power = 75, .type = TYPE_ICE, .accuracy = 100, @@ -138,7 +135,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -154,7 +150,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -170,7 +165,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -186,7 +180,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -202,7 +195,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -222,7 +214,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_BOTH, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -242,7 +233,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -258,7 +248,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -274,7 +263,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_2X_IN_AIR | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -290,7 +278,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -314,7 +301,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = -6, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -322,10 +308,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_4 .power = 90, - .zMovePower = 175, #else .power = 70, - .zMovePower = 140, #endif .effect = EFFECT_SEMI_INVULNERABLE, .type = TYPE_FLYING, @@ -355,7 +339,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -371,7 +354,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -395,7 +377,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -411,7 +392,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -427,7 +407,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -443,7 +422,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -452,15 +430,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 100, .pp = 10, - .zMovePower = 180, #elif B_UPDATED_MOVE_DATA == GEN_4 .power = 85, .pp = 25, - .zMovePower = 160, #else .power = 70, .pp = 25, - .zMovePower = 140, #endif .effect = EFFECT_RECOIL_IF_MISS, .type = TYPE_FIGHTING, @@ -489,7 +464,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -505,7 +479,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_EVSN_UP_1, }, @@ -521,7 +494,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -537,7 +509,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -553,7 +524,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -569,7 +539,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -593,7 +562,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -613,7 +581,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -633,7 +600,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -649,7 +615,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -658,11 +623,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 120, .pp = 10, - .zMovePower = 190, #else .power = 90, .pp = 20, - .zMovePower = 175, #endif .effect = EFFECT_RAMPAGE, .type = TYPE_NORMAL, @@ -687,7 +650,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -703,7 +665,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -719,7 +680,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -735,7 +695,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -756,7 +715,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -772,7 +730,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -788,7 +745,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -804,7 +760,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -828,7 +783,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = -6, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -844,7 +798,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -860,7 +813,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -876,7 +828,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -900,7 +851,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -920,7 +870,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -936,7 +885,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -956,7 +904,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -972,7 +919,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -988,7 +934,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -996,10 +941,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 110, - .zMovePower = 185, #else .power = 120, - .zMovePower = 190, #endif .effect = EFFECT_HIT, .type = TYPE_WATER, @@ -1033,7 +976,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_UNDERWATER, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1044,7 +986,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 95, #endif - .effect = EFFECT_FREEZE_HIT, + // The following effect is also relevant in battle_pike.c + // If you cherry-pick this to use something other than the config, make sure to update it there too + #if B_USE_FROSTBITE == TRUE + .effect = EFFECT_FROSTBITE_HIT, + #else + .effect = EFFECT_FREEZE_HIT, + #endif .type = TYPE_ICE, .accuracy = 100, .pp = 10, @@ -1053,7 +1001,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1061,12 +1008,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 110, - .zMovePower = 185, #else .power = 120, - .zMovePower = 190, #endif - .effect = EFFECT_FREEZE_HIT, + #if B_USE_FROSTBITE == TRUE + .effect = EFFECT_FROSTBITE_HIT, + #else + .effect = EFFECT_FREEZE_HIT, + #endif .type = TYPE_ICE, .accuracy = 70, .pp = 5, @@ -1090,7 +1039,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1106,7 +1054,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1122,7 +1069,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1138,7 +1084,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1154,7 +1099,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1170,7 +1114,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1190,7 +1133,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1206,7 +1148,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1228,7 +1169,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_DEPENDS, .priority = -5, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1244,7 +1184,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1260,7 +1199,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1280,7 +1218,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1300,7 +1237,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1316,7 +1252,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -1340,7 +1275,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -1356,7 +1290,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1372,7 +1305,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1388,7 +1320,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -1404,7 +1335,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -1420,7 +1350,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -1429,15 +1358,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 120, .pp = 10, - .zMovePower = 190, #elif B_UPDATED_MOVE_DATA == GEN_4 .power = 90, .pp = 20, - .zMovePower = 175, #else .power = 70, .pp = 20, - .zMovePower = 140, #endif .effect = EFFECT_RAMPAGE, .type = TYPE_GRASS, @@ -1466,7 +1392,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -1482,7 +1407,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1503,7 +1427,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1520,7 +1443,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1540,7 +1462,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1560,7 +1481,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -1568,10 +1488,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 110, - .zMovePower = 185, #else .power = 120, - .zMovePower = 190, #endif .effect = EFFECT_THUNDER, .type = TYPE_ELECTRIC, @@ -1597,7 +1515,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1613,7 +1530,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_UNDERGROUND, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1629,7 +1545,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_DMG_UNDERGROUND, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1637,10 +1552,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_4 .power = 80, - .zMovePower = 160, #else .power = 60, - .zMovePower = 120, #endif .effect = EFFECT_SEMI_INVULNERABLE, .type = TYPE_GROUND, @@ -1670,7 +1583,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -1686,7 +1598,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1702,7 +1613,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1718,7 +1628,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -1734,7 +1643,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -1750,7 +1658,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -1766,7 +1673,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1782,7 +1688,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1798,7 +1703,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -6, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -1814,7 +1718,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1830,7 +1733,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ACC_UP_1, }, @@ -1846,7 +1748,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -1862,7 +1763,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -1884,7 +1784,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -1900,7 +1799,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -1920,7 +1818,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -1936,7 +1833,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_EVSN_UP_1, }, @@ -1952,7 +1848,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -1968,7 +1863,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -1984,7 +1878,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ACC_UP_1, }, @@ -2004,7 +1897,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -2020,7 +1912,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -2036,7 +1927,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -2052,7 +1942,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -2068,7 +1957,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ACC_UP_1, }, @@ -2089,7 +1977,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2105,7 +1992,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2121,7 +2007,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_2, }, @@ -2137,7 +2022,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2153,7 +2037,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2173,7 +2056,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2193,7 +2075,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2209,7 +2090,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2225,7 +2105,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2233,10 +2112,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 110, - .zMovePower = 185, #else .power = 120, - .zMovePower = 190, #endif .effect = EFFECT_BURN_HIT, .type = TYPE_FIRE, @@ -2270,7 +2147,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2291,7 +2167,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2307,7 +2182,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2316,11 +2190,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 130, .pp = 10, - .zMovePower = 195, #else .power = 100, .pp = 15, - .zMovePower = 180, #endif .effect = EFFECT_SKULL_BASH, .type = TYPE_NORMAL, @@ -2345,7 +2217,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2361,7 +2232,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2377,7 +2247,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -2397,7 +2266,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_EVSN_UP_1, }, @@ -2417,7 +2285,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -2426,15 +2293,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 130, .pp = 10, - .zMovePower = 195, #elif B_UPDATED_MOVE_DATA == GEN_4 .power = 100, .pp = 20, - .zMovePower = 180, #else .power = 85, .pp = 20, - .zMovePower = 60, #endif .effect = EFFECT_RECOIL_IF_MISS, .type = TYPE_FIGHTING, @@ -2465,7 +2329,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -2481,7 +2344,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2505,7 +2367,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -2521,7 +2382,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2530,11 +2390,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_7 .power = 80, .pp = 10, - .zMovePower = 160, #else .power = 20, .pp = 15, - .zMovePower = 100, #endif .effect = EFFECT_ABSORB, .type = TYPE_BUG, @@ -2559,7 +2417,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -2580,7 +2437,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FLINCH, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2596,7 +2452,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -2616,7 +2471,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2632,7 +2486,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2648,7 +2501,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -2668,7 +2520,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_EVSN_UP_1, }, @@ -2688,7 +2539,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2704,7 +2554,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_3, }, @@ -2724,7 +2573,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -2733,15 +2581,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 100, .accuracy = 90, - .zMovePower = 180, #elif B_UPDATED_MOVE_DATA == GEN_5 .power = 90, .accuracy = 90, - .zMovePower = 175, #else .power = 90, .accuracy = 85, - .zMovePower = 175, #endif .effect = EFFECT_HIT, .type = TYPE_WATER, @@ -2766,7 +2611,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2782,7 +2626,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2798,7 +2641,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2818,7 +2660,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -2834,7 +2675,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2850,7 +2690,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_STRONG_JAW_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2866,7 +2705,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -2886,7 +2724,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -2902,7 +2739,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2918,7 +2754,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2934,7 +2769,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2950,7 +2784,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -2972,7 +2805,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2988,7 +2820,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -3004,7 +2835,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3013,11 +2843,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 60, .pp = 25, - .zMovePower = 120, #else .power = 40, .pp = 10, - .zMovePower = 100, #endif .effect = EFFECT_THIEF, .type = TYPE_DARK, @@ -3046,7 +2874,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -3066,7 +2893,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -3086,7 +2912,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -3102,7 +2927,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3126,7 +2950,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3146,7 +2969,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_CURSE, }, @@ -3162,7 +2984,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3178,7 +2999,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -3194,7 +3014,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3218,7 +3037,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -3234,7 +3052,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3254,13 +3071,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, [MOVE_POWDER_SNOW] = { - .effect = EFFECT_FREEZE_HIT, + #if B_USE_FROSTBITE == TRUE + .effect = EFFECT_FROSTBITE_HIT, + #else + .effect = EFFECT_FREEZE_HIT, + #endif .power = 40, .type = TYPE_ICE, .accuracy = 100, @@ -3270,7 +3090,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3290,7 +3109,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -3306,7 +3124,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3326,7 +3143,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -3346,7 +3162,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3366,7 +3181,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -3382,7 +3196,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -3398,7 +3211,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3414,7 +3226,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3430,7 +3241,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3450,7 +3260,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -3458,10 +3267,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_4 .power = 120, - .zMovePower = 190, #else .power = 100, - .zMovePower = 180, #endif .effect = EFFECT_PARALYZE_HIT, .type = TYPE_ELECTRIC, @@ -3495,7 +3302,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_BOOST_CRITS, }, @@ -3511,7 +3317,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_FOLLOW_ME, }, @@ -3527,7 +3332,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -3543,7 +3347,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3563,7 +3366,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_EVSN_UP_1, }, @@ -3583,7 +3385,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3603,7 +3404,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -3612,15 +3412,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 120, .pp = 10, - .zMovePower = 190, #elif B_UPDATED_MOVE_DATA == GEN_4 .power = 120, .pp = 15, - .zMovePower = 190, #else .power = 90, .pp = 15, - .zMovePower = 175, #endif .effect = EFFECT_RAMPAGE, .type = TYPE_DRAGON, @@ -3645,7 +3442,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_WIND_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -3654,15 +3450,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 75, .pp = 10, - .zMovePower = 140, #elif B_UPDATED_MOVE_DATA == GEN_4 .power = 60, .pp = 10, - .zMovePower = 120, #else .power = 60, .pp = 5, - .zMovePower = 120, #endif .effect = EFFECT_ABSORB, .type = TYPE_GRASS, @@ -3691,7 +3484,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -3711,7 +3503,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -3727,7 +3518,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3743,7 +3533,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3763,7 +3552,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -3783,7 +3571,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -3799,7 +3586,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3821,7 +3607,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3837,7 +3622,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3857,7 +3641,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -3873,7 +3656,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -3889,7 +3671,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_BOOST_CRITS, }, @@ -3909,7 +3690,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -3925,7 +3705,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3941,7 +3720,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3957,7 +3735,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3973,7 +3750,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -3989,7 +3765,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -4005,7 +3780,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4021,7 +3795,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_UNDERGROUND, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4037,7 +3810,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4053,7 +3825,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4069,7 +3840,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4085,7 +3855,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -4105,7 +3874,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -4121,7 +3889,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4141,7 +3908,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4161,7 +3927,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ACC_UP_1, }, @@ -4177,7 +3942,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4193,7 +3957,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4209,7 +3972,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4225,7 +3987,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -4241,7 +4002,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -4261,7 +4021,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -4281,7 +4040,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4297,7 +4055,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4317,7 +4074,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_BOTH, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4333,7 +4089,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -4349,7 +4104,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -4369,7 +4123,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4391,7 +4144,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_DEPENDS, .priority = -5, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4411,7 +4163,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -4431,7 +4182,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4451,7 +4201,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4467,7 +4216,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4477,17 +4225,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 120, .accuracy = 100, .pp = 10, - .zMovePower = 190, #elif B_UPDATED_MOVE_DATA == GEN_5 .power = 100, .accuracy = 100, .pp = 10, - .zMovePower = 180, #else .power = 80, .accuracy = 90, .pp = 15, - .zMovePower = 160, #endif .effect = EFFECT_FUTURE_SIGHT, .type = TYPE_PSYCHIC, @@ -4515,7 +4260,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4536,7 +4280,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_UNDERWATER, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4556,7 +4299,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4580,7 +4322,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4588,10 +4329,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 90, - .zMovePower = 175, #else .power = 50, - .zMovePower = 100, #endif .effect = EFFECT_UPROAR, .type = TYPE_NORMAL, @@ -4621,7 +4360,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -4641,7 +4379,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4657,7 +4394,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -4665,10 +4401,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 95, - .zMovePower = 175, #else .power = 100, - .zMovePower = 180, #endif .effect = EFFECT_BURN_HIT, .type = TYPE_FIRE, @@ -4694,7 +4428,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -4714,7 +4447,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -4730,7 +4462,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -4750,7 +4481,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -4766,7 +4496,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESTORE_REPLACEMENT_HP, }, @@ -4782,7 +4511,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4798,7 +4526,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -3, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4806,10 +4533,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 70, - .zMovePower = 140, #else .power = 60, - .zMovePower = 120, #endif .effect = EFFECT_SMELLINGSALT, .type = TYPE_NORMAL, @@ -4840,7 +4565,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -4856,7 +4580,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4872,7 +4595,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -4894,7 +4616,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -4914,7 +4635,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 5, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -4930,7 +4650,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_2, }, @@ -4946,7 +4665,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -4966,7 +4684,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -4982,7 +4699,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4998,7 +4714,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -5014,7 +4729,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5030,7 +4744,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, }, @@ -5050,7 +4763,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_2, }, @@ -5066,7 +4778,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -4, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5082,7 +4793,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5098,7 +4808,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -5106,10 +4815,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 65, - .zMovePower = 120, #else .power = 20, - .zMovePower = 100, #endif .effect = EFFECT_KNOCK_OFF, .type = TYPE_DARK, @@ -5135,7 +4842,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5151,7 +4857,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5167,7 +4872,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -5187,7 +4891,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, }, @@ -5203,7 +4906,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -5219,7 +4921,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_FOLLOW_ME, }, @@ -5235,7 +4936,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_2, }, @@ -5251,7 +4951,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5259,10 +4958,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_4 .power = 80, - .zMovePower = 160, #else .power = 60, - .zMovePower = 120, #endif .effect = EFFECT_SEMI_INVULNERABLE, .type = TYPE_WATER, @@ -5288,7 +4985,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5304,7 +5000,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_EVSN_UP_1, }, @@ -5324,7 +5019,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -5340,7 +5034,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5356,7 +5049,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5372,7 +5064,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -5392,7 +5083,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -5408,7 +5098,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5424,7 +5113,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -5440,7 +5128,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5460,7 +5147,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5480,7 +5166,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -5496,7 +5181,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5516,7 +5200,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5532,7 +5215,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5548,7 +5230,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5564,7 +5245,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5573,11 +5253,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 90, .accuracy = 90, - .zMovePower = 175, #else .power = 100, .accuracy = 85, - .zMovePower = 180, #endif .effect = EFFECT_ATTACK_UP_HIT, .type = TYPE_STEEL, @@ -5606,7 +5284,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5622,7 +5299,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5638,7 +5314,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -5654,7 +5329,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -5662,10 +5336,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 60, - .zMovePower = 120, #else .power = 55, - .zMovePower = 100, #endif .effect = EFFECT_HIT, .type = TYPE_FLYING, @@ -5684,15 +5356,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 130, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 195, #elif B_UPDATED_MOVE_DATA == GEN_4 || B_UPDATED_MOVE_DATA == GEN_5 .power = 140, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 200, #else .power = 140, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 200, #endif .effect = EFFECT_OVERHEAT, .type = TYPE_FIRE, @@ -5725,7 +5394,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -5735,12 +5403,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 60, .accuracy = 95, .pp = 15, - .zMovePower = 120, #else .power = 50, .accuracy = 80, .pp = 10, - .zMovePower = 100, #endif .effect = EFFECT_SPEED_DOWN_HIT, .type = TYPE_ROCK, @@ -5764,7 +5430,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5780,7 +5445,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -5796,7 +5460,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -5812,7 +5475,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -5828,7 +5490,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -5844,7 +5505,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5860,7 +5520,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5876,7 +5535,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5900,7 +5558,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5916,7 +5573,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_DMG_IN_AIR, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5937,7 +5593,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5953,7 +5608,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5973,7 +5627,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5993,7 +5646,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6009,7 +5661,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6029,7 +5680,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6045,7 +5695,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -6065,7 +5714,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -6086,7 +5734,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -6102,7 +5749,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6118,7 +5764,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6134,7 +5779,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -6151,7 +5795,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6167,7 +5810,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6183,7 +5825,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6193,22 +5834,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 60, .pp = 25, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - .zMovePower = 120, #elif B_UPDATED_MOVE_DATA == GEN_5 .power = 60, .pp = 40, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - .zMovePower = 120, #elif B_UPDATED_MOVE_DATA == GEN_4 .power = 40, .pp = 40, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - .zMovePower = 100, #else .power = 40, .pp = 40, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - .zMovePower = 100, #endif .effect = EFFECT_THIEF, .type = TYPE_NORMAL, @@ -6237,7 +5874,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6253,7 +5889,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6269,7 +5904,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -6285,7 +5919,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -6293,10 +5926,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_4 .power = 90, - .zMovePower = 175, #else .power = 70, - .zMovePower = 140, #endif .effect = EFFECT_HIT, .type = TYPE_GRASS, @@ -6322,7 +5953,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -6346,7 +5976,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6362,7 +5991,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6378,7 +6006,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6387,11 +6014,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 140, .accuracy = 100, - .zMovePower = 200, #else .power = 120, .accuracy = 85, - .zMovePower = 190, #endif .effect = EFFECT_FUTURE_SIGHT, .type = TYPE_STEEL, @@ -6416,7 +6041,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6436,7 +6060,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -6452,7 +6075,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -6472,7 +6094,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -6480,10 +6101,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 70, - .zMovePower = 140, #else .power = 60, - .zMovePower = 120, #endif .effect = EFFECT_WAKE_UP_SLAP, .type = TYPE_FIGHTING, @@ -6510,7 +6129,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6526,7 +6144,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6546,7 +6163,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6562,7 +6178,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6578,7 +6193,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6602,7 +6216,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 2, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6618,7 +6231,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6638,7 +6250,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED | FLAG_WIND_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_BOOST_CRITS, }, @@ -6658,7 +6269,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_BOOST_CRITS, }, @@ -6693,7 +6303,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6709,7 +6318,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6725,7 +6333,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6733,10 +6340,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 60, - .zMovePower = 120, #else .power = 50, - .zMovePower = 100, #endif .effect = EFFECT_ASSURANCE, .type = TYPE_DARK, @@ -6766,7 +6371,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -6782,7 +6386,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6802,7 +6405,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_2, }, @@ -6836,7 +6438,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_BOTH, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_2, }, @@ -6870,7 +6471,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -6886,7 +6486,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -6906,7 +6505,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_EVSN_UP_1, }, @@ -6922,7 +6520,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_2, }, @@ -6938,7 +6535,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ACC_UP_1, }, @@ -6954,7 +6550,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -6970,7 +6565,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -6986,7 +6580,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6994,10 +6587,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 140, - .zMovePower = 200, #else .power = 130, - .zMovePower = 195, #endif .effect = EFFECT_LAST_RESORT, .type = TYPE_NORMAL, @@ -7023,7 +6614,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -7031,10 +6621,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_7 .power = 70, - .zMovePower = 140, #else .power = 80, - .zMovePower = 160, #endif .effect = EFFECT_SUCKER_PUNCH, .type = TYPE_DARK, @@ -7064,7 +6652,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -7080,7 +6667,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_BOOST_CRITS, }, @@ -7100,7 +6686,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -7120,7 +6705,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_EVSN_UP_1, }, @@ -7137,7 +6721,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_RECKLESS_BOOST | FLAG_THAW_USER, .split = SPLIT_PHYSICAL, .argument = STATUS1_BURN, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7153,7 +6736,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7161,10 +6743,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 80, - .zMovePower = 160, #else .power = 90, - .zMovePower = 175, #endif .effect = EFFECT_HIT, .type = TYPE_FIGHTING, @@ -7190,7 +6770,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -7206,7 +6785,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7226,7 +6804,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7242,7 +6819,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7258,7 +6834,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7274,7 +6849,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7298,7 +6872,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7314,7 +6887,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7330,7 +6902,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7338,10 +6909,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 85, - .zMovePower = 160, #else .power = 90, - .zMovePower = 175, #endif .effect = EFFECT_HIT, .type = TYPE_DRAGON, @@ -7373,7 +6942,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7381,10 +6949,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 80, - .zMovePower = 160, #else .power = 70, - .zMovePower = 140, #endif .effect = EFFECT_HIT, .type = TYPE_ROCK, @@ -7403,11 +6969,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 75, .pp = 10, - .zMovePower = 140, #else .power = 60, .pp = 5, - .zMovePower = 120, #endif .effect = EFFECT_ABSORB, .type = TYPE_FIGHTING, @@ -7432,7 +6996,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7448,7 +7011,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7456,10 +7018,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 90, - .zMovePower = 175, #else .power = 80, - .zMovePower = 160, #endif .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, .type = TYPE_GRASS, @@ -7485,7 +7045,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7501,7 +7060,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7517,7 +7075,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_2, }, @@ -7533,7 +7090,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7549,7 +7105,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -7565,7 +7120,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7581,7 +7135,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -4, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7597,7 +7150,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7613,7 +7165,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7634,7 +7185,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .argument = STATUS1_PARALYSIS, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7645,6 +7195,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, #endif + #if B_USE_FROSTBITE == TRUE + .argument = STATUS1_FROSTBITE, + #else + .argument = STATUS1_FREEZE, + #endif .effect = EFFECT_FLINCH_STATUS, .power = 65, .type = TYPE_ICE, @@ -7654,8 +7209,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .argument = STATUS1_FREEZE, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7676,7 +7229,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .argument = STATUS1_BURN, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7692,7 +7244,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7708,7 +7259,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7724,7 +7274,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7740,7 +7289,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7756,7 +7304,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7772,7 +7319,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7788,7 +7334,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7808,7 +7353,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ACC_UP_1, }, @@ -7824,7 +7368,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -7, .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ACC_UP_1, }, @@ -7832,10 +7375,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 130, - .zMovePower = 195, #else .power = 140, - .zMovePower = 200, #endif .effect = EFFECT_OVERHEAT, .type = TYPE_DRAGON, @@ -7861,7 +7402,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7877,7 +7417,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7885,10 +7424,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 130, - .zMovePower = 195, #else .power = 140, - .zMovePower = 200, #endif .effect = EFFECT_OVERHEAT, .type = TYPE_GRASS, @@ -7914,7 +7451,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7930,7 +7466,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7946,7 +7481,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7966,7 +7500,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7986,7 +7519,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8002,7 +7534,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8018,7 +7549,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8034,7 +7564,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, }, @@ -8054,7 +7583,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -8070,7 +7598,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8096,7 +7623,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8113,7 +7639,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .argument = HOLD_EFFECT_PLATE, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8129,7 +7654,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8145,7 +7669,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8161,7 +7684,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8177,7 +7699,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8193,7 +7714,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8209,7 +7729,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -8225,7 +7744,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -8241,7 +7759,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8257,7 +7774,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8273,7 +7789,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8289,7 +7804,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8309,7 +7823,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8325,7 +7838,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8334,15 +7846,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 100, .accuracy = 75, - .zMovePower = 180, #elif B_UPDATED_MOVE_DATA == GEN_5 .power = 120, .accuracy = 75, - .zMovePower = 190, #else .power = 120, .accuracy = 70, - .zMovePower = 190, #endif .effect = EFFECT_TRAP, .type = TYPE_FIRE, @@ -8371,7 +7880,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -8387,7 +7895,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8403,7 +7910,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8423,7 +7929,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, .argument = MOVE_EFFECT_FEINT, }, @@ -8440,7 +7945,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -8457,7 +7961,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECTION_MOVE | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -8473,7 +7976,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -8489,7 +7991,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -8509,7 +8010,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_ALL_BATTLERS, .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -8525,7 +8025,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8541,7 +8040,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8557,7 +8055,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -8577,7 +8074,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .flags = FLAG_POWDER, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -8593,7 +8089,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -8613,7 +8108,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_ALL_BATTLERS, .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -8629,7 +8123,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_IN_AIR, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8637,10 +8130,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 60, - .zMovePower = 120, #else .power = 40, - .zMovePower = 100, #endif .effect = EFFECT_ALWAYS_CRIT, .type = TYPE_FIGHTING, @@ -8666,7 +8157,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8682,7 +8172,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8698,7 +8187,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -8718,7 +8206,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8727,11 +8214,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 120, .pp = 10, - .zMovePower = 190, #else .power = 70, .pp = 15, - .zMovePower = 140, #endif .effect = EFFECT_SYNCHRONOISE, .type = TYPE_PSYCHIC, @@ -8756,7 +8241,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8772,7 +8256,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -8788,7 +8271,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8804,7 +8286,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -8824,7 +8305,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8840,7 +8320,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8856,7 +8335,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8872,7 +8350,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -8888,7 +8365,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -8904,7 +8380,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -8920,7 +8395,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8936,7 +8410,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8952,7 +8425,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STAT_STAGES_IGNORED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8968,7 +8440,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8984,7 +8455,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9001,7 +8471,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECTION_MOVE | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -9021,7 +8490,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_2, }, @@ -9037,7 +8505,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9053,7 +8520,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -9069,7 +8535,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -9089,7 +8554,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9105,7 +8569,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9121,7 +8584,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -9137,7 +8599,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -6, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9145,10 +8606,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 60, - .zMovePower = 120, #else .power = 30, - .zMovePower = 100, #endif .effect = EFFECT_INCINERATE, .type = TYPE_FIRE, @@ -9174,7 +8633,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -9190,7 +8648,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9206,7 +8663,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -9222,7 +8678,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9238,7 +8693,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9258,7 +8712,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_2, }, @@ -9274,7 +8727,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9282,10 +8734,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 80, - .zMovePower = 160, #else .power = 50, - .zMovePower = 100, #endif .effect = EFFECT_PLEDGE, .type = TYPE_WATER, @@ -9303,10 +8753,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 80, - .zMovePower = 160, #else .power = 50, - .zMovePower = 100, #endif .effect = EFFECT_PLEDGE, .type = TYPE_FIRE, @@ -9324,10 +8772,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 80, - .zMovePower = 160, #else .power = 50, - .zMovePower = 100, #endif .effect = EFFECT_PLEDGE, .type = TYPE_GRASS, @@ -9353,7 +8799,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9373,7 +8818,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9389,7 +8833,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9397,10 +8840,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 60, - .zMovePower = 120, #else .power = 40, - .zMovePower = 100, #endif .effect = EFFECT_ALWAYS_CRIT, .type = TYPE_ICE, @@ -9426,7 +8867,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -6, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9442,7 +8882,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -9458,7 +8897,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9474,7 +8912,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9490,7 +8927,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9506,7 +8942,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9522,7 +8957,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9538,7 +8972,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9558,7 +8991,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STAT_STAGES_IGNORED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9574,7 +9006,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9594,7 +9025,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9610,7 +9040,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9626,7 +9055,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9642,7 +9070,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -9658,7 +9085,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9674,7 +9100,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9690,7 +9115,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9698,10 +9122,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 110, - .zMovePower = 185, #else .power = 120, - .zMovePower = 190, #endif .effect = EFFECT_HURRICANE, .type = TYPE_FLYING, @@ -9727,7 +9149,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9743,7 +9164,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9759,7 +9179,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9767,10 +9186,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 120, - .zMovePower = 190, #else .power = 85, - .zMovePower = 160, #endif .effect = EFFECT_CHANGE_TYPE_ON_ITEM, .type = TYPE_NORMAL, @@ -9797,7 +9214,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, .argument = STATUS1_SLEEP, }, @@ -9814,7 +9230,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9830,7 +9245,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9846,7 +9260,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 195, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9862,7 +9275,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 195, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9878,7 +9290,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DANCE | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9895,7 +9306,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9912,7 +9322,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .argument = MOVE_EFFECT_BURN, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9928,7 +9337,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9944,7 +9352,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9960,7 +9367,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 220, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9976,7 +9382,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THAW_USER, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9992,7 +9397,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10013,7 +9417,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_MINIMIZE, .split = SPLIT_PHYSICAL, .argument = TYPE_FLYING, - .zMovePower = 170, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10030,7 +9433,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10046,7 +9448,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10062,7 +9463,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -10078,7 +9478,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -10098,7 +9497,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10119,7 +9517,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FEINT, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10136,7 +9533,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .argument = TYPE_GHOST, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -10152,7 +9548,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10168,7 +9563,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -10176,10 +9570,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_7 .power = 65, - .zMovePower = 120, #else .power = 50, - .zMovePower = 100, #endif .effect = EFFECT_ABSORB, .type = TYPE_ELECTRIC, @@ -10206,7 +9598,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .argument = TYPE_GRASS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -10222,7 +9613,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_WIND_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10238,7 +9628,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10254,7 +9643,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10270,7 +9658,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESTORE_REPLACEMENT_HP, }, @@ -10290,7 +9677,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -10307,7 +9693,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10325,7 +9710,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = 0, .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -10341,7 +9725,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10357,7 +9740,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10373,7 +9755,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -10389,7 +9770,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -10405,7 +9785,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10421,7 +9800,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10437,7 +9815,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10453,7 +9830,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10469,7 +9845,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10485,7 +9860,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -10501,7 +9875,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10517,7 +9890,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -10537,7 +9909,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10553,7 +9924,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_SPECIAL, - .zMovePower = 185, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10569,7 +9939,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10589,7 +9958,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 1, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10598,10 +9966,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_7 .power = 75, - .zMovePower = 140, #else .power = 65, - .zMovePower = 120, #endif .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT, .type = TYPE_FIRE, @@ -10627,7 +9993,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10643,7 +10008,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, }, @@ -10659,7 +10023,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -10675,7 +10038,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10691,7 +10053,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, }, @@ -10707,7 +10068,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -10723,7 +10083,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -10739,7 +10098,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -10755,7 +10113,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -10771,7 +10128,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10787,7 +10143,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -10803,7 +10158,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -10819,7 +10173,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -10835,7 +10188,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10851,7 +10203,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10867,7 +10218,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10883,7 +10233,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10900,7 +10249,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10916,7 +10264,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_IN_AIR | FLAG_DMG_UNGROUNDED_IGNORE_TYPE_IF_FLYING, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10932,7 +10279,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10948,7 +10294,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10964,7 +10309,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10980,7 +10324,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 185, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10996,7 +10339,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11012,7 +10354,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11046,7 +10387,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -11062,7 +10402,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 2, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11078,7 +10417,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -11094,7 +10432,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11110,7 +10447,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STAT_STAGES_IGNORED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11127,7 +10463,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .argument = STATUS1_BURN, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11143,7 +10478,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11159,7 +10493,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, }, @@ -11175,7 +10508,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11191,7 +10523,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -11207,7 +10538,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11223,7 +10553,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11239,7 +10568,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 3, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -11255,7 +10583,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -11271,7 +10598,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ATK_UP_1, }, @@ -11287,7 +10613,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -11303,7 +10628,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11319,7 +10643,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11335,7 +10658,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11351,7 +10673,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -11367,7 +10688,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11383,7 +10703,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11399,7 +10718,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11415,7 +10733,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THAW_USER, .split = SPLIT_SPECIAL, - .zMovePower = 195, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11431,7 +10748,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -11447,7 +10763,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11463,7 +10778,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -11479,7 +10793,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DANCE, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11495,7 +10808,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11511,7 +10823,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11527,7 +10838,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -11543,7 +10853,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -3, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11559,7 +10868,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 185, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11575,7 +10883,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11591,7 +10898,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11607,13 +10913,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, [MOVE_SHELL_TRAP] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_SHELL_TRAP, + .effect = EFFECT_SHELL_TRAP, .power = 150, .type = TYPE_FIRE, .accuracy = 100, @@ -11623,7 +10928,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -3, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11639,7 +10943,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 195, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11655,7 +10958,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11671,7 +10973,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11687,7 +10988,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11703,7 +11003,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11719,7 +11018,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11735,7 +11033,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11751,7 +11048,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11767,7 +11063,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11783,7 +11078,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11799,7 +11093,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -11815,7 +11108,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11831,7 +11123,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11839,10 +11130,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_8 .power = 120, - .zMovePower = 190, #else .power = 90, - .zMovePower = 175, #endif .effect = EFFECT_CHANGE_TYPE_ON_ITEM, .type = TYPE_NORMAL, @@ -11869,7 +11158,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11885,7 +11173,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11901,7 +11188,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11912,13 +11198,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .effect = EFFECT_EVASION_UP_HIT, .pp = 10, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, - .zMovePower = 160, #else .effect = EFFECT_ALWAYS_CRIT, .power = 50, .pp = 15, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 100, #endif .type = TYPE_ELECTRIC, .accuracy = 100, @@ -11945,7 +11229,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_BOTH, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11965,7 +11248,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11985,7 +11267,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11996,12 +11277,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 20, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .argument = 100, // restores 100% HP instead of 50% HP - .zMovePower = 120, #else .power = 90, .pp = 15, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 175, #endif .effect = EFFECT_ABSORB, .type = TYPE_WATER, @@ -12019,12 +11298,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 60, .pp = 20, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 120, #else .power = 90, .pp = 15, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 175, #endif .effect = EFFECT_PARALYZE_HIT, .type = TYPE_ELECTRIC, @@ -12042,12 +11319,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 60, .pp = 20, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THAW_USER, - .zMovePower = 120, #else .power = 90, .pp = 15, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THAW_USER, - .zMovePower = 175, #endif .effect = EFFECT_BURN_HIT, .type = TYPE_FIRE, @@ -12065,12 +11340,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 80, .accuracy = 95, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 160, #else .power = 90, .accuracy = 100, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 175, #endif .effect = EFFECT_GLITZY_GLOW, .type = TYPE_PSYCHIC, @@ -12088,12 +11361,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 80, .accuracy = 95, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 160, #else .power = 90, .accuracy = 100, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 175, #endif .effect = EFFECT_BADDY_BAD, .type = TYPE_DARK, @@ -12112,13 +11383,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 90, .pp = 10, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 180, #else .power = 90, .accuracy = 100, .pp = 15, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 175, #endif .effect = EFFECT_SAPPY_SEED, .type = TYPE_GRASS, @@ -12136,13 +11405,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 90, .pp = 10, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 180, #else .power = 90, .accuracy = 100, .pp = 15, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 175, #endif .effect = EFFECT_FREEZY_FROST, .type = TYPE_ICE, @@ -12160,13 +11427,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 85, .pp = 5, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 190, #else .power = 90, .accuracy = 100, .pp = 15, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - .zMovePower = 175, #endif .effect = EFFECT_SPARKLY_SWIRL, .type = TYPE_FAIRY, @@ -12193,7 +11458,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12213,7 +11477,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12229,7 +11492,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12245,7 +11507,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12261,7 +11522,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12277,7 +11537,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12293,7 +11552,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12309,7 +11567,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12326,7 +11583,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, .argument = TYPE_PSYCHIC, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12342,7 +11598,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12358,7 +11613,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12374,7 +11628,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12390,7 +11643,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12406,7 +11658,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12422,7 +11673,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12438,7 +11688,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12454,7 +11703,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12470,7 +11718,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12486,7 +11733,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12502,7 +11748,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12518,7 +11763,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12534,7 +11778,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12550,7 +11793,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12566,7 +11808,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 185, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12582,7 +11823,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12598,7 +11838,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12614,7 +11853,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12630,7 +11868,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12646,7 +11883,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12662,7 +11898,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12678,7 +11913,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12694,7 +11928,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12710,7 +11943,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12726,7 +11958,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12742,7 +11973,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12758,7 +11988,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12774,7 +12003,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12790,7 +12018,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12806,7 +12033,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 195, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12822,7 +12048,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12838,7 +12063,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12854,7 +12078,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12870,7 +12093,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12890,7 +12112,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12906,7 +12127,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12922,7 +12142,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12938,7 +12157,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12954,7 +12172,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12970,7 +12187,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12986,7 +12202,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 185, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13002,7 +12217,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13018,7 +12232,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13034,7 +12247,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13050,7 +12262,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13066,7 +12277,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13082,7 +12292,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13097,7 +12306,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13117,7 +12325,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13131,9 +12338,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_THREE_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13149,7 +12355,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13165,14 +12370,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_FREEZING_GLARE] = { .power = 90, - .effect = EFFECT_FREEZE_HIT, + #if B_USE_FROSTBITE == TRUE + .effect = EFFECT_FROSTBITE_HIT, + #else + .effect = EFFECT_FREEZE_HIT, + #endif .type = TYPE_PSYCHIC, .accuracy = 100, .pp = 10, @@ -13181,7 +12389,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13197,7 +12404,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13213,7 +12419,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13233,7 +12438,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 195, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13249,7 +12453,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13265,7 +12468,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13276,16 +12478,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 60, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_DIRE_CLAW, + .effect = EFFECT_DIRE_CLAW, .type = TYPE_POISON, .accuracy = 100, .pp = 15, - .secondaryEffectChance = 0, + .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13301,7 +12502,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13317,24 +12517,23 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_STONE_AXE] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_STONE_AXE, + .effect = EFFECT_HIT_SET_ENTRY_HAZARD, .power = 65, .type = TYPE_ROCK, .accuracy = 90, .pp = 15, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, + .argument = MOVE_EFFECT_STEALTH_ROCK, }, [MOVE_SPRINGTIDE_STORM] = @@ -13353,7 +12552,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13369,7 +12567,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13389,7 +12586,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13409,7 +12605,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13429,7 +12624,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13445,7 +12639,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13461,7 +12654,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13481,23 +12673,25 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_BARB_BARRAGE] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_BARB_BARRAGE, + .effect = EFFECT_BARB_BARRAGE, .power = 60, .type = TYPE_POISON, .accuracy = 100, - .pp = 15, - .secondaryEffectChance = 0, + #if B_UPDATED_MOVE_DATA >= GEN_9 + .pp = 10, + #else + .pp = 15, + #endif + .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13505,19 +12699,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_9 .power = 80, + .accuracy = 100, #else .power = 75, + .accuracy = 90, #endif .effect = EFFECT_SPEED_UP_HIT, .type = TYPE_PSYCHIC, - .accuracy = 90, .pp = 10, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13537,7 +12731,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13553,7 +12746,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13573,7 +12765,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13589,24 +12780,23 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_CEASELESS_EDGE] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_CEASELESS_EDGE, + .effect = EFFECT_HIT_SET_ENTRY_HAZARD, .power = 65, .type = TYPE_DARK, .accuracy = 90, .pp = 15, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, + .argument = MOVE_EFFECT_SPIKES, }, [MOVE_BLEAKWIND_STORM] = @@ -13626,7 +12816,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13647,7 +12836,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13668,7 +12856,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13684,7 +12871,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13700,7 +12886,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13716,7 +12901,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13732,7 +12916,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE }, @@ -13748,7 +12931,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE }, @@ -13764,7 +12946,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE }, @@ -13780,7 +12961,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE }, @@ -13796,7 +12976,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE }, @@ -13812,7 +12991,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, // The datamine master sheet mentions uncopiable by Metronome but that sounds odd? not yet implemented }, @@ -13829,7 +13007,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, // The datamine master sheet mentions uncopiable by Metronome but that sounds odd? not yet implemented }, @@ -13846,7 +13023,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE }, @@ -13862,7 +13038,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 40, .zMoveEffect = Z_EFFECT_NONE, //Supposedly uncallable by Metronome? (if so, needs implementation) }, @@ -13879,7 +13054,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, .argument = 1, // Remove the active field terrain if there is one. }, @@ -13896,13 +13070,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE }, [MOVE_REVIVAL_BLESSING] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_REVIVAL_BLESSING + .effect = EFFECT_REVIVAL_BLESSING, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, @@ -13912,7 +13085,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, // Uncallable by Metronome (to be implemented) }, @@ -13929,14 +13101,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 80, .zMoveEffect = Z_EFFECT_NONE, // Supposedly uncallable by Metronome, but dubious }, [MOVE_TRIPLE_DIVE] = { - .effect = EFFECT_TRIPLE_KICK, + .effect = EFFECT_HIT, .power = 30, .type = TYPE_WATER, .accuracy = 95, @@ -13944,9 +13115,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THREE_STRIKES, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13962,7 +13132,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 60, .zMoveEffect = Z_EFFECT_NONE }, @@ -13978,7 +13147,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, // TO VERIFY .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, // Supposedly uncallable by Metronome (unimplemented) }, @@ -13995,7 +13163,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RECOVER_HP, // Supposedly uncallable by Metronome (unimplemented) }, @@ -14012,7 +13179,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14028,7 +13194,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14044,7 +13209,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14060,7 +13224,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DANCE | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14076,7 +13239,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // TO VERIFY .split = SPLIT_PHYSICAL, - .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, // Uncallable by Metronome (to be implemented) }, @@ -14093,7 +13255,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, // Uncallable by Metronome (to be implemented) }, @@ -14110,7 +13271,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, // Uncallable by Metronome (to be implemented) }, @@ -14127,7 +13287,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, // Uncallable by Metronome (to be implemented) }, @@ -14144,7 +13303,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, // Uncallable by Metronome (to be implemented) }, @@ -14161,7 +13319,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, // Uncallable by Metronome (to be implemented) }, @@ -14178,7 +13335,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, // Supposedly uncallable by Metronome? (to be implemented) }, @@ -14195,14 +13351,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, // Supposedly uncallable by Metronome? (to be implemented) }, [MOVE_SNOWSCAPE] = { - .effect = EFFECT_HAIL, + .effect = EFFECT_SNOWSCAPE, .power = 0, .type = TYPE_ICE, .accuracy = 0, @@ -14212,7 +13367,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, - .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, // Currently an exact copy of Hail until we figure out what to do with it }, @@ -14229,7 +13383,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14245,7 +13398,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14261,7 +13413,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14277,7 +13428,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14293,7 +13443,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_SPECIAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14309,7 +13458,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14325,7 +13473,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14341,7 +13488,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14357,7 +13503,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE }, @@ -14373,7 +13518,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14404,7 +13548,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, - .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14420,7 +13563,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE }, @@ -14436,7 +13578,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE }, @@ -14452,7 +13593,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE }, @@ -14468,7 +13608,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE }, @@ -14484,10 +13623,39 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE }, + [MOVE_PSYBLADE] = + { + .effect = EFFECT_PSYBLADE, + .power = 80, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, + .split = SPLIT_PHYSICAL, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_HYDRO_STEAM] = + { + .effect = EFFECT_HYDRO_STEAM, + .power = 80, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + }, + // Z-Moves [MOVE_BREAKNECK_BLITZ] = { @@ -14500,7 +13668,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, //determined from move type .zMoveEffect = 0 }, @@ -14515,7 +13682,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14530,7 +13696,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14545,7 +13710,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14560,7 +13724,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14575,7 +13738,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14590,7 +13752,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14605,7 +13766,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14620,7 +13780,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14635,7 +13794,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14650,7 +13808,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14665,7 +13822,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14680,7 +13836,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14695,7 +13850,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14710,7 +13864,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14725,7 +13878,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14740,7 +13892,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14755,7 +13906,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14770,7 +13920,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14785,7 +13934,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_HIGH_CRIT, - .zMovePower = 0, .split = SPLIT_SPECIAL, .zMoveEffect = 0 }, @@ -14800,7 +13948,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_SPECIAL, .zMoveEffect = 0 }, @@ -14815,7 +13962,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_STATUS, .zMoveEffect = 0 }, @@ -14830,7 +13976,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14845,7 +13990,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_SPECIAL, .argument = 0, // Set Psychic Terrain. If there's a different field terrain active, overwrite it. .zMoveEffect = 0 @@ -14861,7 +14005,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14876,7 +14019,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14891,7 +14033,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_SPECIAL, .zMoveEffect = 0 }, @@ -14906,7 +14047,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .argument = 1, // Remove the active field terrain if there is one. .zMoveEffect = 0 @@ -14922,7 +14062,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14937,7 +14076,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_SOUND, - .zMovePower = 0, .split = SPLIT_SPECIAL, .zMoveEffect = 0 }, @@ -14952,7 +14090,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_SPECIAL, .zMoveEffect = 0 }, @@ -14967,7 +14104,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, @@ -14982,7 +14118,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_SPECIAL, .zMoveEffect = 0 }, @@ -14997,7 +14132,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_SPECIAL, .zMoveEffect = 0 }, @@ -15012,7 +14146,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, - .zMovePower = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h index 2de44b348636..3d633a2562b8 100644 --- a/src/data/contest_moves.h +++ b/src/data/contest_moves.h @@ -6062,6 +6062,10 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = [MOVE_COMBAT_TORQUE] = {0}, // TODO [MOVE_MAGICAL_TORQUE] = {0}, // TODO + + [MOVE_PSYBLADE] = {0}, // TODO + + [MOVE_HYDRO_STEAM] = {0}, // TODO }; const struct ContestEffect gContestEffects[] = diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h index 35ce13db259e..9ef79b2c9256 100644 --- a/src/data/graphics/items.h +++ b/src/data/graphics/items.h @@ -645,6 +645,15 @@ const u32 gItemIconPalette_RibbonSweet[] = INCBIN_U32("graphics/items/icon_palet const u32 gItemIcon_Everstone[] = INCBIN_U32("graphics/items/icons/everstone.4bpp.lz"); const u32 gItemIconPalette_Everstone[] = INCBIN_U32("graphics/items/icon_palettes/everstone.gbapal.lz"); +const u32 gItemIcon_BlackAugurite[] = INCBIN_U32("graphics/items/icons/black_augurite.4bpp.lz"); +const u32 gItemIconPalette_BlackAugurite[] = INCBIN_U32("graphics/items/icon_palettes/black_augurite.gbapal.lz"); + +const u32 gItemIcon_LinkingCord[] = INCBIN_U32("graphics/items/icons/linking_cord.4bpp.lz"); +const u32 gItemIconPalette_LinkingCord[] = INCBIN_U32("graphics/items/icon_palettes/linking_cord.gbapal.lz"); + +const u32 gItemIcon_PeatBlock[] = INCBIN_U32("graphics/items/icons/peat_block.4bpp.lz"); +const u32 gItemIconPalette_PeatBlock[] = INCBIN_U32("graphics/items/icon_palettes/peat_block.gbapal.lz"); + // Nectars const u32 gItemIcon_RedNectar[] = INCBIN_U32("graphics/items/icons/red_nectar.4bpp.lz"); @@ -1931,17 +1940,64 @@ const u32 gItemIconPalette_Ruby[] = INCBIN_U32("graphics/items/icon_palettes/rub const u32 gItemIconPalette_Sapphire[] = INCBIN_U32("graphics/items/icon_palettes/sapphire.gbapal.lz"); -//const u32 gItemIcon_AbilityShield[] = INCBIN_U32("graphics/items/icons/ability_shield.4bpp.lz"); -//const u32 gItemIconPalette_AbilityShield[] = INCBIN_U32("graphics/items/icon_palettes/ability_shield.gbapal.lz"); +const u32 gItemIcon_AbilityShield[] = INCBIN_U32("graphics/items/icons/ability_shield.4bpp.lz"); +const u32 gItemIconPalette_AbilityShield[] = INCBIN_U32("graphics/items/icon_palettes/ability_shield.gbapal.lz"); //const u32 gItemIcon_ClearAmulet[] = INCBIN_U32("graphics/items/icons/clear_amulet.4bpp.lz"); //const u32 gItemIconPalette_ClearAmulet[] = INCBIN_U32("graphics/items/icon_palettes/clear_amulet.gbapal.lz"); -//const u32 gItemIcon_PunchingGlove[] = INCBIN_U32("graphics/items/icons/punching_glove.4bpp.lz"); -//const u32 gItemIconPalette_PunchingGlove[] = INCBIN_U32("graphics/items/icon_palettes/punching_glove.gbapal.lz"); +const u32 gItemIcon_PunchingGlove[] = INCBIN_U32("graphics/items/icons/punching_glove.4bpp.lz"); +const u32 gItemIconPalette_PunchingGlove[] = INCBIN_U32("graphics/items/icon_palettes/punching_glove.gbapal.lz"); + +const u32 gItemIcon_CovertCloak[] = INCBIN_U32("graphics/items/icons/covert_cloak.4bpp.lz"); +const u32 gItemIconPalette_CovertCloak[] = INCBIN_U32("graphics/items/icon_palettes/covert_cloak.gbapal.lz"); + +const u32 gItemIcon_LoadedDice[] = INCBIN_U32("graphics/items/icons/loaded_dice.4bpp.lz"); +const u32 gItemIconPalette_LoadedDice[] = INCBIN_U32("graphics/items/icon_palettes/loaded_dice.gbapal.lz"); + +const u32 gItemIcon_AuspiciousArmor[] = INCBIN_U32("graphics/items/icons/auspicious_armor.4bpp.lz"); +const u32 gItemIconPalette_AuspiciousArmor[] = INCBIN_U32("graphics/items/icon_palettes/auspicious_armor.gbapal.lz"); + +const u32 gItemIcon_BigBambooShoot[] = INCBIN_U32("graphics/items/icons/big_bamboo_shoot.4bpp.lz"); +const u32 gItemIconPalette_BigBambooShoot[] = INCBIN_U32("graphics/items/icon_palettes/big_bamboo_shoot.gbapal.lz"); + +const u32 gItemIcon_BoosterEnergy[] = INCBIN_U32("graphics/items/icons/booster_energy.4bpp.lz"); +const u32 gItemIconPalette_BoosterEnergy[] = INCBIN_U32("graphics/items/icon_palettes/booster_energy.gbapal.lz"); + +const u32 gItemIcon_GimmighoulCoin[] = INCBIN_U32("graphics/items/icons/gimmighoul_coin.4bpp.lz"); +const u32 gItemIconPalette_GimmighoulCoin[] = INCBIN_U32("graphics/items/icon_palettes/gimmighoul_coin.gbapal.lz"); + +const u32 gItemIcon_LeadersCrest[] = INCBIN_U32("graphics/items/icons/leaders_crest.4bpp.lz"); +const u32 gItemIconPalette_LeadersCrest[] = INCBIN_U32("graphics/items/icon_palettes/leaders_crest.gbapal.lz"); + +const u32 gItemIcon_MaliciousArmor[] = INCBIN_U32("graphics/items/icons/malicious_armor.4bpp.lz"); +const u32 gItemIconPalette_MaliciousArmor[] = INCBIN_U32("graphics/items/icon_palettes/malicious_armor.gbapal.lz"); + +const u32 gItemIcon_MirrorHerb[] = INCBIN_U32("graphics/items/icons/mirror_herb.4bpp.lz"); +const u32 gItemIconPalette_MirrorHerb[] = INCBIN_U32("graphics/items/icon_palettes/mirror_herb.gbapal.lz"); + +const u32 gItemIcon_ScrollOfDarkness[] = INCBIN_U32("graphics/items/icons/scroll_of_darkness.4bpp.lz"); +const u32 gItemIconPalette_ScrollOfDarkness[] = INCBIN_U32("graphics/items/icon_palettes/scroll_of_darkness.gbapal.lz"); + +const u32 gItemIcon_ScrollOfWaters[] = INCBIN_U32("graphics/items/icons/scroll_of_waters.4bpp.lz"); +const u32 gItemIconPalette_ScrollOfWaters[] = INCBIN_U32("graphics/items/icon_palettes/scroll_of_waters.gbapal.lz"); + +const u32 gItemIcon_TeraOrb[] = INCBIN_U32("graphics/items/icons/tera_orb.4bpp.lz"); +const u32 gItemIconPalette_TeraOrb[] = INCBIN_U32("graphics/items/icon_palettes/tera_orb.gbapal.lz"); + +const u32 gItemIcon_TinyBambooShoot[] = INCBIN_U32("graphics/items/icons/tiny_bamboo_shoot.4bpp.lz"); +const u32 gItemIconPalette_TinyBambooShoot[] = INCBIN_U32("graphics/items/icon_palettes/tiny_bamboo_shoot.gbapal.lz"); + +// Tera Shards here + +const u32 gItemIcon_AdamantCrystal[] = INCBIN_U32("graphics/items/icons/adamant_crystal.4bpp.lz"); +const u32 gItemIconPalette_AdamantCrystal[] = INCBIN_U32("graphics/items/icon_palettes/adamant_crystal.gbapal.lz"); + +const u32 gItemIcon_GriseousCore[] = INCBIN_U32("graphics/items/icons/griseous_core.4bpp.lz"); +const u32 gItemIconPalette_GriseousCore[] = INCBIN_U32("graphics/items/icon_palettes/griseous_core.gbapal.lz"); -//const u32 gItemIcon_CovertCloak[] = INCBIN_U32("graphics/items/icons/covert_cloak.4bpp.lz"); -//const u32 gItemIconPalette_CovertCloak[] = INCBIN_U32("graphics/items/icon_palettes/covert_cloak.gbapal.lz"); +const u32 gItemIcon_LustrousGlobe[] = INCBIN_U32("graphics/items/icons/lustrous_globe.4bpp.lz"); +const u32 gItemIconPalette_LustrousGlobe[] = INCBIN_U32("graphics/items/icon_palettes/lustrous_globe.gbapal.lz"); -//const u32 gItemIcon_LoadedDice[] = INCBIN_U32("graphics/items/icons/loaded_dice.4bpp.lz"); -//const u32 gItemIconPalette_LoadedDice[] = INCBIN_U32("graphics/items/icon_palettes/loaded_dice.gbapal.lz"); +const u32 gItemIcon_BerserkGene[] = INCBIN_U32("graphics/items/icons/berserk_gene.4bpp.lz"); +const u32 gItemIconPalette_BerserkGene[] = INCBIN_U32("graphics/items/icon_palettes/berserk_gene.gbapal.lz"); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 385460228b96..56e45283afca 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -800,9 +800,9 @@ const u32 gMonFrontPic_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/front.4b const u32 gMonFrontPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/front.4bpp.lz"); const u32 gMonFrontPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/front.4bpp.lz"); const u32 gMonFrontPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/front.4bpp.lz"); -const u32 gMonFrontPic_Jangmoo[] = INCBIN_U32("graphics/pokemon/jangmo_o/front.4bpp.lz"); -const u32 gMonFrontPic_Hakamoo[] = INCBIN_U32("graphics/pokemon/hakamo_o/front.4bpp.lz"); -const u32 gMonFrontPic_Kommoo[] = INCBIN_U32("graphics/pokemon/kommo_o/front.4bpp.lz"); +const u32 gMonFrontPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/front.4bpp.lz"); +const u32 gMonFrontPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/front.4bpp.lz"); +const u32 gMonFrontPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/front.4bpp.lz"); const u32 gMonFrontPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/anim_front.4bpp.lz"); const u32 gMonFrontPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/anim_front.4bpp.lz"); const u32 gMonFrontPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/anim_front.4bpp.lz"); @@ -919,14 +919,13 @@ const u32 gMonFrontPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/fron const u32 gMonFrontPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/front.4bpp.lz"); const u32 gMonFrontPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/front.4bpp.lz"); const u32 gMonFrontPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/front.4bpp.lz"); -//const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); +const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); -//const u32 gMonFrontPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); -//const u32 gMonFrontPic_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/frontf.4bpp.lz"); -//const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); +const u32 gMonFrontPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); +const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); const u32 gMonFrontPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/front.4bpp.lz"); -//const u32 gMonFrontPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); +const u32 gMonFrontPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); #endif const u32 gMonFrontPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/front.4bpp.lz"); const u32 gMonFrontPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/front.4bpp.lz"); @@ -1031,7 +1030,7 @@ const u32 gMonFrontPic_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlo const u32 gMonFrontPic_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/front.4bpp.lz"); const u32 gMonFrontPic_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/front.4bpp.lz"); #if P_GEN_5_POKEMON == TRUE -//const u32 gMonFrontPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/front.4bpp.lz"); +const u32 gMonFrontPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/front.4bpp.lz"); const u32 gMonFrontPic_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/front.4bpp.lz"); const u32 gMonFrontPic_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/front.4bpp.lz"); const u32 gMonFrontPic_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/front.4bpp.lz"); @@ -1043,7 +1042,7 @@ const u32 gMonFrontPic_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/his const u32 gMonFrontPic_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/front.4bpp.lz"); #endif #if P_GEN_7_POKEMON == TRUE -//const u32 gMonFrontPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/front.4bpp.lz"); +const u32 gMonFrontPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/front.4bpp.lz"); #endif const u32 gMonFrontPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/front.4bpp.lz"); const u32 gMonFrontPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/front.4bpp.lz"); @@ -1207,7 +1206,8 @@ const u32 gMonFrontPic_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/ const u32 gMonFrontPic_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/front.4bpp.lz"); const u32 gMonFrontPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/front.4bpp.lz"); const u32 gMonFrontPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/front.4bpp.lz"); -//const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); +const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); +const u32 gMonFrontPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/front.4bpp.lz"); #endif const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz"); @@ -2012,9 +2012,9 @@ const u32 gMonBackPic_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp const u32 gMonBackPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/back.4bpp.lz"); const u32 gMonBackPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/back.4bpp.lz"); const u32 gMonBackPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/back.4bpp.lz"); -const u32 gMonBackPic_Jangmoo[] = INCBIN_U32("graphics/pokemon/jangmo_o/back.4bpp.lz"); -const u32 gMonBackPic_Hakamoo[] = INCBIN_U32("graphics/pokemon/hakamo_o/back.4bpp.lz"); -const u32 gMonBackPic_Kommoo[] = INCBIN_U32("graphics/pokemon/kommo_o/back.4bpp.lz"); +const u32 gMonBackPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/back.4bpp.lz"); +const u32 gMonBackPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/back.4bpp.lz"); +const u32 gMonBackPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/back.4bpp.lz"); const u32 gMonBackPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/back.4bpp.lz"); const u32 gMonBackPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/back.4bpp.lz"); const u32 gMonBackPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/back.4bpp.lz"); @@ -2131,14 +2131,13 @@ const u32 gMonBackPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/back. const u32 gMonBackPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/back.4bpp.lz"); const u32 gMonBackPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/back.4bpp.lz"); const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp.lz"); -//const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); +const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); -//const u32 gMonBackPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); -//const u32 gMonBackPic_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/backf.4bpp.lz"); -//const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); +const u32 gMonBackPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); +const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); const u32 gMonBackPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/back.4bpp.lz"); -//const u32 gMonBackPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); +const u32 gMonBackPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); #endif const u32 gMonBackPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/back.4bpp.lz"); const u32 gMonBackPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/back.4bpp.lz"); @@ -2243,7 +2242,7 @@ const u32 gMonBackPic_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlos const u32 gMonBackPic_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/back.4bpp.lz"); const u32 gMonBackPic_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/back.4bpp.lz"); #if P_GEN_5_POKEMON == TRUE -//const u32 gMonBackPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/back.4bpp.lz"); +const u32 gMonBackPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/back.4bpp.lz"); const u32 gMonBackPic_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/back.4bpp.lz"); const u32 gMonBackPic_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/back.4bpp.lz"); const u32 gMonBackPic_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/back.4bpp.lz"); @@ -2255,7 +2254,7 @@ const u32 gMonBackPic_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisu const u32 gMonBackPic_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/back.4bpp.lz"); #endif #if P_GEN_7_POKEMON == TRUE -//const u32 gMonBackPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/back.4bpp.lz"); +const u32 gMonBackPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/back.4bpp.lz"); #endif const u32 gMonBackPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/back.4bpp.lz"); const u32 gMonBackPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/back.4bpp.lz"); @@ -2419,7 +2418,8 @@ const u32 gMonBackPic_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/u const u32 gMonBackPic_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/back.4bpp.lz"); const u32 gMonBackPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/back.4bpp.lz"); const u32 gMonBackPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/back.4bpp.lz"); -//const u32 gMonBackPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/back.4bpp.lz"); +const u32 gMonBackPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/back.4bpp.lz"); +const u32 gMonBackPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/back.4bpp.lz"); #endif const u32 gMonPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/normal.gbapal.lz"); @@ -3218,9 +3218,9 @@ const u32 gMonPalette_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/normal.gb const u32 gMonPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/normal.gbapal.lz"); const u32 gMonPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/normal.gbapal.lz"); const u32 gMonPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/normal.gbapal.lz"); -const u32 gMonPalette_Jangmoo[] = INCBIN_U32("graphics/pokemon/jangmo_o/normal.gbapal.lz"); -const u32 gMonPalette_Hakamoo[] = INCBIN_U32("graphics/pokemon/hakamo_o/normal.gbapal.lz"); -const u32 gMonPalette_Kommoo[] = INCBIN_U32("graphics/pokemon/kommo_o/normal.gbapal.lz"); +const u32 gMonPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/normal.gbapal.lz"); +const u32 gMonPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/normal.gbapal.lz"); +const u32 gMonPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/normal.gbapal.lz"); const u32 gMonPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/normal.gbapal.lz"); const u32 gMonPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/normal.gbapal.lz"); const u32 gMonPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/normal.gbapal.lz"); @@ -3337,14 +3337,13 @@ const u32 gMonPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/norma const u32 gMonPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/normal.gbapal.lz"); const u32 gMonPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/normal.gbapal.lz"); const u32 gMonPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/normal.gbapal.lz"); -//const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); +const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); const u32 gMonPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/normal.gbapal.lz"); -//const u32 gMonPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); -//const u32 gMonPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/normalf.gbapal.lz"); -//const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); +const u32 gMonPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); +const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); const u32 gMonPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/normal.gbapal.lz"); -//const u32 gMonPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); +const u32 gMonPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); #endif const u32 gMonPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/normal.gbapal.lz"); const u32 gMonPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/normal.gbapal.lz"); @@ -3449,7 +3448,7 @@ const u32 gMonPalette_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlos const u32 gMonPalette_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/normal.gbapal.lz"); const u32 gMonPalette_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/normal.gbapal.lz"); #if P_GEN_5_POKEMON == TRUE -//const u32 gMonPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/normal.gbapal.lz"); +const u32 gMonPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/normal.gbapal.lz"); const u32 gMonPalette_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/normal.gbapal.lz"); const u32 gMonPalette_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/normal.gbapal.lz"); const u32 gMonPalette_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/normal.gbapal.lz"); @@ -3461,7 +3460,7 @@ const u32 gMonPalette_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisu const u32 gMonPalette_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/normal.gbapal.lz"); #endif #if P_GEN_7_POKEMON == TRUE -//const u32 gMonPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/normal.gbapal.lz"); +const u32 gMonPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/normal.gbapal.lz"); #endif const u32 gMonPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/normal.gbapal.lz"); const u32 gMonPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/normal.gbapal.lz"); @@ -3651,7 +3650,8 @@ const u32 gMonPalette_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/u const u32 gMonPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/normal.gbapal.lz"); const u32 gMonPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/normal.gbapal.lz"); const u32 gMonPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/normal.gbapal.lz"); -//const u32 gMonPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/normal.gbapal.lz"); +const u32 gMonPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/normal.gbapal.lz"); +const u32 gMonPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/normal.gbapal.lz"); #endif const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.lz"); @@ -4451,9 +4451,9 @@ const u32 gMonShinyPalette_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/shin const u32 gMonShinyPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Jangmoo[] = INCBIN_U32("graphics/pokemon/jangmo_o/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hakamoo[] = INCBIN_U32("graphics/pokemon/hakamo_o/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kommoo[] = INCBIN_U32("graphics/pokemon/kommo_o/shiny.gbapal.lz"); +const u32 gMonShinyPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/shiny.gbapal.lz"); +const u32 gMonShinyPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/shiny.gbapal.lz"); +const u32 gMonShinyPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/shiny.gbapal.lz"); const u32 gMonShinyPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/shiny.gbapal.lz"); const u32 gMonShinyPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/shiny.gbapal.lz"); const u32 gMonShinyPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/shiny.gbapal.lz"); @@ -4570,14 +4570,13 @@ const u32 gMonShinyPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/ const u32 gMonShinyPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/shiny.gbapal.lz"); const u32 gMonShinyPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/shiny.gbapal.lz"); const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shiny.gbapal.lz"); -//const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); +const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); -//const u32 gMonShinyPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); -//const u32 gMonShinyPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/shinyf.gbapal.lz"); -//const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); +const u32 gMonShinyPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); +const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); -//const u32 gMonShinyPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); #endif const u32 gMonShinyPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/shiny.gbapal.lz"); const u32 gMonShinyPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/shiny.gbapal.lz"); @@ -4682,7 +4681,7 @@ const u32 gMonShinyPalette_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/ty const u32 gMonShinyPalette_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/shiny.gbapal.lz"); const u32 gMonShinyPalette_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/shiny.gbapal.lz"); #if P_GEN_5_POKEMON == TRUE -//const u32 gMonShinyPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/shiny.gbapal.lz"); const u32 gMonShinyPalette_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/shiny.gbapal.lz"); const u32 gMonShinyPalette_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/shiny.gbapal.lz"); const u32 gMonShinyPalette_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/shiny.gbapal.lz"); @@ -4694,7 +4693,7 @@ const u32 gMonShinyPalette_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra const u32 gMonShinyPalette_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/shiny.gbapal.lz"); #endif #if P_GEN_7_POKEMON == TRUE -//const u32 gMonShinyPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/shiny.gbapal.lz"); #endif const u32 gMonShinyPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/shiny.gbapal.lz"); const u32 gMonShinyPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/shiny.gbapal.lz"); @@ -4878,7 +4877,8 @@ const u32 gMonShinyPalette_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/poke const u32 gMonShinyPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/shiny.gbapal.lz"); const u32 gMonShinyPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/shiny.gbapal.lz"); const u32 gMonShinyPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/shiny.gbapal.lz"); -//const u32 gMonShinyPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/shiny.gbapal.lz"); #endif const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp"); @@ -5678,9 +5678,9 @@ const u8 gMonIcon_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); const u8 gMonIcon_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/icon.4bpp"); const u8 gMonIcon_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/icon.4bpp"); const u8 gMonIcon_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/icon.4bpp"); -const u8 gMonIcon_Jangmoo[] = INCBIN_U8("graphics/pokemon/jangmo_o/icon.4bpp"); -const u8 gMonIcon_Hakamoo[] = INCBIN_U8("graphics/pokemon/hakamo_o/icon.4bpp"); -const u8 gMonIcon_Kommoo[] = INCBIN_U8("graphics/pokemon/kommo_o/icon.4bpp"); +const u8 gMonIcon_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/icon.4bpp"); +const u8 gMonIcon_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/icon.4bpp"); +const u8 gMonIcon_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/icon.4bpp"); const u8 gMonIcon_TapuKoko[] = INCBIN_U8("graphics/pokemon/tapu_koko/icon.4bpp"); const u8 gMonIcon_TapuLele[] = INCBIN_U8("graphics/pokemon/tapu_lele/icon.4bpp"); const u8 gMonIcon_TapuBulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/icon.4bpp"); @@ -5801,7 +5801,6 @@ const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); const u8 gMonIcon_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); -const u8 gMonIcon_BasculegionF[] = INCBIN_U8("graphics/pokemon/basculegion/iconf.4bpp"); const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); const u8 gMonIcon_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); @@ -6099,6 +6098,7 @@ const u8 gMonIcon_ZarudeDada[] = INCBIN_U8("graphics/pokemon/zarude/dada/icon.4b const u8 gMonIcon_CalyrexIceRider[] = INCBIN_U8("graphics/pokemon/calyrex/ice_rider/icon.4bpp"); const u8 gMonIcon_CalyrexShadowRider[] = INCBIN_U8("graphics/pokemon/calyrex/shadow_rider/icon.4bpp"); const u8 gMonIcon_EnamorusTherian[] = INCBIN_U8("graphics/pokemon/enamorus/therian/icon.4bpp"); +const u8 gMonIcon_BasculegionFemale[] = INCBIN_U8("graphics/pokemon/basculegion/female/icon.4bpp"); #endif const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); @@ -6501,7 +6501,7 @@ const u8 gMonFootprint_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/footpri const u8 gMonFootprint_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/footprint.1bpp"); const u8 gMonFootprint_Starly[] = INCBIN_U8("graphics/pokemon/starly/footprint.1bpp"); const u8 gMonFootprint_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/footprint.1bpp"); -const u8 gMonFootprint_Staraptor[] = INCBIN_U8("graphics/pokemon/staravia/footprint.1bpp"); +const u8 gMonFootprint_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/footprint.1bpp"); const u8 gMonFootprint_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/footprint.1bpp"); const u8 gMonFootprint_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/footprint.1bpp"); const u8 gMonFootprint_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/footprint.1bpp"); @@ -6891,9 +6891,9 @@ const u8 gMonFootprint_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/footprint const u8 gMonFootprint_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/footprint.1bpp"); const u8 gMonFootprint_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/footprint.1bpp"); const u8 gMonFootprint_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/footprint.1bpp"); -const u8 gMonFootprint_Jangmo_o[] = INCBIN_U8("graphics/pokemon/jangmo_o/footprint.1bpp"); -const u8 gMonFootprint_Hakamo_o[] = INCBIN_U8("graphics/pokemon/hakamo_o/footprint.1bpp"); -const u8 gMonFootprint_Kommo_o[] = INCBIN_U8("graphics/pokemon/kommo_o/footprint.1bpp"); +const u8 gMonFootprint_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/footprint.1bpp"); +const u8 gMonFootprint_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/footprint.1bpp"); +const u8 gMonFootprint_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/footprint.1bpp"); const u8 gMonFootprint_Tapu_Koko[] = INCBIN_U8("graphics/pokemon/tapu_koko/footprint.1bpp"); const u8 gMonFootprint_Tapu_Lele[] = INCBIN_U8("graphics/pokemon/tapu_lele/footprint.1bpp"); const u8 gMonFootprint_Tapu_Bulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/footprint.1bpp"); diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h index 0107b71ab712..05a87828120d 100644 --- a/src/data/item_icon_table.h +++ b/src/data/item_icon_table.h @@ -803,11 +803,47 @@ const u32 *const gItemIconTable[ITEMS_COUNT + 1][2] = [ITEM_TEA] = {gItemIcon_Tea, gItemIconPalette_Tea}, [ITEM_RUBY] = {gItemIcon_Gem, gItemIconPalette_Ruby}, [ITEM_SAPPHIRE] = {gItemIcon_Gem, gItemIconPalette_Sapphire}, - [ITEM_ABILITY_SHIELD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_AbilityShield, gItemIconPalette_AbilityShield}, + [ITEM_ABILITY_SHIELD] = {gItemIcon_AbilityShield, gItemIconPalette_AbilityShield}, [ITEM_CLEAR_AMULET] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_ClearAmulet, gItemIconPalette_ClearAmulet}, - [ITEM_PUNCHING_GLOVE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_PunchingGlove, gItemIconPalette_PunchingGlove}, - [ITEM_COVERT_CLOAK] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_CovertCloak, gItemIconPalette_CovertCloak}, - [ITEM_LOADED_DICE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_LoadedDice, gItemIconPalette_LoadedDice}, + [ITEM_PUNCHING_GLOVE] = {gItemIcon_PunchingGlove, gItemIconPalette_PunchingGlove}, + [ITEM_COVERT_CLOAK] = {gItemIcon_CovertCloak, gItemIconPalette_CovertCloak}, + [ITEM_LOADED_DICE] = {gItemIcon_LoadedDice, gItemIconPalette_LoadedDice}, + [ITEM_AUSPICIOUS_ARMOR] = {gItemIcon_AuspiciousArmor, gItemIconPalette_AuspiciousArmor}, + [ITEM_BOOSTER_ENERGY] = {gItemIcon_BoosterEnergy, gItemIconPalette_BoosterEnergy}, + [ITEM_BIG_BAMBOO_SHOOT] = {gItemIcon_BigBambooShoot, gItemIconPalette_BigBambooShoot}, + [ITEM_GIMMIGHOUL_COIN] = {gItemIcon_GimmighoulCoin, gItemIconPalette_GimmighoulCoin}, + [ITEM_LEADERS_CREST] = {gItemIcon_LeadersCrest, gItemIconPalette_LeadersCrest}, + [ITEM_MALICIOUS_ARMOR] = {gItemIcon_MaliciousArmor, gItemIconPalette_MaliciousArmor}, + [ITEM_MIRROR_HERB] = {gItemIcon_MirrorHerb, gItemIconPalette_MirrorHerb}, + [ITEM_SCROLL_OF_DARKNESS] = {gItemIcon_ScrollOfDarkness, gItemIconPalette_ScrollOfDarkness}, + [ITEM_SCROLL_OF_WATERS] = {gItemIcon_ScrollOfWaters, gItemIconPalette_ScrollOfWaters}, + [ITEM_TERA_ORB] = {gItemIcon_TeraOrb, gItemIconPalette_TeraOrb}, + [ITEM_TINY_BAMBOO_SHOOT] = {gItemIcon_TinyBambooShoot, gItemIconPalette_TinyBambooShoot}, + [ITEM_BUG_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_BugTeraShard, gItemIconPalette_BugTeraShard}, + [ITEM_DARK_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_DarkTeraShard, gItemIconPalette_DarkTeraShard}, + [ITEM_DRAGON_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_DragonTeraShard, gItemIconPalette_DragonTeraShard}, + [ITEM_ELECTRIC_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_ElectricTeraShard, gItemIconPalette_ElectricTeraShard}, + [ITEM_FAIRY_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_FairyTeraShard, gItemIconPalette_FairyTeraShard}, + [ITEM_FIGHTING_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_FightingTeraShard, gItemIconPalette_FightingTeraShard}, + [ITEM_FIRE_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_FireTeraShard, gItemIconPalette_FireTeraShard}, + [ITEM_FLYING_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_FlyingTeraShard, gItemIconPalette_FlyingTeraShard}, + [ITEM_GHOST_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_GhostTeraShard, gItemIconPalette_GhostTeraShard}, + [ITEM_GRASS_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_GrassTeraShard, gItemIconPalette_GrassTeraShard}, + [ITEM_GROUND_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_GroundTeraShard, gItemIconPalette_GroundTeraShard}, + [ITEM_ICE_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_IceTeraShard, gItemIconPalette_IceTeraShard}, + [ITEM_NORMAL_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_NormalTeraShard, gItemIconPalette_NormalTeraShard}, + [ITEM_POISON_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_PoisonTeraShard, gItemIconPalette_PoisonTeraShard}, + [ITEM_PSYCHIC_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_PsychicTeraShard, gItemIconPalette_PsychicTeraShard}, + [ITEM_ROCK_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_RockTeraShard, gItemIconPalette_RockTeraShard}, + [ITEM_STEEL_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_SteelTeraShard, gItemIconPalette_SteelTeraShard}, + [ITEM_WATER_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_WaterTeraShard, gItemIconPalette_WaterTeraShard}, + [ITEM_ADAMANT_CRYSTAL] = {gItemIcon_AdamantCrystal, gItemIconPalette_AdamantCrystal}, + [ITEM_GRISEOUS_CORE] = {gItemIcon_GriseousCore, gItemIconPalette_GriseousCore}, + [ITEM_LUSTROUS_GLOBE] = {gItemIcon_LustrousGlobe, gItemIconPalette_LustrousGlobe}, + [ITEM_BLACK_AUGURITE] = {gItemIcon_BlackAugurite, gItemIconPalette_BlackAugurite}, + [ITEM_LINKING_CORD] = {gItemIcon_LinkingCord, gItemIconPalette_LinkingCord}, + [ITEM_PEAT_BLOCK] = {gItemIcon_PeatBlock, gItemIconPalette_PeatBlock}, + [ITEM_BERSERK_GENE] = {gItemIcon_BerserkGene, gItemIconPalette_BerserkGene}, // Return to field arrow [ITEMS_COUNT] = {gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow}, }; diff --git a/src/data/items.h b/src/data/items.h index 63446913ec83..a309925aad45 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1,3 +1,11 @@ +#if I_USE_EVO_HELD_ITEMS_FROM_BAG == TRUE + #define EVO_HELD_ITEM_TYPE ITEM_USE_PARTY_MENU + #define EVO_HELD_ITEM_FIELD_FUNC ItemUseOutOfBattle_EvolutionStone +#else + #define EVO_HELD_ITEM_TYPE ITEM_USE_BAG_MENU + #define EVO_HELD_ITEM_FIELD_FUNC ItemUseOutOfBattle_CannotUse +#endif + const struct Item gItems[] = { [ITEM_NONE] = @@ -20,9 +28,8 @@ const struct Item gItems[] = .price = 200, .description = sPokeBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_POKE_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_POKE_BALL - FIRST_BALL, }, @@ -33,9 +40,8 @@ const struct Item gItems[] = .price = 600, .description = sGreatBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_GREAT_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_GREAT_BALL - FIRST_BALL, }, @@ -46,9 +52,8 @@ const struct Item gItems[] = .price = 800, .description = sUltraBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_ULTRA_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_ULTRA_BALL - FIRST_BALL, }, @@ -59,9 +64,8 @@ const struct Item gItems[] = .price = 0, .description = sMasterBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_MASTER_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_MASTER_BALL - FIRST_BALL, }, @@ -72,9 +76,8 @@ const struct Item gItems[] = .price = 20, .description = sPremierBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_PREMIER_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_PREMIER_BALL - FIRST_BALL, }, @@ -85,9 +88,8 @@ const struct Item gItems[] = .price = 300, .description = sHealBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_HEAL_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_HEAL_BALL - FIRST_BALL, }, @@ -98,9 +100,8 @@ const struct Item gItems[] = .price = 1000, .description = sNetBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_NET_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_NET_BALL - FIRST_BALL, }, @@ -111,9 +112,8 @@ const struct Item gItems[] = .price = 1000, .description = sNestBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_NEST_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_NEST_BALL - FIRST_BALL, }, @@ -124,9 +124,8 @@ const struct Item gItems[] = .price = 1000, .description = sDiveBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_DIVE_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_DIVE_BALL - FIRST_BALL, }, @@ -137,9 +136,8 @@ const struct Item gItems[] = .price = 1000, .description = sDuskBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_DUSK_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_DUSK_BALL - FIRST_BALL, }, @@ -150,9 +148,8 @@ const struct Item gItems[] = .price = 1000, .description = sTimerBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_TIMER_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_TIMER_BALL - FIRST_BALL, }, @@ -163,9 +160,8 @@ const struct Item gItems[] = .price = 1000, .description = sQuickBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_QUICK_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_QUICK_BALL - FIRST_BALL, }, @@ -176,9 +172,8 @@ const struct Item gItems[] = .price = 1000, .description = sRepeatBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_REPEAT_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_REPEAT_BALL - FIRST_BALL, }, @@ -189,9 +184,8 @@ const struct Item gItems[] = .price = 1000, .description = sLuxuryBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_LUXURY_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_LUXURY_BALL - FIRST_BALL, }, @@ -202,9 +196,8 @@ const struct Item gItems[] = .price = 0, .description = sLevelBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_LEVEL_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_LEVEL_BALL - FIRST_BALL, }, @@ -215,9 +208,8 @@ const struct Item gItems[] = .price = 0, .description = sLureBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_LURE_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_LURE_BALL - FIRST_BALL, }, @@ -228,9 +220,8 @@ const struct Item gItems[] = .price = 0, .description = sMoonBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_MOON_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_MOON_BALL - FIRST_BALL, }, @@ -241,9 +232,8 @@ const struct Item gItems[] = .price = 0, .description = sFriendBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_FRIEND_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_FRIEND_BALL - FIRST_BALL, }, @@ -254,9 +244,8 @@ const struct Item gItems[] = .price = 0, .description = sLoveBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_LOVE_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_LOVE_BALL - FIRST_BALL, }, @@ -267,9 +256,8 @@ const struct Item gItems[] = .price = 0, .description = sFastBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_FAST_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_FAST_BALL - FIRST_BALL, }, @@ -280,9 +268,8 @@ const struct Item gItems[] = .price = 0, .description = sHeavyBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_HEAVY_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_HEAVY_BALL - FIRST_BALL, }, @@ -293,9 +280,8 @@ const struct Item gItems[] = .price = 0, .description = sDreamBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_DREAM_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_DREAM_BALL - FIRST_BALL, }, @@ -306,9 +292,8 @@ const struct Item gItems[] = .price = 0, .description = sSafariBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_SAFARI_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_SAFARI_BALL - FIRST_BALL, }, @@ -319,9 +304,8 @@ const struct Item gItems[] = .price = 0, .description = sSportBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_SPORT_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_SPORT_BALL - FIRST_BALL, }, @@ -332,9 +316,8 @@ const struct Item gItems[] = .price = 0, .description = sParkBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_PARK_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_PARK_BALL - FIRST_BALL, }, @@ -345,9 +328,8 @@ const struct Item gItems[] = .price = 0, .description = sBeastBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_BEAST_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_BEAST_BALL - FIRST_BALL, }, @@ -358,9 +340,8 @@ const struct Item gItems[] = .price = 0, .description = sCherishBallDesc, .pocket = POCKET_POKE_BALLS, - .type = ITEM_CHERISH_BALL - FIRST_BALL, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_PokeBall, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_CHERISH_BALL - FIRST_BALL, }, @@ -376,8 +357,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -391,8 +371,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -406,8 +385,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -421,8 +399,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -436,8 +413,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_HEAL_AND_CURE_STATUS, .flingPower = 30, }, @@ -450,8 +426,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_REVIVE, .flingPower = 30, }, @@ -464,8 +439,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_REVIVE, .flingPower = 30, }, @@ -479,8 +453,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -494,8 +467,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -509,8 +481,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -524,8 +495,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -538,8 +508,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -552,8 +521,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -566,8 +534,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -580,8 +547,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_REVIVE, .flingPower = 30, }, @@ -594,8 +560,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -608,8 +573,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -622,8 +586,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -636,8 +599,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -650,8 +612,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -664,8 +625,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -677,10 +637,9 @@ const struct Item gItems[] = .holdEffectParam = 10, .description = sEtherDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_PARTY_MENU, + .type = ITEM_USE_PARTY_MENU_MOVES, .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_PPRecovery, + .battleUsage = EFFECT_ITEM_RESTORE_PP, .flingPower = 30, }, @@ -692,10 +651,9 @@ const struct Item gItems[] = .holdEffectParam = 255, .description = sMaxEtherDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_PARTY_MENU, + .type = ITEM_USE_PARTY_MENU_MOVES, .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_PPRecovery, + .battleUsage = EFFECT_ITEM_RESTORE_PP, .flingPower = 30, }, @@ -709,8 +667,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_PPRecovery, + .battleUsage = EFFECT_ITEM_RESTORE_PP, .flingPower = 30, }, @@ -724,8 +681,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_PPRecovery, + .battleUsage = EFFECT_ITEM_RESTORE_PP, .flingPower = 30, }, @@ -740,8 +696,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -767,8 +722,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 30, }, @@ -781,8 +735,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_REVIVE, .flingPower = 30, }, @@ -797,8 +750,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -811,8 +763,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -825,8 +776,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -839,8 +789,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -853,8 +802,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -867,8 +815,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -881,8 +828,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -895,8 +841,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -1454,8 +1399,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -1468,8 +1412,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -1482,8 +1425,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, }, @@ -1618,17 +1560,19 @@ const struct Item gItems[] = // X Items +#define X_ITEM_STAGES (B_X_ITEMS_BUFF >= GEN_7) ? 2 : 1 + [ITEM_X_ATTACK] = { .name = _("X Attack"), .itemId = ITEM_X_ATTACK, .price = 1000, + .holdEffectParam = X_ITEM_STAGES, .description = sXAttackDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, + .battleUsage = EFFECT_ITEM_INCREASE_STAT, .flingPower = 30, }, @@ -1637,12 +1581,12 @@ const struct Item gItems[] = .name = _("X Defense"), .itemId = ITEM_X_DEFENSE, .price = 2000, + .holdEffectParam = X_ITEM_STAGES, .description = sXDefenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, + .battleUsage = EFFECT_ITEM_INCREASE_STAT, .flingPower = 30, }, @@ -1651,12 +1595,12 @@ const struct Item gItems[] = .name = _("X Sp. Atk"), .itemId = ITEM_X_SP_ATK, .price = 1000, + .holdEffectParam = X_ITEM_STAGES, .description = sXSpAtkDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, + .battleUsage = EFFECT_ITEM_INCREASE_STAT, .flingPower = 30, }, @@ -1665,12 +1609,12 @@ const struct Item gItems[] = .name = _("X Sp. Def"), .itemId = ITEM_X_SP_DEF, .price = 2000, + .holdEffectParam = X_ITEM_STAGES, .description = sXSpDefDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, + .battleUsage = EFFECT_ITEM_INCREASE_STAT, .flingPower = 30, }, @@ -1679,12 +1623,12 @@ const struct Item gItems[] = .name = _("X Speed"), .itemId = ITEM_X_SPEED, .price = 1000, + .holdEffectParam = X_ITEM_STAGES, .description = sXSpeedDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, + .battleUsage = EFFECT_ITEM_INCREASE_STAT, .flingPower = 30, }, @@ -1693,12 +1637,12 @@ const struct Item gItems[] = .name = _("X Accuracy"), .itemId = ITEM_X_ACCURACY, .price = 1000, + .holdEffectParam = X_ITEM_STAGES, .description = sXAccuracyDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, + .battleUsage = EFFECT_ITEM_INCREASE_STAT, .flingPower = 30, }, @@ -1711,8 +1655,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, + .battleUsage = EFFECT_ITEM_SET_FOCUS_ENERGY, .flingPower = 30, }, @@ -1725,8 +1668,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, + .battleUsage = EFFECT_ITEM_SET_MIST, .flingPower = 30, }, @@ -1739,8 +1681,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_Escape, + .battleUsage = EFFECT_ITEM_ESCAPE, .flingPower = 30, }, @@ -1753,8 +1694,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_Escape, + .battleUsage = EFFECT_ITEM_ESCAPE, .flingPower = 30, }, @@ -1767,8 +1707,7 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_Escape, + .battleUsage = EFFECT_ITEM_ESCAPE, .flingPower = 30, }, @@ -1781,11 +1720,12 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_OTHER, - .battleUseFunc = ItemUseInBattle_StatIncrease, // Todo + .battleUsage = EFFECT_ITEM_INCREASE_ALL_STATS, .flingPower = 30, }, +#undef X_ITEM_STAGES + // Treasures [ITEM_BOTTLE_CAP] = @@ -2958,8 +2898,8 @@ const struct Item gItems[] = .holdEffectParam = 10, .description = sDragonScaleDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 30, }, @@ -2971,8 +2911,8 @@ const struct Item gItems[] = .holdEffect = HOLD_EFFECT_UPGRADE, .description = sUpgradeDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 30, }, @@ -2983,8 +2923,8 @@ const struct Item gItems[] = .price = 2000, .description = sProtectorDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 80, }, @@ -2995,8 +2935,8 @@ const struct Item gItems[] = .price = 2000, .description = sElectirizerDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 80, }, @@ -3007,8 +2947,8 @@ const struct Item gItems[] = .price = 2000, .description = sMagmarizerDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 80, }, @@ -3019,8 +2959,8 @@ const struct Item gItems[] = .price = 2000, .description = sDubiousDiscDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 50, }, @@ -3031,8 +2971,8 @@ const struct Item gItems[] = .price = 2000, .description = sReaperClothDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 10, }, @@ -3043,8 +2983,8 @@ const struct Item gItems[] = .price = 2000, .description = sPrismScaleDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 30, }, @@ -3055,8 +2995,8 @@ const struct Item gItems[] = .price = 2000, .description = sWhippedDreamDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 80, }, @@ -3067,8 +3007,8 @@ const struct Item gItems[] = .price = 2000, .description = sSachetDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 80, }, @@ -3079,8 +3019,8 @@ const struct Item gItems[] = .price = 2000, .description = sOvalStoneDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 80, }, @@ -3193,7 +3133,6 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange_ConsumedOnUse, - .secondaryId = FORM_ITEM_USE, .flingPower = 10, }, @@ -3207,7 +3146,6 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange_ConsumedOnUse, - .secondaryId = FORM_ITEM_USE, .flingPower = 10, }, @@ -3221,7 +3159,6 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange_ConsumedOnUse, - .secondaryId = FORM_ITEM_USE, .flingPower = 10, }, @@ -3235,7 +3172,6 @@ const struct Item gItems[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange_ConsumedOnUse, - .secondaryId = FORM_ITEM_USE, .flingPower = 10, }, @@ -5271,8 +5207,8 @@ const struct Item gItems[] = .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, .description = sDeepSeaScaleDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 30, }, @@ -5284,8 +5220,8 @@ const struct Item gItems[] = .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, .description = sDeepSeaToothDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 90, }, @@ -5878,8 +5814,8 @@ const struct Item gItems[] = .holdEffectParam = 20, .description = sMetalCoatDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 30, }, @@ -6213,8 +6149,8 @@ const struct Item gItems[] = .holdEffectParam = 10, .description = sKingsRockDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 30, }, @@ -6575,8 +6511,8 @@ const struct Item gItems[] = .holdEffect = HOLD_EFFECT_SCOPE_LENS, .description = sRazorClawDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 80, }, @@ -6874,8 +6810,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 10, }, @@ -6889,8 +6824,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 10, }, @@ -6904,8 +6838,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 10, }, @@ -6919,8 +6852,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 10, }, @@ -6934,8 +6866,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 10, }, @@ -6948,10 +6879,9 @@ const struct Item gItems[] = .holdEffectParam = 10, .description = sLeppaBerryDesc, .pocket = POCKET_BERRIES, - .type = ITEM_USE_PARTY_MENU, + .type = ITEM_USE_PARTY_MENU_MOVES, .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_PPRecovery, + .battleUsage = EFFECT_ITEM_RESTORE_PP, .flingPower = 10, }, @@ -6966,8 +6896,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 10, }, @@ -6981,8 +6910,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 10, }, @@ -6996,8 +6924,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 10, }, @@ -7017,8 +6944,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_Medicine, + .battleUsage = EFFECT_ITEM_RESTORE_HP, .flingPower = 10, }, @@ -7794,8 +7720,7 @@ const struct Item gItems[] = .pocket = POCKET_BERRIES, .type = ITEM_USE_BAG_MENU, // Type handled by ItemUseOutOfBattle_EnigmaBerry .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry, - .battleUsage = ITEM_B_USE_MEDICINE, - .battleUseFunc = ItemUseInBattle_EnigmaBerry, + .battleUsage = EFFECT_ITEM_ENIGMA_BERRY_EREADER, .flingPower = 10, }, @@ -7807,6 +7732,7 @@ const struct Item gItems[] = .itemId = ITEM_TM01_FOCUS_PUNCH, .price = 3000, .description = sTM01Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7818,6 +7744,7 @@ const struct Item gItems[] = .itemId = ITEM_TM02_DRAGON_CLAW, .price = 3000, .description = sTM02Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7829,6 +7756,7 @@ const struct Item gItems[] = .itemId = ITEM_TM03_WATER_PULSE, .price = 3000, .description = sTM03Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7840,6 +7768,7 @@ const struct Item gItems[] = .itemId = ITEM_TM04_CALM_MIND, .price = 3000, .description = sTM04Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7851,6 +7780,7 @@ const struct Item gItems[] = .itemId = ITEM_TM05_ROAR, .price = 1000, .description = sTM05Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7862,6 +7792,7 @@ const struct Item gItems[] = .itemId = ITEM_TM06_TOXIC, .price = 3000, .description = sTM06Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7873,6 +7804,7 @@ const struct Item gItems[] = .itemId = ITEM_TM07_HAIL, .price = 3000, .description = sTM07Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7884,6 +7816,7 @@ const struct Item gItems[] = .itemId = ITEM_TM08_BULK_UP, .price = 3000, .description = sTM08Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7895,6 +7828,7 @@ const struct Item gItems[] = .itemId = ITEM_TM09_BULLET_SEED, .price = 3000, .description = sTM09Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7906,6 +7840,7 @@ const struct Item gItems[] = .itemId = ITEM_TM10_HIDDEN_POWER, .price = 3000, .description = sTM10Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7917,6 +7852,7 @@ const struct Item gItems[] = .itemId = ITEM_TM11_SUNNY_DAY, .price = 2000, .description = sTM11Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7928,6 +7864,7 @@ const struct Item gItems[] = .itemId = ITEM_TM12_TAUNT, .price = 3000, .description = sTM12Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7939,6 +7876,7 @@ const struct Item gItems[] = .itemId = ITEM_TM13_ICE_BEAM, .price = 3000, .description = sTM13Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7950,6 +7888,7 @@ const struct Item gItems[] = .itemId = ITEM_TM14_BLIZZARD, .price = 5500, .description = sTM14Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7961,6 +7900,7 @@ const struct Item gItems[] = .itemId = ITEM_TM15_HYPER_BEAM, .price = 7500, .description = sTM15Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7972,6 +7912,7 @@ const struct Item gItems[] = .itemId = ITEM_TM16_LIGHT_SCREEN, .price = 3000, .description = sTM16Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7983,6 +7924,7 @@ const struct Item gItems[] = .itemId = ITEM_TM17_PROTECT, .price = 3000, .description = sTM17Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -7994,6 +7936,7 @@ const struct Item gItems[] = .itemId = ITEM_TM18_RAIN_DANCE, .price = 2000, .description = sTM18Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8005,6 +7948,7 @@ const struct Item gItems[] = .itemId = ITEM_TM19_GIGA_DRAIN, .price = 3000, .description = sTM19Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8016,6 +7960,7 @@ const struct Item gItems[] = .itemId = ITEM_TM20_SAFEGUARD, .price = 3000, .description = sTM20Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8027,6 +7972,7 @@ const struct Item gItems[] = .itemId = ITEM_TM21_FRUSTRATION, .price = 1000, .description = sTM21Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8038,6 +7984,7 @@ const struct Item gItems[] = .itemId = ITEM_TM22_SOLAR_BEAM, .price = 3000, .description = sTM22Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8049,6 +7996,7 @@ const struct Item gItems[] = .itemId = ITEM_TM23_IRON_TAIL, .price = 3000, .description = sTM23Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8060,6 +8008,7 @@ const struct Item gItems[] = .itemId = ITEM_TM24_THUNDERBOLT, .price = 3000, .description = sTM24Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8071,6 +8020,7 @@ const struct Item gItems[] = .itemId = ITEM_TM25_THUNDER, .price = 5500, .description = sTM25Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8082,6 +8032,7 @@ const struct Item gItems[] = .itemId = ITEM_TM26_EARTHQUAKE, .price = 3000, .description = sTM26Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8093,6 +8044,7 @@ const struct Item gItems[] = .itemId = ITEM_TM27_RETURN, .price = 1000, .description = sTM27Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8104,6 +8056,7 @@ const struct Item gItems[] = .itemId = ITEM_TM28_DIG, .price = 2000, .description = sTM28Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8115,6 +8068,7 @@ const struct Item gItems[] = .itemId = ITEM_TM29_PSYCHIC, .price = 2000, .description = sTM29Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8126,6 +8080,7 @@ const struct Item gItems[] = .itemId = ITEM_TM30_SHADOW_BALL, .price = 3000, .description = sTM30Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8137,6 +8092,7 @@ const struct Item gItems[] = .itemId = ITEM_TM31_BRICK_BREAK, .price = 3000, .description = sTM31Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8148,6 +8104,7 @@ const struct Item gItems[] = .itemId = ITEM_TM32_DOUBLE_TEAM, .price = 2000, .description = sTM32Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8159,6 +8116,7 @@ const struct Item gItems[] = .itemId = ITEM_TM33_REFLECT, .price = 3000, .description = sTM33Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8170,6 +8128,7 @@ const struct Item gItems[] = .itemId = ITEM_TM34_SHOCK_WAVE, .price = 3000, .description = sTM34Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8181,6 +8140,7 @@ const struct Item gItems[] = .itemId = ITEM_TM35_FLAMETHROWER, .price = 3000, .description = sTM35Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8192,6 +8152,7 @@ const struct Item gItems[] = .itemId = ITEM_TM36_SLUDGE_BOMB, .price = 1000, .description = sTM36Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8203,6 +8164,7 @@ const struct Item gItems[] = .itemId = ITEM_TM37_SANDSTORM, .price = 2000, .description = sTM37Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8214,6 +8176,7 @@ const struct Item gItems[] = .itemId = ITEM_TM38_FIRE_BLAST, .price = 5500, .description = sTM38Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8225,6 +8188,7 @@ const struct Item gItems[] = .itemId = ITEM_TM39_ROCK_TOMB, .price = 3000, .description = sTM39Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8236,6 +8200,7 @@ const struct Item gItems[] = .itemId = ITEM_TM40_AERIAL_ACE, .price = 3000, .description = sTM40Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8247,6 +8212,7 @@ const struct Item gItems[] = .itemId = ITEM_TM41_TORMENT, .price = 3000, .description = sTM41Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8258,6 +8224,7 @@ const struct Item gItems[] = .itemId = ITEM_TM42_FACADE, .price = 3000, .description = sTM42Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8269,6 +8236,7 @@ const struct Item gItems[] = .itemId = ITEM_TM43_SECRET_POWER, .price = 3000, .description = sTM43Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8280,6 +8248,7 @@ const struct Item gItems[] = .itemId = ITEM_TM44_REST, .price = 3000, .description = sTM44Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8291,6 +8260,7 @@ const struct Item gItems[] = .itemId = ITEM_TM45_ATTRACT, .price = 3000, .description = sTM45Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8302,6 +8272,7 @@ const struct Item gItems[] = .itemId = ITEM_TM46_THIEF, .price = 3000, .description = sTM46Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8313,6 +8284,7 @@ const struct Item gItems[] = .itemId = ITEM_TM47_STEEL_WING, .price = 3000, .description = sTM47Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8324,6 +8296,7 @@ const struct Item gItems[] = .itemId = ITEM_TM48_SKILL_SWAP, .price = 3000, .description = sTM48Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8335,6 +8308,7 @@ const struct Item gItems[] = .itemId = ITEM_TM49_SNATCH, .price = 3000, .description = sTM49Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8346,6 +8320,7 @@ const struct Item gItems[] = .itemId = ITEM_TM50_OVERHEAT, .price = 3000, .description = sTM50Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8357,6 +8332,7 @@ const struct Item gItems[] = .itemId = ITEM_TM51, .price = 3000, .description = sTM51Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8368,6 +8344,7 @@ const struct Item gItems[] = .itemId = ITEM_TM52, .price = 3000, .description = sTM52Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8379,6 +8356,7 @@ const struct Item gItems[] = .itemId = ITEM_TM53, .price = 3000, .description = sTM53Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8390,6 +8368,7 @@ const struct Item gItems[] = .itemId = ITEM_TM54, .price = 3000, .description = sTM54Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8401,6 +8380,7 @@ const struct Item gItems[] = .itemId = ITEM_TM55, .price = 3000, .description = sTM55Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8412,6 +8392,7 @@ const struct Item gItems[] = .itemId = ITEM_TM56, .price = 3000, .description = sTM56Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8423,6 +8404,7 @@ const struct Item gItems[] = .itemId = ITEM_TM57, .price = 3000, .description = sTM57Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8434,6 +8416,7 @@ const struct Item gItems[] = .itemId = ITEM_TM58, .price = 3000, .description = sTM58Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8445,6 +8428,7 @@ const struct Item gItems[] = .itemId = ITEM_TM59, .price = 3000, .description = sTM59Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8456,6 +8440,7 @@ const struct Item gItems[] = .itemId = ITEM_TM60, .price = 3000, .description = sTM60Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8467,6 +8452,7 @@ const struct Item gItems[] = .itemId = ITEM_TM61, .price = 3000, .description = sTM61Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8478,6 +8464,7 @@ const struct Item gItems[] = .itemId = ITEM_TM62, .price = 3000, .description = sTM62Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8489,6 +8476,7 @@ const struct Item gItems[] = .itemId = ITEM_TM63, .price = 3000, .description = sTM63Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8500,6 +8488,7 @@ const struct Item gItems[] = .itemId = ITEM_TM64, .price = 3000, .description = sTM64Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8511,6 +8500,7 @@ const struct Item gItems[] = .itemId = ITEM_TM65, .price = 3000, .description = sTM65Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8522,6 +8512,7 @@ const struct Item gItems[] = .itemId = ITEM_TM66, .price = 3000, .description = sTM66Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8533,6 +8524,7 @@ const struct Item gItems[] = .itemId = ITEM_TM67, .price = 3000, .description = sTM67Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8544,6 +8536,7 @@ const struct Item gItems[] = .itemId = ITEM_TM68, .price = 3000, .description = sTM68Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8555,6 +8548,7 @@ const struct Item gItems[] = .itemId = ITEM_TM69, .price = 3000, .description = sTM69Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8566,6 +8560,7 @@ const struct Item gItems[] = .itemId = ITEM_TM70, .price = 3000, .description = sTM70Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8577,6 +8572,7 @@ const struct Item gItems[] = .itemId = ITEM_TM71, .price = 3000, .description = sTM71Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8588,6 +8584,7 @@ const struct Item gItems[] = .itemId = ITEM_TM72, .price = 3000, .description = sTM72Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8599,6 +8596,7 @@ const struct Item gItems[] = .itemId = ITEM_TM73, .price = 3000, .description = sTM73Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8610,6 +8608,7 @@ const struct Item gItems[] = .itemId = ITEM_TM74, .price = 3000, .description = sTM74Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8621,6 +8620,7 @@ const struct Item gItems[] = .itemId = ITEM_TM75, .price = 3000, .description = sTM75Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8632,6 +8632,7 @@ const struct Item gItems[] = .itemId = ITEM_TM76, .price = 3000, .description = sTM76Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8643,6 +8644,7 @@ const struct Item gItems[] = .itemId = ITEM_TM77, .price = 3000, .description = sTM77Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8654,6 +8656,7 @@ const struct Item gItems[] = .itemId = ITEM_TM78, .price = 3000, .description = sTM78Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8665,6 +8668,7 @@ const struct Item gItems[] = .itemId = ITEM_TM79, .price = 3000, .description = sTM79Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8676,6 +8680,7 @@ const struct Item gItems[] = .itemId = ITEM_TM80, .price = 3000, .description = sTM80Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8687,6 +8692,7 @@ const struct Item gItems[] = .itemId = ITEM_TM81, .price = 3000, .description = sTM81Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8698,6 +8704,7 @@ const struct Item gItems[] = .itemId = ITEM_TM82, .price = 3000, .description = sTM82Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8709,6 +8716,7 @@ const struct Item gItems[] = .itemId = ITEM_TM83, .price = 3000, .description = sTM83Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8720,6 +8728,7 @@ const struct Item gItems[] = .itemId = ITEM_TM84, .price = 3000, .description = sTM84Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8731,6 +8740,7 @@ const struct Item gItems[] = .itemId = ITEM_TM85, .price = 3000, .description = sTM85Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8742,6 +8752,7 @@ const struct Item gItems[] = .itemId = ITEM_TM86, .price = 3000, .description = sTM86Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8753,6 +8764,7 @@ const struct Item gItems[] = .itemId = ITEM_TM87, .price = 3000, .description = sTM87Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8764,6 +8776,7 @@ const struct Item gItems[] = .itemId = ITEM_TM88, .price = 3000, .description = sTM88Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8775,6 +8788,7 @@ const struct Item gItems[] = .itemId = ITEM_TM89, .price = 3000, .description = sTM89Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8786,6 +8800,7 @@ const struct Item gItems[] = .itemId = ITEM_TM90, .price = 3000, .description = sTM90Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8797,6 +8812,7 @@ const struct Item gItems[] = .itemId = ITEM_TM91, .price = 3000, .description = sTM91Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8808,6 +8824,7 @@ const struct Item gItems[] = .itemId = ITEM_TM92, .price = 3000, .description = sTM92Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8819,6 +8836,7 @@ const struct Item gItems[] = .itemId = ITEM_TM93, .price = 3000, .description = sTM93Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8830,6 +8848,7 @@ const struct Item gItems[] = .itemId = ITEM_TM94, .price = 3000, .description = sTM94Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8841,6 +8860,7 @@ const struct Item gItems[] = .itemId = ITEM_TM95, .price = 3000, .description = sTM95Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8852,6 +8872,7 @@ const struct Item gItems[] = .itemId = ITEM_TM96, .price = 3000, .description = sTM96Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8863,6 +8884,7 @@ const struct Item gItems[] = .itemId = ITEM_TM97, .price = 3000, .description = sTM97Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8874,6 +8896,7 @@ const struct Item gItems[] = .itemId = ITEM_TM98, .price = 3000, .description = sTM98Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8885,6 +8908,7 @@ const struct Item gItems[] = .itemId = ITEM_TM99, .price = 3000, .description = sTM99Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -8896,6 +8920,7 @@ const struct Item gItems[] = .itemId = ITEM_TM100, .price = 3000, .description = sTM100Desc, + .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, @@ -9071,7 +9096,6 @@ const struct Item gItems[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange, - .secondaryId = FORM_ITEM_USE, }, [ITEM_REVEAL_GLASS] = @@ -9083,7 +9107,6 @@ const struct Item gItems[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange, - .secondaryId = FORM_ITEM_USE, }, [ITEM_DNA_SPLICERS] = @@ -9093,9 +9116,8 @@ const struct Item gItems[] = .price = 0, .description = sDNASplicersDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_FormChange, - .secondaryId = FORM_ITEM_USE, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo: ItemUseOutOfBattle_FormChange_Fusion }, [ITEM_ZYGARDE_CUBE] = @@ -9119,7 +9141,6 @@ const struct Item gItems[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange, - .secondaryId = FORM_ITEM_USE, }, [ITEM_N_SOLARIZER] = @@ -9129,9 +9150,8 @@ const struct Item gItems[] = .price = 0, .description = sNSolarizerDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_FormChange, - .secondaryId = FORM_ITEM_USE, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo: ItemUseOutOfBattle_FormChange_Fusion }, [ITEM_N_LUNARIZER] = @@ -9141,9 +9161,8 @@ const struct Item gItems[] = .price = 0, .description = sNLunarizerDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_FormChange, - .secondaryId = FORM_ITEM_USE, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo: ItemUseOutOfBattle_FormChange_Fusion }, [ITEM_REINS_OF_UNITY] = @@ -9153,9 +9172,8 @@ const struct Item gItems[] = .price = 0, .description = sReinsOfUnityDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_FormChange, - .secondaryId = FORM_ITEM_USE, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo: ItemUseOutOfBattle_FormChange_Fusion }, // Battle Mechanic Key Items @@ -9907,7 +9925,6 @@ const struct Item gItems[] = [ITEM_LOADED_DICE] = { - //YellwApricorn .name = _("Loaded Dice"), .itemId = ITEM_LOADED_DICE, .price = 20000, @@ -9918,4 +9935,419 @@ const struct Item gItems[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, }, + + [ITEM_AUSPICIOUS_ARMOR] = + { + .name = _("AuspciousArmr"), + .itemId = ITEM_AUSPICIOUS_ARMOR, + .price = 3000, + .description = sAuspiciousArmorDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .flingPower = 30, + }, + + [ITEM_BOOSTER_ENERGY] = + { + .name = _("BoosterEnergy"), + .itemId = ITEM_BOOSTER_ENERGY, + .price = 0, + .holdEffect = HOLD_EFFECT_BOOSTER_ENERGY, + .description = sBoosterEnergyDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, + + [ITEM_BIG_BAMBOO_SHOOT] = + { + .name = _("BigBmbooShoot"), + .itemId = ITEM_BIG_BAMBOO_SHOOT, + .price = 3000, + .description = sBigBambooShootDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, + + [ITEM_GIMMIGHOUL_COIN] = + { + .name = _("GimighoulCoin"), + .itemId = ITEM_GIMMIGHOUL_COIN, + .price = 400, + .description = sGimmighoulCoinDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_LEADERS_CREST] = + { + .name = _("Leader'sCrest"), + .itemId = ITEM_LEADERS_CREST, + .price = 3000, + .description = sLeadersCrestDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_MALICIOUS_ARMOR] = + { + .name = _("MaliciousArmr"), + .itemId = ITEM_MALICIOUS_ARMOR, + .price = 3000, + .description = sMaliciousArmorDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .flingPower = 30, + }, + + [ITEM_MIRROR_HERB] = + { + .name = _("Mirror Herb"), + .itemId = ITEM_MIRROR_HERB, + .price = 30000, + .holdEffect = HOLD_EFFECT_MIRROR_HERB, + .description = sMirrorHerbDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, + + [ITEM_SCROLL_OF_DARKNESS] = + { + .name = _("ScrllOfDrknss"), + .itemId = ITEM_SCROLL_OF_DARKNESS, + .price = 0, + .description = sScrollOfDarknessDesc, + .importance = 1, + .pocket = POCKET_KEY_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + }, + + [ITEM_SCROLL_OF_WATERS] = + { + .name = _("ScrollOfWatrs"), + .itemId = ITEM_SCROLL_OF_WATERS, + .price = 0, + .description = sScrollOfWatersDesc, + .importance = 1, + .pocket = POCKET_KEY_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + }, + + [ITEM_TERA_ORB] = + { + .name = _("Tera Orb"), + .itemId = ITEM_TERA_ORB, + .price = 0, + .description = sTeraOrbDesc, + .importance = 1, + .pocket = POCKET_KEY_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_TINY_BAMBOO_SHOOT] = + { + .name = _("TinyBmbooShot"), + .itemId = ITEM_TINY_BAMBOO_SHOOT, + .price = 750, + .description = sTinyBambooShootDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, + + [ITEM_BUG_TERA_SHARD] = + { + .name = _("Bug TeraShard"), + .itemId = ITEM_BUG_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_DARK_TERA_SHARD] = + { + .name = _("DarkTeraShard"), + .itemId = ITEM_DARK_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_DRAGON_TERA_SHARD] = + { + .name = _("DragnTeraShrd"), + .itemId = ITEM_DRAGON_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_ELECTRIC_TERA_SHARD] = + { + .name = _("EltrcTeraShrd"), + .itemId = ITEM_ELECTRIC_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_FAIRY_TERA_SHARD] = + { + .name = _("FairyTeraShrd"), + .itemId = ITEM_FAIRY_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_FIGHTING_TERA_SHARD] = + { + .name = _("FghtngTerShrd"), + .itemId = ITEM_FIGHTING_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_FIRE_TERA_SHARD] = + { + .name = _("FireTeraShard"), + .itemId = ITEM_FIRE_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_FLYING_TERA_SHARD] = + { + .name = _("FlyngTeraShrd"), + .itemId = ITEM_FLYING_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_GHOST_TERA_SHARD] = + { + .name = _("GhostTeraShrd"), + .itemId = ITEM_GHOST_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_GRASS_TERA_SHARD] = + { + .name = _("GrassTeraShrd"), + .itemId = ITEM_GRASS_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_GROUND_TERA_SHARD] = + { + .name = _("GrondTeraShrd"), + .itemId = ITEM_GROUND_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_ICE_TERA_SHARD] = + { + .name = _("Ice TeraShard"), + .itemId = ITEM_ICE_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_NORMAL_TERA_SHARD] = + { + .name = _("NormlTeraShrd"), + .itemId = ITEM_NORMAL_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_POISON_TERA_SHARD] = + { + .name = _("PoisnTeraShrd"), + .itemId = ITEM_POISON_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_PSYCHIC_TERA_SHARD] = + { + .name = _("PschcTeraShrd"), + .itemId = ITEM_PSYCHIC_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_ROCK_TERA_SHARD] = + { + .name = _("RockTeraShard"), + .itemId = ITEM_ROCK_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_STEEL_TERA_SHARD] = + { + .name = _("SteelTeraShrd"), + .itemId = ITEM_STEEL_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_WATER_TERA_SHARD] = + { + .name = _("WaterTeraShrd"), + .itemId = ITEM_WATER_TERA_SHARD, + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, + + [ITEM_ADAMANT_CRYSTAL] = + { + .name = _("AdamantCrystl"), + .itemId = ITEM_ADAMANT_CRYSTAL, + .price = 0, + .description = sAdamantCrystalDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 60, + }, + + [ITEM_GRISEOUS_CORE] = + { + .name = _("Griseous Core"), + .itemId = ITEM_GRISEOUS_CORE, + .price = 0, + .description = sGriseousCoreDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 60, + }, + + [ITEM_LUSTROUS_GLOBE] = + { + .name = _("LustrousGlobe"), + .itemId = ITEM_LUSTROUS_GLOBE, + .price = 0, + .description = sLustrousGlobeDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 60, + }, + + [ITEM_BLACK_AUGURITE] = + { + .name = _("BlackAugurite"), + .itemId = ITEM_BLACK_AUGURITE, + .price = 8000, + .description = sBlackAuguriteDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .flingPower = 30, + }, + + [ITEM_LINKING_CORD] = + { + .name = _("Linking Cord"), + .itemId = ITEM_LINKING_CORD, + .price = 8000, + .description = sLinkingCordDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .flingPower = 30, + }, + + [ITEM_PEAT_BLOCK] = + { + .name = _("Peat Block"), + .itemId = ITEM_PEAT_BLOCK, + .price = 10000, + .description = sPeatBlockDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .flingPower = 30, + }, + + [ITEM_BERSERK_GENE] = + { + .name = _("Berserk Gene"), + .itemId = ITEM_BERSERK_GENE, + .price = 20, + .holdEffect = HOLD_EFFECT_BERSERK_GENE, + .description = sBerserkGene, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 10, + }, }; diff --git a/src/data/party_menu.h b/src/data/party_menu.h index 4a06fa135e99..e7ebf98939ca 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -1054,7 +1054,7 @@ static const union AnimCmd sSpriteAnim_StatusFaint[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_Blank[] = +static const union AnimCmd sSpriteAnim_StatusFrostbite[] = { ANIMCMD_FRAME(28, 0), ANIMCMD_END @@ -1069,7 +1069,7 @@ static const union AnimCmd *const sSpriteTemplate_StatusCondition[] = sSpriteAnim_StatusBurn, sSpriteAnim_StatusPokerus, sSpriteAnim_StatusFaint, - sSpriteAnim_Blank + sSpriteAnim_StatusFrostbite }; static const struct CompressedSpriteSheet sSpriteSheet_StatusIcons = diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h index a0e5024f5b43..b9a00d6ed63f 100644 --- a/src/data/pokemon/evolution.h +++ b/src/data/pokemon/evolution.h @@ -2,22 +2,16 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = { [SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}}, [SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}}, - [SPECIES_VENUSAUR] = {{EVO_MEGA_EVOLUTION, ITEM_VENUSAURITE, SPECIES_VENUSAUR_MEGA}}, [SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}}, [SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}}, - [SPECIES_CHARIZARD] = {{EVO_MEGA_EVOLUTION, ITEM_CHARIZARDITE_X, SPECIES_CHARIZARD_MEGA_X}, - {EVO_MEGA_EVOLUTION, ITEM_CHARIZARDITE_Y, SPECIES_CHARIZARD_MEGA_Y}}, [SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}}, [SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}}, - [SPECIES_BLASTOISE] = {{EVO_MEGA_EVOLUTION, ITEM_BLASTOISINITE, SPECIES_BLASTOISE_MEGA}}, [SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}}, [SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}}, [SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}}, [SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}}, - [SPECIES_BEEDRILL] = {{EVO_MEGA_EVOLUTION, ITEM_BEEDRILLITE, SPECIES_BEEDRILL_MEGA}}, [SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}}, [SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}}, - [SPECIES_PIDGEOT] = {{EVO_MEGA_EVOLUTION, ITEM_PIDGEOTITE, SPECIES_PIDGEOT_MEGA}}, [SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}}, [SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}}, [SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}}, @@ -45,21 +39,24 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}}, [SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}}, [SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, + {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}}, [SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}}, - [SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}}, - [SPECIES_ALAKAZAM] = {{EVO_MEGA_EVOLUTION, ITEM_ALAKAZITE, SPECIES_ALAKAZAM_MEGA}}, + [SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_ALAKAZAM}}, [SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}}, - [SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}}, + [SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_MACHAMP}}, [SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}}, [SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}}, [SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}}, [SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}}, - [SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}}, + [SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM}}, [SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}}, [SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}}, - [SPECIES_SLOWBRO] = {{EVO_MEGA_EVOLUTION, ITEM_SLOWBRONITE, SPECIES_SLOWBRO_MEGA}}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, + {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}}, [SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}}, #if P_GEN_4_POKEMON == TRUE [SPECIES_MAGNETON] = {{EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE}, @@ -70,9 +67,10 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}}, [SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}}, [SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}}, - [SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}}, - [SPECIES_GENGAR] = {{EVO_MEGA_EVOLUTION, ITEM_GENGARITE, SPECIES_GENGAR_MEGA}}, - [SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}}, + [SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GENGAR}}, + [SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, + {EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}}, [SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}}, [SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}}, [SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}}, @@ -86,25 +84,28 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}}, [SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}}, #if P_GEN_4_POKEMON == TRUE - [SPECIES_RHYDON] = {{EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}}, + [SPECIES_RHYDON] = {{EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, + {EVO_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}}, #endif [SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}}, #if P_GEN_4_POKEMON == TRUE [SPECIES_TANGELA] = {{EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}}, #endif - [SPECIES_KANGASKHAN] = {{EVO_MEGA_EVOLUTION, ITEM_KANGASKHANITE, SPECIES_KANGASKHAN_MEGA}}, [SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}}, - [SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}}, + [SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, + {EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}}, [SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}}, [SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}}, - [SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}}, + [SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, + {EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR}, + {EVO_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}}, #if P_GEN_4_POKEMON == TRUE - [SPECIES_ELECTABUZZ] = {{EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}}, - [SPECIES_MAGMAR] = {{EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}}, + [SPECIES_ELECTABUZZ] = {{EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}, + {EVO_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}}, + [SPECIES_MAGMAR] = {{EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}, + {EVO_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}}, #endif - [SPECIES_PINSIR] = {{EVO_MEGA_EVOLUTION, ITEM_PINSIRITE, SPECIES_PINSIR_MEGA}}, [SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}}, - [SPECIES_GYARADOS] = {{EVO_MEGA_EVOLUTION, ITEM_GYARADOSITE, SPECIES_GYARADOS_MEGA}}, [SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, @@ -120,14 +121,12 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_MOVE_TYPE, TYPE_FAIRY, SPECIES_SYLVEON} #endif }, - [SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}}, + [SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}, + {EVO_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}}, [SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}}, [SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}}, - [SPECIES_AERODACTYL] = {{EVO_MEGA_EVOLUTION, ITEM_AERODACTYLITE, SPECIES_AERODACTYL_MEGA}}, [SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}}, [SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}}, - [SPECIES_MEWTWO] = {{EVO_MEGA_EVOLUTION, ITEM_MEWTWONITE_X, SPECIES_MEWTWO_MEGA_X}, - {EVO_MEGA_EVOLUTION, ITEM_MEWTWONITE_Y, SPECIES_MEWTWO_MEGA_Y}}, [SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}}, [SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}}, [SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}}, @@ -149,7 +148,6 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}}, [SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}}, [SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}}, - [SPECIES_AMPHAROS] = {{EVO_MEGA_EVOLUTION, ITEM_AMPHAROSITE, SPECIES_AMPHAROS_MEGA}}, [SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}}, [SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}}, [SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}}, @@ -165,14 +163,13 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = #endif [SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}}, #if P_GEN_4_POKEMON == TRUE - [SPECIES_GLIGAR] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}}, + [SPECIES_GLIGAR] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}, + {EVO_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}}, #endif - [SPECIES_STEELIX] = {{EVO_MEGA_EVOLUTION, ITEM_STEELIXITE, SPECIES_STEELIX_MEGA}}, [SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}}, - [SPECIES_SCIZOR] = {{EVO_MEGA_EVOLUTION, ITEM_SCIZORITE, SPECIES_SCIZOR_MEGA}}, - [SPECIES_HERACROSS] = {{EVO_MEGA_EVOLUTION, ITEM_HERACRONITE, SPECIES_HERACROSS_MEGA}}, #if P_GEN_4_POKEMON == TRUE - [SPECIES_SNEASEL] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}}, + [SPECIES_SNEASEL] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}, + {EVO_ITEM_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}}, #endif [SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}}, [SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}}, @@ -182,10 +179,10 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = #endif [SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}}, [SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}}, - [SPECIES_HOUNDOOM] = {{EVO_MEGA_EVOLUTION, ITEM_HOUNDOOMINITE, SPECIES_HOUNDOOM_MEGA}}, [SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}}, #if P_GEN_4_POKEMON == TRUE - [SPECIES_PORYGON2] = {{EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}}, + [SPECIES_PORYGON2] = {{EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}, + {EVO_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}}, #endif [SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, @@ -195,16 +192,12 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}}, [SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}}, [SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}}, - [SPECIES_TYRANITAR] = {{EVO_MEGA_EVOLUTION, ITEM_TYRANITARITE, SPECIES_TYRANITAR_MEGA}}, [SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}}, [SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}}, - [SPECIES_SCEPTILE] = {{EVO_MEGA_EVOLUTION, ITEM_SCEPTILITE, SPECIES_SCEPTILE_MEGA}}, [SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}}, [SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}}, - [SPECIES_BLAZIKEN] = {{EVO_MEGA_EVOLUTION, ITEM_BLAZIKENITE, SPECIES_BLAZIKEN_MEGA}}, [SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}}, [SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}}, - [SPECIES_SWAMPERT] = {{EVO_MEGA_EVOLUTION, ITEM_SWAMPERTITE, SPECIES_SWAMPERT_MEGA}}, [SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}}, [SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}}, [SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, @@ -227,20 +220,17 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = #if P_GEN_4_POKEMON == TRUE [SPECIES_NOSEPASS] = {{EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_PROBOPASS}}, #endif - [SPECIES_SABLEYE] = {{EVO_MEGA_EVOLUTION, ITEM_SABLENITE, SPECIES_SABLEYE_MEGA}}, [SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}}, [SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}}, [SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}, - {EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}}, + {EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}, + {EVO_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}}, [SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}}, - [SPECIES_SHARPEDO] = {{EVO_MEGA_EVOLUTION, ITEM_SHARPEDONITE, SPECIES_SHARPEDO_MEGA}}, [SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}}, [SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}}, [SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}}, [SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}}, - [SPECIES_MANECTRIC] = {{EVO_MEGA_EVOLUTION, ITEM_MANECTITE, SPECIES_MANECTRIC_MEGA}}, [SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}}, - [SPECIES_CAMERUPT] = {{EVO_MEGA_EVOLUTION, ITEM_CAMERUPTITE, SPECIES_CAMERUPT_MEGA}}, [SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}}, [SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}}, [SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}}, @@ -249,18 +239,15 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_ITEM_FEMALE, ITEM_DAWN_STONE, SPECIES_FROSLASS} #endif }, - [SPECIES_GLALIE] = {{EVO_MEGA_EVOLUTION, ITEM_GLALITITE, SPECIES_GLALIE_MEGA}}, [SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}}, [SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}}, - [SPECIES_MAWILE] = {{EVO_MEGA_EVOLUTION, ITEM_MAWILITE, SPECIES_MAWILE_MEGA}}, [SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}}, - [SPECIES_MEDICHAM] = {{EVO_MEGA_EVOLUTION, ITEM_MEDICHAMITE, SPECIES_MEDICHAM_MEGA}}, [SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}}, - [SPECIES_ALTARIA] = {{EVO_MEGA_EVOLUTION, ITEM_ALTARIANITE, SPECIES_ALTARIA_MEGA}}, [SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}}, [SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}}, #if P_GEN_4_POKEMON == TRUE - [SPECIES_DUSCLOPS] = {{EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}}, + [SPECIES_DUSCLOPS] = {{EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}, + {EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}}, [SPECIES_ROSELIA] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE}}, #endif [SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}}, @@ -269,13 +256,12 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}}, [SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}}, [SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, - {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}}, - [SPECIES_ABSOL] = {{EVO_MEGA_EVOLUTION, ITEM_ABSOLITE, SPECIES_ABSOL_MEGA}}, + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, + {EVO_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}}, [SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}}, - [SPECIES_BANETTE] = {{EVO_MEGA_EVOLUTION, ITEM_BANETTITE, SPECIES_BANETTE_MEGA}}, [SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}}, [SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}}, - [SPECIES_AGGRON] = {{EVO_MEGA_EVOLUTION, ITEM_AGGRONITE, SPECIES_AGGRON_MEGA}}, [SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}}, [SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}}, [SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}}, @@ -284,19 +270,10 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_ITEM_MALE, ITEM_DAWN_STONE, SPECIES_GALLADE} #endif }, - [SPECIES_GARDEVOIR] = {{EVO_MEGA_EVOLUTION, ITEM_GARDEVOIRITE, SPECIES_GARDEVOIR_MEGA}}, [SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}}, [SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}}, - [SPECIES_SALAMENCE] = {{EVO_MEGA_EVOLUTION, ITEM_SALAMENCITE, SPECIES_SALAMENCE_MEGA}}, [SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}}, [SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}}, - [SPECIES_METAGROSS] = {{EVO_MEGA_EVOLUTION, ITEM_METAGROSSITE, SPECIES_METAGROSS_MEGA}}, - [SPECIES_LATIAS] = {{EVO_MEGA_EVOLUTION, ITEM_LATIASITE, SPECIES_LATIAS_MEGA}}, - [SPECIES_LATIOS] = {{EVO_MEGA_EVOLUTION, ITEM_LATIOSITE, SPECIES_LATIOS_MEGA}}, - [SPECIES_KYOGRE] = {{EVO_PRIMAL_REVERSION, ITEM_BLUE_ORB, SPECIES_KYOGRE_PRIMAL}}, - [SPECIES_GROUDON] = {{EVO_PRIMAL_REVERSION, ITEM_RED_ORB, SPECIES_GROUDON_PRIMAL}}, - [SPECIES_RAYQUAZA] = {{EVO_MOVE_MEGA_EVOLUTION, MOVE_DRAGON_ASCENT, SPECIES_RAYQUAZA_MEGA}}, - #if P_GEN_4_POKEMON == TRUE // Gens 4-7 [SPECIES_TURTWIG] = {{EVO_LEVEL, 18, SPECIES_GROTLE}}, @@ -322,28 +299,24 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_SHELLOS] = {{EVO_LEVEL, 30, SPECIES_GASTRODON}}, [SPECIES_DRIFLOON] = {{EVO_LEVEL, 28, SPECIES_DRIFBLIM}}, [SPECIES_BUNEARY] = {{EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}}, - [SPECIES_LOPUNNY] = {{EVO_MEGA_EVOLUTION, ITEM_LOPUNNITE, SPECIES_LOPUNNY_MEGA}}, [SPECIES_GLAMEOW] = {{EVO_LEVEL, 38, SPECIES_PURUGLY}}, [SPECIES_CHINGLING] = {{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_CHIMECHO}}, [SPECIES_STUNKY] = {{EVO_LEVEL, 34, SPECIES_SKUNTANK}}, [SPECIES_BRONZOR] = {{EVO_LEVEL, 33, SPECIES_BRONZONG}}, [SPECIES_BONSLY] = {{EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}}, [SPECIES_MIME_JR] = {{EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}}, - [SPECIES_HAPPINY] = {{EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}}, + [SPECIES_HAPPINY] = {{EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}, + {EVO_ITEM_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}}, [SPECIES_GIBLE] = {{EVO_LEVEL, 24, SPECIES_GABITE}}, [SPECIES_GABITE] = {{EVO_LEVEL, 48, SPECIES_GARCHOMP}}, - [SPECIES_GARCHOMP] = {{EVO_MEGA_EVOLUTION, ITEM_GARCHOMPITE, SPECIES_GARCHOMP_MEGA}}, [SPECIES_MUNCHLAX] = {{EVO_FRIENDSHIP, 0, SPECIES_SNORLAX}}, [SPECIES_RIOLU] = {{EVO_FRIENDSHIP_DAY, 0, SPECIES_LUCARIO}}, - [SPECIES_LUCARIO] = {{EVO_MEGA_EVOLUTION, ITEM_LUCARIONITE, SPECIES_LUCARIO_MEGA}}, [SPECIES_HIPPOPOTAS] = {{EVO_LEVEL, 34, SPECIES_HIPPOWDON}}, [SPECIES_SKORUPI] = {{EVO_LEVEL, 40, SPECIES_DRAPION}}, [SPECIES_CROAGUNK] = {{EVO_LEVEL, 37, SPECIES_TOXICROAK}}, [SPECIES_FINNEON] = {{EVO_LEVEL, 31, SPECIES_LUMINEON}}, [SPECIES_MANTYKE] = {{EVO_SPECIFIC_MON_IN_PARTY, SPECIES_REMORAID, SPECIES_MANTINE}}, [SPECIES_SNOVER] = {{EVO_LEVEL, 40, SPECIES_ABOMASNOW}}, - [SPECIES_ABOMASNOW] = {{EVO_MEGA_EVOLUTION, ITEM_ABOMASITE, SPECIES_ABOMASNOW_MEGA}}, - [SPECIES_GALLADE] = {{EVO_MEGA_EVOLUTION, ITEM_GALLADITE, SPECIES_GALLADE_MEGA}}, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_SNIVY] = {{EVO_LEVEL, 17, SPECIES_SERVINE}}, @@ -364,12 +337,13 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_TRANQUILL] = {{EVO_LEVEL, 32, SPECIES_UNFEZANT}}, [SPECIES_BLITZLE] = {{EVO_LEVEL, 27, SPECIES_ZEBSTRIKA}}, [SPECIES_ROGGENROLA] = {{EVO_LEVEL, 25, SPECIES_BOLDORE}}, - [SPECIES_BOLDORE] = {{EVO_TRADE, 0, SPECIES_GIGALITH}}, + [SPECIES_BOLDORE] = {{EVO_TRADE, 0, SPECIES_GIGALITH}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GIGALITH}}, [SPECIES_WOOBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT}}, [SPECIES_DRILBUR] = {{EVO_LEVEL, 31, SPECIES_EXCADRILL}}, - [SPECIES_AUDINO] = {{EVO_MEGA_EVOLUTION, ITEM_AUDINITE, SPECIES_AUDINO_MEGA}}, [SPECIES_TIMBURR] = {{EVO_LEVEL, 25, SPECIES_GURDURR}}, - [SPECIES_GURDURR] = {{EVO_TRADE, 0, SPECIES_CONKELDURR}}, + [SPECIES_GURDURR] = {{EVO_TRADE, 0, SPECIES_CONKELDURR}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_CONKELDURR}}, [SPECIES_TYMPOLE] = {{EVO_LEVEL, 25, SPECIES_PALPITOAD}}, [SPECIES_PALPITOAD] = {{EVO_LEVEL, 36, SPECIES_SEISMITOAD}}, [SPECIES_SEWADDLE] = {{EVO_LEVEL, 20, SPECIES_SWADLOON}}, @@ -443,8 +417,10 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}}, [SPECIES_HONEDGE] = {{EVO_LEVEL, 35, SPECIES_DOUBLADE}}, [SPECIES_DOUBLADE] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH}}, - [SPECIES_SPRITZEE] = {{EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}}, - [SPECIES_SWIRLIX] = {{EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}}, + [SPECIES_SPRITZEE] = {{EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, + {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}}, + [SPECIES_SWIRLIX] = {{EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, + {EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}}, [SPECIES_INKAY] = {{EVO_LEVEL, 30, SPECIES_MALAMAR}}, [SPECIES_BINACLE] = {{EVO_LEVEL, 39, SPECIES_BARBARACLE}}, [SPECIES_SKRELP] = {{EVO_LEVEL, 48, SPECIES_DRAGALGE}}, @@ -454,11 +430,12 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_AMAURA] = {{EVO_LEVEL_NIGHT, 39, SPECIES_AURORUS}}, [SPECIES_GOOMY] = {{EVO_LEVEL, 40, SPECIES_SLIGGOO}}, [SPECIES_SLIGGOO] = {{EVO_LEVEL_RAIN, 50, SPECIES_GOODRA}}, - [SPECIES_PHANTUMP] = {{EVO_TRADE, 0, SPECIES_TREVENANT}}, - [SPECIES_PUMPKABOO] = {{EVO_TRADE, 0, SPECIES_GOURGEIST}}, + [SPECIES_PHANTUMP] = {{EVO_TRADE, 0, SPECIES_TREVENANT}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}}, + [SPECIES_PUMPKABOO] = {{EVO_TRADE, 0, SPECIES_GOURGEIST}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST}}, [SPECIES_BERGMITE] = {{EVO_LEVEL, 37, SPECIES_AVALUGG}}, [SPECIES_NOIBAT] = {{EVO_LEVEL, 48, SPECIES_NOIVERN}}, - [SPECIES_DIANCIE] = {{EVO_MEGA_EVOLUTION, ITEM_DIANCITE, SPECIES_DIANCIE_MEGA}}, #endif #if P_GEN_7_POKEMON == TRUE [SPECIES_ROWLET] = {{EVO_LEVEL, 17, SPECIES_DARTRIX}}, @@ -542,7 +519,9 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_DREEPY] = {{EVO_LEVEL, 50, SPECIES_DRAKLOAK}}, [SPECIES_DRAKLOAK] = {{EVO_LEVEL, 60, SPECIES_DRAGAPULT}}, [SPECIES_KUBFU] = {{EVO_DARK_SCROLL, 0, SPECIES_URSHIFU}, - {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}}, + {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU}, + {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}, + {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}}, #endif [SPECIES_RATTATA_ALOLAN] = {{EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}}, [SPECIES_SANDSHREW_ALOLAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLAN}}, @@ -550,7 +529,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_DIGLETT_ALOLAN] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO_ALOLAN}}, [SPECIES_MEOWTH_ALOLAN] = {{EVO_FRIENDSHIP, 28, SPECIES_PERSIAN_ALOLAN}}, [SPECIES_GEODUDE_ALOLAN] = {{EVO_LEVEL, 25, SPECIES_GRAVELER_ALOLAN}}, - [SPECIES_GRAVELER_ALOLAN] = {{EVO_TRADE, 0, SPECIES_GOLEM_ALOLAN}}, + [SPECIES_GRAVELER_ALOLAN] = {{EVO_TRADE, 0, SPECIES_GOLEM_ALOLAN}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM_ALOLAN}}, [SPECIES_GRIMER_ALOLAN] = {{EVO_LEVEL, 38, SPECIES_MUK_ALOLAN}}, #if P_GEN_8_POKEMON == TRUE [SPECIES_MEOWTH_GALARIAN] = {{EVO_LEVEL, 28, SPECIES_PERRSERKER}}, @@ -591,14 +571,20 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_FLOETTE_ORANGE_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_ORANGE_FLOWER}}, [SPECIES_FLOETTE_BLUE_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_BLUE_FLOWER}}, [SPECIES_FLOETTE_WHITE_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_WHITE_FLOWER}}, - [SPECIES_PUMPKABOO_SMALL] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_SMALL}}, - [SPECIES_PUMPKABOO_LARGE] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_LARGE}}, - [SPECIES_PUMPKABOO_SUPER] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_SUPER}}, + [SPECIES_PUMPKABOO_SMALL] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_SMALL}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SMALL}}, + [SPECIES_PUMPKABOO_LARGE] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_LARGE}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_LARGE}}, + [SPECIES_PUMPKABOO_SUPER] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_SUPER}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SUPER}}, #endif #if P_GEN_7_POKEMON == TRUE [SPECIES_ROCKRUFF_OWN_TEMPO] = {{EVO_LEVEL_DUSK, 25, SPECIES_LYCANROC_DUSK}}, #endif #if P_GEN_8_POKEMON == TRUE [SPECIES_SINISTEA_ANTIQUE] = {{EVO_ITEM, ITEM_CHIPPED_POT, SPECIES_POLTEAGEIST_ANTIQUE}}, + [SPECIES_URSARING] = {{EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}}, + [SPECIES_SNEASEL_HISUIAN] = {{EVO_ITEM_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}, + {EVO_ITEM_HOLD_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}}, #endif }; diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 90be7112b699..8453ed480efb 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -1,6 +1,113 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = { + [SPECIES_VENUSAUR] = sVenusaurFormChangeTable, + [SPECIES_VENUSAUR_MEGA] = sVenusaurFormChangeTable, + [SPECIES_CHARIZARD] = sCharizardFormChangeTable, + [SPECIES_CHARIZARD_MEGA_X] = sCharizardFormChangeTable, + [SPECIES_CHARIZARD_MEGA_Y] = sCharizardFormChangeTable, + [SPECIES_BLASTOISE] = sBlastoiseFormChangeTable, + [SPECIES_BLASTOISE_MEGA] = sBlastoiseFormChangeTable, + [SPECIES_BEEDRILL] = sBeedrillFormChangeTable, + [SPECIES_BEEDRILL_MEGA] = sBeedrillFormChangeTable, + [SPECIES_PIDGEOT] = sPidgeotFormChangeTable, + [SPECIES_PIDGEOT_MEGA] = sPidgeotFormChangeTable, + [SPECIES_ALAKAZAM] = sAlakazamFormChangeTable, + [SPECIES_ALAKAZAM_MEGA] = sAlakazamFormChangeTable, + [SPECIES_SLOWBRO] = sSlowbroFormChangeTable, + [SPECIES_SLOWBRO_MEGA] = sSlowbroFormChangeTable, + [SPECIES_GENGAR] = sGengarFormChangeTable, + [SPECIES_GENGAR_MEGA] = sGengarFormChangeTable, + [SPECIES_KANGASKHAN] = sKangaskhanFormChangeTable, + [SPECIES_KANGASKHAN_MEGA] = sKangaskhanFormChangeTable, + [SPECIES_PINSIR] = sPinsirFormChangeTable, + [SPECIES_PINSIR_MEGA] = sPinsirFormChangeTable, + [SPECIES_GYARADOS] = sGyaradosFormChangeTable, + [SPECIES_GYARADOS_MEGA] = sGyaradosFormChangeTable, + [SPECIES_AERODACTYL] = sAerodactylFormChangeTable, + [SPECIES_AERODACTYL_MEGA] = sAerodactylFormChangeTable, + [SPECIES_MEWTWO] = sMewtwoFormChangeTable, + [SPECIES_MEWTWO_MEGA_X] = sMewtwoFormChangeTable, + [SPECIES_MEWTWO_MEGA_Y] = sMewtwoFormChangeTable, + [SPECIES_AMPHAROS] = sAmpharosFormChangeTable, + [SPECIES_AMPHAROS_MEGA] = sAmpharosFormChangeTable, + [SPECIES_STEELIX] = sSteelixFormChangeTable, + [SPECIES_STEELIX_MEGA] = sSteelixFormChangeTable, + [SPECIES_SCIZOR] = sScizorFormChangeTable, + [SPECIES_SCIZOR_MEGA] = sScizorFormChangeTable, + [SPECIES_HERACROSS] = sHeracrossFormChangeTable, + [SPECIES_HERACROSS_MEGA] = sHeracrossFormChangeTable, + [SPECIES_HOUNDOOM] = sHoundoomFormChangeTable, + [SPECIES_HOUNDOOM_MEGA] = sHoundoomFormChangeTable, + [SPECIES_TYRANITAR] = sTyranitarFormChangeTable, + [SPECIES_TYRANITAR_MEGA] = sTyranitarFormChangeTable, + [SPECIES_SCEPTILE] = sSceptileFormChangeTable, + [SPECIES_SCEPTILE_MEGA] = sSceptileFormChangeTable, + [SPECIES_BLAZIKEN] = sBlazikenFormChangeTable, + [SPECIES_BLAZIKEN_MEGA] = sBlazikenFormChangeTable, + [SPECIES_SWAMPERT] = sSwampertFormChangeTable, + [SPECIES_SWAMPERT_MEGA] = sSwampertFormChangeTable, + [SPECIES_SABLEYE] = sSableyeFormChangeTable, + [SPECIES_SABLEYE_MEGA] = sSableyeFormChangeTable, + [SPECIES_SHARPEDO] = sSharpedoFormChangeTable, + [SPECIES_SHARPEDO_MEGA] = sSharpedoFormChangeTable, + [SPECIES_MANECTRIC] = sManectricFormChangeTable, + [SPECIES_MANECTRIC_MEGA] = sManectricFormChangeTable, + [SPECIES_CAMERUPT] = sCameruptFormChangeTable, + [SPECIES_CAMERUPT_MEGA] = sCameruptFormChangeTable, + [SPECIES_GLALIE] = sGlalieFormChangeTable, + [SPECIES_GLALIE_MEGA] = sGlalieFormChangeTable, + [SPECIES_MAWILE] = sMawileFormChangeTable, + [SPECIES_MAWILE_MEGA] = sMawileFormChangeTable, + [SPECIES_MEDICHAM] = sMedichamFormChangeTable, + [SPECIES_MEDICHAM_MEGA] = sMedichamFormChangeTable, + [SPECIES_ALTARIA] = sAltariaFormChangeTable, + [SPECIES_ALTARIA_MEGA] = sAltariaFormChangeTable, + [SPECIES_ABSOL] = sAbsolFormChangeTable, + [SPECIES_ABSOL_MEGA] = sAbsolFormChangeTable, + [SPECIES_CASTFORM] = sCastformFormChangeTable, + [SPECIES_CASTFORM_SUNNY] = sCastformFormChangeTable, + [SPECIES_CASTFORM_RAINY] = sCastformFormChangeTable, + [SPECIES_CASTFORM_SNOWY] = sCastformFormChangeTable, + [SPECIES_BANETTE] = sBanetteFormChangeTable, + [SPECIES_BANETTE_MEGA] = sBanetteFormChangeTable, + [SPECIES_AGGRON] = sAggronFormChangeTable, + [SPECIES_AGGRON_MEGA] = sAggronFormChangeTable, + [SPECIES_GARDEVOIR] = sGardevoirFormChangeTable, + [SPECIES_GARDEVOIR_MEGA] = sGardevoirFormChangeTable, + [SPECIES_SALAMENCE] = sSalamenceFormChangeTable, + [SPECIES_SALAMENCE_MEGA] = sSalamenceFormChangeTable, + [SPECIES_METAGROSS] = sMetagrossFormChangeTable, + [SPECIES_METAGROSS_MEGA] = sMetagrossFormChangeTable, + [SPECIES_LATIAS] = sLatiasFormChangeTable, + [SPECIES_LATIAS_MEGA] = sLatiasFormChangeTable, + [SPECIES_LATIOS] = sLatiosFormChangeTable, + [SPECIES_LATIOS_MEGA] = sLatiosFormChangeTable, + [SPECIES_KYOGRE] = sKyogreFormChangeTable, + [SPECIES_KYOGRE_PRIMAL] = sKyogreFormChangeTable, + [SPECIES_GROUDON] = sGroudonFormChangeTable, + [SPECIES_GROUDON_PRIMAL] = sGroudonFormChangeTable, + [SPECIES_RAYQUAZA] = sRayquazaFormChangeTable, + [SPECIES_RAYQUAZA_MEGA] = sRayquazaFormChangeTable, #if P_GEN_4_POKEMON == TRUE + [SPECIES_BURMY] = sBurmyFormChangeTable, + [SPECIES_BURMY_SANDY_CLOAK] = sBurmyFormChangeTable, + [SPECIES_BURMY_TRASH_CLOAK] = sBurmyFormChangeTable, + [SPECIES_CHERRIM] = sCherrimFormChangeTable, + [SPECIES_CHERRIM_SUNSHINE] = sCherrimFormChangeTable, + [SPECIES_LOPUNNY] = sLopunnyFormChangeTable, + [SPECIES_LOPUNNY_MEGA] = sLopunnyFormChangeTable, + [SPECIES_GARCHOMP] = sGarchompFormChangeTable, + [SPECIES_GARCHOMP_MEGA] = sGarchompFormChangeTable, + [SPECIES_LUCARIO] = sLucarioFormChangeTable, + [SPECIES_LUCARIO_MEGA] = sLucarioFormChangeTable, + [SPECIES_ABOMASNOW] = sAbomasnowFormChangeTable, + [SPECIES_ABOMASNOW_MEGA] = sAbomasnowFormChangeTable, + [SPECIES_GALLADE] = sGalladeFormChangeTable, + [SPECIES_GALLADE_MEGA] = sGalladeFormChangeTable, + [SPECIES_DIALGA] = sDialgaFormChangeTable, + [SPECIES_DIALGA_ORIGIN] = sDialgaFormChangeTable, + [SPECIES_PALKIA] = sPalkiaFormChangeTable, + [SPECIES_PALKIA_ORIGIN] = sPalkiaFormChangeTable, [SPECIES_GIRATINA] = sGiratinaFormChangeTable, [SPECIES_GIRATINA_ORIGIN] = sGiratinaFormChangeTable, [SPECIES_SHAYMIN] = sShayminFormChangeTable, @@ -25,6 +132,12 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_ARCEUS_FAIRY] = sArceusFormChangeTable, #endif #if P_GEN_5_POKEMON == TRUE + [SPECIES_AUDINO] = sAudinoFormChangeTable, + [SPECIES_AUDINO_MEGA] = sAudinoFormChangeTable, + [SPECIES_DARMANITAN] = sDarmanitanFormChangeTable, + [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanFormChangeTable, + [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianFormChangeTable, + [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianFormChangeTable, [SPECIES_TORNADUS] = sTornadusFormChangeTable, [SPECIES_TORNADUS_THERIAN] = sTornadusFormChangeTable, [SPECIES_THUNDURUS] = sThundurusFormChangeTable, @@ -33,6 +146,8 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_LANDORUS_THERIAN] = sLandorusFormChangeTable, [SPECIES_KELDEO] = sKeldeoFormChangeTable, [SPECIES_KELDEO_RESOLUTE] = sKeldeoFormChangeTable, + [SPECIES_MELOETTA] = sMeloettaFormChangeTable, + [SPECIES_MELOETTA_PIROUETTE] = sMeloettaFormChangeTable, [SPECIES_GENESECT] = sGenesectFormChangeTable, [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectFormChangeTable, [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectFormChangeTable, @@ -40,8 +155,17 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectFormChangeTable, #endif #if P_GEN_6_POKEMON == TRUE + [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaBattleBondFormChangeTable, + [SPECIES_GRENINJA_ASH] = sGreninjaBattleBondFormChangeTable, + [SPECIES_AEGISLASH] = sAegislashFormChangeTable, + [SPECIES_AEGISLASH_BLADE] = sAegislashFormChangeTable, [SPECIES_XERNEAS] = sXerneasFormChangeTable, [SPECIES_XERNEAS_ACTIVE] = sXerneasFormChangeTable, + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardePowerConstructFormChangeTable, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardePowerConstructFormChangeTable, + [SPECIES_ZYGARDE_COMPLETE] = sZygardePowerConstructFormChangeTable, + [SPECIES_DIANCIE] = sDiancieFormChangeTable, + [SPECIES_DIANCIE_MEGA] = sDiancieFormChangeTable, [SPECIES_HOOPA] = sHoopaFormChangeTable, [SPECIES_HOOPA_UNBOUND] = sHoopaFormChangeTable, #endif @@ -50,6 +174,8 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_ORICORIO_POM_POM] = sOricorioFormChangeTable, [SPECIES_ORICORIO_PAU] = sOricorioFormChangeTable, [SPECIES_ORICORIO_SENSU] = sOricorioFormChangeTable, + [SPECIES_WISHIWASHI] = sWishiwashiFormChangeTable, + [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiFormChangeTable, [SPECIES_SILVALLY] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_BUG] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_DARK] = sSilvallyFormChangeTable, @@ -68,8 +194,31 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_SILVALLY_ROCK] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_STEEL] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_WATER] = sSilvallyFormChangeTable, + [SPECIES_MIMIKYU] = sMimikyuFormChangeTable, + [SPECIES_MIMIKYU_BUSTED] = sMimikyuFormChangeTable, + [SPECIES_MINIOR] = sMiniorRedFormChangeTable, + [SPECIES_MINIOR_CORE_RED] = sMiniorRedFormChangeTable, + [SPECIES_MINIOR_METEOR_BLUE] = sMiniorBlueFormChangeTable, + [SPECIES_MINIOR_CORE_BLUE] = sMiniorBlueFormChangeTable, + [SPECIES_MINIOR_METEOR_GREEN] = sMiniorGreenFormChangeTable, + [SPECIES_MINIOR_CORE_GREEN] = sMiniorGreenFormChangeTable, + [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorIndigoFormChangeTable, + [SPECIES_MINIOR_CORE_INDIGO] = sMiniorIndigoFormChangeTable, + [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorOrangeFormChangeTable, + [SPECIES_MINIOR_CORE_ORANGE] = sMiniorOrangeFormChangeTable, + [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorVioletFormChangeTable, + [SPECIES_MINIOR_CORE_VIOLET] = sMiniorVioletFormChangeTable, + [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorYellowFormChangeTable, + [SPECIES_MINIOR_CORE_YELLOW] = sMiniorYellowFormChangeTable, #endif #if P_GEN_8_POKEMON == TRUE + [SPECIES_CRAMORANT] = sCramorantFormChangeTable, + [SPECIES_CRAMORANT_GULPING] = sCramorantFormChangeTable, + [SPECIES_CRAMORANT_GORGING] = sCramorantFormChangeTable, + [SPECIES_EISCUE] = sEiscueFormChangeTable, + [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormChangeTable, + [SPECIES_MORPEKO] = sMorpekoFormChangeTable, + [SPECIES_MORPEKO_HANGRY] = sMorpekoFormChangeTable, [SPECIES_ZACIAN] = sZacianFormChangeTable, [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianFormChangeTable, [SPECIES_ZAMAZENTA] = sZamazentaFormChangeTable, diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 94da0add3636..1d9b0e8dc9c8 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,199 +1,596 @@ -/* -FORM_ITEM_HOLD: - Form change activates when the specified item is given to or taken from the selected Pokémon. - Alternatively, form change activates when the specified item is is given to or taken from - the selected Pokémon that has a particular ability. - param1 = item to hold - param2 = ability to check for, optional - -FORM_ITEM_USE: - Form change activates when the item is used on the selected Pokémon. - param1 = item to use - param2 = DAY if form change activates in the daytime, optional - NIGHT if form change activates at nighttime, optional - -FORM_MOVE: - Form change activates when the Pokémon learns or forgets the move. - param1 = move to check for - param2 = WHEN_LEARNED if form change activates when move is forgotten - WHEN_FORGOTTEN if form change activates when move is learned - -FORM_WITHDRAW: - Form change activates when the Pokémon is withdrawn from the PC or Daycare. - no parameters - -FORM_BATTLE_BEGIN: - Form change activates when the Pokémon is sent out at the beginning of a battle - param1 = item to hold, optional - param2 = a move that will be replaced, optional - param3 = a new move to replace it with, optional - -FORM_BATTLE_END: - Form change activates at the end of a battle - param1 = item to hold, optional - param2 = a move that will be replaced, optional - param3 = a new move to replace it with, optional -*/ - -// FORM_MOVE param2 Arguments -#define WHEN_LEARNED 0 -#define WHEN_FORGOTTEN 1 - -// FORM_ITEM_USE param2 Arguments -#define DAY 1 -#define NIGHT 2 +static const struct FormChange sVenusaurFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_VENUSAUR_MEGA, ITEM_VENUSAURITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCharizardFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_X, ITEM_CHARIZARDITE_X}, + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_Y, ITEM_CHARIZARDITE_Y}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sBlastoiseFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLASTOISE_MEGA, ITEM_BLASTOISINITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sBeedrillFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BEEDRILL_MEGA, ITEM_BEEDRILLITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sPidgeotFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_PIDGEOT_MEGA, ITEM_PIDGEOTITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAlakazamFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALAKAZAM_MEGA, ITEM_ALAKAZITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSlowbroFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SLOWBRO_MEGA, ITEM_SLOWBRONITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGengarFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GENGAR_MEGA, ITEM_GENGARITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sKangaskhanFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_KANGASKHAN_MEGA, ITEM_KANGASKHANITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sPinsirFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_PINSIR_MEGA, ITEM_PINSIRITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGyaradosFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GYARADOS_MEGA, ITEM_GYARADOSITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAerodactylFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AERODACTYL_MEGA, ITEM_AERODACTYLITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMewtwoFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEWTWO_MEGA_X, ITEM_MEWTWONITE_X}, + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEWTWO_MEGA_Y, ITEM_MEWTWONITE_Y}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAmpharosFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AMPHAROS_MEGA, ITEM_AMPHAROSITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSteelixFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_STEELIX_MEGA, ITEM_STEELIXITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sScizorFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCIZOR_MEGA, ITEM_SCIZORITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sHeracrossFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_HERACROSS_MEGA, ITEM_HERACRONITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sHoundoomFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_HOUNDOOM_MEGA, ITEM_HOUNDOOMINITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sTyranitarFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_TYRANITAR_MEGA, ITEM_TYRANITARITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSceptileFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCEPTILE_MEGA, ITEM_SCEPTILITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sBlazikenFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLAZIKEN_MEGA, ITEM_BLAZIKENITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSwampertFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SWAMPERT_MEGA, ITEM_SWAMPERTITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSableyeFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SABLEYE_MEGA, ITEM_SABLENITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSharpedoFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SHARPEDO_MEGA, ITEM_SHARPEDONITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sManectricFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MANECTRIC_MEGA, ITEM_MANECTITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCameruptFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CAMERUPT_MEGA, ITEM_CAMERUPTITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGlalieFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GLALIE_MEGA, ITEM_GLALITITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMawileFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MAWILE_MEGA, ITEM_MAWILITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMedichamFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEDICHAM_MEGA, ITEM_MEDICHAMITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAltariaFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALTARIA_MEGA, ITEM_ALTARIANITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAbsolFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABSOL_MEGA, ITEM_ABSOLITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCastformFormChangeTable[] = { +#if B_WEATHER_FORMS >= GEN_5 + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN, ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN, ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW, ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW), ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, B_WEATHER_NONE, ABILITY_FORECAST}, +#else + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW)}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, B_WEATHER_NONE}, +#endif + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CASTFORM}, + {FORM_CHANGE_FAINT, SPECIES_CASTFORM}, + {FORM_CHANGE_END_BATTLE, SPECIES_CASTFORM}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sBanetteFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BANETTE_MEGA, ITEM_BANETTITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAggronFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AGGRON_MEGA, ITEM_AGGRONITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGardevoirFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GARDEVOIR_MEGA, ITEM_GARDEVOIRITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSalamenceFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SALAMENCE_MEGA, ITEM_SALAMENCITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMetagrossFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_METAGROSS_MEGA, ITEM_METAGROSSITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sLatiasFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LATIAS_MEGA, ITEM_LATIASITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sLatiosFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LATIOS_MEGA, ITEM_LATIOSITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sKyogreFormChangeTable[] = { + {FORM_CHANGE_BATTLE_PRIMAL_REVERSION, SPECIES_KYOGRE_PRIMAL, ITEM_BLUE_ORB}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGroudonFormChangeTable[] = { + {FORM_CHANGE_BATTLE_PRIMAL_REVERSION, SPECIES_GROUDON_PRIMAL, ITEM_RED_ORB}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sRayquazaFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE, SPECIES_RAYQUAZA_MEGA, MOVE_DRAGON_ASCENT}, + {FORM_CHANGE_TERMINATOR}, +}; #if P_GEN_4_POKEMON == TRUE +static const struct FormChange sBurmyFormChangeTable[] = { + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_LONG_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_POND}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_MOUNTAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_PLAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_CAVE}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_SAND}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH_CLOAK, BATTLE_TERRAIN_BUILDING}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCherrimFormChangeTable[] = { +#if B_WEATHER_FORMS >= GEN_5 + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, ~B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, B_WEATHER_NONE, ABILITY_FLOWER_GIFT}, +#else + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, ~B_WEATHER_SUN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, B_WEATHER_NONE}, +#endif + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHERRIM}, + {FORM_CHANGE_FAINT, SPECIES_CHERRIM}, + {FORM_CHANGE_END_BATTLE, SPECIES_CHERRIM}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sLopunnyFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LOPUNNY_MEGA, ITEM_LOPUNNITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGarchompFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GARCHOMP_MEGA, ITEM_GARCHOMPITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sLucarioFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LUCARIO_MEGA, ITEM_LUCARIONITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAbomasnowFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABOMASNOW_MEGA, ITEM_ABOMASITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGalladeFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GALLADE_MEGA, ITEM_GALLADITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sDialgaFormChangeTable[] = { + {FORM_CHANGE_ITEM_HOLD, SPECIES_DIALGA, ITEM_NONE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_DIALGA_ORIGIN, ITEM_ADAMANT_CRYSTAL}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sPalkiaFormChangeTable[] = { + {FORM_CHANGE_ITEM_HOLD, SPECIES_PALKIA, ITEM_NONE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_PALKIA_ORIGIN, ITEM_LUSTROUS_GLOBE}, + {FORM_CHANGE_TERMINATOR}, +}; + static const struct FormChange sGiratinaFormChangeTable[] = { - {FORM_ITEM_HOLD, SPECIES_GIRATINA, ITEM_NONE}, - {FORM_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA, ITEM_NONE}, +#if I_GRISEOUS_ORB_FORM_CHANGE < GEN_9 + {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB}, +#endif + {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_CORE}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sShayminFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, - // {FORM_WITHDRAW, SPECIES_SHAYMIN}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, + // {FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sArceusFormChangeTable[] = { - {FORM_ITEM_HOLD, SPECIES_ARCEUS, ITEM_NONE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIST_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIGHTINIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_SKY_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_FLYINIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_POISON, ITEM_TOXIC_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_POISON, ITEM_POISONIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_ROCK, ITEM_STONE_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_ROCK, ITEM_ROCKIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_GROUND, ITEM_EARTH_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_GROUND, ITEM_GROUNDIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_BUG, ITEM_INSECT_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_BUG, ITEM_BUGINIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_GHOST, ITEM_SPOOKY_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_GHOST, ITEM_GHOSTIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_STEEL, ITEM_IRON_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_STEEL, ITEM_STEELIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_FIRE, ITEM_FLAME_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_FIRE, ITEM_FIRIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_WATER, ITEM_SPLASH_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_WATER, ITEM_WATERIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_GRASS, ITEM_MEADOW_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_GRASS, ITEM_GRASSIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_ELECTRIC, ITEM_ZAP_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_ELECTRIC, ITEM_ELECTRIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_PSYCHIC, ITEM_MIND_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_PSYCHIC, ITEM_PSYCHIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_ICE, ITEM_ICICLE_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_ICE, ITEM_ICIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_DRAGON, ITEM_DRACO_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_DRAGON, ITEM_DRAGONIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_DARK, ITEM_DREAD_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_DARK, ITEM_DARKINIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_PIXIE_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_FAIRIUM_Z, ABILITY_MULTITYPE}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS, ITEM_NONE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIST_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIGHTINIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_SKY_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_FLYINIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_POISON, ITEM_TOXIC_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_POISON, ITEM_POISONIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ROCK, ITEM_STONE_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ROCK, ITEM_ROCKIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GROUND, ITEM_EARTH_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GROUND, ITEM_GROUNDIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_BUG, ITEM_INSECT_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_BUG, ITEM_BUGINIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GHOST, ITEM_SPOOKY_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GHOST, ITEM_GHOSTIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_STEEL, ITEM_IRON_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_STEEL, ITEM_STEELIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIRE, ITEM_FLAME_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIRE, ITEM_FIRIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_WATER, ITEM_SPLASH_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_WATER, ITEM_WATERIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GRASS, ITEM_MEADOW_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GRASS, ITEM_GRASSIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ELECTRIC, ITEM_ZAP_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ELECTRIC, ITEM_ELECTRIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_PSYCHIC, ITEM_MIND_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_PSYCHIC, ITEM_PSYCHIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ICE, ITEM_ICICLE_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ICE, ITEM_ICIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_DRAGON, ITEM_DRACO_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_DRAGON, ITEM_DRAGONIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_DARK, ITEM_DREAD_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_DARK, ITEM_DARKINIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_PIXIE_PLATE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_FAIRIUM_Z, ABILITY_MULTITYPE}, + {FORM_CHANGE_TERMINATOR}, }; #endif #if P_GEN_5_POKEMON == TRUE +static const struct FormChange sAudinoFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AUDINO_MEGA, ITEM_AUDINITE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sDarmanitanFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sDarmanitanGalarianFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMeloettaFormChangeTable[] = { + {FORM_CHANGE_FAINT, SPECIES_MELOETTA}, + {FORM_CHANGE_END_BATTLE, SPECIES_MELOETTA}, + {FORM_CHANGE_TERMINATOR}, +}; + static const struct FormChange sTornadusFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_ITEM_USE, SPECIES_TORNADUS, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sThundurusFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_ITEM_USE, SPECIES_THUNDURUS, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sLandorusFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_ITEM_USE, SPECIES_LANDORUS, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sKeldeoFormChangeTable[] = { - // {FORM_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED}, - // {FORM_MOVE, SPECIES_KELDEO, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, - {FORM_CHANGE_END}, + // {FORM_CHANGE_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED}, + // {FORM_CHANGE_MOVE, SPECIES_KELDEO, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sGenesectFormChangeTable[] = { - {FORM_ITEM_HOLD, SPECIES_GENESECT, ITEM_NONE}, - {FORM_ITEM_HOLD, SPECIES_GENESECT_DOUSE_DRIVE, ITEM_DOUSE_DRIVE}, - {FORM_ITEM_HOLD, SPECIES_GENESECT_SHOCK_DRIVE, ITEM_SHOCK_DRIVE}, - {FORM_ITEM_HOLD, SPECIES_GENESECT_BURN_DRIVE, ITEM_BURN_DRIVE}, - {FORM_ITEM_HOLD, SPECIES_GENESECT_CHILL_DRIVE, ITEM_CHILL_DRIVE}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT, ITEM_NONE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_DOUSE_DRIVE, ITEM_DOUSE_DRIVE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_SHOCK_DRIVE, ITEM_SHOCK_DRIVE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_BURN_DRIVE, ITEM_BURN_DRIVE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_CHILL_DRIVE, ITEM_CHILL_DRIVE}, + {FORM_CHANGE_TERMINATOR}, }; #endif #if P_GEN_6_POKEMON == TRUE +static const struct FormChange sGreninjaBattleBondFormChangeTable[] = { + {FORM_CHANGE_FAINT, SPECIES_GRENINJA_BATTLE_BOND}, + {FORM_CHANGE_END_BATTLE, SPECIES_GRENINJA_BATTLE_BOND}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAegislashFormChangeTable[] = { + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH}, + {FORM_CHANGE_FAINT, SPECIES_AEGISLASH}, + {FORM_CHANGE_END_BATTLE, SPECIES_AEGISLASH}, + {FORM_CHANGE_TERMINATOR}, +}; + static const struct FormChange sXerneasFormChangeTable[] = { - {FORM_BATTLE_BEGIN, SPECIES_XERNEAS_ACTIVE}, - {FORM_BATTLE_END, SPECIES_XERNEAS, }, - {FORM_CHANGE_END}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_XERNEAS_ACTIVE}, + {FORM_CHANGE_END_BATTLE, SPECIES_XERNEAS, }, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sZygardePowerConstructFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_ZYGARDE_COMPLETE, ABILITY_POWER_CONSTRUCT, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT}, + {FORM_CHANGE_END_BATTLE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sDiancieFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_DIANCIE_MEGA, ITEM_DIANCITE}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sHoopaFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA}, - // {FORM_WITHDRAW, SPECIES_HOOPA}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA}, + {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA}, + {FORM_CHANGE_TERMINATOR}, }; #endif #if P_GEN_7_POKEMON == TRUE static const struct FormChange sOricorioFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_ORICORIO, ITEM_RED_NECTAR}, - {FORM_ITEM_USE, SPECIES_ORICORIO_POM_POM, ITEM_YELLOW_NECTAR}, - {FORM_ITEM_USE, SPECIES_ORICORIO_PAU, ITEM_PINK_NECTAR}, - {FORM_ITEM_USE, SPECIES_ORICORIO_SENSU, ITEM_PURPLE_NECTAR}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO, ITEM_RED_NECTAR}, + {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_POM_POM, ITEM_YELLOW_NECTAR}, + {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_PAU, ITEM_PINK_NECTAR}, + {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_SENSU, ITEM_PURPLE_NECTAR}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sWishiwashiFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SCHOOL, ABILITY_SCHOOLING, HP_HIGHER_THAN, 25}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI, ABILITY_SCHOOLING, HP_LOWER_EQ_THAN, 25}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_WISHIWASHI}, + {FORM_CHANGE_FAINT, SPECIES_WISHIWASHI}, + {FORM_CHANGE_END_BATTLE, SPECIES_WISHIWASHI}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sSilvallyFormChangeTable[] = { - {FORM_ITEM_HOLD, SPECIES_SILVALLY, ITEM_NONE, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_FIGHTING, ITEM_FIGHTING_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_FLYING, ITEM_FLYING_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_POISON, ITEM_POISON_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_GROUND, ITEM_GROUND_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_ROCK, ITEM_ROCK_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_BUG, ITEM_BUG_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_GHOST, ITEM_GHOST_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_STEEL, ITEM_STEEL_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_FIRE, ITEM_FIRE_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_WATER, ITEM_WATER_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_GRASS, ITEM_GRASS_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_ELECTRIC, ITEM_ELECTRIC_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_PSYCHIC, ITEM_PSYCHIC_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_ICE, ITEM_ICE_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_DRAGON, ITEM_DRAGON_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_DARK, ITEM_DARK_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD, SPECIES_SILVALLY_FAIRY, ITEM_FAIRY_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY, ITEM_NONE, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FIGHTING, ITEM_FIGHTING_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FLYING, ITEM_FLYING_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_POISON, ITEM_POISON_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_GROUND, ITEM_GROUND_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_ROCK, ITEM_ROCK_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_BUG, ITEM_BUG_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_GHOST, ITEM_GHOST_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_STEEL, ITEM_STEEL_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FIRE, ITEM_FIRE_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_WATER, ITEM_WATER_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_GRASS, ITEM_GRASS_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_ELECTRIC, ITEM_ELECTRIC_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_PSYCHIC, ITEM_PSYCHIC_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_ICE, ITEM_ICE_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_DRAGON, ITEM_DRAGON_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_DARK, ITEM_DARK_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FAIRY, ITEM_FAIRY_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMimikyuFormChangeTable[] = { + {FORM_CHANGE_FAINT, SPECIES_MIMIKYU}, + {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMiniorRedFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_RED, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_RED}, + {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_RED}, + {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_RED}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sMiniorBlueFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_BLUE, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_BLUE, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_BLUE}, + {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_BLUE}, + {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_BLUE}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sMiniorGreenFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_GREEN, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_GREEN, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_GREEN}, + {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_GREEN}, + {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_GREEN}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sMiniorIndigoFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_INDIGO, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_INDIGO, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_INDIGO}, + {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_INDIGO}, + {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_INDIGO}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sMiniorOrangeFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_ORANGE, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_ORANGE, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_ORANGE}, + {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_ORANGE}, + {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_ORANGE}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sMiniorVioletFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_VIOLET, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_VIOLET, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_VIOLET}, + {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_VIOLET}, + {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_VIOLET}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sMiniorYellowFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_YELLOW, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_YELLOW, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_YELLOW}, + {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_YELLOW}, + {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_YELLOW}, + {FORM_CHANGE_TERMINATOR}, }; #endif #if P_GEN_8_POKEMON == TRUE +static const struct FormChange sCramorantFormChangeTable[] = { + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_CRAMORANT_GULPING, ABILITY_GULP_MISSILE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_CRAMORANT_GORGING, ABILITY_GULP_MISSILE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CRAMORANT}, + {FORM_CHANGE_FAINT, SPECIES_CRAMORANT}, + {FORM_CHANGE_END_BATTLE, SPECIES_CRAMORANT}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sEiscueFormChangeTable[] = { + {FORM_CHANGE_FAINT, SPECIES_EISCUE}, + {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMorpekoFormChangeTable[] = { + {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_HANGRY, ABILITY_HUNGER_SWITCH}, + {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO , ABILITY_HUNGER_SWITCH}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MORPEKO}, + {FORM_CHANGE_FAINT, SPECIES_MORPEKO}, + {FORM_CHANGE_END_BATTLE, SPECIES_MORPEKO}, + {FORM_CHANGE_TERMINATOR}, +}; + static const struct FormChange sZacianFormChangeTable[] = { - {FORM_BATTLE_BEGIN, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, - {FORM_BATTLE_END, SPECIES_ZACIAN, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, - {FORM_CHANGE_END}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sZamazentaFormChangeTable[] = { - {FORM_BATTLE_BEGIN, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, - {FORM_BATTLE_END, SPECIES_ZAMAZENTA, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, - {FORM_CHANGE_END}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, + {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sEnamorusFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_ENAMORUS, ITEM_REVEAL_GLASS}, - {FORM_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, + {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_TERMINATOR}, }; #endif diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index 73b1b07d7a88..cc66c12ed835 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -171,6 +171,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ZARUDE] = sZarudeFormSpeciesIdTable, [SPECIES_CALYREX] = sCalyrexFormSpeciesIdTable, [SPECIES_ENAMORUS] = sEnamorusFormSpeciesIdTable, + [SPECIES_BASCULEGION] = sBasculegionFormSpeciesIdTable, #endif // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurFormSpeciesIdTable, @@ -590,5 +591,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexFormSpeciesIdTable, // Enamorus [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable, + // Basculegion + [SPECIES_BASCULEGION_FEMALE] = sBasculegionFormSpeciesIdTable, #endif }; diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 545201c5af66..2f4e9088e0e4 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1145,4 +1145,10 @@ static const u16 sEnamorusFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sBasculegionFormSpeciesIdTable[] = { + SPECIES_BASCULEGION, + SPECIES_BASCULEGION_FEMALE, + FORM_SPECIES_END, +}; + #endif diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index 2651b4daf77a..d7482d504379 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -447,128 +447,149 @@ const u8 gItemEffect_TamatoBerry[10] = { EV_BERRY_FRIENDSHIP_CHANGE, }; -const u8 *const gItemEffectTable[] = +const u8 *const gItemEffectTable[ITEMS_COUNT] = { // Medicine - [ITEM_POTION - ITEM_POTION] = gItemEffect_Potion, - [ITEM_SUPER_POTION - ITEM_POTION] = gItemEffect_SuperPotion, - [ITEM_HYPER_POTION - ITEM_POTION] = gItemEffect_HyperPotion, - [ITEM_MAX_POTION - ITEM_POTION] = gItemEffect_MaxPotion, - [ITEM_FULL_RESTORE - ITEM_POTION] = gItemEffect_FullRestore, - [ITEM_REVIVE - ITEM_POTION] = gItemEffect_Revive, - [ITEM_MAX_REVIVE - ITEM_POTION] = gItemEffect_MaxRevive, - [ITEM_FRESH_WATER - ITEM_POTION] = gItemEffect_FreshWater, - [ITEM_SODA_POP - ITEM_POTION] = gItemEffect_SodaPop, - [ITEM_LEMONADE - ITEM_POTION] = gItemEffect_Lemonade, - [ITEM_MOOMOO_MILK - ITEM_POTION] = gItemEffect_MoomooMilk, - [ITEM_ENERGY_POWDER - ITEM_POTION] = gItemEffect_EnergyPowder, - [ITEM_ENERGY_ROOT - ITEM_POTION] = gItemEffect_EnergyRoot, - [ITEM_HEAL_POWDER - ITEM_POTION] = gItemEffect_HealPowder, - [ITEM_REVIVAL_HERB - ITEM_POTION] = gItemEffect_RevivalHerb, - [ITEM_ANTIDOTE - ITEM_POTION] = gItemEffect_Antidote, - [ITEM_PARALYZE_HEAL - ITEM_POTION] = gItemEffect_ParalyzeHeal, - [ITEM_BURN_HEAL - ITEM_POTION] = gItemEffect_BurnHeal, - [ITEM_ICE_HEAL - ITEM_POTION] = gItemEffect_IceHeal, - [ITEM_AWAKENING - ITEM_POTION] = gItemEffect_Awakening, - [ITEM_FULL_HEAL - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_ETHER - ITEM_POTION] = gItemEffect_Ether, - [ITEM_MAX_ETHER - ITEM_POTION] = gItemEffect_MaxEther, - [ITEM_ELIXIR - ITEM_POTION] = gItemEffect_Elixir, - [ITEM_MAX_ELIXIR - ITEM_POTION] = gItemEffect_MaxElixir, - [ITEM_BERRY_JUICE - ITEM_POTION] = gItemEffect_BerryJuice, - [ITEM_SACRED_ASH - ITEM_POTION] = gItemEffect_SacredAsh, - [ITEM_SWEET_HEART - ITEM_POTION] = gItemEffect_Potion, - [ITEM_MAX_HONEY - ITEM_POTION] = gItemEffect_MaxRevive, + [ITEM_POTION] = gItemEffect_Potion, + [ITEM_SUPER_POTION] = gItemEffect_SuperPotion, + [ITEM_HYPER_POTION] = gItemEffect_HyperPotion, + [ITEM_MAX_POTION] = gItemEffect_MaxPotion, + [ITEM_FULL_RESTORE] = gItemEffect_FullRestore, + [ITEM_REVIVE] = gItemEffect_Revive, + [ITEM_MAX_REVIVE] = gItemEffect_MaxRevive, + [ITEM_FRESH_WATER] = gItemEffect_FreshWater, + [ITEM_SODA_POP] = gItemEffect_SodaPop, + [ITEM_LEMONADE] = gItemEffect_Lemonade, + [ITEM_MOOMOO_MILK] = gItemEffect_MoomooMilk, + [ITEM_ENERGY_POWDER] = gItemEffect_EnergyPowder, + [ITEM_ENERGY_ROOT] = gItemEffect_EnergyRoot, + [ITEM_HEAL_POWDER] = gItemEffect_HealPowder, + [ITEM_REVIVAL_HERB] = gItemEffect_RevivalHerb, + [ITEM_ANTIDOTE] = gItemEffect_Antidote, + [ITEM_PARALYZE_HEAL] = gItemEffect_ParalyzeHeal, + [ITEM_BURN_HEAL] = gItemEffect_BurnHeal, + [ITEM_ICE_HEAL] = gItemEffect_IceHeal, + [ITEM_AWAKENING] = gItemEffect_Awakening, + [ITEM_FULL_HEAL] = gItemEffect_FullHeal, + [ITEM_ETHER] = gItemEffect_Ether, + [ITEM_MAX_ETHER] = gItemEffect_MaxEther, + [ITEM_ELIXIR] = gItemEffect_Elixir, + [ITEM_MAX_ELIXIR] = gItemEffect_MaxElixir, + [ITEM_BERRY_JUICE] = gItemEffect_BerryJuice, + [ITEM_SACRED_ASH] = gItemEffect_SacredAsh, + [ITEM_SWEET_HEART] = gItemEffect_Potion, + [ITEM_MAX_HONEY] = gItemEffect_MaxRevive, // Regional Specialties - [ITEM_PEWTER_CRUNCHIES - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_RAGE_CANDY_BAR - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_LAVA_COOKIE - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_OLD_GATEAU - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_CASTELIACONE - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_LUMIOSE_GALETTE - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_SHALOUR_SABLE - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_BIG_MALASADA - ITEM_POTION] = gItemEffect_FullHeal, + [ITEM_PEWTER_CRUNCHIES] = gItemEffect_FullHeal, + [ITEM_RAGE_CANDY_BAR] = gItemEffect_FullHeal, + [ITEM_LAVA_COOKIE] = gItemEffect_FullHeal, + [ITEM_OLD_GATEAU] = gItemEffect_FullHeal, + [ITEM_CASTELIACONE] = gItemEffect_FullHeal, + [ITEM_LUMIOSE_GALETTE] = gItemEffect_FullHeal, + [ITEM_SHALOUR_SABLE] = gItemEffect_FullHeal, + [ITEM_BIG_MALASADA] = gItemEffect_FullHeal, // Vitamins - [ITEM_HP_UP - ITEM_POTION] = gItemEffect_HPUp, - [ITEM_PROTEIN - ITEM_POTION] = gItemEffect_Protein, - [ITEM_IRON - ITEM_POTION] = gItemEffect_Iron, - [ITEM_CALCIUM - ITEM_POTION] = gItemEffect_Calcium, - [ITEM_ZINC - ITEM_POTION] = gItemEffect_Zinc, - [ITEM_CARBOS - ITEM_POTION] = gItemEffect_Carbos, - [ITEM_PP_UP - ITEM_POTION] = gItemEffect_PPUp, - [ITEM_PP_MAX - ITEM_POTION] = gItemEffect_PPMax, + [ITEM_HP_UP] = gItemEffect_HPUp, + [ITEM_PROTEIN] = gItemEffect_Protein, + [ITEM_IRON] = gItemEffect_Iron, + [ITEM_CALCIUM] = gItemEffect_Calcium, + [ITEM_ZINC] = gItemEffect_Zinc, + [ITEM_CARBOS] = gItemEffect_Carbos, + [ITEM_PP_UP] = gItemEffect_PPUp, + [ITEM_PP_MAX] = gItemEffect_PPMax, // EV Feathers - [ITEM_HEALTH_FEATHER - ITEM_POTION] = gItemEffect_HpFeather, - [ITEM_MUSCLE_FEATHER - ITEM_POTION] = gItemEffect_AtkFeather, - [ITEM_RESIST_FEATHER - ITEM_POTION] = gItemEffect_DefFeather, - [ITEM_GENIUS_FEATHER - ITEM_POTION] = gItemEffect_SpatkFeather, - [ITEM_CLEVER_FEATHER - ITEM_POTION] = gItemEffect_SpdefFeather, - [ITEM_SWIFT_FEATHER - ITEM_POTION] = gItemEffect_SpeedFeather, + [ITEM_HEALTH_FEATHER] = gItemEffect_HpFeather, + [ITEM_MUSCLE_FEATHER] = gItemEffect_AtkFeather, + [ITEM_RESIST_FEATHER] = gItemEffect_DefFeather, + [ITEM_GENIUS_FEATHER] = gItemEffect_SpatkFeather, + [ITEM_CLEVER_FEATHER] = gItemEffect_SpdefFeather, + [ITEM_SWIFT_FEATHER] = gItemEffect_SpeedFeather, // Candy - [ITEM_RARE_CANDY - ITEM_POTION] = gItemEffect_RareCandy, - [ITEM_EXP_CANDY_XS - ITEM_POTION] = gItemEffect_RareCandy, - [ITEM_EXP_CANDY_S - ITEM_POTION] = gItemEffect_RareCandy, - [ITEM_EXP_CANDY_M - ITEM_POTION] = gItemEffect_RareCandy, - [ITEM_EXP_CANDY_L - ITEM_POTION] = gItemEffect_RareCandy, - [ITEM_EXP_CANDY_XL - ITEM_POTION] = gItemEffect_RareCandy, - //[ITEM_DYNAMAX_CANDY - ITEM_POTION] = gItemEffect_DynamaxCandy, // Todo + [ITEM_RARE_CANDY] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_XS] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_S] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_M] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_L] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_XL] = gItemEffect_RareCandy, + //[ITEM_DYNAMAX_CANDY] = gItemEffect_DynamaxCandy, // Todo // Medicinal Flutes - [ITEM_BLUE_FLUTE - ITEM_POTION] = gItemEffect_BlueFlute, - [ITEM_YELLOW_FLUTE - ITEM_POTION] = gItemEffect_YellowFlute, - [ITEM_RED_FLUTE - ITEM_POTION] = gItemEffect_RedFlute, + [ITEM_BLUE_FLUTE] = gItemEffect_BlueFlute, + [ITEM_YELLOW_FLUTE] = gItemEffect_YellowFlute, + [ITEM_RED_FLUTE] = gItemEffect_RedFlute, // X Items - [ITEM_X_ATTACK - ITEM_POTION] = gItemEffect_XAttack, - [ITEM_X_DEFENSE - ITEM_POTION] = gItemEffect_XDefense, - [ITEM_X_SPEED - ITEM_POTION] = gItemEffect_XSpeed, - [ITEM_X_ACCURACY - ITEM_POTION] = gItemEffect_XAccuracy, - [ITEM_X_SP_ATK - ITEM_POTION] = gItemEffect_XSpecialAttack, - [ITEM_X_SP_DEF - ITEM_POTION] = gItemEffect_XSpecialDefense, + [ITEM_X_ATTACK] = gItemEffect_XAttack, + [ITEM_X_DEFENSE] = gItemEffect_XDefense, + [ITEM_X_SPEED] = gItemEffect_XSpeed, + [ITEM_X_ACCURACY] = gItemEffect_XAccuracy, + [ITEM_X_SP_ATK] = gItemEffect_XSpecialAttack, + [ITEM_X_SP_DEF] = gItemEffect_XSpecialDefense, - [ITEM_DIRE_HIT - ITEM_POTION] = gItemEffect_DireHit, - [ITEM_GUARD_SPEC - ITEM_POTION] = gItemEffect_GuardSpec, - - //[ITEM_MAX_MUSHROOMS - ITEM_POTION] = gItemEffect_MaxMushrooms, // Todo + [ITEM_DIRE_HIT] = gItemEffect_DireHit, + [ITEM_GUARD_SPEC] = gItemEffect_GuardSpec, // Evolution Items - [ITEM_FIRE_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_WATER_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_THUNDER_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_LEAF_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_ICE_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_SUN_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_MOON_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_SHINY_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_DUSK_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_DAWN_STONE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_SWEET_APPLE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_TART_APPLE - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_CRACKED_POT - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_CHIPPED_POT - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_GALARICA_CUFF - ITEM_POTION] = gItemEffect_EvoItem, - [ITEM_GALARICA_WREATH - ITEM_POTION] = gItemEffect_EvoItem, + [ITEM_FIRE_STONE] = gItemEffect_EvoItem, + [ITEM_WATER_STONE] = gItemEffect_EvoItem, + [ITEM_THUNDER_STONE] = gItemEffect_EvoItem, + [ITEM_LEAF_STONE] = gItemEffect_EvoItem, + [ITEM_ICE_STONE] = gItemEffect_EvoItem, + [ITEM_SUN_STONE] = gItemEffect_EvoItem, + [ITEM_MOON_STONE] = gItemEffect_EvoItem, + [ITEM_SHINY_STONE] = gItemEffect_EvoItem, + [ITEM_DUSK_STONE] = gItemEffect_EvoItem, + [ITEM_DAWN_STONE] = gItemEffect_EvoItem, + [ITEM_SWEET_APPLE] = gItemEffect_EvoItem, + [ITEM_TART_APPLE] = gItemEffect_EvoItem, + [ITEM_CRACKED_POT] = gItemEffect_EvoItem, + [ITEM_CHIPPED_POT] = gItemEffect_EvoItem, + [ITEM_GALARICA_CUFF] = gItemEffect_EvoItem, + [ITEM_GALARICA_WREATH] = gItemEffect_EvoItem, + [ITEM_DRAGON_SCALE] = gItemEffect_EvoItem, + [ITEM_UPGRADE] = gItemEffect_EvoItem, + [ITEM_PROTECTOR] = gItemEffect_EvoItem, + [ITEM_ELECTIRIZER] = gItemEffect_EvoItem, + [ITEM_MAGMARIZER] = gItemEffect_EvoItem, + [ITEM_DUBIOUS_DISC] = gItemEffect_EvoItem, + [ITEM_REAPER_CLOTH] = gItemEffect_EvoItem, + [ITEM_PRISM_SCALE] = gItemEffect_EvoItem, + [ITEM_WHIPPED_DREAM] = gItemEffect_EvoItem, + [ITEM_SACHET] = gItemEffect_EvoItem, + [ITEM_OVAL_STONE] = gItemEffect_EvoItem, + [ITEM_DEEP_SEA_SCALE] = gItemEffect_EvoItem, + [ITEM_DEEP_SEA_TOOTH] = gItemEffect_EvoItem, + [ITEM_METAL_COAT] = gItemEffect_EvoItem, + [ITEM_KINGS_ROCK] = gItemEffect_EvoItem, + [ITEM_RAZOR_CLAW] = gItemEffect_EvoItem, + [ITEM_AUSPICIOUS_ARMOR] = gItemEffect_EvoItem, + [ITEM_MALICIOUS_ARMOR] = gItemEffect_EvoItem, + [ITEM_SCROLL_OF_DARKNESS] = gItemEffect_EvoItem, + [ITEM_SCROLL_OF_WATERS] = gItemEffect_EvoItem, + [ITEM_BLACK_AUGURITE] = gItemEffect_EvoItem, + [ITEM_LINKING_CORD] = gItemEffect_EvoItem, + [ITEM_PEAT_BLOCK] = gItemEffect_EvoItem, // Berries - [ITEM_CHERI_BERRY - ITEM_POTION] = gItemEffect_CheriBerry, - [ITEM_CHESTO_BERRY - ITEM_POTION] = gItemEffect_ChestoBerry, - [ITEM_PECHA_BERRY - ITEM_POTION] = gItemEffect_PechaBerry, - [ITEM_RAWST_BERRY - ITEM_POTION] = gItemEffect_RawstBerry, - [ITEM_ASPEAR_BERRY - ITEM_POTION] = gItemEffect_AspearBerry, - [ITEM_LEPPA_BERRY - ITEM_POTION] = gItemEffect_LeppaBerry, - [ITEM_ORAN_BERRY - ITEM_POTION] = gItemEffect_OranBerry, - [ITEM_PERSIM_BERRY - ITEM_POTION] = gItemEffect_PersimBerry, - [ITEM_LUM_BERRY - ITEM_POTION] = gItemEffect_FullHeal, - [ITEM_SITRUS_BERRY - ITEM_POTION] = gItemEffect_SitrusBerry, - [ITEM_POMEG_BERRY - ITEM_POTION] = gItemEffect_PomegBerry, - [ITEM_KELPSY_BERRY - ITEM_POTION] = gItemEffect_KelpsyBerry, - [ITEM_QUALOT_BERRY - ITEM_POTION] = gItemEffect_QualotBerry, - [ITEM_HONDEW_BERRY - ITEM_POTION] = gItemEffect_HondewBerry, - [ITEM_GREPA_BERRY - ITEM_POTION] = gItemEffect_GrepaBerry, - [ITEM_TAMATO_BERRY - ITEM_POTION] = gItemEffect_TamatoBerry, - [LAST_BERRY_INDEX - ITEM_POTION] = NULL, + [ITEM_CHERI_BERRY] = gItemEffect_CheriBerry, + [ITEM_CHESTO_BERRY] = gItemEffect_ChestoBerry, + [ITEM_PECHA_BERRY] = gItemEffect_PechaBerry, + [ITEM_RAWST_BERRY] = gItemEffect_RawstBerry, + [ITEM_ASPEAR_BERRY] = gItemEffect_AspearBerry, + [ITEM_LEPPA_BERRY] = gItemEffect_LeppaBerry, + [ITEM_ORAN_BERRY] = gItemEffect_OranBerry, + [ITEM_PERSIM_BERRY] = gItemEffect_PersimBerry, + [ITEM_LUM_BERRY] = gItemEffect_FullHeal, + [ITEM_SITRUS_BERRY] = gItemEffect_SitrusBerry, + [ITEM_POMEG_BERRY] = gItemEffect_PomegBerry, + [ITEM_KELPSY_BERRY] = gItemEffect_KelpsyBerry, + [ITEM_QUALOT_BERRY] = gItemEffect_QualotBerry, + [ITEM_HONDEW_BERRY] = gItemEffect_HondewBerry, + [ITEM_GREPA_BERRY] = gItemEffect_GrepaBerry, + [ITEM_TAMATO_BERRY] = gItemEffect_TamatoBerry, + [LAST_BERRY_INDEX] = NULL, }; diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 0ecfa59ccf68..19b4e42e44f9 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -789,9 +789,9 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_BRUXISH] = sBruxishLevelUpLearnset, [SPECIES_DRAMPA] = sDrampaLevelUpLearnset, [SPECIES_DHELMISE] = sDhelmiseLevelUpLearnset, - [SPECIES_JANGMO_O] = sJangmooLevelUpLearnset, - [SPECIES_HAKAMO_O] = sHakamooLevelUpLearnset, - [SPECIES_KOMMO_O] = sKommooLevelUpLearnset, + [SPECIES_JANGMO_O] = sJangmoOLevelUpLearnset, + [SPECIES_HAKAMO_O] = sHakamoOLevelUpLearnset, + [SPECIES_KOMMO_O] = sKommoOLevelUpLearnset, [SPECIES_TAPU_KOKO] = sTapuKokoLevelUpLearnset, [SPECIES_TAPU_LELE] = sTapuLeleLevelUpLearnset, [SPECIES_TAPU_BULU] = sTapuBuluLevelUpLearnset, @@ -1334,5 +1334,6 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderLevelUpLearnset, // Enamorus [SPECIES_ENAMORUS_THERIAN] = sEnamorusLevelUpLearnset, + [SPECIES_BASCULEGION_FEMALE] = sBasculegionLevelUpLearnset, #endif }; diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index f4ad3b566992..17af6b888869 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -15960,7 +15960,7 @@ static const struct LevelUpMove sDhelmiseLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sJangmooLevelUpLearnset[] = { +static const struct LevelUpMove sJangmoOLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_LEER), LEVEL_UP_MOVE( 9, MOVE_BIDE), @@ -15978,7 +15978,7 @@ static const struct LevelUpMove sJangmooLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sHakamooLevelUpLearnset[] = { +static const struct LevelUpMove sHakamoOLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_SKY_UPPERCUT), LEVEL_UP_MOVE( 1, MOVE_SKY_UPPERCUT), LEVEL_UP_MOVE( 1, MOVE_AUTOTOMIZE), @@ -16003,7 +16003,7 @@ static const struct LevelUpMove sHakamooLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sKommooLevelUpLearnset[] = { +static const struct LevelUpMove sKommoOLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_CLANGING_SCALES), LEVEL_UP_MOVE( 1, MOVE_CLANGING_SCALES), LEVEL_UP_MOVE( 1, MOVE_SKY_UPPERCUT), diff --git a/src/data/pokemon/pokedex_entries.h b/src/data/pokemon/pokedex_entries.h index 49253826005f..56af95f1b711 100644 --- a/src/data/pokemon/pokedex_entries.h +++ b/src/data/pokemon/pokedex_entries.h @@ -4651,8 +4651,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 102, .description = gTurtwigPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, }, @@ -4663,8 +4663,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 970, .description = gGrotlePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, }, @@ -4675,10 +4675,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 22, .weight = 3100, .description = gTorterraPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, }, [NATIONAL_DEX_CHIMCHAR] = @@ -4687,8 +4687,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 62, .description = gChimcharPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -4699,8 +4699,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 220, .description = gMonfernoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, }, @@ -4711,8 +4711,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 550, .description = gInfernapePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -4723,7 +4723,7 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 52, .description = gPiplupPokedexText, - .pokemonScale = 356, + .pokemonScale = 491, .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, @@ -4735,9 +4735,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 230, .description = gPrinplupPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 10, + .trainerScale = 257, .trainerOffset = 0, }, @@ -4747,10 +4747,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 845, .description = gEmpoleonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, }, [NATIONAL_DEX_STARLY] = @@ -4759,8 +4759,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 20, .description = gStarlyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -4771,8 +4771,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 155, .description = gStaraviaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -4783,8 +4783,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 249, .description = gStaraptorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -4795,8 +4795,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 200, .description = gBidoofPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, }, @@ -4807,9 +4807,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 315, .description = gBibarelPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 257, .trainerOffset = 0, }, @@ -4819,7 +4819,7 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 22, .description = gKricketotPokedexText, - .pokemonScale = 356, + .pokemonScale = 530, .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, @@ -4831,9 +4831,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 255, .description = gKricketunePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 257, .trainerOffset = 0, }, @@ -4843,7 +4843,7 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 95, .description = gShinxPokedexText, - .pokemonScale = 356, + .pokemonScale = 432, .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, @@ -4855,8 +4855,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 305, .description = gLuxioPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, }, @@ -4867,9 +4867,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 420, .description = gLuxrayPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -4879,8 +4879,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 12, .description = gBudewPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -4891,8 +4891,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 145, .description = gRoseradePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, }, @@ -4903,8 +4903,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 315, .description = gCranidosPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, }, @@ -4915,10 +4915,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 1025, .description = gRampardosPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_SHIELDON] = @@ -4927,8 +4927,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 570, .description = gShieldonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, }, @@ -4939,8 +4939,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 1495, .description = gBastiodonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -4951,8 +4951,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 34, .description = gBurmyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -4963,8 +4963,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 65, .description = gWormadamPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -4975,8 +4975,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 233, .description = gMothimPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -4987,8 +4987,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 55, .description = gCombeePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -4999,8 +4999,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 385, .description = gVespiquenPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -5011,8 +5011,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 39, .description = gPachirisuPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, }, @@ -5023,8 +5023,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 295, .description = gBuizelPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -5035,8 +5035,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 335, .description = gFloatzelPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -5047,8 +5047,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 33, .description = gCherubiPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -5059,8 +5059,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 93, .description = gCherrimPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5071,8 +5071,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 63, .description = gShellosPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5083,8 +5083,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 299, .description = gGastrodonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -5095,8 +5095,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 203, .description = gAmbipomPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -5107,8 +5107,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 12, .description = gDrifloonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -5119,8 +5119,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 150, .description = gDrifblimPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -5131,8 +5131,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 55, .description = gBunearyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, }, @@ -5143,8 +5143,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 333, .description = gLopunnyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -5155,8 +5155,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 44, .description = gMismagiusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -5167,8 +5167,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 273, .description = gHonchkrowPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -5179,8 +5179,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 39, .description = gGlameowPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5191,9 +5191,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 438, .description = gPuruglyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5203,8 +5203,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 6, .description = gChinglingPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -5215,7 +5215,7 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 192, .description = gStunkyPokedexText, - .pokemonScale = 356, + .pokemonScale = 491, .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, @@ -5227,9 +5227,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 380, .description = gSkuntankPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 9, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5239,8 +5239,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 605, .description = gBronzorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5251,8 +5251,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 1870, .description = gBronzongPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -5263,8 +5263,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 150, .description = gBonslyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5275,8 +5275,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 130, .description = gMimeJrPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -5287,8 +5287,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 244, .description = gHappinyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -5299,8 +5299,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 19, .description = gChatotPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -5311,9 +5311,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 1080, .description = gSpiritombPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5323,8 +5323,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 205, .description = gGiblePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -5335,9 +5335,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 560, .description = gGabitePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -5347,10 +5347,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 950, .description = gGarchompPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, }, [NATIONAL_DEX_MUNCHLAX] = @@ -5359,8 +5359,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 1050, .description = gMunchlaxPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -5371,8 +5371,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 202, .description = gRioluPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5383,8 +5383,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 540, .description = gLucarioPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -5395,9 +5395,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 495, .description = gHippopotasPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 11, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5407,10 +5407,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 3000, .description = gHippowdonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 2, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_SKORUPI] = @@ -5419,9 +5419,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 120, .description = gSkorupiPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 12, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5431,8 +5431,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 615, .description = gDrapionPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, }, @@ -5443,8 +5443,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 230, .description = gCroagunkPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -5455,8 +5455,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 444, .description = gToxicroakPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -5467,9 +5467,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 270, .description = gCarnivinePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -5479,8 +5479,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 70, .description = gFinneonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -5491,8 +5491,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 240, .description = gLumineonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -5503,9 +5503,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 650, .description = gMantykePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5515,9 +5515,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 505, .description = gSnoverPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5527,10 +5527,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 22, .weight = 1355, .description = gAbomasnowPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, }, [NATIONAL_DEX_WEAVILE] = @@ -5539,8 +5539,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 340, .description = gWeavilePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -5551,8 +5551,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 1800, .description = gMagnezonePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -5563,10 +5563,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 1400, .description = gLickilickyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, }, [NATIONAL_DEX_RHYPERIOR] = @@ -5575,10 +5575,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 24, .weight = 2828, .description = gRhyperiorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, }, [NATIONAL_DEX_TANGROWTH] = @@ -5587,10 +5587,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 1286, .description = gTangrowthPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_ELECTIVIRE] = @@ -5599,10 +5599,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 1386, .description = gElectivirePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_MAGMORTAR] = @@ -5611,10 +5611,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 680, .description = gMagmortarPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_TOGEKISS] = @@ -5623,9 +5623,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 380, .description = gTogekissPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -5635,10 +5635,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 515, .description = gYanmegaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, }, [NATIONAL_DEX_LEAFEON] = @@ -5647,9 +5647,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 255, .description = gLeafeonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5659,9 +5659,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 259, .description = gGlaceonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 10, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5671,10 +5671,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 425, .description = gGliscorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_MAMOSWINE] = @@ -5683,10 +5683,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 25, .weight = 2910, .description = gMamoswinePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 257, + .pokemonOffset = 6, + .trainerScale = 423, + .trainerOffset = 8, }, [NATIONAL_DEX_PORYGON_Z] = @@ -5695,8 +5695,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 340, .description = gPorygonZPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -5707,10 +5707,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 520, .description = gGalladePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_PROBOPASS] = @@ -5719,9 +5719,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 3400, .description = gProbopassPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -5731,10 +5731,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 22, .weight = 1066, .description = gDusknoirPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, }, [NATIONAL_DEX_FROSLASS] = @@ -5743,8 +5743,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 266, .description = gFroslassPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -5755,8 +5755,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 3, .description = gRotomPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5767,8 +5767,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 3, .description = gUxiePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5779,8 +5779,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 3, .description = gMespritPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5791,8 +5791,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 3, .description = gAzelfPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5803,10 +5803,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 54, .weight = 6830, .description = gDialgaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, }, [NATIONAL_DEX_PALKIA] = @@ -5815,10 +5815,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 42, .weight = 3360, .description = gPalkiaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 650, + .trainerOffset = 16, }, [NATIONAL_DEX_HEATRAN] = @@ -5827,10 +5827,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 4300, .description = gHeatranPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 290, + .trainerOffset = 1, }, [NATIONAL_DEX_REGIGIGAS] = @@ -5839,10 +5839,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 37, .weight = 4200, .description = gRegigigasPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 610, + .trainerOffset = 17, }, [NATIONAL_DEX_GIRATINA] = @@ -5851,10 +5851,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 45, .weight = 7500, .description = gGiratinaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 614, + .trainerOffset = 13, }, [NATIONAL_DEX_CRESSELIA] = @@ -5863,9 +5863,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 856, .description = gCresseliaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -5875,8 +5875,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 31, .description = gPhionePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -5887,8 +5887,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 14, .description = gManaphyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -5899,9 +5899,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 505, .description = gDarkraiPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -5911,8 +5911,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 21, .description = gShayminPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -5923,10 +5923,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 32, .weight = 3200, .description = gArceusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 495, + .trainerOffset = 10, }, #endif @@ -5937,8 +5937,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 40, .description = gVictiniPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, }, @@ -5949,8 +5949,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 81, .description = gSnivyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -5961,9 +5961,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 160, .description = gServinePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 9, + .trainerScale = 257, .trainerOffset = 0, }, @@ -5973,10 +5973,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 33, .weight = 630, .description = gSerperiorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 405, + .trainerOffset = 8, }, [NATIONAL_DEX_TEPIG] = @@ -5985,8 +5985,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 99, .description = gTepigPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -5997,9 +5997,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 555, .description = gPignitePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6009,10 +6009,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 1500, .description = gEmboarPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_OSHAWOTT] = @@ -6021,8 +6021,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 59, .description = gOshawottPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6033,9 +6033,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 245, .description = gDewottPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 9, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6045,9 +6045,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 946, .description = gSamurottPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -6057,8 +6057,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 116, .description = gPatratPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -6069,8 +6069,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 270, .description = gWatchogPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6081,8 +6081,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 41, .description = gLillipupPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6093,8 +6093,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 147, .description = gHerdierPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, }, @@ -6105,8 +6105,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 610, .description = gStoutlandPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -6117,8 +6117,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 101, .description = gPurrloinPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6129,8 +6129,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 375, .description = gLiepardPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6141,8 +6141,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 105, .description = gPansagePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6153,8 +6153,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 305, .description = gSimisagePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6165,8 +6165,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 110, .description = gPansearPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6177,9 +6177,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 280, .description = gSimisearPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6189,8 +6189,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 135, .description = gPanpourPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6201,9 +6201,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 290, .description = gSimipourPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6213,8 +6213,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 233, .description = gMunnaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6225,8 +6225,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 605, .description = gMusharnaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6237,8 +6237,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 21, .description = gPidovePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -6249,8 +6249,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 150, .description = gTranquillPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6261,8 +6261,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 290, .description = gUnfezantPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -6273,9 +6273,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 298, .description = gBlitzlePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 8, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6285,10 +6285,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 795, .description = gZebstrikaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_ROGGENROLA] = @@ -6297,8 +6297,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 180, .description = gRoggenrolaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, }, @@ -6309,8 +6309,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 1020, .description = gBoldorePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -6321,10 +6321,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 2600, .description = gGigalithPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, }, [NATIONAL_DEX_WOOBAT] = @@ -6333,8 +6333,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 21, .description = gWoobatPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6345,8 +6345,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 105, .description = gSwoobatPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -6357,8 +6357,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 85, .description = gDrilburPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -6369,8 +6369,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 404, .description = gExcadrillPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6381,8 +6381,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 310, .description = gAudinoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6393,8 +6393,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 125, .description = gTimburrPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -6405,8 +6405,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 400, .description = gGurdurrPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -6417,9 +6417,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 870, .description = gConkeldurrPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 3, + .trainerScale = 262, .trainerOffset = 0, }, @@ -6429,8 +6429,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 45, .description = gTympolePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6441,9 +6441,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 170, .description = gPalpitoadPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 10, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6453,9 +6453,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 620, .description = gSeismitoadPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -6465,8 +6465,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 555, .description = gThrohPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6477,9 +6477,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 510, .description = gSawkPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 4, + .trainerScale = 262, .trainerOffset = 0, }, @@ -6489,8 +6489,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 25, .description = gSewaddlePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6501,8 +6501,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 73, .description = gSwadloonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6513,8 +6513,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 205, .description = gLeavannyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -6525,8 +6525,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 53, .description = gVenipedePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, }, @@ -6537,8 +6537,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 585, .description = gWhirlipedePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6549,10 +6549,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 25, .weight = 2005, .description = gScolipedePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 257, + .pokemonOffset = 2, + .trainerScale = 423, + .trainerOffset = 8, }, [NATIONAL_DEX_COTTONEE] = @@ -6561,8 +6561,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 6, .description = gCottoneePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6573,8 +6573,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 66, .description = gWhimsicottPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6585,8 +6585,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 66, .description = gPetililPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -6597,8 +6597,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 163, .description = gLilligantPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6609,9 +6609,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 180, .description = gBasculinPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 316, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6621,8 +6621,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 152, .description = gSandilePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -6633,9 +6633,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 334, .description = gKrokorokPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6645,9 +6645,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 963, .description = gKrookodilePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -6657,8 +6657,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 375, .description = gDarumakaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -6669,8 +6669,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 929, .description = gDarmanitanPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -6681,9 +6681,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 280, .description = gMaractusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 6, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6693,8 +6693,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 145, .description = gDwebblePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -6705,9 +6705,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 2000, .description = gCrustlePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -6717,8 +6717,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 118, .description = gScraggyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -6729,8 +6729,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 300, .description = gScraftyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -6741,9 +6741,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 140, .description = gSigilyphPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -6753,8 +6753,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 15, .description = gYamaskPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -6765,10 +6765,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 765, .description = gCofagrigusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, }, [NATIONAL_DEX_TIRTOUGA] = @@ -6777,8 +6777,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 165, .description = gTirtougaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6789,8 +6789,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 810, .description = gCarracostaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -6801,8 +6801,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 95, .description = gArchenPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -6813,9 +6813,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 320, .description = gArcheopsPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -6825,8 +6825,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 310, .description = gTrubbishPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -6837,10 +6837,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 1073, .description = gGarbodorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, }, [NATIONAL_DEX_ZORUA] = @@ -6849,8 +6849,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 125, .description = gZoruaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6861,10 +6861,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 811, .description = gZoroarkPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_MINCCINO] = @@ -6873,8 +6873,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 58, .description = gMinccinoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6885,8 +6885,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 75, .description = gCinccinoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -6897,8 +6897,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 58, .description = gGothitaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -6909,8 +6909,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 180, .description = gGothoritaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6921,9 +6921,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 440, .description = gGothitellePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -6933,8 +6933,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 10, .description = gSolosisPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -6945,8 +6945,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 80, .description = gDuosionPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -6957,9 +6957,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 201, .description = gReuniclusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -6969,8 +6969,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 55, .description = gDucklettPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -6981,8 +6981,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 242, .description = gSwannaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -6993,8 +6993,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 57, .description = gVanillitePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7005,8 +7005,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 410, .description = gVanillishPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -7017,8 +7017,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 575, .description = gVanilluxePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -7029,8 +7029,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 195, .description = gDeerlingPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -7041,10 +7041,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 925, .description = gSawsbuckPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, }, [NATIONAL_DEX_EMOLGA] = @@ -7053,8 +7053,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 50, .description = gEmolgaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7065,8 +7065,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 59, .description = gKarrablastPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -7077,9 +7077,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 330, .description = gEscavalierPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7089,8 +7089,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 10, .description = gFoongusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -7101,8 +7101,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 105, .description = gAmoongussPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7113,8 +7113,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 330, .description = gFrillishPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -7125,10 +7125,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 22, .weight = 1350, .description = gJellicentPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, }, [NATIONAL_DEX_ALOMOMOLA] = @@ -7137,8 +7137,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 316, .description = gAlomomolaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -7149,8 +7149,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 1, .weight = 6, .description = gJoltikPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -7161,9 +7161,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 143, .description = gGalvantulaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 10, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7173,8 +7173,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 188, .description = gFerroseedPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -7185,9 +7185,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 1100, .description = gFerrothornPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7197,8 +7197,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 210, .description = gKlinkPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -7209,8 +7209,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 510, .description = gKlangPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7221,8 +7221,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 810, .description = gKlinklangPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7233,8 +7233,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 3, .description = gTynamoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -7245,8 +7245,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 220, .description = gEelektrikPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -7257,10 +7257,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 21, .weight = 805, .description = gEelektrossPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 365, + .trainerOffset = 7, }, [NATIONAL_DEX_ELGYEM] = @@ -7269,8 +7269,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 90, .description = gElgyemPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7281,9 +7281,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 345, .description = gBeheeyemPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7293,8 +7293,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 31, .description = gLitwickPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7305,8 +7305,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 130, .description = gLampentPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7317,9 +7317,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 343, .description = gChandelurePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7329,8 +7329,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 180, .description = gAxewPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7341,9 +7341,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 360, .description = gFraxurePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7353,10 +7353,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 1055, .description = gHaxorusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_CUBCHOO] = @@ -7365,8 +7365,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 85, .description = gCubchooPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -7377,10 +7377,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 26, .weight = 2600, .description = gBearticPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 266, + .pokemonOffset = 3, + .trainerScale = 399, + .trainerOffset = 4, }, [NATIONAL_DEX_CRYOGONAL] = @@ -7389,8 +7389,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 1480, .description = gCryogonalPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -7401,8 +7401,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 77, .description = gShelmetPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -7413,9 +7413,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 253, .description = gAccelgorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 9, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7425,8 +7425,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 110, .description = gStunfiskPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, }, @@ -7437,8 +7437,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 200, .description = gMienfooPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, }, @@ -7449,9 +7449,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 355, .description = gMienshaoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -7461,10 +7461,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 1390, .description = gDruddigonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_GOLETT] = @@ -7473,9 +7473,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 920, .description = gGolettPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7485,9 +7485,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 28, .weight = 3300, .description = gGolurkPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 275, + .pokemonOffset = 3, + .trainerScale = 300, .trainerOffset = 0, }, @@ -7497,8 +7497,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 102, .description = gPawniardPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, }, @@ -7509,10 +7509,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 700, .description = gBisharpPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_BOUFFALANT] = @@ -7521,10 +7521,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 946, .description = gBouffalantPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_RUFFLET] = @@ -7533,8 +7533,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 105, .description = gRuffletPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7545,9 +7545,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 410, .description = gBraviaryPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -7557,8 +7557,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 90, .description = gVullabyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7569,8 +7569,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 395, .description = gMandibuzzPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -7581,9 +7581,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 580, .description = gHeatmorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -7593,8 +7593,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 330, .description = gDurantPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, }, @@ -7605,9 +7605,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 173, .description = gDeinoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 12, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7617,9 +7617,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 500, .description = gZweilousPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 3, + .trainerScale = 262, .trainerOffset = 0, }, @@ -7629,10 +7629,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 1600, .description = gHydreigonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_LARVESTA] = @@ -7641,8 +7641,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 288, .description = gLarvestaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, }, @@ -7653,10 +7653,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 460, .description = gVolcaronaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_COBALION] = @@ -7665,10 +7665,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 21, .weight = 2500, .description = gCobalionPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, }, [NATIONAL_DEX_TERRAKION] = @@ -7677,10 +7677,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 2600, .description = gTerrakionPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 336, + .trainerOffset = 4, }, [NATIONAL_DEX_VIRIZION] = @@ -7689,10 +7689,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 2000, .description = gVirizionPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 344, + .trainerOffset = 4, }, [NATIONAL_DEX_TORNADUS] = @@ -7701,9 +7701,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 630, .description = gTornadusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -7713,9 +7713,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 610, .description = gThundurusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -7725,10 +7725,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 32, .weight = 3300, .description = gReshiramPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 445, + .trainerOffset = 8, }, [NATIONAL_DEX_ZEKROM] = @@ -7737,10 +7737,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 29, .weight = 3450, .description = gZekromPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 275, + .pokemonOffset = 2, + .trainerScale = 412, + .trainerOffset = 10, }, [NATIONAL_DEX_LANDORUS] = @@ -7749,9 +7749,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 680, .description = gLandorusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -7761,9 +7761,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 30, .weight = 3250, .description = gKyuremPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 356, .trainerOffset = 0, }, @@ -7773,9 +7773,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 485, .description = gKeldeoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -7785,8 +7785,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 65, .description = gMeloettaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7797,9 +7797,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 825, .description = gGenesectPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, #endif @@ -7811,8 +7811,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 90, .description = gChespinPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7823,8 +7823,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 290, .description = gQuilladinPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7835,10 +7835,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 900, .description = gChesnaughtPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_FENNEKIN] = @@ -7847,8 +7847,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 94, .description = gFennekinPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7859,9 +7859,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 145, .description = gBraixenPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7871,9 +7871,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 390, .description = gDelphoxPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -7883,8 +7883,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 70, .description = gFroakiePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7895,8 +7895,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 109, .description = gFrogadierPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7907,9 +7907,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 400, .description = gGreninjaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -7919,8 +7919,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 50, .description = gBunnelbyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7931,9 +7931,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 424, .description = gDiggersbyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -7943,8 +7943,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 17, .description = gFletchlingPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7955,8 +7955,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 160, .description = gFletchinderPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -7967,8 +7967,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 245, .description = gTalonflamePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -7979,8 +7979,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 25, .description = gScatterbugPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -7991,8 +7991,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 84, .description = gSpewpaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8003,8 +8003,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 170, .description = gVivillonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -8015,8 +8015,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 135, .description = gLitleoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8027,9 +8027,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 815, .description = gPyroarPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -8039,8 +8039,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 1, .weight = 1, .description = gFlabebePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -8051,8 +8051,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 9, .description = gFloettePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -8063,8 +8063,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 100, .description = gFlorgesPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -8075,8 +8075,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 310, .description = gSkiddoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -8087,10 +8087,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 910, .description = gGogoatPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, }, [NATIONAL_DEX_PANCHAM] = @@ -8099,8 +8099,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 80, .description = gPanchamPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8111,10 +8111,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 21, .weight = 1360, .description = gPangoroPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, }, [NATIONAL_DEX_FURFROU] = @@ -8123,8 +8123,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 280, .description = gFurfrouPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -8135,8 +8135,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 35, .description = gEspurrPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8147,8 +8147,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 85, .description = gMeowsticPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8159,9 +8159,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 20, .description = gHonedgePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8171,9 +8171,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 45, .description = gDoubladePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8183,10 +8183,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 530, .description = gAegislashPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, }, [NATIONAL_DEX_SPRITZEE] = @@ -8195,8 +8195,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 5, .description = gSpritzeePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -8207,9 +8207,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 155, .description = gAromatissePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8219,8 +8219,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 35, .description = gSwirlixPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8231,9 +8231,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 50, .description = gSlurpuffPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8243,8 +8243,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 35, .description = gInkayPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8255,9 +8255,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 470, .description = gMalamarPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -8267,8 +8267,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 310, .description = gBinaclePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8279,8 +8279,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 960, .description = gBarbaraclePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -8291,8 +8291,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 73, .description = gSkrelpPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8303,10 +8303,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 815, .description = gDragalgePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_CLAUNCHER] = @@ -8315,8 +8315,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 83, .description = gClauncherPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8327,8 +8327,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 353, .description = gClawitzerPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -8339,8 +8339,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 60, .description = gHelioptilePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8351,9 +8351,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 210, .description = gHelioliskPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8363,9 +8363,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 260, .description = gTyruntPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8375,10 +8375,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 25, .weight = 2700, .description = gTyrantrumPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, }, [NATIONAL_DEX_AMAURA] = @@ -8387,8 +8387,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 252, .description = gAmauraPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -8399,8 +8399,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 27, .weight = 2250, .description = gAurorusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -8411,9 +8411,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 235, .description = gSylveonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8423,9 +8423,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 215, .description = gHawluchaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8435,8 +8435,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 22, .description = gDedennePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -8447,8 +8447,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 57, .description = gCarbinkPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8459,8 +8459,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 28, .description = gGoomyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8471,9 +8471,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 175, .description = gSliggooPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8483,10 +8483,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 1505, .description = gGoodraPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_KLEFKI] = @@ -8495,8 +8495,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 30, .description = gKlefkiPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -8507,8 +8507,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 70, .description = gPhantumpPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8519,9 +8519,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 710, .description = gTrevenantPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -8531,8 +8531,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 50, .description = gPumpkabooPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8543,8 +8543,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 125, .description = gGourgeistPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -8555,9 +8555,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 995, .description = gBergmitePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8567,10 +8567,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 5050, .description = gAvaluggPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_NOIBAT] = @@ -8579,8 +8579,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 80, .description = gNoibatPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8591,9 +8591,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 850, .description = gNoivernPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -8603,8 +8603,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 30, .weight = 2150, .description = gXerneasPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -8615,10 +8615,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 58, .weight = 2030, .description = gYveltalPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 360, + .trainerOffset = 7, }, [NATIONAL_DEX_ZYGARDE] = @@ -8627,10 +8627,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 50, .weight = 3050, .description = gZygardePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, }, [NATIONAL_DEX_DIANCIE] = @@ -8639,8 +8639,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 88, .description = gDianciePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8651,8 +8651,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 90, .description = gHoopaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8663,10 +8663,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 1950, .description = gVolcanionPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, }, #endif @@ -8677,8 +8677,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 15, .description = gRowletPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8689,8 +8689,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 160, .description = gDartrixPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8701,10 +8701,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 366, .description = gDecidueyePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_LITTEN] = @@ -8713,8 +8713,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 43, .description = gLittenPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8725,8 +8725,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 250, .description = gTorracatPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8737,10 +8737,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 830, .description = gIncineroarPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_POPPLIO] = @@ -8749,8 +8749,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 75, .description = gPopplioPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8761,8 +8761,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 175, .description = gBrionnePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8773,10 +8773,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 440, .description = gPrimarinaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_PIKIPEK] = @@ -8785,8 +8785,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 12, .description = gPikipekPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8797,8 +8797,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 148, .description = gTrumbeakPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8809,8 +8809,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 260, .description = gToucannonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -8821,8 +8821,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 60, .description = gYungoosPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8833,8 +8833,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 142, .description = gGumshoosPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8845,8 +8845,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 44, .description = gGrubbinPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8857,8 +8857,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 105, .description = gCharjabugPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8869,9 +8869,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 450, .description = gVikavoltPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -8881,8 +8881,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 70, .description = gCrabrawlerPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8893,10 +8893,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 17, .weight = 1800, .description = gCrabominablePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, }, [NATIONAL_DEX_ORICORIO] = @@ -8905,8 +8905,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 34, .description = gOricorioPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8917,8 +8917,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 1, .weight = 2, .description = gCutieflyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -8929,8 +8929,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 5, .description = gRibombeePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -8941,8 +8941,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 92, .description = gRockruffPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -8953,9 +8953,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 250, .description = gLycanrocPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -8965,8 +8965,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 3, .description = gWishiwashiPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -8977,8 +8977,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 80, .description = gMareaniePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -8989,8 +8989,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 145, .description = gToxapexPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9001,9 +9001,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 1100, .description = gMudbrayPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -9013,10 +9013,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 25, .weight = 9200, .description = gMudsdalePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, }, [NATIONAL_DEX_DEWPIDER] = @@ -9025,8 +9025,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 40, .description = gDewpiderPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9037,10 +9037,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 820, .description = gAraquanidPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_FOMANTIS] = @@ -9049,8 +9049,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 15, .description = gFomantisPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9061,8 +9061,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 185, .description = gLurantisPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -9073,8 +9073,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 15, .description = gMorelullPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -9085,9 +9085,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 115, .description = gShiinoticPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -9097,8 +9097,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 48, .description = gSalanditPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9109,8 +9109,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 222, .description = gSalazzlePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -9121,8 +9121,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 68, .description = gStuffulPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9133,10 +9133,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 21, .weight = 1350, .description = gBewearPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, }, [NATIONAL_DEX_BOUNSWEET] = @@ -9145,8 +9145,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 32, .description = gBounsweetPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9157,8 +9157,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 82, .description = gSteeneePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9169,8 +9169,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 214, .description = gTsareenaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -9181,8 +9181,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 1, .weight = 3, .description = gComfeyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -9193,9 +9193,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 760, .description = gOranguruPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -9205,10 +9205,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 828, .description = gPassimianPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_WIMPOD] = @@ -9217,8 +9217,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 120, .description = gWimpodPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9229,10 +9229,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 1080, .description = gGolisopodPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_SANDYGAST] = @@ -9241,8 +9241,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 700, .description = gSandygastPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9253,8 +9253,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 2500, .description = gPalossandPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -9265,8 +9265,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 12, .description = gPyukumukuPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9277,10 +9277,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 1205, .description = gTypeNullPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, }, [NATIONAL_DEX_SILVALLY] = @@ -9289,10 +9289,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 23, .weight = 1005, .description = gSilvallyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, }, [NATIONAL_DEX_MINIOR] = @@ -9301,8 +9301,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 400, .description = gMiniorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9313,8 +9313,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 199, .description = gKomalaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9325,10 +9325,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 2120, .description = gTurtonatorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_TOGEDEMARU] = @@ -9337,8 +9337,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 33, .description = gTogedemaruPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9349,8 +9349,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 7, .description = gMimikyuPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -9361,8 +9361,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 190, .description = gBruxishPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -9373,8 +9373,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 30, .weight = 1850, .description = gDrampaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -9385,10 +9385,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 39, .weight = 2100, .description = gDhelmisePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 510, + .trainerOffset = 11, }, [NATIONAL_DEX_JANGMO_O] = @@ -9396,9 +9396,9 @@ const struct PokedexEntry gPokedexEntries[] = .categoryName = _("Scaly"), .height = 6, .weight = 297, - .description = gJangmooPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .description = gJangmoOPokedexText, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9408,9 +9408,9 @@ const struct PokedexEntry gPokedexEntries[] = .categoryName = _("Scaly"), .height = 12, .weight = 470, - .description = gHakamooPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .description = gHakamoOPokedexText, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -9420,11 +9420,11 @@ const struct PokedexEntry gPokedexEntries[] = .categoryName = _("Scaly"), .height = 16, .weight = 782, - .description = gKommooPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .description = gKommoOPokedexText, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_TAPU_KOKO] = @@ -9433,10 +9433,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 205, .description = gTapuKokoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_TAPU_LELE] = @@ -9445,8 +9445,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 186, .description = gTapuLelePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -9457,10 +9457,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 455, .description = gTapuBuluPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, }, [NATIONAL_DEX_TAPU_FINI] = @@ -9469,8 +9469,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 212, .description = gTapuFiniPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -9481,8 +9481,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 1, .description = gCosmogPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -9493,8 +9493,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 1, .weight = 9999, .description = gCosmoemPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -9505,10 +9505,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 34, .weight = 2300, .description = gSolgaleoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 405, + .trainerOffset = 8, }, [NATIONAL_DEX_LUNALA] = @@ -9517,10 +9517,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 40, .weight = 1200, .description = gLunalaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 411, + .trainerOffset = 5, }, [NATIONAL_DEX_NIHILEGO] = @@ -9529,8 +9529,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 555, .description = gNihilegoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -9541,10 +9541,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 24, .weight = 3336, .description = gBuzzwolePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, }, [NATIONAL_DEX_PHEROMOSA] = @@ -9553,10 +9553,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 250, .description = gPheromosaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_XURKITREE] = @@ -9565,10 +9565,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 38, .weight = 1000, .description = gXurkitreePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 610, + .trainerOffset = 17, }, [NATIONAL_DEX_CELESTEELA] = @@ -9577,10 +9577,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 92, .weight = 9999, .description = gCelesteelaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 516, + .trainerOffset = 13, }, [NATIONAL_DEX_KARTANA] = @@ -9589,8 +9589,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 1, .description = gKartanaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9601,10 +9601,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 55, .weight = 8880, .description = gGuzzlordPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, }, [NATIONAL_DEX_NECROZMA] = @@ -9613,10 +9613,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 24, .weight = 2300, .description = gNecrozmaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, }, [NATIONAL_DEX_MAGEARNA] = @@ -9625,9 +9625,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 805, .description = gMagearnaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -9637,8 +9637,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 222, .description = gMarshadowPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9649,8 +9649,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 18, .description = gPoipolePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9661,10 +9661,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 36, .weight = 1500, .description = gNaganadelPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 405, + .trainerOffset = 8, }, [NATIONAL_DEX_STAKATAKA] = @@ -9673,10 +9673,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 55, .weight = 8200, .description = gStakatakaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, }, [NATIONAL_DEX_BLACEPHALON] = @@ -9685,10 +9685,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 130, .description = gBlacephalonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_ZERAORA] = @@ -9697,9 +9697,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 445, .description = gZeraoraPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -9709,8 +9709,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 80, .description = gMeltanPokedexText, - .pokemonScale = 640, - .pokemonOffset = 23, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -9721,10 +9721,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 25, .weight = 800, .description = gMelmetalPokedexText, - .pokemonScale = 255, - .pokemonOffset = 1, - .trainerScale = 387, - .trainerOffset = 2, + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, }, #endif @@ -9735,8 +9735,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 50, .description = gGrookeyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9747,8 +9747,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 140, .description = gThwackeyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9759,10 +9759,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 21, .weight = 900, .description = gRillaboomPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, }, [NATIONAL_DEX_SCORBUNNY] = @@ -9771,8 +9771,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 45, .description = gScorbunnyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9783,8 +9783,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 90, .description = gRabootPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9795,9 +9795,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 330, .description = gCinderacePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -9807,8 +9807,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 40, .description = gSobblePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9819,8 +9819,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 115, .description = gDrizzilePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9831,10 +9831,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 452, .description = gInteleonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, }, [NATIONAL_DEX_SKWOVET] = @@ -9843,8 +9843,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 25, .description = gSkwovetPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9855,8 +9855,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 60, .description = gGreedentPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9867,8 +9867,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 18, .description = gRookideePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -9879,9 +9879,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 160, .description = gCorvisquirePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -9891,10 +9891,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 22, .weight = 750, .description = gCorviknightPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, }, [NATIONAL_DEX_BLIPBUG] = @@ -9903,8 +9903,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 80, .description = gBlipbugPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9915,8 +9915,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 195, .description = gDottlerPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9927,8 +9927,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 408, .description = gOrbeetlePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9939,8 +9939,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 89, .description = gNickitPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9951,8 +9951,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 199, .description = gThievulPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -9963,8 +9963,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 22, .description = gGossifleurPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9975,8 +9975,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 25, .description = gEldegossPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -9987,8 +9987,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 60, .description = gWoolooPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -9999,8 +9999,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 430, .description = gDubwoolPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -10011,8 +10011,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 85, .description = gChewtlePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10023,9 +10023,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 1155, .description = gDrednawPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -10035,8 +10035,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 135, .description = gYamperPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10047,9 +10047,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 340, .description = gBoltundPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -10059,8 +10059,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 120, .description = gRolycolyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10071,8 +10071,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 780, .description = gCarkolPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10083,8 +10083,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 28, .weight = 3105, .description = gCoalossalPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10095,8 +10095,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 5, .description = gApplinPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -10107,8 +10107,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 10, .description = gFlapplePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10119,8 +10119,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 130, .description = gAppletunPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -10131,11 +10131,11 @@ const struct PokedexEntry gPokedexEntries[] = .height = 22, .weight = 76, .description = gSilicobraPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + }, [NATIONAL_DEX_SANDACONDA] = { @@ -10143,10 +10143,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 38, .weight = 655, .description = gSandacondaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 610, + .trainerOffset = 17, }, [NATIONAL_DEX_CRAMORANT] = @@ -10155,9 +10155,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 180, .description = gCramorantPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -10167,8 +10167,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 10, .description = gArrokudaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10179,8 +10179,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 300, .description = gBarraskewdaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -10191,8 +10191,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 110, .description = gToxelPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -10203,10 +10203,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 400, .description = gToxtricityPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_SIZZLIPEDE] = @@ -10215,8 +10215,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 7, .weight = 10, .description = gSizzlipedePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 365, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -10227,8 +10227,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 30, .weight = 1200, .description = gCentiskorchPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10239,8 +10239,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 40, .description = gClobbopusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -10251,10 +10251,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 390, .description = gGrapploctPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_SINISTEA] = @@ -10263,8 +10263,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 1, .weight = 2, .description = gSinisteaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -10275,8 +10275,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 4, .description = gPolteageistPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -10287,8 +10287,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 34, .description = gHatennaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -10299,8 +10299,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 48, .description = gHattremPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -10311,10 +10311,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 21, .weight = 51, .description = gHatterenePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, }, [NATIONAL_DEX_IMPIDIMP] = @@ -10323,8 +10323,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 4, .weight = 55, .description = gImpidimpPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 491, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -10335,9 +10335,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 125, .description = gMorgremPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -10347,9 +10347,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 610, .description = gGrimmsnarlPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -10359,10 +10359,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 460, .description = gObstagoonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_PERRSERKER] = @@ -10371,9 +10371,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 280, .description = gPerrserkerPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -10383,9 +10383,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 10, .weight = 4, .description = gCursolaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -10395,9 +10395,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 8, .weight = 1170, .description = gSirfetchdPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, .trainerOffset = 0, }, @@ -10407,9 +10407,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 15, .weight = 582, .description = gMrRimePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, .trainerOffset = 0, }, @@ -10419,10 +10419,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 666, .description = gRunerigusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, [NATIONAL_DEX_MILCERY] = @@ -10431,8 +10431,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 2, .weight = 3, .description = gMilceryPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 682, + .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, }, @@ -10443,8 +10443,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 5, .description = gAlcremiePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10455,8 +10455,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 30, .weight = 620, .description = gFalinksPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10467,8 +10467,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 10, .description = gPincurchinPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10479,8 +10479,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 38, .description = gSnomPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10491,8 +10491,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 420, .description = gFrosmothPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -10503,10 +10503,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 25, .weight = 5200, .description = gStonjournerPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, }, [NATIONAL_DEX_EISCUE] = @@ -10515,9 +10515,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 890, .description = gEiscuePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -10527,8 +10527,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 9, .weight = 280, .description = gIndeedeePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 338, + .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, }, @@ -10539,8 +10539,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 3, .weight = 30, .description = gMorpekoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 530, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10551,8 +10551,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 1000, .description = gCufantPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -10563,8 +10563,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 30, .weight = 6500, .description = gCopperajahPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10575,10 +10575,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 1900, .description = gDracozoltPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_ARCTOZOLT] = @@ -10587,10 +10587,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 23, .weight = 1500, .description = gArctozoltPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, }, [NATIONAL_DEX_DRACOVISH] = @@ -10599,10 +10599,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 23, .weight = 2150, .description = gDracovishPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, }, [NATIONAL_DEX_ARCTOVISH] = @@ -10611,10 +10611,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 1750, .description = gArctovishPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_DURALUDON] = @@ -10623,10 +10623,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 400, .description = gDuraludonPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_DREEPY] = @@ -10635,8 +10635,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 5, .weight = 20, .description = gDreepyPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, }, @@ -10647,9 +10647,9 @@ const struct PokedexEntry gPokedexEntries[] = .height = 14, .weight = 110, .description = gDrakloakPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, .trainerOffset = 0, }, @@ -10659,8 +10659,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 30, .weight = 500, .description = gDragapultPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10671,8 +10671,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 28, .weight = 1100, .description = gZacianPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10683,8 +10683,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 29, .weight = 2100, .description = gZamazentaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10695,10 +10695,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 200, .weight = 9500, .description = gEternatusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 230, + .pokemonOffset = 0, + .trainerScale = 4852, + .trainerOffset = 20, }, [NATIONAL_DEX_KUBFU] = @@ -10707,8 +10707,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 6, .weight = 120, .description = gKubfuPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 422, + .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, }, @@ -10719,10 +10719,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 19, .weight = 1050, .description = gUrshifuPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, }, [NATIONAL_DEX_ZARUDE] = @@ -10731,10 +10731,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 700, .description = gZarudePokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_REGIELEKI] = @@ -10743,8 +10743,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 12, .weight = 1450, .description = gRegielekiPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 282, + .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, }, @@ -10755,10 +10755,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 21, .weight = 2000, .description = gRegidragoPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, }, [NATIONAL_DEX_GLASTRIER] = @@ -10767,10 +10767,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 22, .weight = 8000, .description = gGlastrierPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, }, [NATIONAL_DEX_SPECTRIER] = @@ -10779,10 +10779,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 20, .weight = 445, .description = gSpectrierPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, }, [NATIONAL_DEX_CALYREX] = @@ -10791,8 +10791,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 11, .weight = 77, .description = gCalyrexPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 320, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10803,10 +10803,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 951, .description = gWyrdeerPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_KLEAVOR] = @@ -10815,10 +10815,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 18, .weight = 890, .description = gKleavorPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, }, [NATIONAL_DEX_URSALUNA] = @@ -10827,10 +10827,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 24, .weight = 2900, .description = gUrsalunaPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, }, [NATIONAL_DEX_BASCULEGION] = @@ -10839,8 +10839,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 30, .weight = 1100, .description = gBasculegionPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 275, + .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, }, @@ -10851,8 +10851,8 @@ const struct PokedexEntry gPokedexEntries[] = .height = 13, .weight = 430, .description = gSneaslerPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, + .pokemonScale = 272, + .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, }, @@ -10863,10 +10863,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 25, .weight = 605, .description = gOverqwilPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, }, [NATIONAL_DEX_ENAMORUS] = @@ -10875,10 +10875,10 @@ const struct PokedexEntry gPokedexEntries[] = .height = 16, .weight = 480, .description = gEnamorusPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, }, #endif }; diff --git a/src/data/pokemon/pokedex_text.h b/src/data/pokemon/pokedex_text.h index 6048d2121576..5e28a204bea5 100644 --- a/src/data/pokemon/pokedex_text.h +++ b/src/data/pokemon/pokedex_text.h @@ -4697,19 +4697,19 @@ const u8 gDhelmisePokedexText[] = _( "It maintains itself with new infusions of\n" "seabed detritus and seaweed."); -const u8 gJangmooPokedexText[] = _( +const u8 gJangmoOPokedexText[] = _( "It expresses its feelings by smacking its\n" "scales. Metallic sounds echo through the\n" "tall mountains where Jangmo-o live. They\n" "grow little by little battling one another."); -const u8 gHakamooPokedexText[] = _( +const u8 gHakamoOPokedexText[] = _( "It sheds and regrows its scales on a\n" "continuous basis. The scales become\n" "harder each time they're regrown. Its\n" "scaly punches tear its foes to shreds."); -const u8 gKommooPokedexText[] = _( +const u8 gKommoOPokedexText[] = _( "Its rigid scales function as offense and\n" "defense. In the past, its scales were\n" "processed and used to make weapons\n" diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index ee2230b94af7..6e99e6f34aac 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -30,9 +30,9 @@ .itemRare = ITEM_LIGHT_BALL, \ .genderRatio = gender, \ .eggCycles = 10, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD},\ .bodyColor = BODY_COLOR_YELLOW, \ .noFlip = flip, \ @@ -55,9 +55,9 @@ .evYield_Speed = 1, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 10, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD},\ .bodyColor = BODY_COLOR_YELLOW, \ .noFlip = flip, \ @@ -78,7 +78,7 @@ .evYield_SpAttack = 1, \ .genderRatio = MON_GENDERLESS, \ .eggCycles = 40, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},\ @@ -102,7 +102,7 @@ .itemRare = ITEM_MYSTIC_WATER, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 25, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_FORECAST, ABILITY_NONE},\ @@ -124,7 +124,7 @@ .evYield_SpDefense = 1, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 15, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, \ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_OVERCOAT},\ @@ -147,7 +147,7 @@ .itemRare = ITEM_MIRACLE_SEED, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, \ .abilities = {ABILITY_FLOWER_GIFT, ABILITY_NONE},\ @@ -169,7 +169,7 @@ .evYield_HP = 1, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE},\ @@ -191,7 +191,7 @@ .evYield_HP = 2, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE},\ @@ -214,7 +214,7 @@ .evYield_SpAttack = 1, \ .genderRatio = MON_GENDERLESS, \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},\ @@ -259,7 +259,7 @@ .evYield_Speed = 1, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE},\ @@ -281,7 +281,7 @@ .evYield_Attack = 2, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE},\ @@ -330,7 +330,7 @@ .evYield_SpAttack = 1, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 15, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, \ .abilities = {ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD},\ @@ -352,7 +352,7 @@ .evYield_SpDefense = 1, \ .genderRatio = MON_FEMALE, \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ @@ -374,7 +374,7 @@ .evYield_SpDefense = 2, \ .genderRatio = MON_FEMALE, \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ @@ -396,7 +396,7 @@ .evYield_SpDefense = 3, \ .genderRatio = MON_FEMALE, \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ @@ -418,7 +418,7 @@ .evYield_Speed = 1, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ .abilities = {ABILITY_FUR_COAT, ABILITY_NONE},\ @@ -433,7 +433,7 @@ .evYield_Defense = 1, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA},\ @@ -447,7 +447,7 @@ .evYield_Defense = 2, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA},\ @@ -538,7 +538,7 @@ .itemRare = ITEM_HONEY, \ .genderRatio = PERCENT_FEMALE(75), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, \ .abilities = {ABILITY_DANCER, ABILITY_NONE},\ @@ -560,7 +560,7 @@ .evYield_Attack = 1, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 15, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ .abilities = {ability1, ability2, hiddenAbility}, \ @@ -616,7 +616,7 @@ .itemRare = ITEM_STAR_PIECE, \ .genderRatio = MON_GENDERLESS, \ .eggCycles = 25, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_SLOW, \ .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, \ .abilities = {ABILITY_SHIELDS_DOWN, ABILITY_NONE}, \ @@ -651,7 +651,7 @@ .itemRare = ITEM_CHESTO_BERRY, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_DISGUISE, ABILITY_NONE},\ @@ -696,7 +696,7 @@ .evYield_SpDefense = 2, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, \ .abilities = {ABILITY_GULP_MISSILE, ABILITY_NONE},\ @@ -718,7 +718,7 @@ .evYield_SpAttack = 2, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 25, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_SLOW, \ .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ .abilities = {ABILITY_PUNK_ROCK, ability2, ABILITY_TECHNICIAN},\ @@ -740,7 +740,7 @@ .evYield_SpAttack = 1, \ .genderRatio = MON_GENDERLESS, \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY},\ @@ -762,7 +762,7 @@ .evYield_SpAttack = 2, \ .genderRatio = MON_GENDERLESS, \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY},\ @@ -784,7 +784,7 @@ .evYield_SpDefense = 2, \ .genderRatio = MON_FEMALE, \ .eggCycles = 20, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ @@ -806,7 +806,7 @@ .evYield_Speed = 2, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 10, \ - .friendship = 70, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_HUNGER_SWITCH, ABILITY_NONE},\ @@ -855,7 +855,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, @@ -878,7 +878,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, @@ -901,7 +901,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, @@ -923,7 +923,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, @@ -946,7 +946,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, @@ -968,7 +968,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, @@ -990,7 +990,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, @@ -1013,7 +1013,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, @@ -1035,7 +1035,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, @@ -1057,7 +1057,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, @@ -1079,7 +1079,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, @@ -1107,7 +1107,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS}, @@ -1129,7 +1129,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, @@ -1151,7 +1151,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, @@ -1179,7 +1179,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_SNIPER}, @@ -1201,7 +1201,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, @@ -1223,7 +1223,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, @@ -1249,7 +1249,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, @@ -1271,7 +1271,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE}, @@ -1293,7 +1293,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE}, @@ -1316,7 +1316,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_SNIPER}, @@ -1339,7 +1339,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_SNIPER}, @@ -1361,7 +1361,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_INTIMIDATE, ABILITY_SHED_SKIN, ABILITY_UNNERVE}, @@ -1387,7 +1387,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_INTIMIDATE, ABILITY_SHED_SKIN, ABILITY_UNNERVE}, @@ -1415,7 +1415,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD}, @@ -1438,7 +1438,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_GRIP_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH}, @@ -1461,7 +1461,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_GRIP_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH}, @@ -1483,7 +1483,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, @@ -1505,7 +1505,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, @@ -1531,7 +1531,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 3, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE}, @@ -1553,7 +1553,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, @@ -1575,7 +1575,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, @@ -1601,7 +1601,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE}, @@ -1682,7 +1682,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CHARCOAL, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT}, @@ -1706,7 +1706,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CHARCOAL, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT}, @@ -1733,7 +1733,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD}, @@ -1764,7 +1764,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRISK}, @@ -1786,7 +1786,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, @@ -1808,7 +1808,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, @@ -1831,7 +1831,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_RUN_AWAY}, @@ -1854,7 +1854,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_STENCH}, @@ -1881,7 +1881,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_EFFECT_SPORE}, @@ -1905,7 +1905,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP}, @@ -1930,7 +1930,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP}, @@ -1952,7 +1952,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_TINTED_LENS, ABILITY_RUN_AWAY}, @@ -1976,7 +1976,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHED_SHELL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_TINTED_LENS, ABILITY_WONDER_SKIN}, @@ -1999,7 +1999,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE}, @@ -2026,7 +2026,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE}, @@ -2049,7 +2049,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, @@ -2072,7 +2072,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIMBER, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, @@ -2094,7 +2094,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_DAMP, ABILITY_CLOUD_NINE, ABILITY_SWIFT_SWIM}, @@ -2116,7 +2116,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_DAMP, ABILITY_CLOUD_NINE, ABILITY_SWIFT_SWIM}, @@ -2138,7 +2138,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT}, @@ -2160,7 +2160,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT}, @@ -2182,7 +2182,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, @@ -2204,7 +2204,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, @@ -2226,7 +2226,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, @@ -2249,7 +2249,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, @@ -2276,7 +2276,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, @@ -2299,7 +2299,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, @@ -2322,7 +2322,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, @@ -2349,7 +2349,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, @@ -2372,7 +2372,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_FOCUS_BAND, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, @@ -2395,7 +2395,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_FOCUS_BAND, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, @@ -2418,7 +2418,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_FOCUS_BAND, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, @@ -2440,7 +2440,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, @@ -2462,7 +2462,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, @@ -2488,7 +2488,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, @@ -2511,7 +2511,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE, ABILITY_RAIN_DISH}, @@ -2534,7 +2534,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE, ABILITY_RAIN_DISH}, @@ -2557,7 +2557,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, @@ -2580,7 +2580,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, @@ -2607,7 +2607,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, @@ -2629,7 +2629,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY}, @@ -2651,7 +2651,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY}, @@ -2674,7 +2674,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LAGGING_TAIL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, @@ -2697,7 +2697,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, @@ -2720,7 +2720,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, @@ -2743,7 +2743,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, @@ -2770,7 +2770,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LEEK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_INNER_FOCUS, ABILITY_DEFIANT}, @@ -2793,7 +2793,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD, ABILITY_TANGLED_FEET}, @@ -2820,7 +2820,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD, ABILITY_TANGLED_FEET}, @@ -2842,7 +2842,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY}, @@ -2864,7 +2864,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY}, @@ -2887,7 +2887,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_SLUDGE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH}, @@ -2911,7 +2911,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_BLACK_SLUDGE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH}, @@ -2935,7 +2935,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT}, @@ -2959,7 +2959,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT}, @@ -2981,7 +2981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -3003,7 +3003,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -3025,7 +3025,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #if P_UPDATED_ABILITIES >= GEN_7 @@ -3051,7 +3051,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_WEAK_ARMOR}, @@ -3073,7 +3073,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS}, @@ -3095,7 +3095,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS}, @@ -3117,7 +3117,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, @@ -3139,7 +3139,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, @@ -3161,7 +3161,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, @@ -3187,7 +3187,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, @@ -3210,7 +3210,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_PSYCHIC_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST}, @@ -3236,7 +3236,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST}, @@ -3259,7 +3259,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_THICK_CLUB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR}, @@ -3282,7 +3282,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_THICK_CLUB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR}, @@ -3304,7 +3304,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = MON_MALE, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_LIMBER, ABILITY_RECKLESS, ABILITY_UNBURDEN}, @@ -3326,7 +3326,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = MON_MALE, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_KEEN_EYE, ABILITY_IRON_FIST, ABILITY_INNER_FOCUS}, @@ -3349,7 +3349,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LAGGING_TAIL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS, ABILITY_CLOUD_NINE}, @@ -3372,7 +3372,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH}, @@ -3395,7 +3395,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH}, @@ -3417,7 +3417,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD, ABILITY_RECKLESS}, @@ -3439,7 +3439,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD, ABILITY_RECKLESS}, @@ -3484,7 +3484,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR}, @@ -3506,7 +3506,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_EARLY_BIRD, ABILITY_SCRAPPY, ABILITY_INNER_FOCUS}, @@ -3529,7 +3529,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP}, @@ -3553,7 +3553,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_POISON_POINT, ABILITY_SNIPER, ABILITY_DAMP}, @@ -3576,7 +3576,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MYSTIC_WATER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL, ABILITY_LIGHTNING_ROD}, @@ -3599,7 +3599,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MYSTIC_WATER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL, ABILITY_LIGHTNING_ROD}, @@ -3623,7 +3623,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE, ABILITY_ANALYTIC}, @@ -3647,7 +3647,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE, ABILITY_ANALYTIC}, @@ -3673,7 +3673,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN}, @@ -3695,7 +3695,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_STEADFAST}, @@ -3717,7 +3717,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = MON_FEMALE, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_DRY_SKIN}, @@ -3740,7 +3740,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ELECTIRIZER, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, @@ -3763,7 +3763,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MAGMARIZER, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, @@ -3785,7 +3785,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_MOLD_BREAKER, ABILITY_MOXIE}, @@ -3808,7 +3808,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_SHEER_FORCE}, @@ -3830,7 +3830,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_RATTLED}, @@ -3852,7 +3852,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE}, @@ -3876,7 +3876,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MYSTIC_WATER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION}, @@ -3900,7 +3900,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_POWDER, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_DITTO, EGG_GROUP_DITTO}, .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_IMPOSTER}, @@ -3922,7 +3922,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION}, @@ -3945,7 +3945,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_WATER_ABSORB, ABILITY_HYDRATION}, @@ -3967,7 +3967,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_VOLT_ABSORB, ABILITY_QUICK_FEET}, @@ -3989,7 +3989,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLASH_FIRE, ABILITY_GUTS}, @@ -4011,7 +4011,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, @@ -4033,7 +4033,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, @@ -4055,7 +4055,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, @@ -4077,7 +4077,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR, ABILITY_WEAK_ARMOR}, @@ -4099,7 +4099,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR, ABILITY_WEAK_ARMOR}, @@ -4121,7 +4121,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_PRESSURE, ABILITY_UNNERVE}, @@ -4145,7 +4145,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LEFTOVERS, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, @@ -4357,7 +4357,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, @@ -4380,7 +4380,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, @@ -4403,7 +4403,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, @@ -4425,7 +4425,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, @@ -4448,7 +4448,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, @@ -4470,7 +4470,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, @@ -4492,7 +4492,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, @@ -4515,7 +4515,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, @@ -4538,7 +4538,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, @@ -4560,7 +4560,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_FRISK}, @@ -4582,7 +4582,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_FRISK}, @@ -4604,7 +4604,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INSOMNIA, ABILITY_KEEN_EYE, ABILITY_TINTED_LENS}, @@ -4630,7 +4630,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INSOMNIA, ABILITY_KEEN_EYE, ABILITY_TINTED_LENS}, @@ -4652,7 +4652,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_EARLY_BIRD, ABILITY_RATTLED}, @@ -4674,7 +4674,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_EARLY_BIRD, ABILITY_IRON_FIST}, @@ -4696,7 +4696,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_INSOMNIA, ABILITY_SNIPER}, @@ -4722,7 +4722,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_INSOMNIA, ABILITY_SNIPER}, @@ -4744,7 +4744,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, @@ -4767,7 +4767,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DEEP_SEA_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE, ABILITY_WATER_ABSORB}, @@ -4790,7 +4790,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DEEP_SEA_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE, ABILITY_WATER_ABSORB}, @@ -4845,7 +4845,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD}, @@ -4871,7 +4871,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, @@ -4897,7 +4897,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, @@ -4919,7 +4919,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD, ABILITY_MAGIC_BOUNCE}, @@ -4942,7 +4942,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD, ABILITY_MAGIC_BOUNCE}, @@ -4964,7 +4964,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, @@ -4986,7 +4986,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, @@ -5012,7 +5012,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, @@ -5039,7 +5039,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HEALER}, @@ -5065,7 +5065,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, @@ -5095,7 +5095,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, @@ -5117,7 +5117,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_RATTLED}, @@ -5140,7 +5140,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_DRIZZLE}, @@ -5162,7 +5162,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, @@ -5184,7 +5184,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, @@ -5210,7 +5210,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, @@ -5232,7 +5232,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_PICKUP, ABILITY_SKILL_LINK}, @@ -5254,7 +5254,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD}, @@ -5276,7 +5276,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD}, @@ -5299,7 +5299,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_WIDE_LENS, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SPEED_BOOST, ABILITY_COMPOUND_EYES, ABILITY_FRISK}, @@ -5321,7 +5321,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE}, @@ -5343,7 +5343,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE}, @@ -5365,7 +5365,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_SYNCHRONIZE, ABILITY_MAGIC_BOUNCE}, @@ -5432,7 +5432,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, @@ -5478,7 +5478,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_SHADOW_TAG, ABILITY_NONE, ABILITY_TELEPATHY}, @@ -5500,7 +5500,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_EARLY_BIRD, ABILITY_SAP_SIPPER}, @@ -5522,7 +5522,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_OVERCOAT}, @@ -5544,7 +5544,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_OVERCOAT}, @@ -5566,7 +5566,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED}, @@ -5588,7 +5588,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL, ABILITY_IMMUNITY}, @@ -5611,7 +5611,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_COAT, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SHEER_FORCE}, @@ -5637,7 +5637,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_INTIMIDATE, ABILITY_RUN_AWAY, ABILITY_RATTLED}, @@ -5663,7 +5663,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_RATTLED}, @@ -5690,7 +5690,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, @@ -5712,7 +5712,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_LIGHT_METAL}, @@ -5737,7 +5737,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BERRY_JUICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_STURDY, ABILITY_GLUTTONY, ABILITY_CONTRARY}, @@ -5759,7 +5759,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_GUTS, ABILITY_MOXIE}, @@ -5804,7 +5804,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_QUICK_FEET, ABILITY_HONEY_GATHER}, @@ -5826,7 +5826,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GUTS, ABILITY_QUICK_FEET, ABILITY_UNNERVE}, @@ -5848,7 +5848,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY, ABILITY_WEAK_ARMOR}, @@ -5875,7 +5875,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY, ABILITY_WEAK_ARMOR}, @@ -5897,7 +5897,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, @@ -5920,7 +5920,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, @@ -5950,7 +5950,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LUMINOUS_MOSS, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HUSTLE, ABILITY_NATURAL_CURE, ABILITY_REGENERATOR}, @@ -5972,7 +5972,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_HUSTLE, ABILITY_SNIPER, ABILITY_MOODY}, @@ -5995,7 +5995,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SUCTION_CUPS, ABILITY_SNIPER, ABILITY_MOODY}, @@ -6017,7 +6017,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_HUSTLE, ABILITY_INSOMNIA}, @@ -6043,7 +6043,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB, ABILITY_WATER_VEIL}, @@ -6066,7 +6066,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_COAT, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_STURDY, ABILITY_WEAK_ARMOR}, @@ -6135,7 +6135,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP}, @@ -6157,7 +6157,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_NONE, ABILITY_SAND_VEIL}, @@ -6180,7 +6180,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SAND_VEIL}, @@ -6202,7 +6202,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, @@ -6224,7 +6224,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER}, @@ -6246,7 +6246,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_TECHNICIAN, ABILITY_MOODY}, @@ -6268,7 +6268,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = MON_MALE, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_GUTS, ABILITY_STEADFAST, ABILITY_VITAL_SPIRIT}, @@ -6290,7 +6290,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = MON_MALE, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INTIMIDATE, ABILITY_TECHNICIAN, ABILITY_STEADFAST}, @@ -6312,7 +6312,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = MON_FEMALE, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_HYDRATION}, @@ -6335,7 +6335,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ELECTIRIZER, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, @@ -6358,7 +6358,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MAGMARIZER, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, @@ -6382,7 +6382,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MOOMOO_MILK, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_SCRAPPY, ABILITY_SAP_SIPPER}, @@ -6650,7 +6650,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, @@ -6672,7 +6672,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, @@ -6694,7 +6694,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, @@ -6716,7 +6716,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, @@ -6739,7 +6739,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, @@ -6761,7 +6761,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, @@ -6783,7 +6783,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, @@ -6805,7 +6805,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, @@ -6827,7 +6827,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, @@ -6849,7 +6849,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_QUICK_FEET, ABILITY_RATTLED}, @@ -6871,7 +6871,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_MOXIE}, @@ -6895,7 +6895,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_REVIVE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, @@ -6919,7 +6919,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MAX_REVIVE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, @@ -6943,7 +6943,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BRIGHT_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, @@ -6965,7 +6965,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, @@ -6992,7 +6992,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHED_SHELL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_RIVALRY}, @@ -7014,7 +7014,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, @@ -7037,7 +7037,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHED_SHELL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_COMPOUND_EYES}, @@ -7060,7 +7060,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MENTAL_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, @@ -7083,7 +7083,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MENTAL_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, @@ -7106,7 +7106,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MENTAL_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, @@ -7129,7 +7129,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POWER_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, @@ -7152,7 +7152,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POWER_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, @@ -7175,7 +7175,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POWER_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, @@ -7197,7 +7197,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_GUTS, ABILITY_NONE, ABILITY_SCRAPPY}, @@ -7223,7 +7223,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_GUTS, ABILITY_NONE, ABILITY_SCRAPPY}, @@ -7246,7 +7246,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_PRETTY_FEATHER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_HYDRATION, ABILITY_RAIN_DISH}, @@ -7273,7 +7273,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_PRETTY_FEATHER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_DRIZZLE, ABILITY_RAIN_DISH}, @@ -7386,7 +7386,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_HONEY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_RAIN_DISH}, @@ -7415,7 +7415,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_UNNERVE}, @@ -7439,7 +7439,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_QUICK_FEET}, @@ -7463,7 +7463,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_TECHNICIAN}, @@ -7485,7 +7485,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, .abilities = {ABILITY_TRUANT, ABILITY_NONE}, @@ -7507,7 +7507,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_NONE}, @@ -7529,7 +7529,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, .abilities = {ABILITY_TRUANT, ABILITY_NONE}, @@ -7552,7 +7552,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_RUN_AWAY}, @@ -7574,7 +7574,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SPEED_BOOST, ABILITY_NONE, ABILITY_INFILTRATOR}, @@ -7596,7 +7596,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_WONDER_GUARD, ABILITY_NONE}, @@ -7618,7 +7618,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_RATTLED}, @@ -7640,7 +7640,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_SCRAPPY}, @@ -7666,7 +7666,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_SCRAPPY}, @@ -7689,7 +7689,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_BELT, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_THICK_FAT, ABILITY_GUTS, ABILITY_SHEER_FORCE}, @@ -7712,7 +7712,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_THICK_FAT, ABILITY_GUTS, ABILITY_SHEER_FORCE}, @@ -7738,7 +7738,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, @@ -7761,7 +7761,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MAGNET, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_MAGNET_PULL, ABILITY_SAND_FORCE}, @@ -7783,7 +7783,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN}, @@ -7810,7 +7810,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN}, @@ -7862,7 +7862,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_IRON_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_INTIMIDATE, ABILITY_SHEER_FORCE}, @@ -7953,7 +7953,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY}, @@ -7975,7 +7975,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY}, @@ -7997,7 +7997,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS}, @@ -8019,7 +8019,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS}, @@ -8042,7 +8042,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CELL_BATTERY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_PLUS, ABILITY_NONE, ABILITY_LIGHTNING_ROD}, @@ -8065,7 +8065,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CELL_BATTERY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_MINUS, ABILITY_NONE, ABILITY_VOLT_ABSORB}, @@ -8093,7 +8093,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BRIGHT_POWDER, .genderRatio = MON_MALE, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_ILLUMINATE, ABILITY_SWARM, ABILITY_PRANKSTER}, @@ -8121,7 +8121,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BRIGHT_POWDER, .genderRatio = MON_FEMALE, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_TINTED_LENS, ABILITY_PRANKSTER}, @@ -8144,7 +8144,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_LEAF_GUARD}, @@ -8168,7 +8168,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD, ABILITY_GLUTTONY}, @@ -8192,7 +8192,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD, ABILITY_GLUTTONY}, @@ -8260,7 +8260,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2}, .abilities = {ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS, ABILITY_PRESSURE}, @@ -8282,7 +8282,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2}, .abilities = {ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS, ABILITY_PRESSURE}, @@ -8304,7 +8304,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_SIMPLE, ABILITY_OWN_TEMPO}, @@ -8327,7 +8327,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_SOLID_ROCK, ABILITY_ANGER_POINT}, @@ -8350,7 +8350,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CHARCOAL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_WHITE_SMOKE, ABILITY_DROUGHT, ABILITY_SHELL_ARMOR}, @@ -8372,7 +8372,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_GLUTTONY}, @@ -8394,7 +8394,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_GLUTTONY}, @@ -8416,7 +8416,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_TANGLED_FEET, ABILITY_CONTRARY}, @@ -8439,7 +8439,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, #if P_UPDATED_EGG_GROUPS >= GEN_8 .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, @@ -8466,7 +8466,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, #if P_UPDATED_EGG_GROUPS >= GEN_8 .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, @@ -8493,7 +8493,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, #if P_UPDATED_EGG_GROUPS >= GEN_8 .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, @@ -8566,7 +8566,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE}, @@ -8588,7 +8588,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE}, @@ -8611,7 +8611,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_IMMUNITY, ABILITY_NONE, ABILITY_TOXIC_BOOST}, @@ -8635,7 +8635,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHED_SHELL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_INFILTRATOR}, @@ -8663,7 +8663,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MOON_STONE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -8691,7 +8691,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SUN_STONE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -8713,7 +8713,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION}, @@ -8735,7 +8735,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION}, @@ -8757,7 +8757,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_ADAPTABILITY}, @@ -8779,7 +8779,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_ADAPTABILITY}, @@ -8802,7 +8802,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LIGHT_CLAY, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -8825,7 +8825,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LIGHT_CLAY, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -8848,7 +8848,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_ROOT, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_STORM_DRAIN}, @@ -8871,7 +8871,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_ROOT, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_STORM_DRAIN}, @@ -8893,7 +8893,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_SWIFT_SWIM}, @@ -8915,7 +8915,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_SWIFT_SWIM}, @@ -8937,7 +8937,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_OBLIVIOUS, ABILITY_ADAPTABILITY}, @@ -8959,7 +8959,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_MARVEL_SCALE, ABILITY_COMPETITIVE, ABILITY_CUTE_CHARM}, @@ -8983,7 +8983,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_COLOR_CHANGE, ABILITY_NONE, ABILITY_PROTEAN}, @@ -9098,7 +9098,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_HARVEST}, @@ -9128,7 +9128,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CLEANSE_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -9172,7 +9172,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SHADOW_TAG, ABILITY_NONE, ABILITY_TELEPATHY}, @@ -9195,7 +9195,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SNOWBALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY}, @@ -9217,7 +9217,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY}, @@ -9239,7 +9239,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, @@ -9261,7 +9261,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, @@ -9283,7 +9283,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, @@ -9307,7 +9307,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE, ABILITY_RATTLED}, @@ -9331,7 +9331,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DEEP_SEA_TOOTH, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, @@ -9354,7 +9354,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DEEP_SEA_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_HYDRATION}, @@ -9378,7 +9378,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DEEP_SEA_SCALE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_ROCK_HEAD, ABILITY_STURDY}, @@ -9401,7 +9401,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_HEART_SCALE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_HYDRATION}, @@ -9798,7 +9798,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, @@ -9821,7 +9821,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, @@ -9844,7 +9844,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, @@ -9866,7 +9866,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, @@ -9889,7 +9889,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, @@ -9913,7 +9913,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, @@ -9935,7 +9935,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, @@ -9957,7 +9957,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, @@ -9979,7 +9979,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, @@ -10001,7 +10001,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_RECKLESS}, @@ -10024,7 +10024,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS}, @@ -10051,7 +10051,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS}, @@ -10073,7 +10073,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY}, @@ -10096,7 +10096,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY}, @@ -10119,7 +10119,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METRONOME, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_RUN_AWAY}, @@ -10143,7 +10143,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METRONOME, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_TECHNICIAN}, @@ -10166,7 +10166,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, @@ -10211,7 +10211,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, @@ -10234,7 +10234,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_LEAF_GUARD}, @@ -10261,7 +10261,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_TECHNICIAN}, @@ -10283,7 +10283,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHEER_FORCE}, @@ -10305,7 +10305,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHEER_FORCE}, @@ -10327,7 +10327,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SOUNDPROOF}, @@ -10349,7 +10349,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SOUNDPROOF}, @@ -10374,7 +10374,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SILVER_POWDER, .genderRatio = MON_FEMALE, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, @@ -10398,7 +10398,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SILVER_POWDER, .genderRatio = MON_MALE, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_TINTED_LENS}, @@ -10421,7 +10421,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_HONEY, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HONEY_GATHER, ABILITY_NONE, ABILITY_HUSTLE}, @@ -10446,7 +10446,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = MON_FEMALE, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE}, @@ -10490,7 +10490,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, @@ -10512,7 +10512,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, @@ -10535,7 +10535,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MIRACLE_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE}, @@ -10585,7 +10585,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_AFTERMATH, ABILITY_UNBURDEN, ABILITY_FLARE_BOOST}, @@ -10607,7 +10607,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_AFTERMATH, ABILITY_UNBURDEN, ABILITY_FLARE_BOOST}, @@ -10718,7 +10718,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIMBER, ABILITY_OWN_TEMPO, ABILITY_KEEN_EYE}, @@ -10740,7 +10740,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_DEFIANT}, @@ -10763,7 +10763,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CLEANSE_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -10785,7 +10785,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STENCH, ABILITY_AFTERMATH, ABILITY_KEEN_EYE}, @@ -10807,7 +10807,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STENCH, ABILITY_AFTERMATH, ABILITY_KEEN_EYE}, @@ -10830,7 +10830,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_HEATPROOF, ABILITY_HEAVY_METAL}, @@ -10854,7 +10854,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_HEATPROOF, ABILITY_HEAVY_METAL}, @@ -10876,7 +10876,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_RATTLED}, @@ -10902,7 +10902,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN}, @@ -10971,7 +10971,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INFILTRATOR}, @@ -10993,7 +10993,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, @@ -11015,7 +11015,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, @@ -11037,7 +11037,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, @@ -11061,7 +11061,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LEFTOVERS, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PICKUP, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, @@ -11083,7 +11083,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_PRANKSTER}, @@ -11106,7 +11106,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_JUSTIFIED}, @@ -11128,7 +11128,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE}, @@ -11151,7 +11151,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE}, @@ -11175,7 +11175,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_SNIPER, ABILITY_KEEN_EYE}, @@ -11198,7 +11198,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_SNIPER, ABILITY_KEEN_EYE}, @@ -11244,7 +11244,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_SLUDGE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_ANTICIPATION, ABILITY_DRY_SKIN, ABILITY_POISON_TOUCH}, @@ -11266,7 +11266,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -11288,7 +11288,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_STORM_DRAIN, ABILITY_WATER_VEIL}, @@ -11310,7 +11310,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_STORM_DRAIN, ABILITY_WATER_VEIL}, @@ -11332,7 +11332,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB, ABILITY_WATER_VEIL}, @@ -11355,7 +11355,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF}, @@ -11379,7 +11379,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF}, @@ -11426,7 +11426,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, @@ -11449,7 +11449,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LAGGING_TAIL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS, ABILITY_CLOUD_NINE}, @@ -11471,7 +11471,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_SOLID_ROCK, ABILITY_RECKLESS}, @@ -11493,7 +11493,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR}, @@ -11516,7 +11516,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ELECTIRIZER, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_MOTOR_DRIVE, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, @@ -11539,7 +11539,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MAGMARIZER, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, @@ -11566,7 +11566,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, @@ -11589,7 +11589,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_WIDE_LENS, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SPEED_BOOST, ABILITY_TINTED_LENS, ABILITY_FRISK}, @@ -11655,7 +11655,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL, ABILITY_POISON_HEAL}, @@ -11677,7 +11677,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, @@ -11699,7 +11699,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ADAPTABILITY, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, @@ -11749,7 +11749,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MAGNET, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_MAGNET_PULL, ABILITY_SAND_FORCE}, @@ -11795,7 +11795,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_CURSED_BODY}, @@ -11818,7 +11818,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -12051,7 +12051,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = MON_GENDERLESS, .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HYDRATION, ABILITY_NONE}, @@ -12074,7 +12074,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 3, .genderRatio = MON_GENDERLESS, .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HYDRATION, ABILITY_NONE}, @@ -12194,7 +12194,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, @@ -12216,7 +12216,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, @@ -12238,7 +12238,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, @@ -12260,7 +12260,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_THICK_FAT}, @@ -12282,7 +12282,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_THICK_FAT}, @@ -12304,7 +12304,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_RECKLESS}, @@ -12326,7 +12326,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, @@ -12348,7 +12348,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, @@ -12370,7 +12370,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, @@ -12392,7 +12392,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_ANALYTIC}, @@ -12414,7 +12414,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUMINATE, ABILITY_KEEN_EYE, ABILITY_ANALYTIC}, @@ -12436,7 +12436,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_PICKUP, ABILITY_RUN_AWAY}, @@ -12458,7 +12458,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_SAND_RUSH, ABILITY_SCRAPPY}, @@ -12484,7 +12484,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_SAND_RUSH, ABILITY_SCRAPPY}, @@ -12506,7 +12506,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_PRANKSTER}, @@ -12528,7 +12528,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_PRANKSTER}, @@ -12550,7 +12550,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_OVERGROW}, @@ -12572,7 +12572,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_OVERGROW}, @@ -12594,7 +12594,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_BLAZE}, @@ -12616,7 +12616,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_BLAZE}, @@ -12638,7 +12638,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_TORRENT}, @@ -12660,7 +12660,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_TORRENT}, @@ -12682,7 +12682,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FOREWARN, ABILITY_SYNCHRONIZE, ABILITY_TELEPATHY}, @@ -12704,7 +12704,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FOREWARN, ABILITY_SYNCHRONIZE, ABILITY_TELEPATHY}, @@ -12726,7 +12726,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, @@ -12748,7 +12748,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, @@ -12774,7 +12774,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, @@ -12797,7 +12797,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_MOTOR_DRIVE, ABILITY_SAP_SIPPER}, @@ -12819,7 +12819,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_MOTOR_DRIVE, ABILITY_SAP_SIPPER}, @@ -12843,7 +12843,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE}, @@ -12868,7 +12868,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE}, @@ -12896,7 +12896,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_SAND_STREAM, ABILITY_SAND_FORCE}, @@ -12922,7 +12922,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FLYING}, .abilities = {ABILITY_UNAWARE, ABILITY_KLUTZ, ABILITY_SIMPLE}, @@ -12944,7 +12944,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FLYING}, .abilities = {ABILITY_UNAWARE, ABILITY_KLUTZ, ABILITY_SIMPLE}, @@ -12966,7 +12966,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_RUSH, ABILITY_SAND_FORCE, ABILITY_MOLD_BREAKER}, @@ -12988,7 +12988,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_RUSH, ABILITY_SAND_FORCE, ABILITY_MOLD_BREAKER}, @@ -13012,7 +13012,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_REGENERATOR, ABILITY_KLUTZ}, @@ -13056,7 +13056,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST}, @@ -13078,7 +13078,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST}, @@ -13100,7 +13100,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_HYDRATION, ABILITY_WATER_ABSORB}, @@ -13122,7 +13122,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_HYDRATION, ABILITY_WATER_ABSORB}, @@ -13148,7 +13148,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_POISON_TOUCH, ABILITY_WATER_ABSORB}, @@ -13171,7 +13171,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_BELT, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_INNER_FOCUS, ABILITY_MOLD_BREAKER}, @@ -13194,7 +13194,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_BELT, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_STURDY, ABILITY_INNER_FOCUS, ABILITY_MOLD_BREAKER}, @@ -13217,7 +13217,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MENTAL_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, @@ -13240,7 +13240,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MENTAL_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, @@ -13267,7 +13267,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MENTAL_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, @@ -13290,7 +13290,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #if P_UPDATED_ABILITIES >= GEN_6 @@ -13317,7 +13317,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #if P_UPDATED_ABILITIES >= GEN_6 @@ -13348,7 +13348,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #if P_UPDATED_ABILITIES >= GEN_6 @@ -13379,7 +13379,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_FAIRY}, .abilities = {ABILITY_PRANKSTER, ABILITY_INFILTRATOR, ABILITY_CHLOROPHYLL}, @@ -13406,7 +13406,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_FAIRY}, .abilities = {ABILITY_PRANKSTER, ABILITY_INFILTRATOR, ABILITY_CHLOROPHYLL}, @@ -13429,7 +13429,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD}, @@ -13452,7 +13452,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD}, @@ -13475,7 +13475,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DEEP_SEA_TOOTH, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_RECKLESS, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, @@ -13498,7 +13498,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_GLASSES, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, @@ -13521,7 +13521,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_GLASSES, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, @@ -13548,7 +13548,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_BLACK_GLASSES, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, @@ -13570,7 +13570,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS}, @@ -13592,7 +13592,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE}, @@ -13615,7 +13615,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MIRACLE_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_CHLOROPHYLL, ABILITY_STORM_DRAIN}, @@ -13638,7 +13638,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, @@ -13665,7 +13665,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, @@ -13712,7 +13712,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SHED_SHELL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHED_SKIN, ABILITY_MOXIE, ABILITY_INTIMIDATE}, @@ -13734,7 +13734,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_WONDER_SKIN, ABILITY_MAGIC_GUARD, ABILITY_TINTED_LENS}, @@ -13757,7 +13757,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MUMMY, ABILITY_NONE}, @@ -13780,7 +13780,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MUMMY, ABILITY_NONE}, @@ -13802,7 +13802,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SOLID_ROCK, ABILITY_STURDY, ABILITY_SWIFT_SWIM}, @@ -13824,7 +13824,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SOLID_ROCK, ABILITY_STURDY, ABILITY_SWIFT_SWIM}, @@ -13846,7 +13846,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_3}, .abilities = {ABILITY_DEFEATIST, ABILITY_NONE}, @@ -13868,7 +13868,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_3}, .abilities = {ABILITY_DEFEATIST, ABILITY_NONE}, @@ -13891,7 +13891,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SILK_SCARF, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_AFTERMATH}, @@ -13915,7 +13915,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_SLUDGE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, @@ -13937,7 +13937,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, @@ -13959,7 +13959,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, @@ -13981,7 +13981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_TECHNICIAN, ABILITY_SKILL_LINK}, @@ -14003,7 +14003,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_TECHNICIAN, ABILITY_SKILL_LINK}, @@ -14025,7 +14025,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, @@ -14047,7 +14047,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, @@ -14069,7 +14069,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 3, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, @@ -14091,7 +14091,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, @@ -14113,7 +14113,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, @@ -14135,7 +14135,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, @@ -14157,7 +14157,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_BIG_PECKS, ABILITY_HYDRATION}, @@ -14179,7 +14179,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_BIG_PECKS, ABILITY_HYDRATION}, @@ -14202,7 +14202,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR}, @@ -14225,7 +14225,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR}, @@ -14248,7 +14248,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_WARNING, ABILITY_WEAK_ARMOR}, @@ -14274,7 +14274,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_MOTOR_DRIVE}, @@ -14296,7 +14296,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_SHED_SKIN, ABILITY_NO_GUARD}, @@ -14318,7 +14318,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_SHELL_ARMOR, ABILITY_OVERCOAT}, @@ -14342,7 +14342,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_REGENERATOR}, @@ -14366,7 +14366,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_REGENERATOR}, @@ -14388,7 +14388,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP}, @@ -14411,7 +14411,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP}, @@ -14434,7 +14434,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_HEALER, ABILITY_HYDRATION, ABILITY_REGENERATOR}, @@ -14456,7 +14456,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_UNNERVE, ABILITY_SWARM}, @@ -14478,7 +14478,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_UNNERVE, ABILITY_SWARM}, @@ -14501,7 +14501,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_STICKY_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_MINERAL}, .abilities = {ABILITY_IRON_BARBS, ABILITY_NONE}, @@ -14524,7 +14524,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_STICKY_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_MINERAL}, .abilities = {ABILITY_IRON_BARBS, ABILITY_NONE, ABILITY_ANTICIPATION}, @@ -14546,7 +14546,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, @@ -14568,7 +14568,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, @@ -14590,7 +14590,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 3, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, @@ -14612,7 +14612,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -14634,7 +14634,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -14656,7 +14656,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -14678,7 +14678,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_TELEPATHY, ABILITY_SYNCHRONIZE, ABILITY_ANALYTIC}, @@ -14700,7 +14700,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_TELEPATHY, ABILITY_SYNCHRONIZE, ABILITY_ANALYTIC}, @@ -14722,7 +14722,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #if P_UPDATED_ABILITIES >= GEN_6 @@ -14748,7 +14748,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #if P_UPDATED_ABILITIES >= GEN_6 @@ -14774,7 +14774,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #if P_UPDATED_ABILITIES >= GEN_6 @@ -14866,7 +14866,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_RATTLED}, @@ -14892,7 +14892,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_SWIFT_SWIM}, @@ -14920,7 +14920,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_NEVER_MELT_ICE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -14942,7 +14942,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYDRATION, ABILITY_SHELL_ARMOR, ABILITY_OVERCOAT}, @@ -14964,7 +14964,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYDRATION, ABILITY_STICKY_HOLD, ABILITY_UNBURDEN}, @@ -15009,7 +15009,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_REGENERATOR, ABILITY_RECKLESS}, @@ -15031,7 +15031,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_REGENERATOR, ABILITY_RECKLESS}, @@ -15054,7 +15054,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DRAGON_FANG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MONSTER}, .abilities = {ABILITY_ROUGH_SKIN, ABILITY_SHEER_FORCE, ABILITY_MOLD_BREAKER}, @@ -15077,7 +15077,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LIGHT_CLAY, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_IRON_FIST, ABILITY_KLUTZ, ABILITY_NO_GUARD}, @@ -15100,7 +15100,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LIGHT_CLAY, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_IRON_FIST, ABILITY_KLUTZ, ABILITY_NO_GUARD}, @@ -15166,7 +15166,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RECKLESS, ABILITY_SAP_SIPPER, ABILITY_SOUNDPROOF}, @@ -15188,7 +15188,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_HUSTLE}, @@ -15210,7 +15210,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT}, @@ -15276,7 +15276,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE}, @@ -15298,7 +15298,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_HUSTLE, ABILITY_TRUANT}, @@ -15386,7 +15386,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_SWARM}, @@ -15410,7 +15410,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_SWARM}, @@ -15695,7 +15695,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, @@ -15717,7 +15717,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, @@ -15739,7 +15739,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, @@ -15761,7 +15761,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, @@ -15783,7 +15783,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, @@ -15805,7 +15805,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, @@ -15827,7 +15827,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, @@ -15849,7 +15849,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, @@ -15871,7 +15871,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, @@ -15893,7 +15893,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_CHEEK_POUCH, ABILITY_HUGE_POWER}, @@ -15915,7 +15915,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_CHEEK_POUCH, ABILITY_HUGE_POWER}, @@ -15937,7 +15937,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_NONE, ABILITY_GALE_WINGS}, @@ -15959,7 +15959,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS}, @@ -15981,7 +15981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS}, @@ -16003,7 +16003,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD}, @@ -16025,7 +16025,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_FRIEND_GUARD}, @@ -16049,7 +16049,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(87.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE}, @@ -16071,7 +16071,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(87.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE}, @@ -16100,7 +16100,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_NONE, ABILITY_GRASS_PELT}, @@ -16122,7 +16122,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_NONE, ABILITY_GRASS_PELT}, @@ -16145,7 +16145,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MENTAL_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_IRON_FIST, ABILITY_MOLD_BREAKER, ABILITY_SCRAPPY}, @@ -16168,7 +16168,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MENTAL_HERB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_IRON_FIST, ABILITY_MOLD_BREAKER, ABILITY_SCRAPPY}, @@ -16192,7 +16192,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_OWN_TEMPO}, @@ -16214,7 +16214,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_PRANKSTER}, @@ -16236,7 +16236,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_NO_GUARD, ABILITY_NONE}, @@ -16258,7 +16258,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_NO_GUARD, ABILITY_NONE}, @@ -16286,7 +16286,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STANCE_CHANGE, ABILITY_NONE}, @@ -16308,7 +16308,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_AROMA_VEIL}, @@ -16330,7 +16330,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_AROMA_VEIL}, @@ -16352,7 +16352,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_UNBURDEN}, @@ -16374,7 +16374,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_UNBURDEN}, @@ -16396,7 +16396,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_CONTRARY, ABILITY_SUCTION_CUPS, ABILITY_INFILTRATOR}, @@ -16418,7 +16418,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_CONTRARY, ABILITY_SUCTION_CUPS, ABILITY_INFILTRATOR}, @@ -16440,7 +16440,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_SNIPER, ABILITY_PICKPOCKET}, @@ -16462,7 +16462,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_SNIPER, ABILITY_PICKPOCKET}, @@ -16484,7 +16484,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_POISON_POINT, ABILITY_POISON_TOUCH, ABILITY_ADAPTABILITY}, @@ -16506,7 +16506,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_POISON_POINT, ABILITY_POISON_TOUCH, ABILITY_ADAPTABILITY}, @@ -16528,7 +16528,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_NONE}, @@ -16550,7 +16550,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_NONE}, @@ -16572,7 +16572,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_DRY_SKIN, ABILITY_SAND_VEIL, ABILITY_SOLAR_POWER}, @@ -16595,7 +16595,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_DRY_SKIN, ABILITY_SAND_VEIL, ABILITY_SOLAR_POWER}, @@ -16617,7 +16617,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_STURDY}, @@ -16639,7 +16639,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_ROCK_HEAD}, @@ -16661,7 +16661,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_REFRIGERATE, ABILITY_NONE, ABILITY_SNOW_WARNING}, @@ -16683,7 +16683,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_REFRIGERATE, ABILITY_NONE, ABILITY_SNOW_WARNING}, @@ -16705,7 +16705,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_CUTE_CHARM, ABILITY_PIXILATE}, @@ -16728,7 +16728,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, #if P_UPDATED_EGG_GROUPS >= GEN_8 .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_HUMAN_LIKE}, @@ -16754,7 +16754,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CHEEK_POUCH, ABILITY_PICKUP, ABILITY_PLUS}, @@ -16777,7 +16777,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY}, @@ -16867,7 +16867,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_MAGICIAN}, @@ -16889,7 +16889,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_FRISK, ABILITY_HARVEST}, @@ -16911,7 +16911,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_FRISK, ABILITY_HARVEST}, @@ -16955,7 +16955,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, #if P_UPDATED_EGG_GROUPS >= GEN_8 .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, @@ -16981,7 +16981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, #if P_UPDATED_EGG_GROUPS >= GEN_8 .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, @@ -17007,7 +17007,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, #if P_UPDATED_EGG_GROUPS >= GEN_8 .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, @@ -17033,7 +17033,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, #if P_UPDATED_EGG_GROUPS >= GEN_8 .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, @@ -17087,7 +17087,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE}, @@ -17158,7 +17158,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, @@ -17180,7 +17180,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, @@ -17202,7 +17202,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, @@ -17224,7 +17224,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, @@ -17246,7 +17246,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, @@ -17268,7 +17268,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, @@ -17290,7 +17290,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, @@ -17312,7 +17312,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, @@ -17334,7 +17334,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, @@ -17357,7 +17357,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_PICKUP}, @@ -17380,7 +17380,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_PICKUP}, @@ -17403,7 +17403,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_SHEER_FORCE}, @@ -17426,7 +17426,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STAKEOUT, ABILITY_STRONG_JAW, ABILITY_ADAPTABILITY}, @@ -17449,7 +17449,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STAKEOUT, ABILITY_STRONG_JAW, ABILITY_ADAPTABILITY}, @@ -17471,7 +17471,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE}, @@ -17494,7 +17494,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CELL_BATTERY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_BATTERY, ABILITY_NONE}, @@ -17516,7 +17516,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, @@ -17539,7 +17539,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ASPEAR_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT}, @@ -17562,7 +17562,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CHERI_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT}, @@ -17587,7 +17587,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_HONEY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HONEY_GATHER, ABILITY_SHIELD_DUST, ABILITY_SWEET_VEIL}, @@ -17610,7 +17610,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_HONEY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HONEY_GATHER, ABILITY_SHIELD_DUST, ABILITY_SWEET_VEIL}, @@ -17634,7 +17634,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SAND_RUSH, ABILITY_STEADFAST}, @@ -17656,7 +17656,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SCHOOLING, ABILITY_NONE}, @@ -17679,7 +17679,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_MERCILESS, ABILITY_LIMBER, ABILITY_REGENERATOR}, @@ -17702,7 +17702,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_MERCILESS, ABILITY_LIMBER, ABILITY_REGENERATOR}, @@ -17725,7 +17725,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LIGHT_CLAY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_STAMINA, ABILITY_INNER_FOCUS}, @@ -17748,7 +17748,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LIGHT_CLAY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_STAMINA, ABILITY_INNER_FOCUS}, @@ -17771,7 +17771,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MYSTIC_WATER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, .abilities = {ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_WATER_ABSORB}, @@ -17794,7 +17794,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MYSTIC_WATER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, .abilities = {ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_WATER_ABSORB}, @@ -17817,7 +17817,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MIRACLE_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_CONTRARY}, @@ -17840,7 +17840,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MIRACLE_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_CONTRARY}, @@ -17864,7 +17864,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_ILLUMINATE, ABILITY_EFFECT_SPORE, ABILITY_RAIN_DISH}, @@ -17888,7 +17888,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_ILLUMINATE, ABILITY_EFFECT_SPORE, ABILITY_RAIN_DISH}, @@ -17911,7 +17911,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CORROSION, ABILITY_NONE, ABILITY_OBLIVIOUS}, @@ -17934,7 +17934,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SMOKE_BALL, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CORROSION, ABILITY_NONE, ABILITY_OBLIVIOUS}, @@ -17956,7 +17956,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLUFFY, ABILITY_KLUTZ, ABILITY_CUTE_CHARM}, @@ -17978,7 +17978,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLUFFY, ABILITY_KLUTZ, ABILITY_UNNERVE}, @@ -18001,7 +18001,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_GRASSY_SEED, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_OBLIVIOUS, ABILITY_SWEET_VEIL}, @@ -18024,7 +18024,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_GRASSY_SEED, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_OBLIVIOUS, ABILITY_SWEET_VEIL}, @@ -18047,7 +18047,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_GRASSY_SEED, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_QUEENLY_MAJESTY, ABILITY_SWEET_VEIL}, @@ -18070,7 +18070,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MISTY_SEED, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_FLOWER_VEIL, ABILITY_TRIAGE, ABILITY_NATURAL_CURE}, @@ -18092,7 +18092,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_TELEPATHY, ABILITY_SYMBIOSIS}, @@ -18114,7 +18114,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RECEIVER, ABILITY_NONE, ABILITY_DEFIANT}, @@ -18136,7 +18136,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, .abilities = {ABILITY_WIMP_OUT, ABILITY_NONE}, @@ -18158,7 +18158,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, .abilities = {ABILITY_EMERGENCY_EXIT, ABILITY_NONE}, @@ -18181,7 +18181,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WATER_COMPACTION, ABILITY_NONE, ABILITY_SAND_VEIL}, @@ -18204,7 +18204,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WATER_COMPACTION, ABILITY_NONE, ABILITY_SAND_VEIL}, @@ -18226,7 +18226,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_INNARDS_OUT, ABILITY_NONE, ABILITY_UNAWARE}, @@ -18275,7 +18275,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_COMATOSE, ABILITY_NONE}, @@ -18298,7 +18298,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CHARCOAL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE}, @@ -18321,7 +18321,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ELECTRIC_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_IRON_BARBS, ABILITY_LIGHTNING_ROD, ABILITY_STURDY}, @@ -18346,7 +18346,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_RAZOR_FANG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_DAZZLING, ABILITY_STRONG_JAW, ABILITY_WONDER_SKIN}, @@ -18369,7 +18369,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_PERSIM_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BERSERK, ABILITY_SAP_SIPPER, ABILITY_CLOUD_NINE}, @@ -18391,7 +18391,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STEELWORKER, ABILITY_NONE}, @@ -18414,7 +18414,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_RAZOR_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, @@ -18437,7 +18437,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_RAZOR_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, @@ -18460,7 +18460,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_RAZOR_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, @@ -18482,7 +18482,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = MON_GENDERLESS, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_ELECTRIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, @@ -18505,7 +18505,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = MON_GENDERLESS, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PSYCHIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, @@ -18528,7 +18528,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = MON_GENDERLESS, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_GRASSY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, @@ -18551,7 +18551,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 3, .genderRatio = MON_GENDERLESS, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_MISTY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, @@ -19044,7 +19044,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, @@ -19066,7 +19066,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, @@ -19088,7 +19088,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, @@ -19110,7 +19110,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, @@ -19132,7 +19132,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, @@ -19154,7 +19154,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, @@ -19177,7 +19177,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, @@ -19199,7 +19199,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, @@ -19221,7 +19221,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, @@ -19244,7 +19244,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CHEEK_POUCH, ABILITY_NONE, ABILITY_GLUTTONY}, @@ -19267,7 +19267,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CHEEK_POUCH, ABILITY_NONE, ABILITY_GLUTTONY}, @@ -19289,7 +19289,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS}, @@ -19311,7 +19311,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS}, @@ -19333,7 +19333,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR}, @@ -19355,7 +19355,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_COMPOUND_EYES, ABILITY_TELEPATHY}, @@ -19378,7 +19378,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_PSYCHIC_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_COMPOUND_EYES, ABILITY_TELEPATHY}, @@ -19401,7 +19401,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_PSYCHIC_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY}, @@ -19423,7 +19423,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_UNBURDEN, ABILITY_STAKEOUT}, @@ -19445,7 +19445,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_UNBURDEN, ABILITY_STAKEOUT}, @@ -19467,7 +19467,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_COTTON_DOWN, ABILITY_REGENERATOR, ABILITY_EFFECT_SPORE}, @@ -19489,7 +19489,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_COTTON_DOWN, ABILITY_REGENERATOR, ABILITY_EFFECT_SPORE}, @@ -19511,7 +19511,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLUFFY, ABILITY_RUN_AWAY, ABILITY_BULLETPROOF}, @@ -19533,7 +19533,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLUFFY, ABILITY_STEADFAST, ABILITY_BULLETPROOF}, @@ -19555,7 +19555,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, @@ -19577,7 +19577,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, @@ -19599,7 +19599,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BALL_FETCH, ABILITY_NONE, ABILITY_RATTLED}, @@ -19621,7 +19621,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_COMPETITIVE}, @@ -19643,7 +19643,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STEAM_ENGINE, ABILITY_HEATPROOF, ABILITY_FLASH_FIRE}, @@ -19665,7 +19665,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, @@ -19687,7 +19687,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, @@ -19709,7 +19709,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_BULLETPROOF}, @@ -19731,7 +19731,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE}, @@ -19753,7 +19753,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, @@ -19775,7 +19775,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, @@ -19797,7 +19797,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, @@ -19821,7 +19821,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL}, @@ -19843,7 +19843,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL}, @@ -19865,7 +19865,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_RATTLED, ABILITY_STATIC, ABILITY_KLUTZ}, @@ -19889,7 +19889,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, @@ -19911,7 +19911,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, @@ -19933,7 +19933,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_TECHNICIAN}, @@ -19955,7 +19955,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_TECHNICIAN}, @@ -19981,7 +19981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, @@ -20003,7 +20003,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, @@ -20025,7 +20025,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, @@ -20047,7 +20047,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, @@ -20069,7 +20069,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, @@ -20091,7 +20091,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, @@ -20113,7 +20113,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RECKLESS, ABILITY_GUTS, ABILITY_DEFIANT}, @@ -20135,7 +20135,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_TOUGH_CLAWS, ABILITY_STEELY_SPIRIT}, @@ -20157,7 +20157,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_PERISH_BODY}, @@ -20180,7 +20180,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LEEK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY}, @@ -20202,7 +20202,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_TANGLED_FEET, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY}, @@ -20224,7 +20224,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WANDERING_SPIRIT, ABILITY_NONE}, @@ -20246,7 +20246,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL}, @@ -20271,7 +20271,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_DEFIANT}, @@ -20293,7 +20293,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_NONE, ABILITY_ELECTRIC_SURGE}, @@ -20316,7 +20316,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SNOWBALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_ICE_SCALES}, @@ -20338,7 +20338,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_ICE_SCALES}, @@ -20360,7 +20360,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_POWER_SPOT, ABILITY_NONE}, @@ -20382,7 +20382,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_ICE_FACE, ABILITY_NONE}, @@ -20429,7 +20429,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LAGGING_TAIL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, @@ -20452,7 +20452,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_LAGGING_TAIL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, @@ -20474,7 +20474,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_HUSTLE, ABILITY_SAND_RUSH}, @@ -20496,7 +20496,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_STATIC, ABILITY_SLUSH_RUSH}, @@ -20518,7 +20518,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_STRONG_JAW, ABILITY_SAND_RUSH}, @@ -20540,7 +20540,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_ICE_BODY, ABILITY_SLUSH_RUSH}, @@ -20562,7 +20562,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 30, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_DRAGON}, .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, @@ -20584,7 +20584,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, @@ -20606,7 +20606,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, @@ -20628,7 +20628,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, @@ -20719,7 +20719,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 120, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE}, @@ -20742,7 +20742,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 120, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, @@ -20882,7 +20882,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER}, @@ -20904,7 +20904,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_SHEER_FORCE, ABILITY_STEADFAST}, @@ -20926,7 +20926,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GUTS, ABILITY_BULLETPROOF, ABILITY_UNNERVE}, @@ -20946,15 +20946,36 @@ const struct SpeciesInfo gSpeciesInfo[] = .catchRate = 25, .expYield = 186, .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), + .genderRatio = MON_MALE, .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, + .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BASCULEGION_FEMALE] = + { + .baseHP = 120, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 78, + .baseSpAttack = 100, + .baseSpDefense = 75, + .types = { TYPE_WATER, TYPE_GHOST}, + .catchRate = 25, + .expYield = 186, + .evYield_HP = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_SNEASLER] = @@ -20994,7 +21015,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, @@ -21041,7 +21062,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_THICK_FAT, ABILITY_THICK_FAT}, @@ -21064,7 +21085,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, @@ -21087,7 +21108,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_DROUGHT, ABILITY_DROUGHT}, @@ -21110,7 +21131,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_MEGA_LAUNCHER}, @@ -21135,7 +21156,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY}, @@ -21158,7 +21179,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_NO_GUARD, ABILITY_NO_GUARD}, @@ -21186,7 +21207,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_TRACE, ABILITY_TRACE}, @@ -21210,7 +21231,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SHELL_ARMOR}, @@ -21233,7 +21254,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG}, @@ -21256,7 +21277,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_PARENTAL_BOND, ABILITY_PARENTAL_BOND}, @@ -21279,7 +21300,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_AERILATE, ABILITY_AERILATE}, @@ -21302,7 +21323,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, .abilities = {ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER}, @@ -21325,7 +21346,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, @@ -21394,7 +21415,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER}, @@ -21418,7 +21439,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_METAL_COAT, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SAND_FORCE, ABILITY_SAND_FORCE}, @@ -21441,7 +21462,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_TECHNICIAN, ABILITY_TECHNICIAN}, @@ -21464,7 +21485,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SKILL_LINK, ABILITY_SKILL_LINK}, @@ -21533,7 +21554,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_LIGHTNING_ROD}, @@ -21556,7 +21577,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SPEED_BOOST, ABILITY_SPEED_BOOST}, @@ -21579,7 +21600,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SWIFT_SWIM}, @@ -21650,7 +21671,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HUGE_POWER, ABILITY_HUGE_POWER}, @@ -21697,7 +21718,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PURE_POWER, ABILITY_PURE_POWER}, @@ -21720,7 +21741,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_INTIMIDATE}, @@ -21768,7 +21789,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_SHEER_FORCE}, @@ -21791,7 +21812,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, .abilities = {ABILITY_PIXILATE, ABILITY_PIXILATE}, @@ -21861,7 +21882,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_REFRIGERATE, ABILITY_REFRIGERATE}, @@ -22002,7 +22023,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_FORCE, ABILITY_SAND_FORCE}, @@ -22026,7 +22047,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY}, @@ -22051,7 +22072,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_SNOW_WARNING, ABILITY_SNOW_WARNING}, @@ -22101,7 +22122,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_HEALER}, @@ -22127,7 +22148,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, @@ -22181,7 +22202,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .abilities = {ABILITY_PRIMORDIAL_SEA, ABILITY_PRIMORDIAL_SEA}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_PRIMAL_REVERSION, }, [SPECIES_GROUDON_PRIMAL] = @@ -22204,7 +22225,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .abilities = {ABILITY_DESOLATE_LAND, ABILITY_DESOLATE_LAND}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_PRIMAL_REVERSION, }, [SPECIES_RATTATA_ALOLAN] = @@ -22222,7 +22243,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT}, @@ -22246,7 +22267,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT}, @@ -22269,7 +22290,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_SURGE_SURFER, ABILITY_NONE}, @@ -22293,7 +22314,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_GRIP_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH}, @@ -22316,7 +22337,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH}, @@ -22340,7 +22361,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SNOWBALL, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING}, @@ -22364,7 +22385,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING}, @@ -22388,7 +22409,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE}, @@ -22412,7 +22433,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE}, @@ -22436,7 +22457,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_RATTLED}, @@ -22460,7 +22481,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FUR_COAT, ABILITY_TECHNICIAN, ABILITY_RATTLED}, @@ -22484,7 +22505,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CELL_BATTERY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, @@ -22508,7 +22529,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_CELL_BATTERY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, @@ -22531,7 +22552,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, @@ -22555,7 +22576,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_BLACK_SLUDGE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY}, @@ -22579,7 +22600,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY}, @@ -22602,7 +22623,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_FRISK, ABILITY_NONE, ABILITY_HARVEST}, @@ -22625,7 +22646,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_CURSED_BODY, ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD}, @@ -22648,7 +22669,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_TOUGH_CLAWS, ABILITY_UNNERVE}, @@ -22671,7 +22692,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION}, @@ -22694,7 +22715,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION}, @@ -22717,7 +22738,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_GLUTTONY, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, @@ -22740,7 +22761,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_QUICK_DRAW, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, @@ -22764,7 +22785,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemCommon = ITEM_LEEK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY}, @@ -22788,7 +22809,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_MISTY_SEED, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_MISTY_SURGE}, @@ -22811,7 +22832,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY}, @@ -22903,7 +22924,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_CURIOUS_MEDICINE, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, @@ -22926,7 +22947,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY}, @@ -22949,7 +22970,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, @@ -22972,7 +22993,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, @@ -22996,7 +23017,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS}, @@ -23019,7 +23040,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE}, @@ -23042,7 +23063,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WANDERING_SPIRIT, ABILITY_NONE}, @@ -23065,7 +23086,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MIMICRY, ABILITY_NONE}, @@ -23089,7 +23110,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 1, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, @@ -23112,7 +23133,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, @@ -23135,7 +23156,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 1, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, @@ -23158,7 +23179,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = MON_GENDERLESS, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, @@ -23181,7 +23202,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, @@ -23205,7 +23226,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, @@ -23253,7 +23274,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, @@ -23277,7 +23298,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_ABSORB_BULB, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_HUSTLE, ABILITY_LEAF_GUARD}, @@ -23300,7 +23321,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, @@ -23323,7 +23344,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, @@ -23346,7 +23367,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT}, @@ -23418,7 +23439,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STRONG_JAW, ABILITY_ICE_BODY, ABILITY_STURDY}, @@ -23443,7 +23464,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, @@ -23590,7 +23611,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SILVER_POWDER, .genderRatio = MON_FEMALE, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, @@ -23614,7 +23635,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_SILVER_POWDER, .genderRatio = MON_FEMALE, .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, @@ -23761,7 +23782,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DEEP_SEA_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, @@ -23784,7 +23805,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .itemRare = ITEM_DEEP_SEA_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, @@ -23806,7 +23827,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE}, @@ -23828,7 +23849,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpAttack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE}, @@ -24031,7 +24052,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BATTLE_BOND, ABILITY_NONE}, @@ -24053,7 +24074,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 3, .genderRatio = MON_MALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BATTLE_BOND, ABILITY_NONE}, @@ -24105,7 +24126,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 2, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS}, @@ -24142,7 +24163,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Speed = 2, .genderRatio = MON_FEMALE, .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_COMPETITIVE}, @@ -24170,7 +24191,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STANCE_CHANGE, ABILITY_NONE}, @@ -24322,7 +24343,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_NO_GUARD}, @@ -24344,7 +24365,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_NONE}, @@ -24366,7 +24387,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_HP = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SCHOOLING, ABILITY_NONE}, @@ -24516,7 +24537,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Defense = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_ICE_FACE, ABILITY_NONE}, @@ -24631,7 +24652,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 120, - .friendship = 70, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h index 28998aae1a99..f8faf62d8ffa 100644 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -789,9 +789,9 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_BRUXISH] = sBruxishTeachableLearnset, [SPECIES_DRAMPA] = sDrampaTeachableLearnset, [SPECIES_DHELMISE] = sDhelmiseTeachableLearnset, - [SPECIES_JANGMO_O] = sJangmooTeachableLearnset, - [SPECIES_HAKAMO_O] = sHakamooTeachableLearnset, - [SPECIES_KOMMO_O] = sKommooTeachableLearnset, + [SPECIES_JANGMO_O] = sJangmoOTeachableLearnset, + [SPECIES_HAKAMO_O] = sHakamoOTeachableLearnset, + [SPECIES_KOMMO_O] = sKommoOTeachableLearnset, [SPECIES_TAPU_KOKO] = sTapuKokoTeachableLearnset, [SPECIES_TAPU_LELE] = sTapuLeleTeachableLearnset, [SPECIES_TAPU_BULU] = sTapuBuluTeachableLearnset, @@ -1334,5 +1334,6 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTeachableLearnset, // Enamorus [SPECIES_ENAMORUS_THERIAN] = sEnamorusTeachableLearnset, + [SPECIES_BASCULEGION_FEMALE] = sBasculegionTeachableLearnset, #endif }; diff --git a/src/data/pokemon/teachable_learnsets.h b/src/data/pokemon/teachable_learnsets.h index 19b22d9b3d4b..b0f162c6d9e6 100644 --- a/src/data/pokemon/teachable_learnsets.h +++ b/src/data/pokemon/teachable_learnsets.h @@ -29414,7 +29414,7 @@ static const u16 sDhelmiseTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJangmooTeachableLearnset[] = { +static const u16 sJangmoOTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -29445,7 +29445,7 @@ static const u16 sJangmooTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHakamooTeachableLearnset[] = { +static const u16 sHakamoOTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -29475,7 +29475,7 @@ static const u16 sHakamooTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKommooTeachableLearnset[] = { +static const u16 sKommoOTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -30118,11 +30118,67 @@ static const u16 sZeraoraTeachableLearnset[] = { }; static const u16 sMeltanTeachableLearnset[] = { + MOVE_HEADBUTT, + MOVE_REST, + MOVE_PROTECT, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_THUNDERBOLT, + MOVE_FLASH_CANNON, + MOVE_SNORE, + MOVE_FACADE, + MOVE_ROUND, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_IRON_DEFENSE, + MOVE_GYRO_BALL, + MOVE_STEEL_BEAM, MOVE_HIDDEN_POWER, MOVE_UNAVAILABLE, }; static const u16 sMelmetalTeachableLearnset[] = { + MOVE_HEADBUTT, + MOVE_REST, + MOVE_PROTECT, + MOVE_SUBSTITUTE, + MOVE_FACADE, + MOVE_BRICK_BREAK, + MOVE_THUNDER_WAVE, + MOVE_ROCK_SLIDE, + MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_ICE_PUNCH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_SELF_DESTRUCT, + MOVE_SOLAR_BEAM, + MOVE_HYPER_BEAM, + MOVE_SUPERPOWER, + MOVE_FLASH_CANNON, + MOVE_ICE_BEAM, + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_GIGA_IMPACT, + MOVE_SNORE, + MOVE_ROCK_TOMB, + MOVE_ROUND, + MOVE_ELECTRIC_TERRAIN, + MOVE_BRUTAL_SWING, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_IRON_DEFENSE, + MOVE_GYRO_BALL, + MOVE_IRON_HEAD, + MOVE_HEAVY_SLAM, + MOVE_DARKEST_LARIAT, + MOVE_HIGH_HORSEPOWER, + MOVE_BODY_PRESS, + MOVE_STEEL_BEAM, + MOVE_STEEL_ROLLER, MOVE_HIDDEN_POWER, MOVE_UNAVAILABLE, }; diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index 8dbc2d2a98d9..06bf461c9a4d 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -518,7 +518,7 @@ const struct MonCoords gMonBackPicCoords[] = [SPECIES_DARKRAI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SHAYMIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, [SPECIES_ARCEUS] = ARCEUS_BACK_PIC_COORDS, -#endif +#endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 7 }, [SPECIES_SNIVY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, @@ -1042,20 +1042,20 @@ const struct MonCoords gMonBackPicCoords[] = [SPECIES_ARCANINE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_VOLTORB_HISUIAN] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 10 }, [SPECIES_ELECTRODE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 7 }, - [SPECIES_TYPHLOSION_HISUIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 3 }, + [SPECIES_TYPHLOSION_HISUIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 2 }, [SPECIES_QWILFISH_HISUIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, [SPECIES_SNEASEL_HISUIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, #if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SAMUROTT_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, [SPECIES_LILLIGANT_HISUIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, [SPECIES_ZORUA_HISUIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, [SPECIES_ZOROARK_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BRAVIARY_HISUIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 0 }, + [SPECIES_BRAVIARY_HISUIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, #endif #if P_GEN_6_POKEMON == TRUE [SPECIES_SLIGGOO_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_GOODRA_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_AVALUGG_HISUIAN] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 17 }, + [SPECIES_AVALUGG_HISUIAN] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, #endif #if P_GEN_7_POKEMON == TRUE [SPECIES_DECIDUEYE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1355,7 +1355,9 @@ const struct MonCoords gMonBackPicCoords[] = [SPECIES_CALYREX_ICE_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, [SPECIES_CALYREX_SHADOW_RIDER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, // Enamorus - [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + // Basculegion + [SPECIES_BASCULEGION_FEMALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, }; diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index ebe0c316f84a..32864907bbe5 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -789,9 +789,9 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(BRUXISH, gMonBackPic_Bruxish), SPECIES_SPRITE(DRAMPA, gMonBackPic_Drampa), SPECIES_SPRITE(DHELMISE, gMonBackPic_Dhelmise), - SPECIES_SPRITE(JANGMO_O, gMonBackPic_Jangmoo), - SPECIES_SPRITE(HAKAMO_O, gMonBackPic_Hakamoo), - SPECIES_SPRITE(KOMMO_O, gMonBackPic_Kommoo), + SPECIES_SPRITE(JANGMO_O, gMonBackPic_JangmoO), + SPECIES_SPRITE(HAKAMO_O, gMonBackPic_HakamoO), + SPECIES_SPRITE(KOMMO_O, gMonBackPic_KommoO), SPECIES_SPRITE(TAPU_KOKO, gMonBackPic_TapuKoko), SPECIES_SPRITE(TAPU_LELE, gMonBackPic_TapuLele), SPECIES_SPRITE(TAPU_BULU, gMonBackPic_TapuBulu), @@ -908,13 +908,13 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(GLASTRIER, gMonBackPic_Glastrier), SPECIES_SPRITE(SPECTRIER, gMonBackPic_Spectrier), SPECIES_SPRITE(CALYREX, gMonBackPic_Calyrex), - SPECIES_SPRITE(WYRDEER, gMonBackPic_CircledQuestionMark), //gMonBackPic_Wyrdeer), + SPECIES_SPRITE(WYRDEER, gMonBackPic_Wyrdeer), SPECIES_SPRITE(KLEAVOR, gMonBackPic_Kleavor), SPECIES_SPRITE(URSALUNA, gMonBackPic_Ursaluna), - SPECIES_SPRITE(BASCULEGION, gMonBackPic_CircledQuestionMark), //gMonBackPic_Basculegion), - SPECIES_SPRITE(SNEASLER, gMonBackPic_CircledQuestionMark), //gMonBackPic_Sneasler), + SPECIES_SPRITE(BASCULEGION, gMonBackPic_Basculegion), + SPECIES_SPRITE(SNEASLER, gMonBackPic_Sneasler), SPECIES_SPRITE(OVERQWIL, gMonBackPic_Overqwil), - SPECIES_SPRITE(ENAMORUS, gMonBackPic_CircledQuestionMark), //gMonBackPic_Enamorus), + SPECIES_SPRITE(ENAMORUS, gMonBackPic_Enamorus), #endif SPECIES_SPRITE(VENUSAUR_MEGA, gMonBackPic_VenusaurMega), @@ -1024,7 +1024,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(QWILFISH_HISUIAN, gMonBackPic_QwilfishHisuian), SPECIES_SPRITE(SNEASEL_HISUIAN, gMonBackPic_SneaselHisuian), #if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(SAMUROTT_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_SamurottHisuian), + SPECIES_SPRITE(SAMUROTT_HISUIAN, gMonBackPic_SamurottHisuian), SPECIES_SPRITE(LILLIGANT_HISUIAN, gMonBackPic_LilligantHisuian), SPECIES_SPRITE(ZORUA_HISUIAN, gMonBackPic_ZoruaHisuian), SPECIES_SPRITE(ZOROARK_HISUIAN, gMonBackPic_ZoroarkHisuian), @@ -1036,7 +1036,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(AVALUGG_HISUIAN, gMonBackPic_AvaluggHisuian), #endif #if P_GEN_8_POKEMON == TRUE - SPECIES_SPRITE(DECIDUEYE_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_DecidueyeHisuian), + SPECIES_SPRITE(DECIDUEYE_HISUIAN, gMonBackPic_DecidueyeHisuian), #endif SPECIES_SPRITE(PIKACHU_COSPLAY, gMonBackPic_PikachuCosplay), @@ -1331,7 +1331,9 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(CALYREX_ICE_RIDER, gMonBackPic_CalyrexIceRider), SPECIES_SPRITE(CALYREX_SHADOW_RIDER, gMonBackPic_CalyrexShadowRider), - SPECIES_SPRITE(ENAMORUS_THERIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_EnamorusTherian), + SPECIES_SPRITE(ENAMORUS_THERIAN, gMonBackPic_EnamorusTherian), + + SPECIES_SPRITE(BASCULEGION_FEMALE, gMonBackPic_BasculegionFemale), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), }; @@ -1359,7 +1361,4 @@ const struct CompressedSpriteSheet gMonBackPicTableFemale[] = #if P_GEN_6_POKEMON == TRUE SPECIES_SPRITE(PYROAR, gMonBackPic_PyroarF), #endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_SPRITE(BASCULEGION, gMonBackPic_CircledQuestionMark), //gMonBackPic_BasculegionF), -#endif }; diff --git a/src/data/pokemon_graphics/footprint_table.h b/src/data/pokemon_graphics/footprint_table.h index 2b0dd0a4f605..8e21b0604eaf 100644 --- a/src/data/pokemon_graphics/footprint_table.h +++ b/src/data/pokemon_graphics/footprint_table.h @@ -789,9 +789,9 @@ const u8 *const gMonFootprintTable[] = [SPECIES_BRUXISH] = gMonFootprint_Bruxish, [SPECIES_DRAMPA] = gMonFootprint_Drampa, [SPECIES_DHELMISE] = gMonFootprint_Dhelmise, - [SPECIES_JANGMO_O] = gMonFootprint_Jangmo_o, - [SPECIES_HAKAMO_O] = gMonFootprint_Hakamo_o, - [SPECIES_KOMMO_O] = gMonFootprint_Kommo_o, + [SPECIES_JANGMO_O] = gMonFootprint_JangmoO, + [SPECIES_HAKAMO_O] = gMonFootprint_HakamoO, + [SPECIES_KOMMO_O] = gMonFootprint_KommoO, [SPECIES_TAPU_KOKO] = gMonFootprint_Tapu_Koko, [SPECIES_TAPU_LELE] = gMonFootprint_Tapu_Lele, [SPECIES_TAPU_BULU] = gMonFootprint_Tapu_Bulu, diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index b493b4357300..326af6d1ee56 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -12906,6 +12906,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] = [SPECIES_CALYREX_ICE_RIDER] = sAnims_Calyrex, [SPECIES_CALYREX_SHADOW_RIDER] = sAnims_Calyrex, [SPECIES_ENAMORUS_THERIAN] = sAnims_EnamorusTherian, + [SPECIES_BASCULEGION_FEMALE] = sAnims_Basculegion, #endif [SPECIES_EGG] = sAnims_Egg, }; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index a484b85966f2..ea158229c5f6 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -920,7 +920,7 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_OVERQWIL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ENAMORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif - // Megas + // Megas [SPECIES_VENUSAUR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_CHARIZARD_MEGA_X] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CHARIZARD_MEGA_Y] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -974,11 +974,11 @@ const struct MonCoords gMonFrontPicCoords[] = #if P_GEN_6_POKEMON == TRUE [SPECIES_DIANCIE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif - // Special Mega + Primals + // Special Mega + Primals [SPECIES_RAYQUAZA_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_KYOGRE_PRIMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_GROUDON_PRIMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Alolan Forms + // Alolan Forms [SPECIES_RATTATA_ALOLAN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, [SPECIES_RATICATE_ALOLAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_RAICHU_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -997,7 +997,7 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_MUK_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_EXEGGUTOR_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_MAROWAK_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Galarian Forms + // Galarian Forms [SPECIES_MEOWTH_GALARIAN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PONYTA_GALARIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_RAPIDASH_GALARIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1042,15 +1042,15 @@ const struct MonCoords gMonFrontPicCoords[] = #if P_GEN_7_POKEMON == TRUE [SPECIES_DECIDUEYE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif - // Misc Forms - // Cosplay Pikachu + // Misc Forms + // Cosplay Pikachu [SPECIES_PIKACHU_COSPLAY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_ROCK_STAR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_BELLE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_POP_STAR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_PH_D] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_LIBRE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - // Cap Pikachu + // Cap Pikachu [SPECIES_PIKACHU_ORIGINAL_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_HOENN_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_SINNOH_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, @@ -1059,9 +1059,9 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_PIKACHU_ALOLA_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_PARTNER_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, [SPECIES_PIKACHU_WORLD_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - // Pichu + // Pichu [SPECIES_PICHU_SPIKY_EARED] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - // Unown + // Unown [SPECIES_UNOWN_B] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, [SPECIES_UNOWN_C] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, [SPECIES_UNOWN_D] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, @@ -1089,40 +1089,40 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_UNOWN_Z] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, [SPECIES_UNOWN_EMARK] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 15 }, [SPECIES_UNOWN_QMARK] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 13 }, - // Castform + // Castform [SPECIES_CASTFORM_SUNNY] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, [SPECIES_CASTFORM_RAINY] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, [SPECIES_CASTFORM_SNOWY] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - // Deoxys + // Deoxys [SPECIES_DEOXYS_ATTACK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_DEOXYS_DEFENSE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_DEOXYS_SPEED] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, #if P_GEN_4_POKEMON == TRUE - // Burmy + // Burmy [SPECIES_BURMY_SANDY_CLOAK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 12 }, [SPECIES_BURMY_TRASH_CLOAK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 8 }, - // Wormadam + // Wormadam [SPECIES_WORMADAM_SANDY_CLOAK] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 10 }, [SPECIES_WORMADAM_TRASH_CLOAK] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, - // Cherrim + // Cherrim [SPECIES_CHERRIM_SUNSHINE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - // Shellos + // Shellos [SPECIES_SHELLOS_EAST_SEA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - // Gastrodon + // Gastrodon [SPECIES_GASTRODON_EAST_SEA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - // Rotom + // Rotom [SPECIES_ROTOM_HEAT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, [SPECIES_ROTOM_WASH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_ROTOM_FROST] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_ROTOM_FAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_ROTOM_MOW] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 12 }, - // Origin Forme + // Origin Forme [SPECIES_DIALGA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_PALKIA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_GIRATINA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Shaymin + // Shaymin [SPECIES_SHAYMIN_SKY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - // Arceus + // Arceus [SPECIES_ARCEUS_FIGHTING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ARCEUS_FLYING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ARCEUS_POISON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1142,42 +1142,42 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_ARCEUS_FAIRY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif #if P_GEN_5_POKEMON == TRUE - // Basculin + // Basculin [SPECIES_BASCULIN_BLUE_STRIPED] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 16 }, [SPECIES_BASCULIN_WHITE_STRIPED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 10 }, - // Darmanitan + // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - // Deerling + // Deerling [SPECIES_DEERLING_SUMMER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, [SPECIES_DEERLING_AUTUMN] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, [SPECIES_DEERLING_WINTER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - // Sawsbuck + // Sawsbuck [SPECIES_SAWSBUCK_SUMMER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SAWSBUCK_AUTUMN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SAWSBUCK_WINTER] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - // Therian Forms + // Therian Forms [SPECIES_TORNADUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_THUNDURUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_LANDORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Kyurem + // Kyurem [SPECIES_KYUREM_WHITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_KYUREM_BLACK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Keldeo + // Keldeo [SPECIES_KELDEO_RESOLUTE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Meloetta + // Meloetta [SPECIES_MELOETTA_PIROUETTE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 2 }, - // Genesect + // Genesect [SPECIES_GENESECT_DOUSE_DRIVE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_GENESECT_SHOCK_DRIVE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_GENESECT_BURN_DRIVE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_GENESECT_CHILL_DRIVE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, #endif #if P_GEN_6_POKEMON == TRUE - // Greninja + // Greninja [SPECIES_GRENINJA_BATTLE_BOND] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_GRENINJA_ASH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Vivillon + // Vivillon [SPECIES_VIVILLON_POLAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_VIVILLON_TUNDRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_VIVILLON_CONTINENTAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1197,23 +1197,23 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_VIVILLON_JUNGLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_VIVILLON_FANCY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_VIVILLON_POKE_BALL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Flabébé + // Flabébé [SPECIES_FLABEBE_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, [SPECIES_FLABEBE_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, [SPECIES_FLABEBE_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, [SPECIES_FLABEBE_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - // Floette + // Floette [SPECIES_FLOETTE_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_FLOETTE_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_FLOETTE_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_FLOETTE_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_FLOETTE_ETERNAL_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Florges + // Florges [SPECIES_FLORGES_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_FLORGES_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_FLORGES_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_FLORGES_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Furfrou + // Furfrou [SPECIES_FURFROU_HEART_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_FURFROU_STAR_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_FURFROU_DIAMOND_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, @@ -1223,41 +1223,41 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_FURFROU_LA_REINE_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, [SPECIES_FURFROU_KABUKI_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_FURFROU_PHARAOH_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - // Meowstic + // Meowstic [SPECIES_MEOWSTIC_FEMALE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - // Aegislash + // Aegislash [SPECIES_AEGISLASH_BLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Pumpkaboo + // Pumpkaboo [SPECIES_PUMPKABOO_SMALL] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_PUMPKABOO_LARGE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, [SPECIES_PUMPKABOO_SUPER] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - // Gourgeist + // Gourgeist [SPECIES_GOURGEIST_SMALL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 5 }, [SPECIES_GOURGEIST_LARGE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_GOURGEIST_SUPER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Xerneas + // Xerneas [SPECIES_XERNEAS_ACTIVE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Zygarde + // Zygarde [SPECIES_ZYGARDE_10] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ZYGARDE_COMPLETE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Hoopa + // Hoopa [SPECIES_HOOPA_UNBOUND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif #if P_GEN_7_POKEMON == TRUE - // Oricorio + // Oricorio [SPECIES_ORICORIO_POM_POM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, [SPECIES_ORICORIO_PAU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, [SPECIES_ORICORIO_SENSU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - // Rockruff + // Rockruff [SPECIES_ROCKRUFF_OWN_TEMPO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - // Lycanroc + // Lycanroc [SPECIES_LYCANROC_MIDNIGHT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, [SPECIES_LYCANROC_DUSK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Wishiwashi + // Wishiwashi [SPECIES_WISHIWASHI_SCHOOL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - // Silvally + // Silvally [SPECIES_SILVALLY_FIGHTING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SILVALLY_FLYING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SILVALLY_POISON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1275,7 +1275,7 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_SILVALLY_DRAGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SILVALLY_DARK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SILVALLY_FAIRY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Minior + // Minior [SPECIES_MINIOR_METEOR_ORANGE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_MINIOR_METEOR_YELLOW] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_MINIOR_METEOR_GREEN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, @@ -1289,26 +1289,26 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_MINIOR_CORE_BLUE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_MINIOR_CORE_INDIGO] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_MINIOR_CORE_VIOLET] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - // Mimikyu + // Mimikyu [SPECIES_MIMIKYU_BUSTED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - // Necrozma + // Necrozma [SPECIES_NECROZMA_DUSK_MANE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_NECROZMA_DAWN_WINGS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_NECROZMA_ULTRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Magearna + // Magearna [SPECIES_MAGEARNA_ORIGINAL_COLOR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, #endif #if P_GEN_8_POKEMON == TRUE - // Cramorant + // Cramorant [SPECIES_CRAMORANT_GULPING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CRAMORANT_GORGING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Toxtricity + // Toxtricity [SPECIES_TOXTRICITY_LOW_KEY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - // Sinistea + // Sinistea [SPECIES_SINISTEA_ANTIQUE] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, - // Polteageist + // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - // Alcremie + // Alcremie [SPECIES_ALCREMIE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, [SPECIES_ALCREMIE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, [SPECIES_ALCREMIE_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, @@ -1317,28 +1317,30 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_ALCREMIE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - // Eiscue + // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - // Indeedee + // Indeedee [SPECIES_INDEEDEE_FEMALE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - // Morpeko + // Morpeko [SPECIES_MORPEKO_HANGRY] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - // Zacian + // Zacian [SPECIES_ZACIAN_CROWNED_SWORD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Zamazenta + // Zamazenta [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - // Eternatus + // Eternatus [SPECIES_ETERNATUS_ETERNAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Urshifu + // Urshifu [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - // Zarude + // Zarude [SPECIES_ZARUDE_DADA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Calyrex + // Calyrex [SPECIES_CALYREX_ICE_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CALYREX_SHADOW_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + // Basculegion + [SPECIES_BASCULEGION_FEMALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif - // Egg + // Egg [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, }; diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 24ebc78f3811..fa56b8492eca 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -789,9 +789,9 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(BRUXISH, gMonFrontPic_Bruxish), SPECIES_SPRITE(DRAMPA, gMonFrontPic_Drampa), SPECIES_SPRITE(DHELMISE, gMonFrontPic_Dhelmise), - SPECIES_SPRITE(JANGMO_O, gMonFrontPic_Jangmoo), - SPECIES_SPRITE(HAKAMO_O, gMonFrontPic_Hakamoo), - SPECIES_SPRITE(KOMMO_O, gMonFrontPic_Kommoo), + SPECIES_SPRITE(JANGMO_O, gMonFrontPic_JangmoO), + SPECIES_SPRITE(HAKAMO_O, gMonFrontPic_HakamoO), + SPECIES_SPRITE(KOMMO_O, gMonFrontPic_KommoO), SPECIES_SPRITE(TAPU_KOKO, gMonFrontPic_TapuKoko), SPECIES_SPRITE(TAPU_LELE, gMonFrontPic_TapuLele), SPECIES_SPRITE(TAPU_BULU, gMonFrontPic_TapuBulu), @@ -908,13 +908,13 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(GLASTRIER, gMonFrontPic_Glastrier), SPECIES_SPRITE(SPECTRIER, gMonFrontPic_Spectrier), SPECIES_SPRITE(CALYREX, gMonFrontPic_Calyrex), - SPECIES_SPRITE(WYRDEER, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Wyrdeer), + SPECIES_SPRITE(WYRDEER, gMonFrontPic_Wyrdeer), SPECIES_SPRITE(KLEAVOR, gMonFrontPic_Kleavor), SPECIES_SPRITE(URSALUNA, gMonFrontPic_Ursaluna), - SPECIES_SPRITE(BASCULEGION, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Basculegion), - SPECIES_SPRITE(SNEASLER, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Sneasler), + SPECIES_SPRITE(BASCULEGION, gMonFrontPic_Basculegion), + SPECIES_SPRITE(SNEASLER, gMonFrontPic_Sneasler), SPECIES_SPRITE(OVERQWIL, gMonFrontPic_Overqwil), - SPECIES_SPRITE(ENAMORUS, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Enamorus), + SPECIES_SPRITE(ENAMORUS, gMonFrontPic_Enamorus), #endif SPECIES_SPRITE(VENUSAUR_MEGA, gMonFrontPic_VenusaurMega), SPECIES_SPRITE(CHARIZARD_MEGA_X, gMonFrontPic_CharizardMegaX), @@ -1023,7 +1023,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(QWILFISH_HISUIAN, gMonFrontPic_QwilfishHisuian), SPECIES_SPRITE(SNEASEL_HISUIAN, gMonFrontPic_SneaselHisuian), #if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(SAMUROTT_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_SamurottHisuian), + SPECIES_SPRITE(SAMUROTT_HISUIAN, gMonFrontPic_SamurottHisuian), SPECIES_SPRITE(LILLIGANT_HISUIAN, gMonFrontPic_LilligantHisuian), SPECIES_SPRITE(ZORUA_HISUIAN, gMonFrontPic_ZoruaHisuian), SPECIES_SPRITE(ZOROARK_HISUIAN, gMonFrontPic_ZoroarkHisuian), @@ -1035,7 +1035,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(AVALUGG_HISUIAN, gMonFrontPic_AvaluggHisuian), #endif #if P_GEN_7_POKEMON == TRUE - SPECIES_SPRITE(DECIDUEYE_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_DecidueyeHisuian), + SPECIES_SPRITE(DECIDUEYE_HISUIAN, gMonFrontPic_DecidueyeHisuian), #endif SPECIES_SPRITE(PIKACHU_COSPLAY, gMonFrontPic_PikachuCosplay), @@ -1330,7 +1330,9 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(CALYREX_ICE_RIDER, gMonFrontPic_CalyrexIceRider), SPECIES_SPRITE(CALYREX_SHADOW_RIDER, gMonFrontPic_CalyrexShadowRider), - SPECIES_SPRITE(ENAMORUS_THERIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_EnamorusTherian), + SPECIES_SPRITE(ENAMORUS_THERIAN, gMonFrontPic_EnamorusTherian), + + SPECIES_SPRITE(BASCULEGION_FEMALE, gMonFrontPic_BasculegionFemale), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), }; @@ -1358,7 +1360,4 @@ const struct CompressedSpriteSheet gMonFrontPicTableFemale[] = #if P_GEN_6_POKEMON == TRUE SPECIES_SPRITE(PYROAR, gMonFrontPic_PyroarF), #endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_SPRITE(BASCULEGION, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_BasculegionF), -#endif }; diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index a8c986d7957b..0e6c9964225e 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -789,9 +789,9 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(BRUXISH, gMonPalette_Bruxish), SPECIES_PAL(DRAMPA, gMonPalette_Drampa), SPECIES_PAL(DHELMISE, gMonPalette_Dhelmise), - SPECIES_PAL(JANGMO_O, gMonPalette_Jangmoo), - SPECIES_PAL(HAKAMO_O, gMonPalette_Hakamoo), - SPECIES_PAL(KOMMO_O, gMonPalette_Kommoo), + SPECIES_PAL(JANGMO_O, gMonPalette_JangmoO), + SPECIES_PAL(HAKAMO_O, gMonPalette_HakamoO), + SPECIES_PAL(KOMMO_O, gMonPalette_KommoO), SPECIES_PAL(TAPU_KOKO, gMonPalette_TapuKoko), SPECIES_PAL(TAPU_LELE, gMonPalette_TapuLele), SPECIES_PAL(TAPU_BULU, gMonPalette_TapuBulu), @@ -908,13 +908,13 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(GLASTRIER, gMonPalette_Glastrier), SPECIES_PAL(SPECTRIER, gMonPalette_Spectrier), SPECIES_PAL(CALYREX, gMonPalette_Calyrex), - SPECIES_PAL(WYRDEER, gMonPalette_CircledQuestionMark), // gMonPalette_Wyrdeer), + SPECIES_PAL(WYRDEER, gMonPalette_Wyrdeer), SPECIES_PAL(KLEAVOR, gMonPalette_Kleavor), SPECIES_PAL(URSALUNA, gMonPalette_Ursaluna), - SPECIES_PAL(BASCULEGION, gMonPalette_CircledQuestionMark), // gMonPalette_Basculegion), - SPECIES_PAL(SNEASLER, gMonPalette_CircledQuestionMark), // gMonPalette_Sneasler), + SPECIES_PAL(BASCULEGION, gMonPalette_Basculegion), + SPECIES_PAL(SNEASLER, gMonPalette_Sneasler), SPECIES_PAL(OVERQWIL, gMonPalette_Overqwil), - SPECIES_PAL(ENAMORUS, gMonPalette_CircledQuestionMark), // gMonPalette_Enamorus), + SPECIES_PAL(ENAMORUS, gMonPalette_Enamorus), #endif SPECIES_PAL(VENUSAUR_MEGA, gMonPalette_VenusaurMega), SPECIES_PAL(CHARIZARD_MEGA_X, gMonPalette_CharizardMegaX), @@ -1023,7 +1023,7 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(QWILFISH_HISUIAN, gMonPalette_QwilfishHisuian), #if P_GEN_5_POKEMON == TRUE SPECIES_PAL(SNEASEL_HISUIAN, gMonPalette_SneaselHisuian), - SPECIES_PAL(SAMUROTT_HISUIAN, gMonPalette_CircledQuestionMark), //gMonPalette_SamurottHisuian), + SPECIES_PAL(SAMUROTT_HISUIAN, gMonPalette_SamurottHisuian), SPECIES_PAL(LILLIGANT_HISUIAN, gMonPalette_LilligantHisuian), SPECIES_PAL(ZORUA_HISUIAN, gMonPalette_ZoruaHisuian), SPECIES_PAL(ZOROARK_HISUIAN, gMonPalette_ZoroarkHisuian), @@ -1035,7 +1035,7 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(AVALUGG_HISUIAN, gMonPalette_AvaluggHisuian), #endif #if P_GEN_7_POKEMON == TRUE - SPECIES_PAL(DECIDUEYE_HISUIAN, gMonPalette_CircledQuestionMark), //gMonPalette_DecidueyeHisuian), + SPECIES_PAL(DECIDUEYE_HISUIAN, gMonPalette_DecidueyeHisuian), #endif SPECIES_PAL(PIKACHU_COSPLAY, gMonPalette_PikachuCosplay), @@ -1330,7 +1330,8 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(CALYREX_ICE_RIDER, gMonPalette_CalyrexIceRider), SPECIES_PAL(CALYREX_SHADOW_RIDER, gMonPalette_CalyrexShadowRider), - SPECIES_PAL(ENAMORUS_THERIAN, gMonPalette_CircledQuestionMark), // gMonPalette_EnamorusTherian), + SPECIES_PAL(ENAMORUS_THERIAN, gMonPalette_EnamorusTherian), + SPECIES_PAL(BASCULEGION_FEMALE, gMonPalette_BasculegionFemale), #endif SPECIES_PAL(EGG, gMonPalette_Egg), }; @@ -1358,7 +1359,4 @@ const struct CompressedSpritePalette gMonPaletteTableFemale[] = #if P_GEN_6_POKEMON == TRUE SPECIES_PAL(PYROAR, gMonPalette_Pyroar), #endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_PAL(BASCULEGION, gMonPalette_CircledQuestionMark), // gMonPalette_BasculegionF), -#endif }; diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 012a95cf1fb4..0123b0e1fceb 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -789,9 +789,9 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(BRUXISH, gMonShinyPalette_Bruxish), SPECIES_SHINY_PAL(DRAMPA, gMonShinyPalette_Drampa), SPECIES_SHINY_PAL(DHELMISE, gMonShinyPalette_Dhelmise), - SPECIES_SHINY_PAL(JANGMO_O, gMonShinyPalette_Jangmoo), - SPECIES_SHINY_PAL(HAKAMO_O, gMonShinyPalette_Hakamoo), - SPECIES_SHINY_PAL(KOMMO_O, gMonShinyPalette_Kommoo), + SPECIES_SHINY_PAL(JANGMO_O, gMonShinyPalette_JangmoO), + SPECIES_SHINY_PAL(HAKAMO_O, gMonShinyPalette_HakamoO), + SPECIES_SHINY_PAL(KOMMO_O, gMonShinyPalette_KommoO), SPECIES_SHINY_PAL(TAPU_KOKO, gMonShinyPalette_TapuKoko), SPECIES_SHINY_PAL(TAPU_LELE, gMonShinyPalette_TapuLele), SPECIES_SHINY_PAL(TAPU_BULU, gMonShinyPalette_TapuBulu), @@ -908,13 +908,13 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(GLASTRIER, gMonShinyPalette_Glastrier), SPECIES_SHINY_PAL(SPECTRIER, gMonShinyPalette_Spectrier), SPECIES_SHINY_PAL(CALYREX, gMonShinyPalette_Calyrex), - SPECIES_SHINY_PAL(WYRDEER, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Wyrdeer), + SPECIES_SHINY_PAL(WYRDEER, gMonShinyPalette_Wyrdeer), SPECIES_SHINY_PAL(KLEAVOR, gMonShinyPalette_Kleavor), SPECIES_SHINY_PAL(URSALUNA, gMonShinyPalette_Ursaluna), - SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Basculegion), - SPECIES_SHINY_PAL(SNEASLER, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Sneasler), + SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_Basculegion), + SPECIES_SHINY_PAL(SNEASLER, gMonShinyPalette_Sneasler), SPECIES_SHINY_PAL(OVERQWIL, gMonShinyPalette_Overqwil), - SPECIES_SHINY_PAL(ENAMORUS, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Enamorus), + SPECIES_SHINY_PAL(ENAMORUS, gMonShinyPalette_Enamorus), #endif SPECIES_SHINY_PAL(VENUSAUR_MEGA, gMonShinyPalette_VenusaurMega), @@ -1024,7 +1024,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(QWILFISH_HISUIAN, gMonShinyPalette_QwilfishHisuian), SPECIES_SHINY_PAL(SNEASEL_HISUIAN, gMonShinyPalette_SneaselHisuian), #if P_GEN_5_POKEMON == TRUE - SPECIES_SHINY_PAL(SAMUROTT_HISUIAN, gMonShinyPalette_CircledQuestionMark), //gMonShinyPalette_SamurottHisuian), + SPECIES_SHINY_PAL(SAMUROTT_HISUIAN, gMonShinyPalette_SamurottHisuian), SPECIES_SHINY_PAL(LILLIGANT_HISUIAN, gMonShinyPalette_LilligantHisuian), SPECIES_SHINY_PAL(ZORUA_HISUIAN, gMonShinyPalette_ZoruaHisuian), SPECIES_SHINY_PAL(ZOROARK_HISUIAN, gMonShinyPalette_ZoroarkHisuian), @@ -1036,7 +1036,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(AVALUGG_HISUIAN, gMonShinyPalette_AvaluggHisuian), #endif #if P_GEN_7_POKEMON == TRUE - SPECIES_SHINY_PAL(DECIDUEYE_HISUIAN, gMonShinyPalette_CircledQuestionMark), //gMonShinyPalette_DecidueyeHisuian), + SPECIES_SHINY_PAL(DECIDUEYE_HISUIAN, gMonShinyPalette_DecidueyeHisuian), #endif SPECIES_SHINY_PAL(PIKACHU_COSPLAY, gMonShinyPalette_PikachuCosplay), @@ -1328,8 +1328,9 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(CALYREX_ICE_RIDER, gMonShinyPalette_CalyrexIceRider), SPECIES_SHINY_PAL(CALYREX_SHADOW_RIDER, gMonShinyPalette_CalyrexShadowRider), - - SPECIES_SHINY_PAL(ENAMORUS_THERIAN, gMonShinyPalette_CircledQuestionMark), //gMonShinyPalette_EnamorusTherian), + + SPECIES_SHINY_PAL(BASCULEGION_FEMALE, gMonShinyPalette_BasculegionFemale), + SPECIES_SHINY_PAL(ENAMORUS_THERIAN, gMonShinyPalette_EnamorusTherian), #endif SPECIES_SHINY_PAL(EGG, gMonPalette_Egg), }; @@ -1357,7 +1358,4 @@ const struct CompressedSpritePalette gMonShinyPaletteTableFemale[] = #if P_GEN_6_POKEMON == TRUE SPECIES_SHINY_PAL(PYROAR, gMonShinyPalette_Pyroar), #endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_BasculegionF), -#endif }; diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h index 96407c34099b..a3bad09b1b7d 100644 --- a/src/data/text/abilities.h +++ b/src/data/text/abilities.h @@ -79,7 +79,7 @@ static const u8 sTangledFeetDescription[] = _("Ups evasion if confused."); static const u8 sMotorDriveDescription[] = _("Electricity raises Speed."); static const u8 sRivalryDescription[] = _("Powers up against rivals."); static const u8 sSteadfastDescription[] = _("Flinching raises Speed."); -static const u8 sSnowCloakDescription[] = _("Ups evasion in Hail."); +static const u8 sSnowCloakDescription[] = _("Ups evasion in Hail or Snow."); static const u8 sGluttonyDescription[] = _("Eats Berries early."); static const u8 sAngerPointDescription[] = _("Critical hits raise Attack."); static const u8 sUnburdenDescription[] = _("Using a hold item ups Speed."); @@ -113,8 +113,12 @@ static const u8 sFilterDescription[] = _("Weakens “supereffective”."); static const u8 sSlowStartDescription[] = _("Takes a while to get going."); static const u8 sScrappyDescription[] = _("Hits Ghost-type Pokémon."); static const u8 sStormDrainDescription[] = _("Draws in Water moves."); -static const u8 sIceBodyDescription[] = _("Slight HP recovery in Hail."); -static const u8 sSnowWarningDescription[] = _("Summons a hailstorm."); +static const u8 sIceBodyDescription[] = _("HP recovery in Hail or Snow."); +#if B_SNOW_WARNING < GEN_9 +static const u8 sSnowWarningDescription[] = _("Summons a Hailstorm."); +#elif B_SNOW_WARNING >= GEN_9 +static const u8 sSnowWarningDescription[] = _("Summons a Snowstorm."); +#endif static const u8 sHoneyGatherDescription[] = _("May gather Honey."); static const u8 sFriskDescription[] = _("Checks a foe's item."); static const u8 sRecklessDescription[] = _("Boosts moves with recoil."); @@ -192,7 +196,7 @@ static const u8 sStakeoutDescription[] = _("Stronger as foes switch in."); static const u8 sWaterBubbleDescription[] = _("Guards from fire and burns."); static const u8 sSteelworkerDescription[] = _("Powers up Steel moves."); static const u8 sBerserkDescription[] = _("Boosts Sp. Atk at low HP."); -static const u8 sSlushRushDescription[] = _("Raises Speed in hail."); +static const u8 sSlushRushDescription[] = _("Raises Speed in Hail or Snow."); static const u8 sLongReachDescription[] = _("Never makes contact."); static const u8 sLiquidVoiceDescription[] = _("Makes sound moves Water."); static const u8 sTriageDescription[] = _("Healing moves go first."); @@ -234,7 +238,7 @@ static const u8 sPunkRockDescription[] = _("Ups and resists sound."); static const u8 sSandSpitDescription[] = _("Creates a sandstorm if hit."); static const u8 sIceScalesDescription[] = _("Halves special damage."); static const u8 sRipenDescription[] = _("Doubles effect of Berries."); -static const u8 sIceFaceDescription[] = _("Take a free hit. Hail renews."); +static const u8 sIceFaceDescription[] = _("Hail or Snow renew free hit."); static const u8 sPowerSpotDescription[] = _("Powers up ally moves."); static const u8 sMimicryDescription[] = _("Changes type on terrain."); static const u8 sScreenCleanerDescription[] = _("Removes walls of light."); diff --git a/src/data/text/item_descriptions.h b/src/data/text/item_descriptions.h index e815d8ae1fc4..ecca3ef301fa 100644 --- a/src/data/text/item_descriptions.h +++ b/src/data/text/item_descriptions.h @@ -1300,6 +1300,21 @@ static const u8 sEverstoneDesc[] = _( "item that prevents\n" "evolution."); +static const u8 sBlackAuguriteDesc[] = _( + "A black stone that\n" + "makes some Pokémon\n" + "evolve.");; + +static const u8 sLinkingCordDesc[] = _( + "A mysterious string\n" + "that makes some\n" + "Pokémon evolve."); + +static const u8 sPeatBlockDesc[] = _( + "A block of material\n" + "that makes some\n" + "Pokémon evolve."); + // Nectars static const u8 sRedNectarDesc[] = _( "Flower nectar that\n" @@ -2634,8 +2649,8 @@ static const u8 sProtectivePadsDesc[] = _( static const u8 sThroatSprayDesc[] = _( "Raises Sp. Atk. if\n" - "a Pokémon is hit by\n" - "a sound-based move."); + "the holder uses a\n" + "sound-based move."); static const u8 sEjectPackDesc[] = _( "Forces the user to\n" @@ -3817,3 +3832,83 @@ static const u8 sLoadedDiceDesc[] = _( "Rolls high numbers.\n" "Multihit strikes\n" "hit more times."); + +static const u8 sAuspiciousArmorDesc[] = _( + "Armor inhabited by\n" + "auspicious wishes.\n" + "Causes evolution."); + +static const u8 sBoosterEnergyDesc[] = _( + "Encapsuled energy\n" + "ups Pokémon with\n" + "certain Abilities."); + +static const u8 sBigBambooShootDesc[] = _( + "A large and rare\n" + "bamboo shoot. Best\n" + "sold to gourmands."); + +static const u8 sGimmighoulCoinDesc[] = _( + "Gimmighoul hoard\n" + "and treasure these\n" + "curious coins."); + +static const u8 sLeadersCrestDesc[] = _( + "A shard of an old\n" + "blade of some sort.\n" + "Held by Bisharp."); + +static const u8 sMaliciousArmorDesc[] = _( + "Armor inhabited by\n" + "malicious will.\n" + "Causes evolution."); + +static const u8 sMirrorHerbDesc[] = _( + "Mirrors an enemy's\n" + "stat increases\n" + "but only once."); + +static const u8 sScrollOfDarknessDesc[] = _( + "A peculiar scroll\n" + "with secrets of\n" + "the dark path."); + +static const u8 sScrollOfWatersDesc[] = _( + "A peculiar scroll\n" + "with secrets of\n" + "the water path."); + +static const u8 sTeraOrbDesc[] = _( + "Energy charges can\n" + "be used to cause\n" + "Terastallization."); + +static const u8 sTinyBambooShootDesc[] = _( + "A small and rare\n" + "bamboo shoot. Best\n" + "sold to gourmands."); + +static const u8 sTeraShardDesc[] = _( + "These shards may\n" + "form when a Tera\n" + "Pokémon faints."); + +static const u8 sAdamantCrystalDesc[] = _( + "A large, glowing gem\n" + "that lets Dialga\n" + "change form."); + +static const u8 sGriseousCoreDesc[] = _( + "A large, glowing gem\n" + "that lets Giratina\n" + "change form."); + +static const u8 sLustrousGlobeDesc[] = _( + "A large, glowing gem\n" + "that lets Palkia\n" + "change form."); + +static const u8 sBerserkGene[] = _( + "Sharply boosts\n" + "Attack, but causes\n" + "lasting confusion."); diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 7000759f75ab..f950c2a1aac5 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -38,7 +38,11 @@ static const u8 sFirePunchDescription[] = _( static const u8 sIcePunchDescription[] = _( "An icy punch that may\n" +#if B_USE_FROSTBITE == TRUE + "leave the foe with frostbite."); +#else "freeze the foe."); +#endif static const u8 sThunderPunchDescription[] = _( "An electrified punch that\n" @@ -238,11 +242,19 @@ static const u8 sSurfDescription[] = _( static const u8 sIceBeamDescription[] = _( "Blasts the foe with an icy\n" +#if B_USE_FROSTBITE == TRUE + "beam. May cause frostbite."); +#else "beam that may freeze it."); +#endif static const u8 sBlizzardDescription[] = _( "Hits the foe with an icy\n" +#if B_USE_FROSTBITE == TRUE + "storm. May cause frostbite."); +#else "storm that may freeze it."); +#endif static const u8 sPsybeamDescription[] = _( "Fires a peculiar ray that\n" @@ -2931,7 +2943,11 @@ static const u8 sDragonEnergyDescription[] = _( static const u8 sFreezingGlareDescription[] = _( "Shoots psychic power from\n" +#if B_USE_FROSTBITE == TRUE + "the eyes. May frostbite."); +#else "the eyes. May freeze the foe."); +#endif static const u8 sFieryWrathDescription[] = _( "An attack fueled by your\n" @@ -3236,6 +3252,14 @@ static const u8 sCombatTorqueDescription[] = _( static const u8 sMagicalTorqueDescription[] = _( "---"); +static const u8 sPsybladeDescription[] = _( + "This move's power increases\n" + "when on Electric Terrain."); + +static const u8 sHydroSteamDescription[] = _( + "This move's power increases\n" + "under harsh sunlight."); + const u8 gNotDoneYetDescription[] = _( "This move can't be used. Its\n" "effect is in development."); @@ -4073,4 +4097,6 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_NOXIOUS_TORQUE - 1] = sNoxiousTorqueDescription, [MOVE_COMBAT_TORQUE - 1] = sCombatTorqueDescription, [MOVE_MAGICAL_TORQUE - 1] = sMagicalTorqueDescription, + [MOVE_PSYBLADE - 1] = sPsybladeDescription, + [MOVE_HYDRO_STEAM - 1] = sHydroSteamDescription, }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 221d3db73d25..85d406dcab26 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -829,6 +829,8 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_NOXIOUS_TORQUE] = _("Noxious Torque"), [MOVE_COMBAT_TORQUE] = _("Combat Torque"), [MOVE_MAGICAL_TORQUE] = _("Magical Torque"), + [MOVE_PSYBLADE] = _("Psyblade"), + [MOVE_HYDRO_STEAM] = _("Hydro Steam"), }; #else // 12 letters @@ -1661,6 +1663,8 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_NOXIOUS_TORQUE] = _("NoxiusTorque"), [MOVE_COMBAT_TORQUE] = _("CombatTorque"), [MOVE_MAGICAL_TORQUE] = _("MagiclTorque"), + [MOVE_PSYBLADE] = _("Psyblade"), + [MOVE_HYDRO_STEAM] = _("Hydro Steam"), }; #endif diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index ec452b31bac7..9e60b94cf5b7 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -1336,5 +1336,6 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { // Calyrex [SPECIES_CALYREX_ICE_RIDER] = _("Calyrex"), [SPECIES_CALYREX_SHADOW_RIDER] = _("Calyrex"), + [SPECIES_BASCULEGION_FEMALE] = _("Bsculegion"), #endif }; diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h index 1dbffba428c4..524d48d480ef 100644 --- a/src/data/trainer_graphics/back_pic_tables.h +++ b/src/data/trainer_graphics/back_pic_tables.h @@ -13,18 +13,48 @@ const struct MonCoords gTrainerBackPicCoords[] = // this table goes functionally unused, since none of these pics are compressed // and the place they would get extracted to gets overwritten later anyway // the casts are so they'll play nice with the strict struct definition -#define TRAINER_BACK_SPRITE(trainerPic, sprite, size) [TRAINER_BACK_PIC_##trainerPic] = {(const u32 *)sprite, size, TRAINER_BACK_PIC_##trainerPic} - const struct CompressedSpriteSheet gTrainerBackPicTable[] = { - TRAINER_BACK_SPRITE(BRENDAN, gTrainerBackPic_Brendan, 0x2000), - TRAINER_BACK_SPRITE(MAY, gTrainerBackPic_May, 0x2000), - TRAINER_BACK_SPRITE(RED, gTrainerBackPic_Red, 0x2800), - TRAINER_BACK_SPRITE(LEAF, gTrainerBackPic_Leaf, 0x2800), - TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_BRENDAN, gTrainerBackPic_RubySapphireBrendan, 0x2000), - TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_MAY, gTrainerBackPic_RubySapphireMay, 0x2000), - TRAINER_BACK_SPRITE(WALLY, gTrainerBackPic_Wally, 0x2000), - TRAINER_BACK_SPRITE(STEVEN, gTrainerBackPic_Steven, 0x2000), + [TRAINER_BACK_PIC_BRENDAN] = { + .data = (const u32 *)gTrainerBackPic_Brendan, + .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Brendan), + .tag = TRAINER_BACK_PIC_BRENDAN, + }, + [TRAINER_BACK_PIC_MAY] = { + .data = (const u32 *)gTrainerBackPic_May, + .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_May), + .tag = TRAINER_BACK_PIC_MAY, + }, + [TRAINER_BACK_PIC_RED] = { + .data = (const u32 *)gTrainerBackPic_Red, + .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Red), + .tag = TRAINER_BACK_PIC_RED, + }, + [TRAINER_BACK_PIC_LEAF] = { + .data = (const u32 *)gTrainerBackPic_Leaf, + .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Leaf), + .tag = TRAINER_BACK_PIC_LEAF, + }, + [TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = { + .data = (const u32 *)gTrainerBackPic_RubySapphireBrendan, + .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_RubySapphireBrendan), + .tag = TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN, + }, + [TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = { + .data = (const u32 *)gTrainerBackPic_RubySapphireMay, + .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_RubySapphireMay), + .tag = TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY, + }, + [TRAINER_BACK_PIC_WALLY] = { + .data = (const u32 *)gTrainerBackPic_Wally, + .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Wally), + .tag = TRAINER_BACK_PIC_WALLY, + }, + [TRAINER_BACK_PIC_STEVEN] = { + .data = (const u32 *)gTrainerBackPic_Steven, + .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Steven), + .tag = TRAINER_BACK_PIC_STEVEN, + }, }; #define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic} diff --git a/src/data/trainer_graphics/front_pic_tables.h b/src/data/trainer_graphics/front_pic_tables.h index e751f3c1d2ff..dd4aa26de0c0 100644 --- a/src/data/trainer_graphics/front_pic_tables.h +++ b/src/data/trainer_graphics/front_pic_tables.h @@ -99,99 +99,99 @@ const struct MonCoords gTrainerFrontPicCoords[] = const struct CompressedSpriteSheet gTrainerFrontPicTable[] = { - TRAINER_SPRITE(HIKER, gTrainerFrontPic_Hiker, 0x800), - TRAINER_SPRITE(AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, 0x800), - TRAINER_SPRITE(POKEMON_BREEDER_F, gTrainerFrontPic_PokemonBreederF, 0x800), - TRAINER_SPRITE(COOLTRAINER_M, gTrainerFrontPic_CoolTrainerM, 0x800), - TRAINER_SPRITE(BIRD_KEEPER, gTrainerFrontPic_BirdKeeper, 0x800), - TRAINER_SPRITE(COLLECTOR, gTrainerFrontPic_Collector, 0x800), - TRAINER_SPRITE(AQUA_GRUNT_F, gTrainerFrontPic_AquaGruntF, 0x800), - TRAINER_SPRITE(SWIMMER_M, gTrainerFrontPic_SwimmerM, 0x800), - TRAINER_SPRITE(MAGMA_GRUNT_M, gTrainerFrontPic_MagmaGruntM, 0x800), - TRAINER_SPRITE(EXPERT_M, gTrainerFrontPic_ExpertM, 0x800), - TRAINER_SPRITE(AQUA_ADMIN_M, gTrainerFrontPic_AquaAdminM, 0x800), - TRAINER_SPRITE(BLACK_BELT, gTrainerFrontPic_BlackBelt, 0x800), - TRAINER_SPRITE(AQUA_ADMIN_F, gTrainerFrontPic_AquaAdminF, 0x800), - TRAINER_SPRITE(AQUA_LEADER_ARCHIE, gTrainerFrontPic_AquaLeaderArchie, 0x800), - TRAINER_SPRITE(HEX_MANIAC, gTrainerFrontPic_HexManiac, 0x800), - TRAINER_SPRITE(AROMA_LADY, gTrainerFrontPic_AromaLady, 0x800), - TRAINER_SPRITE(RUIN_MANIAC, gTrainerFrontPic_RuinManiac, 0x800), - TRAINER_SPRITE(INTERVIEWER, gTrainerFrontPic_Interviewer, 0x800), - TRAINER_SPRITE(TUBER_F, gTrainerFrontPic_TuberF, 0x800), - TRAINER_SPRITE(TUBER_M, gTrainerFrontPic_TuberM, 0x800), - TRAINER_SPRITE(COOLTRAINER_F, gTrainerFrontPic_CoolTrainerF, 0x800), - TRAINER_SPRITE(LADY, gTrainerFrontPic_Lady, 0x800), - TRAINER_SPRITE(BEAUTY, gTrainerFrontPic_Beauty, 0x800), - TRAINER_SPRITE(RICH_BOY, gTrainerFrontPic_RichBoy, 0x800), - TRAINER_SPRITE(EXPERT_F, gTrainerFrontPic_ExpertF, 0x800), - TRAINER_SPRITE(POKEMANIAC, gTrainerFrontPic_Pokemaniac, 0x800), - TRAINER_SPRITE(MAGMA_GRUNT_F, gTrainerFrontPic_MagmaGruntF, 0x800), - TRAINER_SPRITE(GUITARIST, gTrainerFrontPic_Guitarist, 0x800), - TRAINER_SPRITE(KINDLER, gTrainerFrontPic_Kindler, 0x800), - TRAINER_SPRITE(CAMPER, gTrainerFrontPic_Camper, 0x800), - TRAINER_SPRITE(PICNICKER, gTrainerFrontPic_Picnicker, 0x800), - TRAINER_SPRITE(BUG_MANIAC, gTrainerFrontPic_BugManiac, 0x800), - TRAINER_SPRITE(POKEMON_BREEDER_M, gTrainerFrontPic_PokemonBreederM, 0x800), - TRAINER_SPRITE(PSYCHIC_M, gTrainerFrontPic_PsychicM, 0x800), - TRAINER_SPRITE(PSYCHIC_F, gTrainerFrontPic_PsychicF, 0x800), - TRAINER_SPRITE(GENTLEMAN, gTrainerFrontPic_Gentleman, 0x800), - TRAINER_SPRITE(ELITE_FOUR_SIDNEY, gTrainerFrontPic_EliteFourSidney, 0x800), - TRAINER_SPRITE(ELITE_FOUR_PHOEBE, gTrainerFrontPic_EliteFourPhoebe, 0x800), - TRAINER_SPRITE(ELITE_FOUR_GLACIA, gTrainerFrontPic_EliteFourGlacia, 0x800), - TRAINER_SPRITE(ELITE_FOUR_DRAKE, gTrainerFrontPic_EliteFourDrake, 0x800), - TRAINER_SPRITE(LEADER_ROXANNE, gTrainerFrontPic_LeaderRoxanne, 0x800), - TRAINER_SPRITE(LEADER_BRAWLY, gTrainerFrontPic_LeaderBrawly, 0x800), - TRAINER_SPRITE(LEADER_WATTSON, gTrainerFrontPic_LeaderWattson, 0x800), - TRAINER_SPRITE(LEADER_FLANNERY, gTrainerFrontPic_LeaderFlannery, 0x800), - TRAINER_SPRITE(LEADER_NORMAN, gTrainerFrontPic_LeaderNorman, 0x800), - TRAINER_SPRITE(LEADER_WINONA, gTrainerFrontPic_LeaderWinona, 0x800), - TRAINER_SPRITE(LEADER_TATE_AND_LIZA, gTrainerFrontPic_LeaderTateAndLiza, 0x800), - TRAINER_SPRITE(LEADER_JUAN, gTrainerFrontPic_LeaderJuan, 0x800), - TRAINER_SPRITE(SCHOOL_KID_M, gTrainerFrontPic_SchoolKidM, 0x800), - TRAINER_SPRITE(SCHOOL_KID_F, gTrainerFrontPic_SchoolKidF, 0x800), - TRAINER_SPRITE(SR_AND_JR, gTrainerFrontPic_SrAndJr, 0x1000), - TRAINER_SPRITE(POKEFAN_M, gTrainerFrontPic_PokefanM, 0x1000), - TRAINER_SPRITE(POKEFAN_F, gTrainerFrontPic_PokefanF, 0x800), - TRAINER_SPRITE(YOUNGSTER, gTrainerFrontPic_Youngster, 0x800), - TRAINER_SPRITE(CHAMPION_WALLACE, gTrainerFrontPic_ChampionWallace, 0x1000), - TRAINER_SPRITE(FISHERMAN, gTrainerFrontPic_Fisherman, 0x800), - TRAINER_SPRITE(CYCLING_TRIATHLETE_M, gTrainerFrontPic_CyclingTriathleteM, 0x1000), - TRAINER_SPRITE(CYCLING_TRIATHLETE_F, gTrainerFrontPic_CyclingTriathleteF, 0x800), - TRAINER_SPRITE(RUNNING_TRIATHLETE_M, gTrainerFrontPic_RunningTriathleteM, 0x800), - TRAINER_SPRITE(RUNNING_TRIATHLETE_F, gTrainerFrontPic_RunningTriathleteF, 0x800), - TRAINER_SPRITE(SWIMMING_TRIATHLETE_M, gTrainerFrontPic_SwimmingTriathleteM, 0x800), - TRAINER_SPRITE(SWIMMING_TRIATHLETE_F, gTrainerFrontPic_SwimmingTriathleteF, 0x800), - TRAINER_SPRITE(DRAGON_TAMER, gTrainerFrontPic_DragonTamer, 0x800), - TRAINER_SPRITE(NINJA_BOY, gTrainerFrontPic_NinjaBoy, 0x800), - TRAINER_SPRITE(BATTLE_GIRL, gTrainerFrontPic_BattleGirl, 0x1000), - TRAINER_SPRITE(PARASOL_LADY, gTrainerFrontPic_ParasolLady, 0x800), - TRAINER_SPRITE(SWIMMER_F, gTrainerFrontPic_SwimmerF, 0x800), - TRAINER_SPRITE(TWINS, gTrainerFrontPic_Twins, 0x800), - TRAINER_SPRITE(SAILOR, gTrainerFrontPic_Sailor, 0x800), - TRAINER_SPRITE(MAGMA_ADMIN, gTrainerFrontPic_MagmaAdmin, 0x800), - TRAINER_SPRITE(WALLY, gTrainerFrontPic_Wally, 0x800), - TRAINER_SPRITE(BRENDAN, gTrainerFrontPic_Brendan, 0x800), - TRAINER_SPRITE(MAY, gTrainerFrontPic_May, 0x800), - TRAINER_SPRITE(BUG_CATCHER, gTrainerFrontPic_BugCatcher, 0x800), - TRAINER_SPRITE(POKEMON_RANGER_M, gTrainerFrontPic_PokemonRangerM, 0x800), - TRAINER_SPRITE(POKEMON_RANGER_F, gTrainerFrontPic_PokemonRangerF, 0x800), - TRAINER_SPRITE(MAGMA_LEADER_MAXIE, gTrainerFrontPic_MagmaLeaderMaxie, 0x800), - TRAINER_SPRITE(LASS, gTrainerFrontPic_Lass, 0x800), - TRAINER_SPRITE(YOUNG_COUPLE, gTrainerFrontPic_YoungCouple, 0x800), - TRAINER_SPRITE(OLD_COUPLE, gTrainerFrontPic_OldCouple, 0x800), - TRAINER_SPRITE(SIS_AND_BRO, gTrainerFrontPic_SisAndBro, 0x800), - TRAINER_SPRITE(STEVEN, gTrainerFrontPic_Steven, 0x800), - TRAINER_SPRITE(SALON_MAIDEN_ANABEL, gTrainerFrontPic_SalonMaidenAnabel, 0x800), - TRAINER_SPRITE(DOME_ACE_TUCKER, gTrainerFrontPic_DomeAceTucker, 0x800), - TRAINER_SPRITE(PALACE_MAVEN_SPENSER, gTrainerFrontPic_PalaceMavenSpenser, 0x800), - TRAINER_SPRITE(ARENA_TYCOON_GRETA, gTrainerFrontPic_ArenaTycoonGreta, 0x1000), - TRAINER_SPRITE(FACTORY_HEAD_NOLAND, gTrainerFrontPic_FactoryHeadNoland, 0x800), - TRAINER_SPRITE(PIKE_QUEEN_LUCY, gTrainerFrontPic_PikeQueenLucy, 0x800), - TRAINER_SPRITE(PYRAMID_KING_BRANDON, gTrainerFrontPic_PyramidKingBrandon, 0x800), - TRAINER_SPRITE(RED, gTrainerFrontPic_Red, 0x800), - TRAINER_SPRITE(LEAF, gTrainerFrontPic_Leaf, 0x800), - TRAINER_SPRITE(RS_BRENDAN, gTrainerFrontPic_RubySapphireBrendan, 0x800), - TRAINER_SPRITE(RS_MAY, gTrainerFrontPic_RubySapphireMay, 0x800), + TRAINER_SPRITE(HIKER, gTrainerFrontPic_Hiker, TRAINER_PIC_SIZE), + TRAINER_SPRITE(AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(POKEMON_BREEDER_F, gTrainerFrontPic_PokemonBreederF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(COOLTRAINER_M, gTrainerFrontPic_CoolTrainerM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(BIRD_KEEPER, gTrainerFrontPic_BirdKeeper, TRAINER_PIC_SIZE), + TRAINER_SPRITE(COLLECTOR, gTrainerFrontPic_Collector, TRAINER_PIC_SIZE), + TRAINER_SPRITE(AQUA_GRUNT_F, gTrainerFrontPic_AquaGruntF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SWIMMER_M, gTrainerFrontPic_SwimmerM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(MAGMA_GRUNT_M, gTrainerFrontPic_MagmaGruntM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(EXPERT_M, gTrainerFrontPic_ExpertM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(AQUA_ADMIN_M, gTrainerFrontPic_AquaAdminM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(BLACK_BELT, gTrainerFrontPic_BlackBelt, TRAINER_PIC_SIZE), + TRAINER_SPRITE(AQUA_ADMIN_F, gTrainerFrontPic_AquaAdminF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(AQUA_LEADER_ARCHIE, gTrainerFrontPic_AquaLeaderArchie, TRAINER_PIC_SIZE), + TRAINER_SPRITE(HEX_MANIAC, gTrainerFrontPic_HexManiac, TRAINER_PIC_SIZE), + TRAINER_SPRITE(AROMA_LADY, gTrainerFrontPic_AromaLady, TRAINER_PIC_SIZE), + TRAINER_SPRITE(RUIN_MANIAC, gTrainerFrontPic_RuinManiac, TRAINER_PIC_SIZE), + TRAINER_SPRITE(INTERVIEWER, gTrainerFrontPic_Interviewer, TRAINER_PIC_SIZE), + TRAINER_SPRITE(TUBER_F, gTrainerFrontPic_TuberF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(TUBER_M, gTrainerFrontPic_TuberM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(COOLTRAINER_F, gTrainerFrontPic_CoolTrainerF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LADY, gTrainerFrontPic_Lady, TRAINER_PIC_SIZE), + TRAINER_SPRITE(BEAUTY, gTrainerFrontPic_Beauty, TRAINER_PIC_SIZE), + TRAINER_SPRITE(RICH_BOY, gTrainerFrontPic_RichBoy, TRAINER_PIC_SIZE), + TRAINER_SPRITE(EXPERT_F, gTrainerFrontPic_ExpertF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(POKEMANIAC, gTrainerFrontPic_Pokemaniac, TRAINER_PIC_SIZE), + TRAINER_SPRITE(MAGMA_GRUNT_F, gTrainerFrontPic_MagmaGruntF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(GUITARIST, gTrainerFrontPic_Guitarist, TRAINER_PIC_SIZE), + TRAINER_SPRITE(KINDLER, gTrainerFrontPic_Kindler, TRAINER_PIC_SIZE), + TRAINER_SPRITE(CAMPER, gTrainerFrontPic_Camper, TRAINER_PIC_SIZE), + TRAINER_SPRITE(PICNICKER, gTrainerFrontPic_Picnicker, TRAINER_PIC_SIZE), + TRAINER_SPRITE(BUG_MANIAC, gTrainerFrontPic_BugManiac, TRAINER_PIC_SIZE), + TRAINER_SPRITE(POKEMON_BREEDER_M, gTrainerFrontPic_PokemonBreederM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(PSYCHIC_M, gTrainerFrontPic_PsychicM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(PSYCHIC_F, gTrainerFrontPic_PsychicF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(GENTLEMAN, gTrainerFrontPic_Gentleman, TRAINER_PIC_SIZE), + TRAINER_SPRITE(ELITE_FOUR_SIDNEY, gTrainerFrontPic_EliteFourSidney, TRAINER_PIC_SIZE), + TRAINER_SPRITE(ELITE_FOUR_PHOEBE, gTrainerFrontPic_EliteFourPhoebe, TRAINER_PIC_SIZE), + TRAINER_SPRITE(ELITE_FOUR_GLACIA, gTrainerFrontPic_EliteFourGlacia, TRAINER_PIC_SIZE), + TRAINER_SPRITE(ELITE_FOUR_DRAKE, gTrainerFrontPic_EliteFourDrake, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEADER_ROXANNE, gTrainerFrontPic_LeaderRoxanne, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEADER_BRAWLY, gTrainerFrontPic_LeaderBrawly, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEADER_WATTSON, gTrainerFrontPic_LeaderWattson, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEADER_FLANNERY, gTrainerFrontPic_LeaderFlannery, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEADER_NORMAN, gTrainerFrontPic_LeaderNorman, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEADER_WINONA, gTrainerFrontPic_LeaderWinona, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEADER_TATE_AND_LIZA, gTrainerFrontPic_LeaderTateAndLiza, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEADER_JUAN, gTrainerFrontPic_LeaderJuan, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SCHOOL_KID_M, gTrainerFrontPic_SchoolKidM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SCHOOL_KID_F, gTrainerFrontPic_SchoolKidF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SR_AND_JR, gTrainerFrontPic_SrAndJr, TRAINER_PIC_SIZE * 2), + TRAINER_SPRITE(POKEFAN_M, gTrainerFrontPic_PokefanM, TRAINER_PIC_SIZE * 2), + TRAINER_SPRITE(POKEFAN_F, gTrainerFrontPic_PokefanF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(YOUNGSTER, gTrainerFrontPic_Youngster, TRAINER_PIC_SIZE), + TRAINER_SPRITE(CHAMPION_WALLACE, gTrainerFrontPic_ChampionWallace, TRAINER_PIC_SIZE * 2), + TRAINER_SPRITE(FISHERMAN, gTrainerFrontPic_Fisherman, TRAINER_PIC_SIZE), + TRAINER_SPRITE(CYCLING_TRIATHLETE_M, gTrainerFrontPic_CyclingTriathleteM, TRAINER_PIC_SIZE * 2), + TRAINER_SPRITE(CYCLING_TRIATHLETE_F, gTrainerFrontPic_CyclingTriathleteF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(RUNNING_TRIATHLETE_M, gTrainerFrontPic_RunningTriathleteM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(RUNNING_TRIATHLETE_F, gTrainerFrontPic_RunningTriathleteF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SWIMMING_TRIATHLETE_M, gTrainerFrontPic_SwimmingTriathleteM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SWIMMING_TRIATHLETE_F, gTrainerFrontPic_SwimmingTriathleteF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(DRAGON_TAMER, gTrainerFrontPic_DragonTamer, TRAINER_PIC_SIZE), + TRAINER_SPRITE(NINJA_BOY, gTrainerFrontPic_NinjaBoy, TRAINER_PIC_SIZE), + TRAINER_SPRITE(BATTLE_GIRL, gTrainerFrontPic_BattleGirl, TRAINER_PIC_SIZE * 2), + TRAINER_SPRITE(PARASOL_LADY, gTrainerFrontPic_ParasolLady, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SWIMMER_F, gTrainerFrontPic_SwimmerF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(TWINS, gTrainerFrontPic_Twins, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SAILOR, gTrainerFrontPic_Sailor, TRAINER_PIC_SIZE), + TRAINER_SPRITE(MAGMA_ADMIN, gTrainerFrontPic_MagmaAdmin, TRAINER_PIC_SIZE), + TRAINER_SPRITE(WALLY, gTrainerFrontPic_Wally, TRAINER_PIC_SIZE), + TRAINER_SPRITE(BRENDAN, gTrainerFrontPic_Brendan, TRAINER_PIC_SIZE), + TRAINER_SPRITE(MAY, gTrainerFrontPic_May, TRAINER_PIC_SIZE), + TRAINER_SPRITE(BUG_CATCHER, gTrainerFrontPic_BugCatcher, TRAINER_PIC_SIZE), + TRAINER_SPRITE(POKEMON_RANGER_M, gTrainerFrontPic_PokemonRangerM, TRAINER_PIC_SIZE), + TRAINER_SPRITE(POKEMON_RANGER_F, gTrainerFrontPic_PokemonRangerF, TRAINER_PIC_SIZE), + TRAINER_SPRITE(MAGMA_LEADER_MAXIE, gTrainerFrontPic_MagmaLeaderMaxie, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LASS, gTrainerFrontPic_Lass, TRAINER_PIC_SIZE), + TRAINER_SPRITE(YOUNG_COUPLE, gTrainerFrontPic_YoungCouple, TRAINER_PIC_SIZE), + TRAINER_SPRITE(OLD_COUPLE, gTrainerFrontPic_OldCouple, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SIS_AND_BRO, gTrainerFrontPic_SisAndBro, TRAINER_PIC_SIZE), + TRAINER_SPRITE(STEVEN, gTrainerFrontPic_Steven, TRAINER_PIC_SIZE), + TRAINER_SPRITE(SALON_MAIDEN_ANABEL, gTrainerFrontPic_SalonMaidenAnabel, TRAINER_PIC_SIZE), + TRAINER_SPRITE(DOME_ACE_TUCKER, gTrainerFrontPic_DomeAceTucker, TRAINER_PIC_SIZE), + TRAINER_SPRITE(PALACE_MAVEN_SPENSER, gTrainerFrontPic_PalaceMavenSpenser, TRAINER_PIC_SIZE), + TRAINER_SPRITE(ARENA_TYCOON_GRETA, gTrainerFrontPic_ArenaTycoonGreta, TRAINER_PIC_SIZE * 2), + TRAINER_SPRITE(FACTORY_HEAD_NOLAND, gTrainerFrontPic_FactoryHeadNoland, TRAINER_PIC_SIZE), + TRAINER_SPRITE(PIKE_QUEEN_LUCY, gTrainerFrontPic_PikeQueenLucy, TRAINER_PIC_SIZE), + TRAINER_SPRITE(PYRAMID_KING_BRANDON, gTrainerFrontPic_PyramidKingBrandon, TRAINER_PIC_SIZE), + TRAINER_SPRITE(RED, gTrainerFrontPic_Red, TRAINER_PIC_SIZE), + TRAINER_SPRITE(LEAF, gTrainerFrontPic_Leaf, TRAINER_PIC_SIZE), + TRAINER_SPRITE(RS_BRENDAN, gTrainerFrontPic_RubySapphireBrendan, TRAINER_PIC_SIZE), + TRAINER_SPRITE(RS_MAY, gTrainerFrontPic_RubySapphireMay, TRAINER_PIC_SIZE), }; #define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic} diff --git a/src/daycare.c b/src/daycare.c index cabecc8ea53d..9a1e98d98864 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -20,17 +20,22 @@ #include "list_menu.h" #include "overworld.h" #include "item.h" +#include "constants/form_change_types.h" #include "constants/items.h" +#include "constants/hold_effects.h" #include "constants/moves.h" #include "constants/region_map_sections.h" extern const struct Evolution gEvolutionTable[][EVOS_PER_MON]; +#define IS_DITTO(species) (gBaseStats[species].eggGroup1 == EGG_GROUP_DITTO || gBaseStats[species].eggGroup2 == EGG_GROUP_DITTO) + static void ClearDaycareMonMail(struct DaycareMail *mail); static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare); static u8 GetDaycareCompatibilityScore(struct DayCare *daycare); static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y); static u8 ModifyBreedingScoreForOvalCharm(u8 score); +static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves); // RAM buffers used to assist with BuildEggMoveset() EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0}; @@ -161,6 +166,57 @@ static s8 Daycare_FindEmptySpot(struct DayCare *daycare) return -1; } +static void ClearHatchedEggMoves(void) +{ + u16 i; + + for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++) + sHatchedEggEggMoves[i] = MOVE_NONE; +} + +static void TransferEggMoves(void) +{ + u32 i, j, k, l; + u16 numEggMoves; + struct Pokemon mon; + + for (i = 0; i < DAYCARE_MON_COUNT; i++) + { + if (!GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[i].mon, MON_DATA_SANITY_HAS_SPECIES)) + continue; + + BoxMonToMon(&gSaveBlock1Ptr->daycare.mons[i].mon, &mon); + ClearHatchedEggMoves(); + numEggMoves = GetEggMoves(&mon, sHatchedEggEggMoves); + for (j = 0; j < numEggMoves; j++) + { + // Go through other Daycare mons + for (k = 0; k < DAYCARE_MON_COUNT; k++) + { + if (k == i || !GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SANITY_HAS_SPECIES)) + continue; + + // Check if you can inherit from them + if (GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SPECIES) != GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[i].mon, MON_DATA_SPECIES) + #if P_EGG_MOVE_TRANSFER >= GEN_9 + && GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[i].mon, MON_DATA_HELD_ITEM) != ITEM_MIRROR_HERB + #endif + ) + continue; + + for (l = 0; l < MAX_MON_MOVES; l++) + { + if (GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_MOVE1 + l) != sHatchedEggEggMoves[j]) + continue; + + if (GiveMoveToBoxMon(&gSaveBlock1Ptr->daycare.mons[i].mon, sHatchedEggEggMoves[j]) == MON_HAS_MAX_MOVES) + break; + } + } + } + } +} + static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycareMon) { if (MonHasMail(mon)) @@ -183,6 +239,10 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar ZeroMonData(mon); CompactPartySlots(); CalculatePlayerPartyCount(); + +#if P_EGG_MOVE_TRANSFER >= GEN_8 + TransferEggMoves(); +#endif } static void StorePokemonInEmptyDaycareSlot(struct Pokemon *mon, struct DayCare *daycare) @@ -255,8 +315,9 @@ static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon) species = GetBoxMonData(&daycareMon->mon, MON_DATA_SPECIES); BoxMonToMon(&daycareMon->mon, &pokemon); - newSpecies = GetFormChangeTargetSpecies(&pokemon, FORM_WITHDRAW, 0); - if (newSpecies != SPECIES_NONE) { + newSpecies = GetFormChangeTargetSpecies(&pokemon, FORM_CHANGE_WITHDRAW, 0); + if (newSpecies != SPECIES_NONE) + { SetMonData(&pokemon, MON_DATA_SPECIES, &newSpecies); CalculateMonStats(&pokemon); species = newSpecies; @@ -425,43 +486,29 @@ static u16 GetEggSpecies(u16 species) static s32 GetParentToInheritNature(struct DayCare *daycare) { - u32 species[DAYCARE_MON_COUNT]; - s32 i; - s32 dittoCount; - s32 parent = -1; + u32 i; + u8 numWithEverstone = 0; + s32 slot = -1; - // search for female gender for (i = 0; i < DAYCARE_MON_COUNT; i++) { - if (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE) - parent = i; - } - - // search for ditto - for (dittoCount = 0, i = 0; i < DAYCARE_MON_COUNT; i++) - { - species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES); - if (species[i] == SPECIES_DITTO) - dittoCount++, parent = i; - } - - // coin flip on ...two Dittos - if (dittoCount == DAYCARE_MON_COUNT) - { - if (Random() >= USHRT_MAX / 2) - parent = 0; - else - parent = 1; - } - - // Don't inherit nature if not holding Everstone - if (GetBoxMonData(&daycare->mons[parent].mon, MON_DATA_HELD_ITEM) != ITEM_EVERSTONE - || Random() >= USHRT_MAX / 2) - { - return -1; + if (ItemId_GetHoldEffect(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE + #if P_NATURE_INHERITANCE == GEN_3 + && (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE || IS_DITTO(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES))) + #endif + ) { + slot = i; + numWithEverstone++; + } } - return parent; + if (numWithEverstone >= DAYCARE_MON_COUNT) + return Random() & 1; +#if P_NATURE_INHERITANCE > GEN_4 + return slot; +#else + return Random() & 1 ? slot : -1; +#endif } static void _TriggerPendingDaycareEgg(struct DayCare *daycare) @@ -541,7 +588,7 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) { u16 motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM); u16 fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM); - u8 i; + u8 i, start; u8 selectedIvs[5]; u8 availableIVs[NUM_STATS]; u8 whichParents[5]; @@ -557,8 +604,33 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) availableIVs[i] = i; } + start = 0; + if (ItemId_GetHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM && + ItemId_GetHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM) + { + whichParents[0] = Random() % DAYCARE_MON_COUNT; + selectedIvs[0] = ItemId_GetSecondaryId( + GetBoxMonData(&daycare->mons[whichParents[0]].mon, MON_DATA_HELD_ITEM)); + RemoveIVIndexFromList(availableIVs, selectedIvs[0]); + start++; + } + else if (ItemId_GetHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM) + { + whichParents[0] = 0; + selectedIvs[0] = ItemId_GetSecondaryId(motherItem); + RemoveIVIndexFromList(availableIVs, selectedIvs[0]); + start++; + } + else if (ItemId_GetHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM) + { + whichParents[0] = 1; + selectedIvs[0] = ItemId_GetSecondaryId(fatherItem); + RemoveIVIndexFromList(availableIVs, selectedIvs[0]); + start++; + } + // Select which IVs that will be inherited. - for (i = 0; i < howManyIVs; i++) + for (i = start; i < howManyIVs; i++) { // Randomly pick an IV from the available list and stop from being chosen again. // BUG: Instead of removing the IV that was just picked, this @@ -577,7 +649,7 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) } // Determine which parent each of the selected IVs should inherit from. - for (i = 0; i < howManyIVs; i++) + for (i = start; i < howManyIVs; i++) { whichParents[i] = Random() % DAYCARE_MON_COUNT; } @@ -642,6 +714,35 @@ static void InheritPokeball(struct Pokemon *egg, struct BoxPokemon *father, stru SetMonData(egg, MON_DATA_POKEBALL, &inheritBall); } +static void InheritAbility(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) +{ + u8 fatherAbility = GetBoxMonData(father, MON_DATA_ABILITY_NUM); + u8 motherAbility = GetBoxMonData(mother, MON_DATA_ABILITY_NUM); + u8 motherSpecies = GetBoxMonData(mother, MON_DATA_SPECIES); + u8 inheritAbility = motherAbility; + + if (motherSpecies == SPECIES_DITTO) + #if P_ABILITY_INHERITANCE < GEN_6 + return; + #else + inheritAbility = fatherAbility; + #endif + + if (inheritAbility < 2 && (Random() % 10 < 8)) + { + SetMonData(egg, MON_DATA_ABILITY_NUM, &inheritAbility); + } +#if P_ABILITY_INHERITANCE < GEN_6 + else if (Random() % 10 < 8) +#else + else if (Random() % 10 < 6) +#endif + { + // Hidden Abilities have a different chance of being passed down + SetMonData(egg, MON_DATA_ABILITY_NUM, &inheritAbility); + } +} + // Counts the number of egg moves a pokemon learns and stores the moves in // the given array. static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) @@ -689,8 +790,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru sHatchedEggFatherMoves[i] = MOVE_NONE; sHatchedEggFinalMoves[i] = MOVE_NONE; } - for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++) - sHatchedEggEggMoves[i] = MOVE_NONE; + ClearHatchedEggMoves(); for (i = 0; i < EGG_LVL_UP_MOVES_ARRAY_COUNT; i++) sHatchedEggLevelUpMoves[i] = MOVE_NONE; @@ -703,6 +803,28 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru numEggMoves = GetEggMoves(egg, sHatchedEggEggMoves); +#if P_MOTHER_EGG_MOVE_INHERITANCE >= GEN_6 + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (sHatchedEggMotherMoves[i] != MOVE_NONE) + { + for (j = 0; j < numEggMoves; j++) + { + if (sHatchedEggMotherMoves[i] == sHatchedEggEggMoves[j]) + { + if (GiveMoveToMon(egg, sHatchedEggMotherMoves[i]) == MON_HAS_MAX_MOVES) + DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggMotherMoves[i]); + break; + } + } + } + else + { + break; + } + } +#endif + for (i = 0; i < MAX_MON_MOVES; i++) { if (sHatchedEggFatherMoves[i] != MOVE_NONE) @@ -722,6 +844,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru break; } } +#if P_TM_INHERITANCE < GEN_6 for (i = 0; i < MAX_MON_MOVES; i++) { if (sHatchedEggFatherMoves[i] != MOVE_NONE) @@ -729,7 +852,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) { u16 moveId = ItemIdToBattleMoveId(ITEM_TM01 + j); - if (sHatchedEggFatherMoves[i] == moveId && CanLearnTeachableMove(GetMonData(egg, MON_DATA_SPECIES2), moveId)) + if (sHatchedEggFatherMoves[i] == moveId && CanLearnTeachableMove(GetMonData(egg, MON_DATA_SPECIES_OR_EGG), moveId)) { if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES) DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]); @@ -737,6 +860,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru } } } +#endif for (i = 0; i < MAX_MON_MOVES; i++) { if (sHatchedEggFatherMoves[i] == MOVE_NONE) @@ -907,6 +1031,9 @@ static void _GiveEggFromDaycare(struct DayCare *daycare) InheritIVs(&egg, daycare); InheritPokeball(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); BuildEggMoveset(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); +#if P_ABILITY_INHERITANCE >= GEN_6 + InheritAbility(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); +#endif GiveMoveIfItem(&egg, daycare); diff --git a/src/debug.c b/src/debug.c index 759341d86684..7eda7d973e8a 100644 --- a/src/debug.c +++ b/src/debug.c @@ -57,6 +57,7 @@ #include "constants/songs.h" #include "constants/species.h" #include "constants/weather.h" +#include "save.h" #if DEBUG_OVERWORLD_MENU == TRUE // ******************************* @@ -85,6 +86,7 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_TRAINER_NAME, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER, DEBUG_UTIL_MENU_ITEM_TRAINER_ID, + DEBUG_UTIL_MENU_ITEM_CLEAR_BOXES, }; enum { // Scripts DEBUG_UTIL_MENU_ITEM_SCRIPT_1, @@ -224,6 +226,7 @@ static void DebugAction_Util_WatchCredits(u8 taskId); static void DebugAction_Util_Trainer_Name(u8 taskId); static void DebugAction_Util_Trainer_Gender(u8 taskId); static void DebugAction_Util_Trainer_Id(u8 taskId); +static void DebugAction_Util_Clear_Boxes(u8 taskId); static void DebugAction_Flags_Flags(u8 taskId); static void DebugAction_Flags_FlagsSelect(u8 taskId); @@ -275,7 +278,8 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId); static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)); static void DebugAction_OpenSubMenu(u8 taskId, struct ListMenuTemplate LMtemplate); -extern u8 Debug_FlagsNotSetMessage[]; +extern u8 Debug_FlagsNotSetOverworldConfigMessage[]; +extern u8 Debug_FlagsNotSetBattleConfigMessage[]; extern u8 Debug_Script_1[]; extern u8 Debug_Script_2[]; extern u8 Debug_Script_3[]; @@ -289,6 +293,7 @@ extern u8 Debug_ShowFieldMessageStringVar4[]; extern u8 Debug_CheatStart[]; extern u8 PlayersHouse_2F_EventScript_SetWallClock[]; extern u8 PlayersHouse_2F_EventScript_CheckWallClock[]; +extern u8 Debug_CheckSaveBlock[]; #include "data/map_group_count.h" @@ -329,6 +334,7 @@ static const u8 sDebugText_Util_WatchCredits[] = _("Watch Credits"); static const u8 sDebugText_Util_Trainer_Name[] = _("Trainer name"); static const u8 sDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); static const u8 sDebugText_Util_Trainer_Id[] = _("New Trainer Id"); +static const u8 sDebugText_Util_Clear_Boxes[] = _("Clear Storage Boxes"); // Flags Menu static const u8 sDebugText_Flags_Flags[] = _("Set Flag XXXX"); static const u8 sDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); @@ -450,6 +456,7 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {sDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {sDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {sDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, + [DEBUG_UTIL_MENU_ITEM_CLEAR_BOXES] = {sDebugText_Util_Clear_Boxes, DEBUG_UTIL_MENU_ITEM_CLEAR_BOXES}, }; static const struct ListMenuItem sDebugMenu_Items_Scripts[] = { @@ -529,6 +536,7 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = DebugAction_Util_Trainer_Name, [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = DebugAction_Util_Trainer_Gender, [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = DebugAction_Util_Trainer_Id, + [DEBUG_UTIL_MENU_ITEM_CLEAR_BOXES] = DebugAction_Util_Clear_Boxes, }; static void (*const sDebugMenu_Actions_Scripts[])(u8) = { @@ -1149,8 +1157,8 @@ static void DebugAction_Util_PoisonMons(u8 taskId) for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, 0) - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) { u32 curStatus = STATUS1_POISON; SetMonData(&gPlayerParty[i], MON_DATA_STATUS, &curStatus); @@ -1159,18 +1167,35 @@ static void DebugAction_Util_PoisonMons(u8 taskId) PlaySE(SE_FIELD_POISON); } -static void DebugAction_Util_CheckSaveBlock(u8 taskId) +void CheckSaveBlock1Size(void) +{ + u32 currSb1Size = sizeof(struct SaveBlock1); + u32 maxSb1Size = SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLOCK1_END - SECTOR_ID_SAVEBLOCK1_START + 1); + ConvertIntToDecimalStringN(gStringVar1, currSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar2, maxSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); +} + +void CheckSaveBlock2Size(void) { - static const u8 sDebugText_SaveBlockSize[] = _("SaveBlock1 is {STR_VAR_1} bytes long.\nMax size is 15872 bytes.\pSaveBlock2 is {STR_VAR_2} bytes long.\nMax size is 3968 bytes.\pPokemonStorage is {STR_VAR_3} bytes long.\nMax size is 35712 bytes."); + u32 currSb2Size = (sizeof(struct SaveBlock2)); + u32 maxSb2Size = SECTOR_DATA_SIZE; + ConvertIntToDecimalStringN(gStringVar1, currSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar2, maxSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); +} - ConvertIntToDecimalStringN(gStringVar1, sizeof(struct SaveBlock1), STR_CONV_MODE_LEFT_ALIGN, 6); - ConvertIntToDecimalStringN(gStringVar2, sizeof(struct SaveBlock2), STR_CONV_MODE_LEFT_ALIGN, 6); - ConvertIntToDecimalStringN(gStringVar3, sizeof(struct PokemonStorage), STR_CONV_MODE_LEFT_ALIGN, 6); - StringExpandPlaceholders(gStringVar4, sDebugText_SaveBlockSize); +void CheckPokemonStorageSize(void) +{ + u32 currPkmnStorageSize = sizeof(struct PokemonStorage); + u32 maxPkmnStorageSize = SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1); + ConvertIntToDecimalStringN(gStringVar1, currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar2, maxPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); +} +static void DebugAction_Util_CheckSaveBlock(u8 taskId) +{ Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); - ScriptContext_SetupScript(Debug_ShowFieldMessageStringVar4); + ScriptContext_SetupScript(Debug_CheckSaveBlock); } static const u8 sWeatherNames[22][24] = { @@ -1255,7 +1280,7 @@ static void DebugAction_Util_Weather_SelectId(u8 taskId) if (gTasks[taskId].data[3] <= 15 || gTasks[taskId].data[3] >= 20) StringCopyPadded(gStringVar1, sWeatherNames[gTasks[taskId].data[3]], CHAR_SPACE, 30); else - StringCopyPadded(gStringVar1, sText_WeatherNotDefined, CHAR_SPACE, 30); + StringCopyPadded(gStringVar1, sText_WeatherNotDefined, CHAR_SPACE, 30); StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -1315,6 +1340,12 @@ static void DebugAction_Util_Trainer_Id(u8 taskId) Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } +static void DebugAction_Util_Clear_Boxes(u8 taskId) +{ + ResetPokemonStorageSystem(); + Debug_DestroyMenu_Full(taskId); + ScriptContext_Enable(); +} // ******************************* // Actions Scripts @@ -1556,16 +1587,16 @@ static void DebugAction_Flags_ToggleFrontierPass(u8 taskId) } static void DebugAction_Flags_CollisionOnOff(u8 taskId) { -#if DEBUG_FLAG_NO_COLLISION == 0 +#if OW_FLAG_NO_COLLISION == 0 Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); - ScriptContext_SetupScript(Debug_FlagsNotSetMessage); + ScriptContext_SetupScript(Debug_FlagsNotSetOverworldConfigMessage); #else - if (FlagGet(DEBUG_FLAG_NO_COLLISION)) + if (FlagGet(OW_FLAG_NO_COLLISION)) PlaySE(SE_PC_OFF); else PlaySE(SE_PC_LOGIN); - FlagToggle(DEBUG_FLAG_NO_COLLISION); + FlagToggle(OW_FLAG_NO_COLLISION); #endif } static void DebugAction_Flags_EncounterOnOff(u8 taskId) @@ -1573,7 +1604,7 @@ static void DebugAction_Flags_EncounterOnOff(u8 taskId) #if OW_FLAG_NO_ENCOUNTER == 0 Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); - ScriptContext_SetupScript(Debug_FlagsNotSetMessage); + ScriptContext_SetupScript(Debug_FlagsNotSetOverworldConfigMessage); #else if (FlagGet(OW_FLAG_NO_ENCOUNTER)) PlaySE(SE_PC_OFF); @@ -1587,7 +1618,7 @@ static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) #if OW_FLAG_NO_TRAINER_SEE == 0 Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); - ScriptContext_SetupScript(Debug_FlagsNotSetMessage); + ScriptContext_SetupScript(Debug_FlagsNotSetOverworldConfigMessage); #else if (FlagGet(OW_FLAG_NO_TRAINER_SEE)) PlaySE(SE_PC_OFF); @@ -1601,7 +1632,7 @@ static void DebugAction_Flags_BagUseOnOff(u8 taskId) #if B_FLAG_NO_BAG_USE == 0 Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); - ScriptContext_SetupScript(Debug_FlagsNotSetMessage); + ScriptContext_SetupScript(Debug_FlagsNotSetBattleConfigMessage); #else if (FlagGet(B_FLAG_NO_BAG_USE)) PlaySE(SE_PC_OFF); @@ -1612,10 +1643,10 @@ static void DebugAction_Flags_BagUseOnOff(u8 taskId) } static void DebugAction_Flags_CatchingOnOff(u8 taskId) { -#if B_FLAG_NO_CATCHING_USE == 0 +#if B_FLAG_NO_CATCHING == 0 Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); - ScriptContext_SetupScript(Debug_FlagsNotSetMessage); + ScriptContext_SetupScript(Debug_FlagsNotSetBattleConfigMessage); #else if (FlagGet(B_FLAG_NO_CATCHING)) PlaySE(SE_PC_OFF); @@ -2181,7 +2212,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) { PlaySE(MUS_LEVEL_UP); ScriptGiveMon(sDebugMonData->mon_speciesId, gTasks[taskId].data[3], ITEM_NONE, 0,0,0); - //Set flag for user convenience + // Set flag for user convenience FlagSet(FLAG_SYS_POKEMON_GET); Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); @@ -2315,7 +2346,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) } static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) { - u8 abilityId; + u16 abilityId; u8 abilityCount = NUM_ABILITY_SLOTS - 1; //-1 for proper iteration u8 i = 0; @@ -2737,7 +2768,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu break; } - //Set flag for user convenience + // Set flag for user convenience FlagSet(FLAG_SYS_POKEMON_GET); Free(sDebugMonData); //Frees EWRAM of MonData Struct @@ -2746,7 +2777,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu static void DebugAction_Give_MaxMoney(u8 taskId) { - SetMoney(&gSaveBlock1Ptr->money, 999999); + SetMoney(&gSaveBlock1Ptr->money, MAX_MONEY); } static void DebugAction_Give_MaxCoins(u8 taskId) @@ -2769,11 +2800,12 @@ static void DebugAction_Give_FillPC(u8 taskId) //Credit: Sierraffinity int boxId, boxPosition; u32 personality; struct BoxPokemon boxMon; + u16 species = SPECIES_BULBASAUR; personality = Random32(); CreateBoxMon(&boxMon, - SPECIES_DEOXYS, + species, 100, 32, personality, @@ -2788,9 +2820,16 @@ static void DebugAction_Give_FillPC(u8 taskId) //Credit: Sierraffinity if (!GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_HAS_SPECIES)) { gPokemonStoragePtr->boxes[boxId][boxPosition] = boxMon; + SetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SPECIES, &species); + GetSetPokedexFlag(species, FLAG_SET_SEEN); + GetSetPokedexFlag(species, FLAG_SET_CAUGHT); + species++; } } } + + // Set flag for user convenience + FlagSet(FLAG_SYS_POKEMON_GET); } static void DebugAction_Give_CHEAT(u8 taskId) diff --git a/src/decoration.c b/src/decoration.c index 6d95cfbdc307..27ef85de9ed6 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -688,7 +688,7 @@ static void ReturnToDecorationActionsAfterInvalidSelection(u8 taskId) static void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId) { - LoadPalette(sDecorationMenuPalette, BG_PLTT_ID(13), PLTT_SIZE_4BPP); + LoadPalette(sDecorationMenuPalette, BG_PLTT_ID(13), sizeof(sDecorationMenuPalette)); ClearDialogWindowAndFrame(0, FALSE); RemoveDecorationWindow(WINDOW_MAIN_MENU); InitDecorationCategoriesWindow(taskId); @@ -834,7 +834,7 @@ static void ReturnToActionsMenuFromCategories(u8 taskId) void ShowDecorationCategoriesWindow(u8 taskId) { - LoadPalette(sDecorationMenuPalette, BG_PLTT_ID(13), PLTT_SIZE_4BPP); + LoadPalette(sDecorationMenuPalette, BG_PLTT_ID(13), sizeof(sDecorationMenuPalette)); ClearDialogWindowAndFrame(0, FALSE); gTasks[taskId].tDecorationMenuCommand = DECOR_MENU_TRADE; sCurDecorationCategory = DECORCAT_DESK; diff --git a/src/diploma.c b/src/diploma.c index 4f6264492418..2a188674503c 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -72,7 +72,7 @@ void CB2_ShowDiploma(void) ResetSpriteData(); ResetPaletteFade(); FreeAllSpritePalettes(); - LoadPalette(sDiplomaPalettes, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(sDiplomaPalettes, BG_PLTT_ID(0), sizeof(sDiplomaPalettes)); sDiplomaTilemapPtr = Alloc(0x1000); InitDiplomaBg(); InitDiplomaWindow(); diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index e23c04c1adf6..8d47595c8b55 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -2906,7 +2906,7 @@ void IsDodrioInParty(void) for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES) - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_DODRIO) + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) == SPECIES_DODRIO) { gSpecialVar_Result = TRUE; return; diff --git a/src/easy_chat.c b/src/easy_chat.c index d08ea4b33dbc..8621a0163a8d 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -230,7 +230,7 @@ enum { PALTAG_TRIANGLE_CURSOR, PALTAG_RECTANGLE_CURSOR, PALTAG_MISC_UI, - PALTAG_RS_INTERVIEW_FRAME, + PALTAG_RS_INTERVIEW_FRAME, }; enum { @@ -240,7 +240,7 @@ enum { GFXTAG_START_SELECT_BUTTONS, GFXTAG_MODE_WINDOW, GFXTAG_RS_INTERVIEW_FRAME, - GFXTAG_BUTTON_WINDOW, + GFXTAG_BUTTON_WINDOW, }; @@ -3930,12 +3930,12 @@ static void LoadEasyChatPalettes(void) { ResetPaletteFade(); LoadPalette(gEasyChatMode_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); - LoadPalette(sTextInputFrameOrange_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); - LoadPalette(sTextInputFrameGreen_Pal, BG_PLTT_ID(4), PLTT_SIZE_4BPP); - LoadPalette(sTitleText_Pal, BG_PLTT_ID(10), PLTT_SIZEOF(4)); - LoadPalette(sText_Pal, BG_PLTT_ID(11), PLTT_SIZEOF(6)); - LoadPalette(sText_Pal, BG_PLTT_ID(15), PLTT_SIZEOF(6)); - LoadPalette(sText_Pal, BG_PLTT_ID(3), PLTT_SIZEOF(6)); + LoadPalette(sTextInputFrameOrange_Pal, BG_PLTT_ID(1), sizeof(sTextInputFrameOrange_Pal)); + LoadPalette(sTextInputFrameGreen_Pal, BG_PLTT_ID(4), sizeof(sTextInputFrameGreen_Pal)); + LoadPalette(sTitleText_Pal, BG_PLTT_ID(10), sizeof(sTitleText_Pal)); + LoadPalette(sText_Pal, BG_PLTT_ID(11), sizeof(sText_Pal)); + LoadPalette(sText_Pal, BG_PLTT_ID(15), sizeof(sText_Pal)); + LoadPalette(sText_Pal, BG_PLTT_ID(3), sizeof(sText_Pal)); } static void PrintTitle(void) @@ -5109,7 +5109,7 @@ static bool8 IsEasyChatGroupUnlocked(u8 groupId) switch (groupId) { case EC_GROUP_TRENDY_SAYING: - return FlagGet(FLAG_SYS_HIPSTER_MEET); + return FlagGet(FLAG_UNLOCKED_TRENDY_SAYINGS); case EC_GROUP_EVENTS: case EC_GROUP_MOVE_1: case EC_GROUP_MOVE_2: @@ -5425,80 +5425,99 @@ void BufferDeepLinkPhrase(void) CopyEasyChatWord(gStringVar2, easyChatWord); } -static bool8 IsAdditionalPhraseUnlocked(u8 additionalPhraseId) +/* + ### Trendy Sayings + + Not to be confused with Dewford Town's "trendy phrase". + + This is a group of easy chat words (EC_GROUP_TRENDY_SAYING) that are normally inaccessible. + They can be unlocked either through Mystery Event (where they're referred to as "rare" words) + or from the "Hipster" variety of the Mauville Old Man. The Hipster can unlock one word each + time he is received via record mixing (and once if he is the player's default Old Man). + + Which words have been unlocked is saved in the unlockedTrendySayings bitfield in SaveBlock1 + + Unlocked trendy saying words are only accessible if the flag FLAG_UNLOCKED_TRENDY_SAYINGS is set. + It's set any time the player talks to the Hipster, but is not apparently set by Mystery Event, + meaning trendy saying words unlocked via Mystery Event may not be available until the player has + talked to the Hipster. +*/ +static bool8 IsTrendySayingUnlocked(u8 wordIndex) { - int byteOffset = additionalPhraseId / 8; - int shift = additionalPhraseId % 8; - return (gSaveBlock1Ptr->additionalPhrases[byteOffset] >> shift) & 1; + int byteOffset = wordIndex / 8; + int shift = wordIndex % 8; + return (gSaveBlock1Ptr->unlockedTrendySayings[byteOffset] >> shift) & 1; } -void UnlockAdditionalPhrase(u8 additionalPhraseId) +void UnlockTrendySaying(u8 wordIndex) { - if (additionalPhraseId < NUM_ADDITIONAL_PHRASES) + if (wordIndex < NUM_TRENDY_SAYINGS) { - int byteOffset = additionalPhraseId / 8; - int shift = additionalPhraseId % 8; - gSaveBlock1Ptr->additionalPhrases[byteOffset] |= 1 << shift; + int byteOffset = wordIndex / 8; + int shift = wordIndex % 8; + gSaveBlock1Ptr->unlockedTrendySayings[byteOffset] |= 1 << shift; } } -static u8 GetNumAdditionalPhrasesUnlocked(void) +static u8 GetNumTrendySayingsUnlocked(void) { u8 i; - u8 numAdditionalPhrasesUnlocked; + u8 numUnlocked; - for (i = 0, numAdditionalPhrasesUnlocked = 0; i < NUM_ADDITIONAL_PHRASES; i++) + for (i = 0, numUnlocked = 0; i < NUM_TRENDY_SAYINGS; i++) { - if (IsAdditionalPhraseUnlocked(i)) - numAdditionalPhrasesUnlocked++; + if (IsTrendySayingUnlocked(i)) + numUnlocked++; } - return numAdditionalPhrasesUnlocked; + return numUnlocked; } -u16 GetNewHipsterPhraseToTeach(void) +u16 UnlockRandomTrendySaying(void) { u16 i; - u16 additionalPhraseId; - u8 numAdditionalPhrasesUnlocked = GetNumAdditionalPhrasesUnlocked(); - if (numAdditionalPhrasesUnlocked == NUM_ADDITIONAL_PHRASES) + u16 numToSkip; + u8 numUnlocked = GetNumTrendySayingsUnlocked(); + if (numUnlocked == NUM_TRENDY_SAYINGS) return EC_EMPTY_WORD; - additionalPhraseId = Random() % (NUM_ADDITIONAL_PHRASES - numAdditionalPhrasesUnlocked); - for (i = 0; i < NUM_ADDITIONAL_PHRASES; i++) + numToSkip = Random() % (NUM_TRENDY_SAYINGS - numUnlocked); + for (i = 0; i < NUM_TRENDY_SAYINGS; i++) { - if (!IsAdditionalPhraseUnlocked(i)) + if (!IsTrendySayingUnlocked(i)) { - if (additionalPhraseId) + if (numToSkip) { - additionalPhraseId--; + // Skip the first n locked words, as determined by the Random call above. + numToSkip--; } else { - UnlockAdditionalPhrase(i); + UnlockTrendySaying(i); return EC_WORD(EC_GROUP_TRENDY_SAYING, i); } } } + // Would only be reached if there are no new words to teach, which is handled at the start. return EC_EMPTY_WORD; } // Unused -u16 GetRandomTaughtHipsterPhrase(void) +static u16 GetRandomUnlockedTrendySaying(void) { u16 i; - u16 additionalPhraseId = GetNumAdditionalPhrasesUnlocked(); - if (additionalPhraseId == 0) + u16 n = GetNumTrendySayingsUnlocked(); + if (n == 0) return EC_EMPTY_WORD; - additionalPhraseId = Random() % additionalPhraseId; - for (i = 0; i < NUM_ADDITIONAL_PHRASES; i++) + n = Random() % n; + for (i = 0; i < NUM_TRENDY_SAYINGS; i++) { - if (IsAdditionalPhraseUnlocked(i)) + if (IsTrendySayingUnlocked(i)) { - if (additionalPhraseId) - additionalPhraseId--; + if (n) + n--; else return EC_WORD(EC_GROUP_TRENDY_SAYING, i); } @@ -5569,10 +5588,10 @@ void InitEasyChatPhrases(void) // Mauville old man data is corrupted, which is initialized directly after // this function is called when starting a new game. for (i = 0; i < 64; i++) - gSaveBlock1Ptr->additionalPhrases[i] = 0; + gSaveBlock1Ptr->unlockedTrendySayings[i] = 0; #else - for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->additionalPhrases); i++) - gSaveBlock1Ptr->additionalPhrases[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->unlockedTrendySayings); i++) + gSaveBlock1Ptr->unlockedTrendySayings[i] = 0; #endif } @@ -5611,7 +5630,7 @@ static void SetUnlockedEasyChatGroups(void) sWordData->unlockedGroupIds[sWordData->numUnlockedGroups++] = EC_GROUP_MOVE_2; } - if (FlagGet(FLAG_SYS_HIPSTER_MEET)) + if (FlagGet(FLAG_UNLOCKED_TRENDY_SAYINGS)) sWordData->unlockedGroupIds[sWordData->numUnlockedGroups++] = EC_GROUP_TRENDY_SAYING; if (IsNationalPokedexEnabled()) @@ -5800,7 +5819,7 @@ static bool8 IsEasyChatIndexAndGroupUnlocked(u16 wordIndex, u8 groupId) case EC_GROUP_MOVE_2: return TRUE; case EC_GROUP_TRENDY_SAYING: - return IsAdditionalPhraseUnlocked(wordIndex); + return IsTrendySayingUnlocked(wordIndex); default: return gEasyChatGroups[groupId].wordData.words[wordIndex].enabled; } diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 3a5937ba4dab..fe50c80f41bb 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -313,7 +313,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp) { u16 species; u32 personality, pokerus; - u8 i, friendship, language, gameMet, markings, isEventLegal; + u8 i, friendship, language, gameMet, markings, isModernFatefulEncounter; u16 moves[MAX_MON_MOVES]; u32 ivs[NUM_STATS]; @@ -332,7 +332,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp) gameMet = GetMonData(egg, MON_DATA_MET_GAME); markings = GetMonData(egg, MON_DATA_MARKINGS); pokerus = GetMonData(egg, MON_DATA_POKERUS); - isEventLegal = GetMonData(egg, MON_DATA_EVENT_LEGAL); + isModernFatefulEncounter = GetMonData(egg, MON_DATA_MODERN_FATEFUL_ENCOUNTER); CreateMon(temp, species, EGG_HATCH_LEVEL, USE_RANDOM_IVS, TRUE, personality, OT_ID_PLAYER_ID, 0); @@ -350,7 +350,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp) friendship = 120; SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); SetMonData(temp, MON_DATA_POKERUS, &pokerus); - SetMonData(temp, MON_DATA_EVENT_LEGAL, &isEventLegal); + SetMonData(temp, MON_DATA_MODERN_FATEFUL_ENCOUNTER, &isModernFatefulEncounter); *egg = *temp; } diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ae48223c3a61..f75597a9f780 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -132,9 +132,9 @@ static void SetObjectEventDynamicGraphicsId(struct ObjectEvent *); static void RemoveObjectEventInternal(struct ObjectEvent *); static u16 GetObjectEventFlagIdByObjectEventId(u8); static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); -static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); +static void MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); +static const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); static void LoadObjectEventPalette(u16); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void SpawnObjectEventOnReturnToField(u8, s16, s16); @@ -148,7 +148,7 @@ static void SpriteCB_CameraObject(struct Sprite *); static void CameraObject_0(struct Sprite *); static void CameraObject_1(struct Sprite *); static void CameraObject_2(struct Sprite *); -static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, struct ObjectEventTemplate *, u8); +static const struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, const struct ObjectEventTemplate *, u8); static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *); static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8); static void SetSpriteDataForNormalStep(struct Sprite *, u8, u8); @@ -499,7 +499,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, #ifdef BUGFIX - {NULL, OBJ_EVENT_PAL_TAG_NONE}, + {NULL, OBJ_EVENT_PAL_TAG_NONE}, #else {}, // BUG: FindObjectEventPaletteIndexByTag looks for OBJ_EVENT_PAL_TAG_NONE and not 0x0. // If it's looking for a tag that isn't in this table, the game locks in an infinite loop. @@ -1268,7 +1268,7 @@ static u8 GetObjectEventIdByLocalId(u8 localId) return OBJECT_EVENTS_COUNT; } -static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, u8 mapNum, u8 mapGroup) +static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *template, u8 mapNum, u8 mapGroup) { struct ObjectEvent *objectEvent; u8 objectEventId; @@ -1399,7 +1399,7 @@ void RemoveAllObjectEventsExceptPlayer(void) } } -static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 spriteId; u8 paletteSlot; @@ -1459,7 +1459,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +static u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; struct SpriteTemplate spriteTemplate; @@ -1499,7 +1499,7 @@ u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 l y -= MAP_OFFSET; objectEventTemplate.localId = localId; objectEventTemplate.graphicsId = graphicsId; - objectEventTemplate.inConnection = 0; + objectEventTemplate.kind = OBJ_KIND_NORMAL; objectEventTemplate.x = x; objectEventTemplate.y = y; objectEventTemplate.elevation = elevation; @@ -1513,7 +1513,7 @@ u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 l u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup) { - struct ObjectEventTemplate *objectEventTemplate; + const struct ObjectEventTemplate *objectEventTemplate; s16 cameraX, cameraY; objectEventTemplate = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup); @@ -1543,7 +1543,7 @@ static void CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(u16 graphics CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, sMovementTypeCallbacks[movementType], spriteTemplate, subspriteTables); } -static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) +static void MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) { CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables); } @@ -2375,7 +2375,7 @@ const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId) static u16 GetObjectEventFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { - struct ObjectEventTemplate *obj = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup); + const struct ObjectEventTemplate *obj = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup); #ifdef UBFIX // BUG: The function may return NULL, and attempting to read from NULL may freeze the game using modern compilers. if (obj == NULL) @@ -2422,9 +2422,9 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +static const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { - struct ObjectEventTemplate *templates; + const struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; u8 count; @@ -2442,7 +2442,7 @@ static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 loca return FindObjectEventTemplateByLocalId(localId, templates, count); } -static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, struct ObjectEventTemplate *templates, u8 count) +static const struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, const struct ObjectEventTemplate *templates, u8 count) { u8 i; @@ -2576,7 +2576,7 @@ bool8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, struct Sp { if (!ObjectEventExecSingleMovementAction(objectEvent, sprite)) return FALSE; - SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysMedium[Random() % ARRAY_COUNT(sMovementDelaysMedium)]); sprite->sTypeFuncId = 3; return TRUE; } @@ -2856,7 +2856,7 @@ bool8 MovementType_LookAround_Step2(struct ObjectEvent *objectEvent, struct Spri { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysMedium[Random() % ARRAY_COUNT(sMovementDelaysMedium)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -2908,7 +2908,7 @@ bool8 MovementType_WanderUpAndDown_Step2(struct ObjectEvent *objectEvent, struct if (!ObjectEventExecSingleMovementAction(objectEvent, sprite)) return FALSE; - SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysMedium[Random() % ARRAY_COUNT(sMovementDelaysMedium)]); sprite->sTypeFuncId = 3; return TRUE; } @@ -2976,7 +2976,7 @@ bool8 MovementType_WanderLeftAndRight_Step2(struct ObjectEvent *objectEvent, str if (!ObjectEventExecSingleMovementAction(objectEvent, sprite)) return FALSE; - SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysMedium[Random() % ARRAY_COUNT(sMovementDelaysMedium)]); sprite->sTypeFuncId = 3; return TRUE; } @@ -3196,7 +3196,7 @@ bool8 MovementType_FaceDownAndUp_Step2(struct ObjectEvent *objectEvent, struct S { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysMedium[Random() % ARRAY_COUNT(sMovementDelaysMedium)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3246,7 +3246,7 @@ bool8 MovementType_FaceLeftAndRight_Step2(struct ObjectEvent *objectEvent, struc { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysMedium[Random() % ARRAY_COUNT(sMovementDelaysMedium)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3296,7 +3296,7 @@ bool8 MovementType_FaceUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct S { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysShort[Random() % ARRAY_COUNT(sMovementDelaysShort)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3346,7 +3346,7 @@ bool8 MovementType_FaceUpAndRight_Step2(struct ObjectEvent *objectEvent, struct { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysShort[Random() % ARRAY_COUNT(sMovementDelaysShort)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3396,7 +3396,7 @@ bool8 MovementType_FaceDownAndLeft_Step2(struct ObjectEvent *objectEvent, struct { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysShort[Random() % ARRAY_COUNT(sMovementDelaysShort)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3446,7 +3446,7 @@ bool8 MovementType_FaceDownAndRight_Step2(struct ObjectEvent *objectEvent, struc { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysShort[Random() % ARRAY_COUNT(sMovementDelaysShort)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3496,7 +3496,7 @@ bool8 MovementType_FaceDownUpAndLeft_Step2(struct ObjectEvent *objectEvent, stru { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysShort[Random() % ARRAY_COUNT(sMovementDelaysShort)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3546,7 +3546,7 @@ bool8 MovementType_FaceDownUpAndRight_Step2(struct ObjectEvent *objectEvent, str { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysShort[Random() % ARRAY_COUNT(sMovementDelaysShort)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3596,7 +3596,7 @@ bool8 MovementType_FaceUpLeftAndRight_Step2(struct ObjectEvent *objectEvent, str { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysShort[Random() % ARRAY_COUNT(sMovementDelaysShort)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -3646,7 +3646,7 @@ bool8 MovementType_FaceDownLeftAndRight_Step2(struct ObjectEvent *objectEvent, s { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]); + SetMovementDelay(sprite, sMovementDelaysShort[Random() % ARRAY_COUNT(sMovementDelaysShort)]); objectEvent->singleMovementActive = FALSE; sprite->sTypeFuncId = 3; } @@ -4654,8 +4654,8 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) { u8 direction = dir; -#if DEBUG_FLAG_NO_COLLISION != 0 - if (FlagGet(DEBUG_FLAG_NO_COLLISION)) +#if OW_FLAG_NO_COLLISION != 0 + if (FlagGet(OW_FLAG_NO_COLLISION)) return COLLISION_NONE; #endif diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index a86f16201f71..96ff1b52df80 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -409,7 +409,7 @@ static void Task_Sparkles_SprayAndFlash_Init(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].tTimer = 0; - CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); + CpuCopy16(&gPlttBufferFaded[BG_PLTT_ID(2)], &gPlttBufferUnfaded[BG_PLTT_ID(2)], 3 * PLTT_SIZE_4BPP); BeginNormalPaletteFade(0xFFF9041C, 0, 0, 0x10, RGB_WHITE); // was 0xFFF9001C in R/S gTasks[taskId].func = Task_Sparkles_SprayAndFlash; PlaySE(SE_M_PETAL_DANCE); @@ -458,7 +458,7 @@ static void Task_Sparkles_SprayAndFlashTrade_Init(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].tTimer = 0; - CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); + CpuCopy16(&gPlttBufferFaded[BG_PLTT_ID(2)], &gPlttBufferUnfaded[BG_PLTT_ID(2)], 3 * PLTT_SIZE_4BPP); BeginNormalPaletteFade(0xFFF90400, 0, 0, 0x10, RGB_WHITE); // was 0xFFFF0001 in R/S gTasks[taskId].func = Task_Sparkles_SprayAndFlashTrade; PlaySE(SE_M_PETAL_DANCE); @@ -536,13 +536,13 @@ u8 CycleEvolutionMonSprite(u8 preEvoSpriteId, u8 postEvoSpriteId) gSprites[preEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[preEvoSpriteId].oam.matrixNum = MATRIX_PRE_EVO; gSprites[preEvoSpriteId].invisible = FALSE; - CpuSet(monPalette, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteId].oam.paletteNum * 16)], 16); + CpuSet(monPalette, &gPlttBufferFaded[OBJ_PLTT_ID(gSprites[preEvoSpriteId].oam.paletteNum)], 16); gSprites[postEvoSpriteId].callback = SpriteCB_EvolutionMonSprite; gSprites[postEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[postEvoSpriteId].oam.matrixNum = MATRIX_POST_EVO; gSprites[postEvoSpriteId].invisible = FALSE; - CpuSet(monPalette, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteId].oam.paletteNum * 16)], 16); + CpuSet(monPalette, &gPlttBufferFaded[OBJ_PLTT_ID(gSprites[postEvoSpriteId].oam.paletteNum)], 16); gTasks[taskId].tEvoStopped = FALSE; return taskId; diff --git a/src/evolution_scene.c b/src/evolution_scene.c index a3639d4c7413..ec331bf014d9 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -299,7 +299,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u gTasks[id].tEvoWasStopped = FALSE; gTasks[id].tPartyId = partyId; - memcpy(&sEvoStructPtr->savedPalette, &gPlttBufferUnfaded[0x20], sizeof(sEvoStructPtr->savedPalette)); + memcpy(&sEvoStructPtr->savedPalette, &gPlttBufferUnfaded[BG_PLTT_ID(2)], sizeof(sEvoStructPtr->savedPalette)); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); @@ -752,7 +752,7 @@ static void Task_EvolutionScene(u8 taskId) if (IsSEPlaying()) { m4aMPlayAllStop(); - memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, sizeof(sEvoStructPtr->savedPalette)); + memcpy(&gPlttBufferUnfaded[BG_PLTT_ID(2)], sEvoStructPtr->savedPalette, sizeof(sEvoStructPtr->savedPalette)); RestoreBgAfterAnim(); BeginNormalPaletteFade(0x1C, 0, 0x10, 0, RGB_BLACK); gTasks[taskId].tState++; @@ -1181,7 +1181,7 @@ static void Task_TradeEvolutionScene(u8 taskId) // Restore bg, do mon anim/cry Free(sBgAnimPal); EvoScene_DoMonAnimAndCry(sEvoStructPtr->postEvoSpriteId, gTasks[taskId].tPostEvoSpecies); - memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, sizeof(sEvoStructPtr->savedPalette)); + memcpy(&gPlttBufferUnfaded[BG_PLTT_ID(2)], sEvoStructPtr->savedPalette, sizeof(sEvoStructPtr->savedPalette)); gTasks[taskId].tState++; } break; diff --git a/src/expansion_intro.c b/src/expansion_intro.c index 8fdb7c1cb8bf..e37ea4b2e679 100644 --- a/src/expansion_intro.c +++ b/src/expansion_intro.c @@ -33,10 +33,10 @@ #define DIZZY_ANIM_SPEED 4 #define DIZZY_STARS_SPEED 12 -enum +enum { EXPANSION_INTRO_BG2, - EXPANSION_INTRO_BG3 + EXPANSION_INTRO_BG3 }; enum diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 96e9173c9bcb..a1575ba00e61 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -61,8 +61,8 @@ static s8 GetWarpEventAtMapPosition(struct MapHeader *, struct MapPosition *); static void SetupWarp(struct MapHeader *, s8, struct MapPosition *); static bool8 TryDoorWarp(struct MapPosition *, u16, u8); static s8 GetWarpEventAtPosition(struct MapHeader *, u16, u16, u8); -static u8 *GetCoordEventScriptAtPosition(struct MapHeader *, u16, u16, u8); -static struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *, u16, u16, u8); +static const u8 *GetCoordEventScriptAtPosition(struct MapHeader *, u16, u16, u8); +static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *, u16, u16, u8); static bool8 TryStartCoordEventScript(struct MapPosition *); static bool8 TryStartWarpEventScript(struct MapPosition *, u16); static bool8 TryStartMiscWalkingScripts(u16); @@ -334,7 +334,7 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction) { - struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); + const struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); if (bgEvent == NULL) return NULL; @@ -516,7 +516,7 @@ static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileB static bool8 TryStartCoordEventScript(struct MapPosition *position) { - u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); + const u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); if (script == NULL) return FALSE; @@ -565,11 +565,13 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED_MOVE) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior)) { + #if OW_POISON_DAMAGE < GEN_5 if (UpdatePoisonStepCounter() == TRUE) { ScriptContext_SetupScript(EventScript_FieldPoison); return TRUE; } + #endif if (ShouldEggHatch()) { IncrementGameStat(GAME_STAT_HATCHED_EGGS); @@ -883,7 +885,7 @@ static bool8 TryDoorWarp(struct MapPosition *position, u16 metatileBehavior, u8 static s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) { s32 i; - struct WarpEvent *warpEvent = mapHeader->events->warps; + const struct WarpEvent *warpEvent = mapHeader->events->warps; u8 warpCount = mapHeader->events->warpCount; for (i = 0; i < warpCount; i++, warpEvent++) @@ -897,7 +899,7 @@ static s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 e return WARP_ID_NONE; } -static u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent) +static const u8 *TryRunCoordEventScript(const struct CoordEvent *coordEvent) { if (coordEvent != NULL) { @@ -917,10 +919,10 @@ static u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent) return NULL; } -static u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) +static const u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) { s32 i; - struct CoordEvent *coordEvents = mapHeader->events->coordEvents; + const struct CoordEvent *coordEvents = mapHeader->events->coordEvents; u8 coordEventCount = mapHeader->events->coordEventCount; for (i = 0; i < coordEventCount; i++) @@ -929,7 +931,7 @@ static u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 { if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0) { - u8 *script = TryRunCoordEventScript(&coordEvents[i]); + const u8 *script = TryRunCoordEventScript(&coordEvents[i]); if (script != NULL) return script; } @@ -938,15 +940,15 @@ static u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 return NULL; } -u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position) +const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position) { return GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); } -static struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) +static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) { u8 i; - struct BgEvent *bgEvents = mapHeader->events->bgEvents; + const struct BgEvent *bgEvents = mapHeader->events->bgEvents; u8 bgEventCount = mapHeader->events->bgEventCount; for (i = 0; i < bgEventCount; i++) diff --git a/src/field_effect.c b/src/field_effect.c index b5880b3fcbd7..b8e3cecc6672 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -900,7 +900,8 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf return CreateSprite(&spriteTemplate, x, y, subpriority); } -void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest) +// Unused +static void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest) { LZDecompressVram(gTrainerFrontPicTable[gender].data, dest); LoadCompressedPalette(gTrainerFrontPicPaletteTable[gender].data, palOffset, PLTT_SIZE_4BPP); @@ -1190,14 +1191,14 @@ static void PokeballGlowEffect_Flash1(struct Sprite *sprite) sprite->data[3]++; } phase = (sprite->sCounter + 3) & 3; - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x108, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 8, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); phase = (sprite->sCounter + 2) & 3; - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x106, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 6, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); phase = (sprite->sCounter + 1) & 3; - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x102, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 2, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); phase = sprite->sCounter; - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x105, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x103, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 5, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 3, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); if (sprite->data[3] > 2) { sprite->sState++; @@ -1221,19 +1222,17 @@ static void PokeballGlowEffect_Flash2(struct Sprite *sprite) } } phase = sprite->sCounter; - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x108, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x106, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x102, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x105, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x103, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 8, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 6, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 2, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 5, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW)) + 3, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]); } static void PokeballGlowEffect_WaitAfterFlash(struct Sprite *sprite) { if ((--sprite->sTimer) == 0) - { sprite->sState++; - } } static void PokeballGlowEffect_Dummy(struct Sprite *sprite) diff --git a/src/field_poison.c b/src/field_poison.c index fcb47acdb8b2..202be30e2018 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -15,11 +15,12 @@ #include "task.h" #include "trainer_hill.h" #include "constants/field_poison.h" +#include "constants/form_change_types.h" #include "constants/party_menu.h" static bool32 IsMonValidSpecies(struct Pokemon *pokemon) { - u16 species = GetMonData(pokemon, MON_DATA_SPECIES2); + u16 species = GetMonData(pokemon, MON_DATA_SPECIES_OR_EGG); if (species == SPECIES_NONE || species == SPECIES_EGG) return FALSE; @@ -44,7 +45,9 @@ static void FaintFromFieldPoison(u8 partyIdx) struct Pokemon *pokemon = &gPlayerParty[partyIdx]; u32 status = STATUS1_NONE; +#if OW_POISON_DAMAGE < GEN_4 AdjustFriendship(pokemon, FRIENDSHIP_EVENT_FAINT_FIELD_PSN); +#endif SetMonData(pokemon, MON_DATA_STATUS, &status); GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1); StringGet_Nickname(gStringVar1); @@ -53,7 +56,11 @@ static void FaintFromFieldPoison(u8 partyIdx) static bool32 MonFaintedFromPoison(u8 partyIdx) { struct Pokemon *pokemon = &gPlayerParty[partyIdx]; +#if OW_POISON_DAMAGE < GEN_4 if (IsMonValidSpecies(pokemon) && GetMonData(pokemon, MON_DATA_HP) == 0 && GetAilmentFromStatus(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN) +#else + if (IsMonValidSpecies(pokemon) && GetMonData(pokemon, MON_DATA_HP) == 1 && GetAilmentFromStatus(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN) +#endif return TRUE; return FALSE; @@ -127,8 +134,16 @@ s32 DoPoisonFieldEffect(void) { // Apply poison damage hp = GetMonData(pokemon, MON_DATA_HP); + #if OW_POISON_DAMAGE < GEN_4 if (hp == 0 || --hp == 0) + { + TryFormChange(i, B_SIDE_PLAYER, FORM_CHANGE_FAINT); + numFainted++; + } + #else + if (hp == 1 || --hp == 1) numFainted++; + #endif SetMonData(pokemon, MON_DATA_HP, &hp); numPoisoned++; diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 7c98703c6b36..a2b3d6366fa7 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -264,7 +264,7 @@ void ExecuteTruckSequence(void) MapGridSetMetatileIdAt(4 + MAP_OFFSET, 3 + MAP_OFFSET, METATILE_InsideOfTruck_DoorClosedFloor_Bottom); DrawWholeMapView(); LockPlayerFieldControls(); - CpuFastFill(0, gPlttBufferFaded, 0x400); + CpuFastFill(0, gPlttBufferFaded, PLTT_SIZE); CreateTask(Task_HandleTruckSequence, 0xA); } diff --git a/src/field_specials.c b/src/field_specials.c index 3ae01543c3a4..6fdec2a5f09d 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1015,7 +1015,7 @@ static void PCTurnOnEffect(struct Task *task) if (task->tTimer == 6) { task->tTimer = 0; - + // Get where the PC should be, depending on where the player is looking. playerDirection = GetPlayerFacingDirection(); switch (playerDirection) @@ -1037,7 +1037,7 @@ static void PCTurnOnEffect(struct Task *task) // Update map PCTurnOnEffect_SetMetatile(task->tIsScreenOn, dx, dy); DrawWholeMapView(); - + // Screen flickers 5 times. Odd number and starting with the // screen off means the animation ends with the screen on. task->tIsScreenOn ^= 1; @@ -1448,7 +1448,7 @@ bool8 IsStarterInParty(void) u8 partyCount = CalculatePlayerPartyCount(); for (i = 0; i < partyCount; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == starter) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL) == starter) return TRUE; } return FALSE; @@ -1541,8 +1541,8 @@ u8 GetLeadMonIndex(void) u8 partyCount = CalculatePlayerPartyCount(); for (i = 0; i < partyCount; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_NONE) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL) != SPECIES_EGG + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL) != SPECIES_NONE) return i; } return 0; @@ -1550,7 +1550,7 @@ u8 GetLeadMonIndex(void) u16 ScriptGetPartyMonSpecies(void) { - return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL); + return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES_OR_EGG, NULL); } // Removed for Emerald diff --git a/src/field_weather.c b/src/field_weather.c index 92863dee5f26..73aef3746d72 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -156,7 +156,7 @@ void StartWeather(void) if (!FuncIsActiveTask(Task_WeatherMain)) { u8 index = AllocSpritePalette(PALTAG_WEATHER); - CpuCopy32(gFogPalette, &gPlttBufferUnfaded[0x100 + index * 16], 32); + CpuCopy32(gFogPalette, &gPlttBufferUnfaded[OBJ_PLTT_ID(index)], PLTT_SIZE_4BPP); BuildColorMaps(); gWeatherPtr->contrastColorMapSpritePalIndex = index; gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2); @@ -471,7 +471,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) if (colorMapIndex > 0) { colorMapIndex--; - palOffset = startPalIndex * 16; + palOffset = PLTT_ID(startPalIndex); numPalettes += startPalIndex; curPalIndex = startPalIndex; @@ -481,7 +481,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_NONE) { // No palette change. - CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + CpuFastCopy(&gPlttBufferUnfaded[palOffset], &gPlttBufferFaded[palOffset], PLTT_SIZE_4BPP); palOffset += 16; } else @@ -511,7 +511,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) { // A negative gammIndex value means that the blending will come from the special Drought weather's palette tables. colorMapIndex = -colorMapIndex - 1; - palOffset = startPalIndex * 16; + palOffset = PLTT_ID(startPalIndex); numPalettes += startPalIndex; curPalIndex = startPalIndex; @@ -520,7 +520,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_NONE) { // No palette change. - CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + CpuFastCopy(&gPlttBufferUnfaded[palOffset], &gPlttBufferFaded[palOffset], PLTT_SIZE_4BPP); palOffset += 16; } else @@ -538,7 +538,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) else { // No palette blending. - CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); + CpuFastCopy(&gPlttBufferUnfaded[PLTT_ID(startPalIndex)], &gPlttBufferFaded[PLTT_ID(startPalIndex)], numPalettes * PLTT_SIZE_4BPP); } } @@ -552,7 +552,7 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap u8 gBlend = color.g; u8 bBlend = color.b; - palOffset = BG_PLTT_ID(startPalIndex); + palOffset = PLTT_ID(startPalIndex); numPalettes += startPalIndex; colorMapIndex--; curPalIndex = startPalIndex; @@ -666,8 +666,8 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) { if (LightenSpritePaletteInFog(curPalIndex)) { - u16 palEnd = (curPalIndex + 1) * 16; - u16 palOffset = curPalIndex * 16; + u16 palEnd = PLTT_ID(curPalIndex + 1); + u16 palOffset = PLTT_ID(curPalIndex); while (palOffset < palEnd) { @@ -786,7 +786,7 @@ void FadeScreen(u8 mode, s8 delay) if (fadeOut) { if (useWeatherPal) - CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2); + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_SIZE); BeginNormalPaletteFade(PALETTES_ALL, delay, 0, 16, fadeColor); gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; @@ -824,14 +824,14 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) { if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL) MarkFogSpritePalToLighten(paletteIndex); - paletteIndex *= 16; + paletteIndex = PLTT_ID(paletteIndex); for (i = 0; i < 16; i++) gPlttBufferFaded[paletteIndex + i] = gWeatherPtr->fadeDestColor; } break; case WEATHER_PAL_STATE_SCREEN_FADING_OUT: paletteIndex = PLTT_ID(paletteIndex); - CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, PLTT_SIZE_4BPP); + CpuFastCopy(&gPlttBufferFaded[paletteIndex], &gPlttBufferUnfaded[paletteIndex], PLTT_SIZE_4BPP); BlendPalette(paletteIndex, 16, gPaletteFade.y, gPaletteFade.blendColor); break; // WEATHER_PAL_STATE_CHANGING_WEATHER diff --git a/src/fieldmap.c b/src/fieldmap.c index 89d6b602c2e4..bdacf7ab25f8 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -36,7 +36,7 @@ struct BackupMapLayout gBackupMapLayout; static const struct ConnectionFlags sDummyConnectionFlags = {0}; static void InitMapLayoutData(struct MapHeader *mapHeader); -static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height); +static void InitBackupMapLayoutData(const u16 *map, u16 width, u16 height); static void FillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); static void FillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); static void FillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); @@ -44,14 +44,14 @@ static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHead static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader); static void LoadSavedMapView(void); static bool8 SkipCopyingMetatileFromSavedMap(u16 *mapBlock, u16 mapWidth, u8 yMode); -static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y); -static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, struct MapConnection *connection); +static const struct MapConnection *GetIncomingConnection(u8 direction, int x, int y); +static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, const struct MapConnection *connection); static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, int offset); #define GetBorderBlockAt(x, y)({ \ u16 block; \ int i; \ - u16 *border = gMapHeader.mapLayout->border; \ + const u16 *border = gMapHeader.mapLayout->border; /* Unused, they read it again below */ \ \ i = (x + 1) & 1; \ i += ((y + 1) & 1) * 2; \ @@ -63,7 +63,7 @@ static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, #define GetMapGridBlockAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? gBackupMapLayout.map[x + gBackupMapLayout.width * y] : GetBorderBlockAt(x, y)) -struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection) +const struct MapHeader *const GetMapHeaderFromConnection(const struct MapConnection *connection) { return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum); } @@ -116,7 +116,7 @@ static void InitMapLayoutData(struct MapHeader *mapHeader) } } -static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height) +static void InitBackupMapLayoutData(const u16 *map, u16 width, u16 height) { u16 *dest; int y; @@ -133,7 +133,7 @@ static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height) static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { int count; - struct MapConnection *connection; + const struct MapConnection *connection; int i; if (mapHeader->connections) @@ -171,7 +171,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) static void FillConnection(int x, int y, struct MapHeader const *connectedMapHeader, int x2, int y2, int width, int height) { int i; - u16 *src; + const u16 *src; u16 *dest; int mapWidth; @@ -619,7 +619,7 @@ bool32 CanCameraMoveInDirection(int direction) return TRUE; } -static void SetPositionFromConnection(struct MapConnection *connection, int direction, int x, int y) +static void SetPositionFromConnection(const struct MapConnection *connection, int direction, int x, int y) { struct MapHeader const *mapHeader; mapHeader = GetMapHeaderFromConnection(connection); @@ -647,7 +647,7 @@ static void SetPositionFromConnection(struct MapConnection *connection, int dire bool8 CameraMove(int x, int y) { int direction; - struct MapConnection *connection; + const struct MapConnection *connection; int old_x, old_y; gCamera.active = FALSE; direction = GetPostCameraMoveMapBorderId(x, y); @@ -675,11 +675,11 @@ bool8 CameraMove(int x, int y) return gCamera.active; } -static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y) +static const struct MapConnection *GetIncomingConnection(u8 direction, int x, int y) { int count; int i; - struct MapConnection *connection; + const struct MapConnection *connection; const struct MapConnections *connections = gMapHeader.connections; #ifdef UBFIX // UB: Multiple possible null dereferences @@ -696,7 +696,7 @@ static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y) return NULL; } -static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, struct MapConnection *connection) +static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, const struct MapConnection *connection) { struct MapHeader const *mapHeader; mapHeader = GetMapHeaderFromConnection(connection); @@ -737,7 +737,7 @@ static int IsCoordInConnectingMap(int coord, int max) return FALSE; } -static int IsPosInConnectingMap(struct MapConnection *connection, int x, int y) +static int IsPosInConnectingMap(const struct MapConnection *connection, int x, int y) { struct MapHeader const *mapHeader; mapHeader = GetMapHeaderFromConnection(connection); @@ -753,10 +753,10 @@ static int IsPosInConnectingMap(struct MapConnection *connection, int x, int y) return FALSE; } -struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y) +const struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y) { int count; - struct MapConnection *connection; + const struct MapConnection *connection; int i; u8 direction; if (!gMapHeader.connections) @@ -871,7 +871,7 @@ static void ApplyGlobalTintToPaletteSlot(u8 slot, u8 count) } -void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) +static void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) { u16 black = RGB_BLACK; diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 87d011741028..5c7d23b5ac7e 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -270,7 +270,7 @@ static void Task_ExitCaveTransition4(u8 taskId) if (count < 8) { gTasks[taskId].data[2]++; - LoadPalette(&sCaveTransitionPalette_Exit[count], BG_PLTT_ID(14), PLTT_SIZEOF(8) - PLTT_SIZEOF(count)); + LoadPalette(&sCaveTransitionPalette_Exit[count], BG_PLTT_ID(14), sizeof(sCaveTransitionPalette_Exit) - PLTT_SIZEOF(count)); } else { diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 5ed133e5dbd2..a28b6fee6100 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -52,8 +52,8 @@ void StartSweetScentFieldEffect(void) u32 palettes = ~(1 << (gSprites[GetPlayerAvatarSpriteId()].oam.paletteNum + 16) | (1 << 13) | (1 << 14) | (1 << 15)); PlaySE(SE_M_SWEET_SCENT); - CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100); - CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100); + CpuFastCopy(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_SIZE); + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_SIZE); BeginNormalPaletteFade(palettes, 4, 0, 8, RGB_RED); taskId = CreateTask(TrySweetScentEncounter, 0); gTasks[taskId].data[0] = 0; @@ -91,7 +91,7 @@ static void FailSweetScentEncounter(u8 taskId) { if (!gPaletteFade.active) { - CpuFastSet(gPaletteDecompressionBuffer, gPlttBufferUnfaded, 0x100); + CpuFastCopy(gPaletteDecompressionBuffer, gPlttBufferUnfaded, PLTT_SIZE); SetWeatherPalStateIdle(); ScriptContext_SetupScript(EventScript_FailSweetScent); DestroyTask(taskId); diff --git a/src/frontier_util.c b/src/frontier_util.c index 1863aa622e91..85e016a26b30 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -497,7 +497,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ }, }; -static const u8 sBattlePointAwards[NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUNT][30] = +static const u8 sBattlePointAwards[NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUNT][30] = { /* facility, mode, tier */ [FRONTIER_FACILITY_TOWER] = /* Tier: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 */ @@ -1990,7 +1990,7 @@ static void CheckPartyIneligibility(void) numEligibleMons = 0; do { - u16 species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2); + u16 species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES_OR_EGG); u16 heldItem = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); u8 level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); u16 hp = GetMonData(&gPlayerParty[monId], MON_DATA_HP); diff --git a/src/graphics.c b/src/graphics.c index 61d0fdf757e1..e7a0cbe6425f 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -340,7 +340,7 @@ const u32 gBattleAnimSpriteGfx_BlackSmoke[] = INCBIN_U32("graphics/battle_anims/ const u32 gBattleAnimSpritePal_BlackSmoke[] = INCBIN_U32("graphics/battle_anims/sprites/black_smoke.gbapal.lz"); const u32 gBattleAnimSpriteGfx_BlackBall[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlackBall[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball.bin"); +const u32 gBattleAnimSpritePal_BlackBall[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball.gbapal.lz"); const u32 gBattleAnimSpritePal_Glass[] = INCBIN_U32("graphics/battle_anims/sprites/glass.gbapal.lz"); const u32 gBattleAnimSpriteGfx_Glass[] = INCBIN_U32("graphics/battle_anims/sprites/glass.4bpp.lz"); @@ -576,7 +576,7 @@ const u16 gBattleAnimUnused_Unknown2[] = INCBIN_U16("graphics/battle_anims/unuse const u16 gBattleAnimUnused_Unknown3[] = INCBIN_U16("graphics/battle_anims/unused/unknown_3.bin"); const u32 gBattleAnimUnusedGfx_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.8bpp.lz"); -const u16 gBattleAnimUnusedPal_LineSketch2[] = INCBIN_U16("graphics/battle_anims/unused/line_sketch_2_pal.bin"); +const u16 gBattleAnimUnusedPal_LineSketch2[] = INCBIN_U16("graphics/battle_anims/unused/line_sketch_2.gbapal.lz"); const u32 gBattleAnimUnusedTilemap_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.bin.lz"); const u32 gBattleAnimSpriteGfx_BlueLines[] = INCBIN_U32("graphics/battle_anims/sprites/blue_lines.4bpp.lz"); @@ -1917,10 +1917,10 @@ const u32 gNamingScreenKeyboardSymbols_Tilemap[] = INCBIN_U32("graphics/naming_s const u16 gUnionRoomChat_Background_Pal[] = INCBIN_U16("graphics/union_room_chat/background.gbapal"); const u32 gUnionRoomChat_Background_Gfx[] = INCBIN_U32("graphics/union_room_chat/background.4bpp.lz"); const u32 gUnionRoomChat_Background_Tilemap[] = INCBIN_U32("graphics/union_room_chat/background.bin.lz"); -const u16 gUnionRoomChat_Window_Pal1[] = INCBIN_U16("graphics/union_room_chat/window_1.gbapal"); -const u16 gUnionRoomChat_Window_Pal2[] = INCBIN_U16("graphics/union_room_chat/window_2.gbapal"); -const u32 gUnionRoomChat_Border_Gfx[] = INCBIN_U32("graphics/union_room_chat/border.4bpp.lz"); -const u32 gUnionRoomChat_Border_Tilemap[] = INCBIN_U32("graphics/union_room_chat/border.bin.lz"); +const u16 gUnionRoomChat_InputText_Pal[] = INCBIN_U16("graphics/union_room_chat/input_text.gbapal"); +const u16 gUnionRoomChat_Keyboard_Pal[] = INCBIN_U16("graphics/union_room_chat/keyboard.gbapal"); +const u32 gUnionRoomChat_Keyboard_Gfx[] = INCBIN_U32("graphics/union_room_chat/keyboard.4bpp.lz"); +const u32 gUnionRoomChat_Keyboard_Tilemap[] = INCBIN_U32("graphics/union_room_chat/keyboard.bin.lz"); const u32 gUnionRoomChat_RButtonLabels[] = INCBIN_U32("graphics/union_room_chat/r_button_labels.4bpp.lz"); const u16 gTilesetPalettes_General[][16] = diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 2be4132f5b7b..18b4c3e4bf7a 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -445,7 +445,7 @@ static void Task_Hof_InitMonData(u8 taskId) u8 nick[POKEMON_NAME_LENGTH + 2]; if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) { - sHofMonPtr->mon[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + sHofMonPtr->mon[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); sHofMonPtr->mon[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID); sHofMonPtr->mon[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); sHofMonPtr->mon[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); @@ -740,7 +740,7 @@ static void Task_Hof_ExitOnKeyPressed(u8 taskId) static void Task_Hof_HandlePaletteOnExit(u8 taskId) { - CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_SIZE); BeginNormalPaletteFade(PALETTES_ALL, 8, 0, 0x10, RGB_BLACK); gTasks[taskId].func = Task_Hof_HandleExit; } @@ -1044,7 +1044,7 @@ static void Task_HofPC_HandlePaletteOnExit(u8 taskId) { struct HallofFameTeam *fameTeam; - CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_SIZE); fameTeam = (struct HallofFameTeam *)(gDecompressionBuffer); fameTeam->mon[0] = sDummyFameMon; ComputerScreenCloseEffect(0, 0, 0); @@ -1269,7 +1269,7 @@ static void ClearVramOamPltt_LoadHofPal(void) DmaFill16(3, 0, plttOffset, plttSize); ResetPaletteFade(); - LoadPalette(sHallOfFame_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(sHallOfFame_Pal, BG_PLTT_ID(0), sizeof(sHallOfFame_Pal)); } static void LoadHofGfx(void) diff --git a/src/intro.c b/src/intro.c index 38b2f0027378..bfc23a74b446 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1193,13 +1193,13 @@ void Task_Scene1_Load(u8 taskId) LoadSpritePalettes(sSpritePalettes_Intro1); LoadCompressedSpriteSheet(sSpriteSheet_Sparkle); LoadSpritePalettes(sSpritePalette_Sparkle); - CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1F0], 0x20); - CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1E1], 0x1E); - CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1D2], 0x1C); - CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1C3], 0x1A); - CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1B4], 0x18); - CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1A5], 0x16); - CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x196], 0x14); + CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_ID(0)], &gPlttBufferUnfaded[OBJ_PLTT_ID(15) + 0], PLTT_SIZEOF(16 - 0)); + CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_ID(0)], &gPlttBufferUnfaded[OBJ_PLTT_ID(14) + 1], PLTT_SIZEOF(16 - 1) + 1); // Copying an extra half color? + CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_ID(0)], &gPlttBufferUnfaded[OBJ_PLTT_ID(13) + 2], PLTT_SIZEOF(16 - 2)); + CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_ID(0)], &gPlttBufferUnfaded[OBJ_PLTT_ID(12) + 3], PLTT_SIZEOF(16 - 3)); + CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_ID(0)], &gPlttBufferUnfaded[OBJ_PLTT_ID(11) + 4], PLTT_SIZEOF(16 - 4)); + CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_ID(0)], &gPlttBufferUnfaded[OBJ_PLTT_ID(10) + 5], PLTT_SIZEOF(16 - 5)); + CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_ID(0)], &gPlttBufferUnfaded[OBJ_PLTT_ID( 9) + 6], PLTT_SIZEOF(16 - 6)); CreateGameFreakLogoSprites(120, 80, 0); gTasks[taskId].sBigDropSpriteId = CreateWaterDrop(236, -14, 0x200, 1, 0x78, FALSE); gTasks[taskId].func = Task_Scene1_FadeIn; @@ -1889,7 +1889,7 @@ static void Task_Scene3_Groudon(u8 taskId) if (--tDelay == 0) { tDelay = 2; - CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[31], sizeof(u16)); + CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[BG_PLTT_ID(1) + 15], PLTT_SIZEOF(1)); tPalIdx += 2; if (tPalIdx == 0x1EC) tState++; @@ -1906,7 +1906,7 @@ static void Task_Scene3_Groudon(u8 taskId) if (--tDelay == 0) { tDelay = 2; - CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[31], sizeof(u16)); + CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[BG_PLTT_ID(1) + 15], PLTT_SIZEOF(1)); tPalIdx -= 2; if (tPalIdx == 0x1E0) { @@ -2148,7 +2148,7 @@ static void Task_Scene3_Kyogre(u8 taskId) if (--tDelay == 0) { tDelay = 4; - CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[47], sizeof(u16)); + CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[BG_PLTT_ID(2) + 15], PLTT_SIZEOF(1)); tPalIdx -= 2; if (tPalIdx == 0x1E0) tState++; @@ -2166,7 +2166,7 @@ static void Task_Scene3_Kyogre(u8 taskId) if (--tDelay == 0) { tDelay = 4; - CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[47], sizeof(u16)); + CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[BG_PLTT_ID(2) + 15], PLTT_SIZEOF(1)); tPalIdx += 2; if (tPalIdx == 0x1EE) { @@ -2497,7 +2497,7 @@ static void SpriteCB_Lightning(struct Sprite *sprite) sprite->sPalIdx = 0x1C2; sprite->sState++; case 1: - CpuCopy16(&gIntro3Bg_Pal[sprite->sPalIdx], &gPlttBufferFaded[93], 2); + CpuCopy16(&gIntro3Bg_Pal[sprite->sPalIdx], &gPlttBufferFaded[BG_PLTT_ID(5) + 13], PLTT_SIZEOF(1)); sprite->sPalIdx += 2; if (sprite->sPalIdx != 0x1CE) break; @@ -2508,7 +2508,7 @@ static void SpriteCB_Lightning(struct Sprite *sprite) if (--sprite->sDelay == 0) { sprite->sDelay = 4; - CpuCopy16(&gIntro3Bg_Pal[sprite->sPalIdx], &gPlttBufferFaded[93], 2); + CpuCopy16(&gIntro3Bg_Pal[sprite->sPalIdx], &gPlttBufferFaded[BG_PLTT_ID(5) + 13], PLTT_SIZEOF(1)); sprite->sPalIdx -= 2; if (sprite->sPalIdx == 0x1C0) DestroySprite(sprite); @@ -2611,7 +2611,7 @@ static void Task_RayquazaAttack(u8 taskId) case 0: if ((data[2] & 1) != 0) { - CpuCopy16(&gIntro3Bg_Pal[0x1A2 + data[1] * 2], &gPlttBufferFaded[94], 2); + CpuCopy16(&gIntro3Bg_Pal[0x1A2 + data[1] * 2], &gPlttBufferFaded[BG_PLTT_ID(5) + 14], PLTT_SIZEOF(1)); data[1]++; } if (data[1] == 6) @@ -2626,7 +2626,7 @@ static void Task_RayquazaAttack(u8 taskId) { if ((data[2] & 1) != 0) { - CpuCopy16(&gIntro3Bg_Pal[0x1A2 + data[1] * 2], &gPlttBufferFaded[88], 2); + CpuCopy16(&gIntro3Bg_Pal[0x1A2 + data[1] * 2], &gPlttBufferFaded[BG_PLTT_ID(5) + 8], PLTT_SIZEOF(1)); data[1]++; } if (data[1] == 6) @@ -2645,7 +2645,7 @@ static void Task_RayquazaAttack(u8 taskId) { if ((data[2] & 1) != 0) { - CpuCopy16(&gIntro3Bg_Pal[0x182 + data[1] * 2], &gPlttBufferFaded[92], 2); + CpuCopy16(&gIntro3Bg_Pal[0x182 + data[1] * 2], &gPlttBufferFaded[BG_PLTT_ID(5) + 12], PLTT_SIZEOF(1)); data[1]++; } if (data[1] == 6) @@ -3202,16 +3202,16 @@ static void SpriteCB_LogoLetter(struct Sprite *sprite) sprite->sColorDelay = 2; if (sprite->sTimer != 0) { - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[0x11F], 2); - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[0x114], 2); - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[0x11A], 2); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 15], PLTT_SIZEOF(1)); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 4], PLTT_SIZEOF(1)); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 10], PLTT_SIZEOF(1)); sprite->sTimer--; } else { - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[0x11F], 2); - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[0x114], 2); - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[0x11A], 2); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 15], PLTT_SIZEOF(1)); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 4], PLTT_SIZEOF(1)); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 10], PLTT_SIZEOF(1)); sprite->sState++; } } @@ -3231,9 +3231,9 @@ static void SpriteCB_LogoLetter(struct Sprite *sprite) sprite->sColorDelay = 2; if (sprite->sTimer <= COLOR_CHANGES) { - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[0x11F], 2); - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[0x114], 2); - CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[0x11A], 2); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 15], PLTT_SIZEOF(1)); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 4], PLTT_SIZEOF(1)); + CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[OBJ_PLTT_ID(1) + 10], PLTT_SIZEOF(1)); sprite->sTimer++; } else diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index 7593a296e882..05b5a3a0507a 100644 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -998,13 +998,13 @@ void CycleSceneryPalette(u8 mode) break; if (gMain.vblankCounter1 & 4) { - x = gPlttBufferUnfaded[9]; - y = gPlttBufferUnfaded[10]; + x = gPlttBufferUnfaded[BG_PLTT_ID(0) + 9]; + y = gPlttBufferUnfaded[BG_PLTT_ID(0) + 10]; } else { - x = gPlttBufferUnfaded[10]; - y = gPlttBufferUnfaded[9]; + x = gPlttBufferUnfaded[BG_PLTT_ID(0) + 10]; + y = gPlttBufferUnfaded[BG_PLTT_ID(0) + 9]; } LoadPalette(&x, BG_PLTT_ID(0) + 9, sizeof(x)); LoadPalette(&y, BG_PLTT_ID(0) + 10, sizeof(y)); diff --git a/src/item.c b/src/item.c index db24cb82e947..2c6937244605 100644 --- a/src/item.c +++ b/src/item.c @@ -7,12 +7,15 @@ #include "malloc.h" #include "secret_base.h" #include "item_menu.h" +#include "party_menu.h" #include "strings.h" #include "load_save.h" #include "item_use.h" #include "battle_pyramid.h" #include "battle_pyramid_bag.h" +#include "constants/battle.h" #include "constants/items.h" +#include "constants/item_effects.h" #include "constants/hold_effects.h" static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count); @@ -922,14 +925,36 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId) return gItems[SanitizeItemId(itemId)].fieldUseFunc; } +// Returns an item's battle effect script ID. u8 ItemId_GetBattleUsage(u16 itemId) { - return gItems[SanitizeItemId(itemId)].battleUsage; -} - -ItemUseFunc ItemId_GetBattleFunc(u16 itemId) -{ - return gItems[SanitizeItemId(itemId)].battleUseFunc; + u16 item = SanitizeItemId(itemId); + // Handle E-Reader berries. + if (item == ITEM_ENIGMA_BERRY_E_READER) + { + switch (GetItemEffectType(gSpecialVar_ItemId)) + { + case ITEM_EFFECT_X_ITEM: + return EFFECT_ITEM_INCREASE_STAT; + case ITEM_EFFECT_HEAL_HP: + return EFFECT_ITEM_RESTORE_HP; + case ITEM_EFFECT_CURE_POISON: + case ITEM_EFFECT_CURE_SLEEP: + case ITEM_EFFECT_CURE_BURN: + case ITEM_EFFECT_CURE_FREEZE_FROSTBITE: + case ITEM_EFFECT_CURE_PARALYSIS: + case ITEM_EFFECT_CURE_ALL_STATUS: + case ITEM_EFFECT_CURE_CONFUSION: + case ITEM_EFFECT_CURE_INFATUATION: + return EFFECT_ITEM_CURE_STATUS; + case ITEM_EFFECT_HEAL_PP: + return EFFECT_ITEM_RESTORE_PP; + default: + return 0; + } + } + else + return gItems[item].battleUsage; } u8 ItemId_GetSecondaryId(u16 itemId) @@ -941,3 +966,38 @@ u8 ItemId_GetFlingPower(u16 itemId) { return gItems[SanitizeItemId(itemId)].flingPower; } + + +u32 GetItemStatus1Mask(u16 itemId) +{ + const u8 *effect = GetItemEffect(itemId); + switch (effect[3]) + { + case ITEM3_PARALYSIS: + return STATUS1_PARALYSIS; + case ITEM3_FREEZE: + return STATUS1_FREEZE | STATUS1_FROSTBITE; + case ITEM3_BURN: + return STATUS1_BURN; + case ITEM3_POISON: + return STATUS1_POISON | STATUS1_TOXIC_POISON; + case ITEM3_SLEEP: + return STATUS1_SLEEP; + case ITEM3_STATUS_ALL: + return STATUS1_ANY; + } + return 0; +} + +u32 GetItemStatus2Mask(u16 itemId) +{ + const u8 *effect = GetItemEffect(itemId); + if (effect[3] & ITEM3_STATUS_ALL) + return STATUS2_INFATUATION | STATUS2_CONFUSION; + else if (effect[0] & ITEM0_INFATUATION) + return STATUS2_INFATUATION; + else if (effect[3] & ITEM3_CONFUSION) + return STATUS2_CONFUSION; + else + return 0; +} diff --git a/src/item_menu.c b/src/item_menu.c index 4c66b092391d..22ce3d89bc81 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -249,7 +249,7 @@ static const struct ListMenuTemplate sItemListMenu = .itemPrintFunc = BagMenu_ItemPrintCallback, .totalItems = 0, .maxShowed = 0, - .windowId = 0, + .windowId = WIN_ITEM_LIST, .header_X = 0, .item_X = 8, .cursor_X = 0, @@ -1985,11 +1985,18 @@ static void ItemMenu_Cancel(u8 taskId) static void ItemMenu_UseInBattle(u8 taskId) { - if (ItemId_GetBattleFunc(gSpecialVar_ItemId)) - { - RemoveContextWindow(); - ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); - } + // Safety check + u16 type = ItemId_GetType(gSpecialVar_ItemId); + if (!ItemId_GetBattleUsage(gSpecialVar_ItemId)) + return; + + RemoveContextWindow(); + if (type == ITEM_USE_BAG_MENU) + ItemUseInBattle_BagMenu(taskId); + else if (type == ITEM_USE_PARTY_MENU) + ItemUseInBattle_PartyMenu(taskId); + else if (type == ITEM_USE_PARTY_MENU_MOVES) + ItemUseInBattle_PartyMenuChooseMove(taskId); } void CB2_ReturnToBagMenuPocket(void) diff --git a/src/item_use.c b/src/item_use.c index dbdcc16d6daa..2f703a3a9a5b 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -75,6 +75,7 @@ static void Task_CloseCantUseKeyItemMessage(u8); static void SetDistanceOfClosestHiddenItem(u8, s16, s16); static void CB2_OpenPokeblockFromBag(void); static void ItemUseOnFieldCB_Honey(u8 taskId); +static bool32 CannotUseBagBattleItem(u16 itemId); // EWRAM variables EWRAM_DATA static void(*sItemUseOnFieldCB)(u8 taskId) = NULL; @@ -86,9 +87,10 @@ EWRAM_DATA static void(*sItemUseOnFieldCB)(u8 taskId) = NULL; // Never occurs in vanilla, but can occur with improperly created items static const MainCallback sItemUseCallbacks[] = { - [ITEM_USE_PARTY_MENU - 1] = CB2_ShowPartyMenuForItemUse, - [ITEM_USE_FIELD - 1] = CB2_ReturnToField, - [ITEM_USE_PBLOCK_CASE - 1] = NULL, + [ITEM_USE_PARTY_MENU - 1] = CB2_ShowPartyMenuForItemUse, + [ITEM_USE_FIELD - 1] = CB2_ReturnToField, + [ITEM_USE_PBLOCK_CASE - 1] = NULL, + [ITEM_USE_PARTY_MENU_MOVES - 1] = CB2_ShowPartyMenuForItemUse, }; static const u8 sClockwiseDirections[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST}; @@ -380,7 +382,7 @@ static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 ta static bool8 IsHiddenItemPresentAtCoords(const struct MapEvents *events, s16 x, s16 y) { u8 bgEventCount = events->bgEventCount; - struct BgEvent *bgEvent = events->bgEvents; + const struct BgEvent *bgEvent = events->bgEvents; int i; for (i = 0; i < bgEventCount; i++) @@ -396,7 +398,7 @@ static bool8 IsHiddenItemPresentAtCoords(const struct MapEvents *events, s16 x, return FALSE; } -static bool8 IsHiddenItemPresentInConnection(struct MapConnection *connection, int x, int y) +static bool8 IsHiddenItemPresentInConnection(const struct MapConnection *connection, int x, int y) { u16 localX, localY; @@ -461,7 +463,7 @@ static void CheckForHiddenItemsInMapConnection(u8 taskId) || var2 > y || y >= height) { - struct MapConnection *conn = GetMapConnectionAtPos(x, y); + const struct MapConnection *conn = GetMapConnectionAtPos(x, y); if (conn && IsHiddenItemPresentInConnection(conn, x, y) == TRUE) SetDistanceOfClosestHiddenItem(taskId, x - playerX, y - playerY); } @@ -1105,25 +1107,6 @@ static void Task_UseStatIncreaseItem(u8 taskId) } } -// e.g. X Attack, Guard Spec -void ItemUseInBattle_StatIncrease(u8 taskId) -{ - u16 partyId = gBattlerPartyIndexes[gBattlerInMenuId]; - - if (ExecuteTableBasedItemEffect(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE) - { - if (!InBattlePyramid()) - DisplayItemMessage(taskId, FONT_NORMAL, gText_WontHaveEffect, CloseItemMessage); - else - DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, Task_CloseBattlePyramidBagMessage); - } - else - { - gTasks[taskId].func = Task_UseStatIncreaseItem; - gTasks[taskId].data[8] = 0; - } -} - static void ItemUseInBattle_ShowPartyMenu(u8 taskId) { if (!InBattlePyramid()) @@ -1138,40 +1121,119 @@ static void ItemUseInBattle_ShowPartyMenu(u8 taskId) } } -void ItemUseInBattle_Medicine(u8 taskId) +void ItemUseInBattle_PartyMenu(u8 taskId) { - gItemUseCB = ItemUseCB_Medicine; + gItemUseCB = ItemUseCB_BattleScript; ItemUseInBattle_ShowPartyMenu(taskId); } -// Unused. Sacred Ash cannot be used in battle -void ItemUseInBattle_SacredAsh(u8 taskId) +void ItemUseInBattle_PartyMenuChooseMove(u8 taskId) { - gItemUseCB = ItemUseCB_SacredAsh; + gItemUseCB = ItemUseCB_BattleChooseMove; ItemUseInBattle_ShowPartyMenu(taskId); } -void ItemUseInBattle_PPRecovery(u8 taskId) +// Returns whether an item can be used in battle and sets the fail text. +static bool32 CannotUseBagBattleItem(u16 itemId) { - gItemUseCB = ItemUseCB_PPRecovery; - ItemUseInBattle_ShowPartyMenu(taskId); + u8 cannotUse = FALSE; + u16 battleUsage = ItemId_GetBattleUsage(itemId); + const u8* failStr = NULL; + + // Embargo Check + if ((gPartyMenu.slotId == 0 && gStatuses3[B_POSITION_PLAYER_LEFT] & STATUS3_EMBARGO) + || (gPartyMenu.slotId == 1 && gStatuses3[B_POSITION_PLAYER_RIGHT] & STATUS3_EMBARGO)) + { + return TRUE; + } + // X-Items + if (battleUsage == EFFECT_ITEM_INCREASE_STAT + && gBattleMons[gBattlerInMenuId].statStages[gItemEffectTable[itemId][1]] == MAX_STAT_STAGE) + { + cannotUse++; + } + // Dire Hit + if (battleUsage == EFFECT_ITEM_SET_FOCUS_ENERGY + && (gBattleMons[gBattlerInMenuId].status2 & STATUS2_FOCUS_ENERGY)) + { + cannotUse++; + } + // Guard Spec + if (battleUsage == EFFECT_ITEM_SET_MIST + && gSideStatuses[GetBattlerSide(gBattlerInMenuId)] & SIDE_STATUS_MIST) + { + cannotUse++; + } + // Escape Items + if (battleUsage == EFFECT_ITEM_ESCAPE + && gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + cannotUse++; + } + // Poke Balls + if (battleUsage == EFFECT_ITEM_THROW_BALL) + { + switch (GetBallThrowableState()) + { + case BALL_THROW_UNABLE_TWO_MONS: + failStr = sText_CantThrowPokeBall_TwoMons; + cannotUse++; + break; + case BALL_THROW_UNABLE_NO_ROOM: + failStr = gText_BoxFull; + cannotUse++; + break; + #if B_SEMI_INVULNERABLE_CATCH >= GEN_4 + case BALL_THROW_UNABLE_SEMI_INVULNERABLE: + failStr = sText_CantThrowPokeBall_SemiInvulnerable; + cannotUse++; + break; + #endif + case BALL_THROW_UNABLE_DISABLED_FLAG: + failStr = sText_CantThrowPokeBall_Disabled; + cannotUse++; + break; + } + } + // Max Mushrooms + if (battleUsage == EFFECT_ITEM_INCREASE_ALL_STATS) + { + u32 i; + for (i = 1; i < NUM_STATS; i++) + { + if (CompareStat(gBattlerInMenuId, i, MAX_STAT_STAGE, CMP_EQUAL)) + { + cannotUse++; + break; + } + } + } + + if (failStr != NULL) + StringExpandPlaceholders(gStringVar4, failStr); + else + StringExpandPlaceholders(gStringVar4, gText_WontHaveEffect); + return cannotUse; } -// Fluffy Tail / Poke Doll -void ItemUseInBattle_Escape(u8 taskId) +void ItemUseInBattle_BagMenu(u8 taskId) { - - if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) + if (CannotUseBagBattleItem(gSpecialVar_ItemId)) { - RemoveUsedItem(); if (!InBattlePyramid()) - DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_FadeAndCloseBagMenu); + DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, CloseItemMessage); else - DisplayItemMessageInBattlePyramid(taskId, gStringVar4, CloseBattlePyramidBag); + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, Task_CloseBattlePyramidBagMessage); } else { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); + PlaySE(SE_SELECT); + RemoveUsedItem(); + ScheduleBgCopyTilemapToVram(2); + if (!InBattlePyramid()) + gTasks[taskId].func = Task_FadeAndCloseBagMenu; + else + gTasks[taskId].func = CloseBattlePyramidBag; } } @@ -1183,7 +1245,7 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) case ITEM_EFFECT_CURE_POISON: case ITEM_EFFECT_CURE_SLEEP: case ITEM_EFFECT_CURE_BURN: - case ITEM_EFFECT_CURE_FREEZE: + case ITEM_EFFECT_CURE_FREEZE_FROSTBITE: case ITEM_EFFECT_CURE_PARALYSIS: case ITEM_EFFECT_CURE_ALL_STATUS: case ITEM_EFFECT_ATK_EV: @@ -1219,33 +1281,6 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) } } -void ItemUseInBattle_EnigmaBerry(u8 taskId) -{ - switch (GetItemEffectType(gSpecialVar_ItemId)) - { - case ITEM_EFFECT_X_ITEM: - ItemUseInBattle_StatIncrease(taskId); - break; - case ITEM_EFFECT_HEAL_HP: - case ITEM_EFFECT_CURE_POISON: - case ITEM_EFFECT_CURE_SLEEP: - case ITEM_EFFECT_CURE_BURN: - case ITEM_EFFECT_CURE_FREEZE: - case ITEM_EFFECT_CURE_PARALYSIS: - case ITEM_EFFECT_CURE_ALL_STATUS: - case ITEM_EFFECT_CURE_CONFUSION: - case ITEM_EFFECT_CURE_INFATUATION: - ItemUseInBattle_Medicine(taskId); - break; - case ITEM_EFFECT_HEAL_PP: - ItemUseInBattle_PPRecovery(taskId); - break; - default: - ItemUseOutOfBattle_CannotUse(taskId); - break; - } -} - void ItemUseOutOfBattle_FormChange(u8 taskId) { gItemUseCB = ItemUseCB_FormChange; diff --git a/src/link.c b/src/link.c index 06bde1e38f3e..0894021b564e 100644 --- a/src/link.c +++ b/src/link.c @@ -1650,7 +1650,7 @@ static void ErrorMsg_MoveCloserToPartner(void) DecompressAndLoadBgGfxUsingHeap(1, sWirelessLinkDisplayGfx, FALSE, 0, 0); CopyToBgTilemapBuffer(1, sWirelessLinkDisplayTilemap, 0, 0); CopyBgTilemapBufferToVram(1); - LoadPalette(sWirelessLinkDisplayPal, 0, 0x20); + LoadPalette(sWirelessLinkDisplayPal, BG_PLTT_ID(0), sizeof(sWirelessLinkDisplayPal)); FillWindowPixelBuffer(WIN_LINK_ERROR_TOP, PIXEL_FILL(0)); FillWindowPixelBuffer(WIN_LINK_ERROR_BOTTOM, PIXEL_FILL(0)); AddTextPrinterParameterized3(WIN_LINK_ERROR_TOP, FONT_SHORT_COPY_1, 2, 6, sTextColors, 0, gText_CommErrorEllipsis); diff --git a/src/list_menu.c b/src/list_menu.c index 546ec6f6cd52..e24442ca023c 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -316,7 +316,7 @@ static void ListMenuDummyTask(u8 taskId) } -s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 drawMode, u16 tileNum, u16 palNum) +s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 drawMode, u16 tileNum, u16 palOffset) { switch (sMysteryGiftLinkMenu.state) { @@ -326,9 +326,9 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str switch (drawMode) { case 2: - LoadUserWindowBorderGfx(sMysteryGiftLinkMenu.windowId, tileNum, palNum); + LoadUserWindowBorderGfx(sMysteryGiftLinkMenu.windowId, tileNum, palOffset); case 1: - DrawTextBorderOuter(sMysteryGiftLinkMenu.windowId, tileNum, palNum / 16); + DrawTextBorderOuter(sMysteryGiftLinkMenu.windowId, tileNum, palOffset / 16); break; } gMultiuseListMenuTemplate = *listMenuTemplate; diff --git a/src/mail.c b/src/mail.c index 575be706172d..7cff48c8ed21 100644 --- a/src/mail.c +++ b/src/mail.c @@ -551,9 +551,7 @@ static bool8 MailReadBuildGraphics(void) break; case 9: if (FreeTempTileDataBuffersIfPossible()) - { return FALSE; - } break; case 10: FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT); @@ -567,23 +565,20 @@ static bool8 MailReadBuildGraphics(void) break; case 12: LoadPalette(GetOverworldTextboxPalettePtr(), BG_PLTT_ID(15), PLTT_SIZE_4BPP); + gPlttBufferUnfaded[BG_PLTT_ID(15) + 10] = sMailGraphics[sMailRead->mailType].textColor; + gPlttBufferFaded[BG_PLTT_ID(15) + 10] = sMailGraphics[sMailRead->mailType].textColor; + gPlttBufferUnfaded[BG_PLTT_ID(15) + 11] = sMailGraphics[sMailRead->mailType].textShadow; + gPlttBufferFaded[BG_PLTT_ID(15) + 11] = sMailGraphics[sMailRead->mailType].textShadow; - gPlttBufferUnfaded[250] = sMailGraphics[sMailRead->mailType].textColor; - gPlttBufferFaded[250] = sMailGraphics[sMailRead->mailType].textColor; - gPlttBufferUnfaded[251] = sMailGraphics[sMailRead->mailType].textShadow; - gPlttBufferFaded[251] = sMailGraphics[sMailRead->mailType].textShadow; LoadPalette(sMailGraphics[sMailRead->mailType].palette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); - - gPlttBufferUnfaded[10] = sBgColors[gSaveBlock2Ptr->playerGender][0]; - gPlttBufferFaded[10] = sBgColors[gSaveBlock2Ptr->playerGender][0]; - gPlttBufferUnfaded[11] = sBgColors[gSaveBlock2Ptr->playerGender][1]; - gPlttBufferFaded[11] = sBgColors[gSaveBlock2Ptr->playerGender][1]; + gPlttBufferUnfaded[BG_PLTT_ID(0) + 10] = sBgColors[gSaveBlock2Ptr->playerGender][0]; + gPlttBufferFaded[BG_PLTT_ID(0) + 10] = sBgColors[gSaveBlock2Ptr->playerGender][0]; + gPlttBufferUnfaded[BG_PLTT_ID(0) + 11] = sBgColors[gSaveBlock2Ptr->playerGender][1]; + gPlttBufferFaded[BG_PLTT_ID(0) + 11] = sBgColors[gSaveBlock2Ptr->playerGender][1]; break; case 13: if (sMailRead->hasText) - { BufferMailText(); - } break; case 14: if (sMailRead->hasText) diff --git a/src/main_menu.c b/src/main_menu.c index 377cd635c1de..ce366faef937 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1086,8 +1086,8 @@ static void Task_HandleMainMenuAPressed(u8 taskId) case ACTION_INVALID: gTasks[taskId].tCurrItem = 0; gTasks[taskId].func = Task_DisplayMainMenuInvalidActionError; - gPlttBufferUnfaded[0xF1] = RGB_WHITE; - gPlttBufferFaded[0xF1] = RGB_WHITE; + gPlttBufferUnfaded[BG_PLTT_ID(15) + 1] = RGB_WHITE; + gPlttBufferFaded[BG_PLTT_ID(15) + 1] = RGB_WHITE; SetGpuReg(REG_OFFSET_BG2HOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0); SetGpuReg(REG_OFFSET_BG1HOFS, 0); diff --git a/src/match_call.c b/src/match_call.c index a9d18b3477a0..c3378040e3e2 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -1812,6 +1812,9 @@ static void PopulateSpeciesFromTrainerParty(int matchCallId, u8 *destStr) case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: speciesName = gSpeciesNames[party.ItemCustomMoves[monId].species]; break; + case F_TRAINER_PARTY_EVERYTHING_CUSTOMIZED: + speciesName = gSpeciesNames[party.EverythingCustomized[monId].species]; + break; } StringCopy(destStr, speciesName); diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 90e3671cc9ba..9bec5fd08f93 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -88,7 +88,7 @@ static void SetupHipster(void) struct MauvilleManHipster *hipster = &gSaveBlock1Ptr->oldMan.hipster; hipster->id = MAUVILLE_MAN_HIPSTER; - hipster->alreadySpoken = FALSE; + hipster->taughtWord = FALSE; hipster->language = gGameLanguage; } @@ -225,27 +225,28 @@ void PlayBardSong(void) ScriptContext_Stop(); } -void GetHipsterSpokenFlag(void) +void HasHipsterTaughtWord(void) { - gSpecialVar_Result = (&gSaveBlock1Ptr->oldMan.hipster)->alreadySpoken; + gSpecialVar_Result = (&gSaveBlock1Ptr->oldMan.hipster)->taughtWord; } -void SetHipsterSpokenFlag(void) +void SetHipsterTaughtWord(void) { - (&gSaveBlock1Ptr->oldMan.hipster)->alreadySpoken = TRUE; + (&gSaveBlock1Ptr->oldMan.hipster)->taughtWord = TRUE; } void HipsterTryTeachWord(void) { - u16 phrase = GetNewHipsterPhraseToTeach(); + u16 word = UnlockRandomTrendySaying(); - if (phrase == EC_EMPTY_WORD) + if (word == EC_EMPTY_WORD) { + // All words already unlocked gSpecialVar_Result = FALSE; } else { - CopyEasyChatWord(gStringVar1, phrase); + CopyEasyChatWord(gStringVar1, word); gSpecialVar_Result = TRUE; } } @@ -369,7 +370,7 @@ static void ResetBardFlag(void) static void ResetHipsterFlag(void) { - (&gSaveBlock1Ptr->oldMan.hipster)->alreadySpoken = FALSE; + (&gSaveBlock1Ptr->oldMan.hipster)->taughtWord = FALSE; } static void ResetTraderFlag(void) diff --git a/src/menu_specialized.c b/src/menu_specialized.c index 5422087bfc3b..802d1aec3243 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -1077,7 +1077,7 @@ void GetConditionMenuMonGfx(void *tilesDst, void *palDst, u16 boxId, u16 monId, if (partyId != numMons) { - u16 species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES2, NULL); + u16 species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES_OR_EGG, NULL); u32 trainerId = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL); u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL); diff --git a/src/mini_printf.c b/src/mini_printf.c index d96a9379a147..9fb4ecfac9e5 100644 --- a/src/mini_printf.c +++ b/src/mini_printf.c @@ -41,7 +41,7 @@ #ifndef NDEBUG -struct mini_buff +struct mini_buff { char *buffer, *pbuffer; u32 buffer_len; @@ -95,9 +95,9 @@ static s32 _putsAscii(char *s, s32 len, void *buf) s32 i; struct mini_buff *b; - if (!buf) + if (!buf) return len; - + b = buf; p0 = b->buffer; @@ -118,9 +118,9 @@ static s32 _putsEncoded(char *s, s32 len, void *buf) s32 i; struct mini_buff *b; - if (!buf) + if (!buf) return len; - + b = buf; p0 = b->buffer; @@ -159,7 +159,7 @@ static s32 mini_itoa(s32 value, u32 radix, s32 uppercase, bool32 unsig, char *bu } /* This builds the string back to front ... */ - do + do { s32 digit = value % radix; *(pbuffer++) = (digit < 10 ? '0' + digit : (uppercase ? 'A' : 'a') + digit - 10); @@ -243,7 +243,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) { len = 1; len = _putsAscii(&ch, len, buf); - } else + } else { char pad_char = ' '; s32 pad_to = 0; @@ -270,7 +270,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) ch=*(fmt++); } - switch (ch) + switch (ch) { case 0: goto end; diff --git a/src/mirage_tower.c b/src/mirage_tower.c index 01b87393aeed..f9806e77682c 100644 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -8,6 +8,7 @@ #include "gpu_regs.h" #include "menu.h" #include "random.h" +#include "palette.h" #include "palette_util.h" #include "script.h" #include "sound.h" @@ -163,7 +164,7 @@ static const struct SpriteTemplate sSpriteTemplate_FallingFossil = const struct PulseBlendSettings gMirageTowerPulseBlendSettings = { .blendColor = RGB(27, 25, 16), - .paletteOffset = 0x61, + .paletteOffset = BG_PLTT_ID(6) + 1, .numColors = 15, .delay = 5, .numFadeCycles = -1, diff --git a/src/money.c b/src/money.c index 88e1fea6400e..321f882ff64a 100644 --- a/src/money.c +++ b/src/money.c @@ -10,8 +10,6 @@ #include "strings.h" #include "decompress.h" -#define MAX_MONEY 999999 - EWRAM_DATA static u8 sMoneyBoxWindowId = 0; EWRAM_DATA static u8 sMoneyLabelSpriteId = 0; diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index d1b514a173a6..b146bbab3983 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -293,7 +293,7 @@ bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx) bool8 MEScrCmd_addrareword(struct ScriptContext *ctx) { - UnlockAdditionalPhrase(ScriptReadByte(ctx)); + UnlockTrendySaying(ScriptReadByte(ctx)); StringExpandPlaceholders(gStringVar4, gText_MysteryEventRareWord); ctx->mStatus = MEVENT_STATUS_SUCCESS; return FALSE; @@ -319,7 +319,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) void *mailPtr = (void *)(data + sizeof(struct Pokemon)); pokemon = *(struct Pokemon *)pokemonPtr; - species = GetMonData(&pokemon, MON_DATA_SPECIES2); + species = GetMonData(&pokemon, MON_DATA_SPECIES_OR_EGG); if (species == SPECIES_EGG) StringCopyN(gStringVar1, gText_EggNickname, POKEMON_NAME_LENGTH + 1); diff --git a/src/naming_screen.c b/src/naming_screen.c index 14a75166fa9a..3962f141ab22 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -978,10 +978,10 @@ static u16 GetButtonPalOffset(u8 button) { const u16 palOffsets[BUTTON_COUNT + 1] = { - [BUTTON_PAGE] = IndexOfSpritePaletteTag(PALTAG_PAGE_SWAP) * 16 + 0x10E, - [BUTTON_BACK] = IndexOfSpritePaletteTag(PALTAG_BACK_BUTTON) * 16 + 0x10E, - [BUTTON_OK] = IndexOfSpritePaletteTag(PALTAG_OK_BUTTON) * 16 + 0x10E, - [BUTTON_COUNT] = IndexOfSpritePaletteTag(PALTAG_OK_BUTTON) * 16 + 0x101, + [BUTTON_PAGE] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_PAGE_SWAP)) + 14, + [BUTTON_BACK] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_BACK_BUTTON)) + 14, + [BUTTON_OK] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_OK_BUTTON)) + 14, + [BUTTON_COUNT] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_OK_BUTTON)) + 1, }; return palOffsets[button]; @@ -1051,7 +1051,7 @@ static void SpriteCB_Cursor(struct Sprite *sprite) { s8 gb = sprite->sColor; s8 r = sprite->sColor >> 1; - u16 index = IndexOfSpritePaletteTag(PALTAG_CURSOR) * 16 + 0x0101; + u16 index = OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_CURSOR)) + 1; MultiplyInvertedPaletteRGBComponents(index, r, gb, gb); } diff --git a/src/overworld.c b/src/overworld.c index 4d3ff8340607..bb1b98611b9b 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -156,7 +156,7 @@ static void InitMenuBasedScript(const u8 *); static void LoadCableClubPlayer(s32, s32, struct CableClubPlayer *); static bool32 IsCableClubPlayerUnfrozen(struct CableClubPlayer *); static bool32 CanCableClubPlayerPressStart(struct CableClubPlayer *); -static u8 *TryGetTileEventScript(struct CableClubPlayer *); +static const u8 *TryGetTileEventScript(struct CableClubPlayer *); static bool32 PlayerIsAtSouthExit(struct CableClubPlayer *); static const u8 *TryInteractWithPlayer(struct CableClubPlayer *); static u16 KeyInterCB_DeferToRecvQueue(u32); @@ -401,6 +401,25 @@ void Overworld_ResetStateAfterDigEscRope(void) FlagClear(FLAG_SYS_USE_FLASH); } +#if B_RESET_FLAGS_VARS_AFTER_WHITEOUT == TRUE + void Overworld_ResetBattleFlagsAndVars(void) +{ + #if VAR_TERRAIN != 0 + VarSet(VAR_TERRAIN, 0); + #endif + + #if B_VAR_WILD_AI_FLAGS != 0 + VarSet(B_VAR_WILD_AI_FLAGS,0); + #endif + + FlagClear(B_FLAG_INVERSE_BATTLE); + FlagClear(B_FLAG_FORCE_DOUBLE_WILD); + FlagClear(B_SMART_WILD_AI_FLAG); + FlagClear(B_FLAG_NO_BAG_USE); + FlagClear(B_FLAG_NO_CATCHING); +} +#endif + static void Overworld_ResetStateAfterWhiteOut(void) { ResetInitialPlayerAvatarState(); @@ -409,8 +428,8 @@ static void Overworld_ResetStateAfterWhiteOut(void) FlagClear(FLAG_SYS_SAFARI_MODE); FlagClear(FLAG_SYS_USE_STRENGTH); FlagClear(FLAG_SYS_USE_FLASH); -#if VAR_TERRAIN != 0 - VarSet(VAR_TERRAIN, 0); +#if B_RESET_FLAGS_VARS_AFTER_WHITEOUT == TRUE + Overworld_ResetBattleFlagsAndVars(); #endif // If you were defeated by Kyogre/Groudon and the step counter has // maxed out, end the abnormal weather. @@ -487,7 +506,7 @@ void LoadObjEventTemplatesFromHeader(void) void LoadSaveblockObjEventScripts(void) { - struct ObjectEventTemplate *mapHeaderObjTemplates = gMapHeader.events->objectEvents; + const struct ObjectEventTemplate *mapHeaderObjTemplates = gMapHeader.events->objectEvents; struct ObjectEventTemplate *savObjTemplates = gSaveBlock1Ptr->objectEventTemplates; s32 i; @@ -1109,7 +1128,7 @@ u16 GetCurrLocationDefaultMusic(void) if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE111) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE111) && GetSavedWeather() == WEATHER_SANDSTORM) - return MUS_ROUTE111; + return MUS_DESERT; music = GetLocationMusic(&gSaveBlock1Ptr->location); if (music != MUS_ROUTE118) @@ -1265,23 +1284,34 @@ static void PlayAmbientCry(void) PlayCry_NormalNoDucking(sAmbientCrySpecies, pan, volume, CRY_PRIORITY_AMBIENT); } +// States for UpdateAmbientCry +enum { + AMB_CRY_INIT, + AMB_CRY_FIRST, + AMB_CRY_RESET, + AMB_CRY_WAIT, + AMB_CRY_IDLE, +}; + void UpdateAmbientCry(s16 *state, u16 *delayCounter) { u8 i, monsCount, divBy; switch (*state) { - case 0: + case AMB_CRY_INIT: + // This state will be revisited whenever ResetFieldTasksArgs is called (which happens on map transition) if (sAmbientCrySpecies == SPECIES_NONE) - *state = 4; + *state = AMB_CRY_IDLE; else - *state = 1; + *state = AMB_CRY_FIRST; break; - case 1: + case AMB_CRY_FIRST: + // It takes between 1200-3599 frames (~20-60 seconds) to play the first ambient cry after entering a map *delayCounter = (Random() % 2400) + 1200; - *state = 3; + *state = AMB_CRY_WAIT; break; - case 2: + case AMB_CRY_RESET: divBy = 1; monsCount = CalculatePlayerPartyCount(); for (i = 0; i < monsCount; i++) @@ -1293,18 +1323,20 @@ void UpdateAmbientCry(s16 *state, u16 *delayCounter) break; } } + // Ambient cries after the first one take between 1200-2399 frames (~20-40 seconds) + // If the player has a pokemon with the ability Swarm in their party, the time is halved to 600-1199 frames (~10-20 seconds) *delayCounter = ((Random() % 1200) + 1200) / divBy; - *state = 3; + *state = AMB_CRY_WAIT; break; - case 3: - (*delayCounter)--; - if (*delayCounter == 0) + case AMB_CRY_WAIT: + if (--(*delayCounter) == 0) { PlayAmbientCry(); - *state = 2; + *state = AMB_CRY_RESET; } break; - case 4: + case AMB_CRY_IDLE: + // No land/water pokemon on this map break; } } @@ -2719,7 +2751,7 @@ static bool32 CanCableClubPlayerPressStart(struct CableClubPlayer *player) return FALSE; } -static u8 *TryGetTileEventScript(struct CableClubPlayer *player) +static const u8 *TryGetTileEventScript(struct CableClubPlayer *player) { if (player->movementMode != MOVEMENT_MODE_SCRIPTED) return FACING_NONE; diff --git a/src/palette.c b/src/palette.c index 577257eff326..6ce47a4933d7 100644 --- a/src/palette.c +++ b/src/palette.c @@ -64,7 +64,7 @@ static EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0 EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; static EWRAM_DATA u32 sFiller = 0; static EWRAM_DATA u32 sPlttBufferTransferPending = 0; -EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0}; +EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_SIZE] = {0}; static const struct PaletteStructTemplate sDummyPaletteStructTemplate = { .id = 0xFFFF, @@ -148,7 +148,7 @@ static void ReadPlttIntoBuffers(void) u16 i; u16 *pltt = (u16 *)PLTT; - for (i = 0; i < PLTT_SIZE / 2; i++) + for (i = 0; i < PLTT_BUFFER_SIZE; i++) { gPlttBufferUnfaded[i] = pltt[i]; gPlttBufferFaded[i] = pltt[i]; @@ -592,13 +592,13 @@ static u8 UpdateFastPaletteFade(void) if (gPaletteFade.objPaletteToggle) { - paletteOffsetStart = 256; - paletteOffsetEnd = 512; + paletteOffsetStart = OBJ_PLTT_OFFSET; + paletteOffsetEnd = PLTT_BUFFER_SIZE; } else { paletteOffsetStart = 0; - paletteOffsetEnd = 256; + paletteOffsetEnd = OBJ_PLTT_OFFSET; } switch (gPaletteFade_submode) diff --git a/src/party_menu.c b/src/party_menu.c index 8debf9f3c75c..68d7b058e283 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -66,6 +66,7 @@ #include "constants/battle.h" #include "constants/battle_frontier.h" #include "constants/field_effects.h" +#include "constants/form_change_types.h" #include "constants/item_effects.h" #include "constants/items.h" #include "constants/moves.h" @@ -390,8 +391,8 @@ static void Task_DisplayHPRestoredMessage(u8); static u16 ItemEffectToMonEv(struct Pokemon *, u8); static void ItemEffectToStatString(u8, u8 *); static void ReturnToUseOnWhichMon(u8); -static void SetSelectedMoveForPPItem(u8); -static void TryUsePPItem(u8); +static void SetSelectedMoveForItem(u8); +static void TryUseItemOnMove(u8); static void Task_LearnedMove(u8); static void Task_ReplaceMoveYesNo(u8); static void Task_DoLearnedMoveFanfareAfterText(u8); @@ -480,6 +481,9 @@ static bool8 SetUpFieldMove_Fly(void); static bool8 SetUpFieldMove_Waterfall(void); static bool8 SetUpFieldMove_Dive(void); void TryItemHoldFormChange(struct Pokemon *mon); +static void ShowMoveSelectWindow(u8 slot); +static void Task_HandleWhichMoveInput(u8 taskId); +static bool32 CannotUsePartyBattleItem(u16 itemId, struct Pokemon* mon); // static const data #include "data/party_menu.h" @@ -775,11 +779,11 @@ static bool8 AllocPartyMenuBgGfx(void) return FALSE; } -static void PartyPaletteBufferCopy(u8 offset) +static void PartyPaletteBufferCopy(u8 palNum) { - offset *= 16; - CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferUnfaded[offset], 32); - CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferFaded[offset], 32); + u8 offset = PLTT_ID(palNum); + CpuCopy16(&gPlttBufferUnfaded[BG_PLTT_ID(3)], &gPlttBufferUnfaded[offset], PLTT_SIZE_4BPP); + CpuCopy16(&gPlttBufferUnfaded[BG_PLTT_ID(3)], &gPlttBufferFaded[offset], PLTT_SIZE_4BPP); } static void FreePartyPointers(void) @@ -1354,6 +1358,24 @@ static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr) TryEnterMonForMinigame(taskId, (u8)*slotPtr); } break; + case PARTY_ACTION_CHOOSE_FAINTED_MON: + { + u8 partyId = GetPartyIdFromBattleSlot((u8)*slotPtr); + if (GetMonData(&gPlayerParty[*slotPtr], MON_DATA_HP) > 0 + || GetMonData(&gPlayerParty[*slotPtr], MON_DATA_SPECIES_OR_EGG) == SPECIES_EGG + || ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && partyId >= (PARTY_SIZE / 2))) + { + // Can't select if egg, alive, or doesn't belong to you + PlaySE(SE_FAILURE); + } + else + { + PlaySE(SE_SELECT); + gSelectedMonPartyId = partyId; + Task_ClosePartyMenu(taskId); + } + break; + } default: case PARTY_ACTION_ABILITY_PREVENTS: case PARTY_ACTION_SWITCHING: @@ -1379,6 +1401,7 @@ static void HandleChooseMonCancel(u8 taskId, s8 *slotPtr) switch (gPartyMenu.action) { case PARTY_ACTION_SEND_OUT: + case PARTY_ACTION_CHOOSE_FAINTED_MON: PlaySE(SE_FAILURE); break; case PARTY_ACTION_SWITCH: @@ -1919,6 +1942,8 @@ u8 GetAilmentFromStatus(u32 status) return AILMENT_FRZ; if (status & STATUS1_BURN) return AILMENT_BRN; + if (status & STATUS1_FROSTBITE) + return AILMENT_FSB; return AILMENT_NONE; } @@ -2035,7 +2060,7 @@ static u8 CanTeachMove(struct Pokemon *mon, u16 move) { if (GetMonData(mon, MON_DATA_IS_EGG)) return CANNOT_LEARN_MOVE_IS_EGG; - else if (!CanLearnTeachableMove(GetMonData(mon, MON_DATA_SPECIES2), move)) + else if (!CanLearnTeachableMove(GetMonData(mon, MON_DATA_SPECIES_OR_EGG), move)) return CANNOT_LEARN_MOVE; else if (MonKnowsMove(mon, move) == TRUE) return ALREADY_KNOWS_MOVE; @@ -2167,16 +2192,16 @@ static void DrawEmptySlot(u8 windowId) BlitBitmapToPartyWindow(windowId, sSlotTilemap_WideEmpty, 18, 0, 0, 18, 3); } -#define LOAD_PARTY_BOX_PAL(paletteIds, paletteOffsets) \ -{ \ - LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[0]), paletteOffsets[0] + palNum, PLTT_SIZEOF(1)); \ - LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[1]), paletteOffsets[1] + palNum, PLTT_SIZEOF(1)); \ - LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[2]), paletteOffsets[2] + palNum, PLTT_SIZEOF(1)); \ +#define LOAD_PARTY_BOX_PAL(paletteIds, paletteOffsets) \ +{ \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[0]), paletteOffsets[0] + palOffset, PLTT_SIZEOF(1)); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[1]), paletteOffsets[1] + palOffset, PLTT_SIZEOF(1)); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[2]), paletteOffsets[2] + palOffset, PLTT_SIZEOF(1)); \ } static void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags) { - u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + u8 palOffset = BG_PLTT_ID(GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM)); if (palFlags & PARTY_PAL_NO_MON) { @@ -2304,7 +2329,7 @@ static void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct Pa static void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox) { - u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + u8 palOffset = BG_PLTT_ID(GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM)); if (species == SPECIES_NONE) return; @@ -2313,13 +2338,13 @@ static void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, stru switch (gender) { case MON_MALE: - LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[0]), sGenderPalOffsets[0] + palNum, PLTT_SIZEOF(1)); - LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[1]), sGenderPalOffsets[1] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[0]), sGenderPalOffsets[0] + palOffset, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[1]), sGenderPalOffsets[1] + palOffset, PLTT_SIZEOF(1)); DisplayPartyPokemonBarDetail(menuBox->windowId, gText_MaleSymbol, 2, &menuBox->infoRects->dimensions[8]); break; case MON_FEMALE: - LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[0]), sGenderPalOffsets[0] + palNum, PLTT_SIZEOF(1)); - LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[1]), sGenderPalOffsets[1] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[0]), sGenderPalOffsets[0] + palOffset, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[1]), sGenderPalOffsets[1] + palOffset, PLTT_SIZEOF(1)); DisplayPartyPokemonBarDetail(menuBox->windowId, gText_FemaleSymbol, 2, &menuBox->infoRects->dimensions[8]); break; } @@ -2392,23 +2417,23 @@ static void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuB static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox) { - u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + u8 palOffset = BG_PLTT_ID(GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM)); u8 hpFraction; switch (GetHPBarLevel(hp, maxhp)) { case HP_BAR_GREEN: case HP_BAR_FULL: - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[0]), sHPBarPalOffsets[0] + palNum, PLTT_SIZEOF(1)); - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[1]), sHPBarPalOffsets[1] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[0]), sHPBarPalOffsets[0] + palOffset, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[1]), sHPBarPalOffsets[1] + palOffset, PLTT_SIZEOF(1)); break; case HP_BAR_YELLOW: - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[0]), sHPBarPalOffsets[0] + palNum, PLTT_SIZEOF(1)); - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[1]), sHPBarPalOffsets[1] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[0]), sHPBarPalOffsets[0] + palOffset, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[1]), sHPBarPalOffsets[1] + palOffset, PLTT_SIZEOF(1)); break; default: - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[0]), sHPBarPalOffsets[0] + palNum, PLTT_SIZEOF(1)); - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[1]), sHPBarPalOffsets[1] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[0]), sHPBarPalOffsets[0] + palOffset, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[1]), sHPBarPalOffsets[1] + palOffset, PLTT_SIZEOF(1)); break; } @@ -3584,11 +3609,11 @@ static void CursorCb_Store(u8 taskId) // Register mon for the Trading Board in Union Room static void CursorCb_Register(u8 taskId) { - u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); + u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES_OR_EGG); u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); - u8 isEventLegal = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_EVENT_LEGAL); + u8 isModernFatefulEncounter = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MODERN_FATEFUL_ENCOUNTER); - switch (CanRegisterMonForTradingBoard(*(struct RfuGameCompatibilityData *)GetHostRfuGameData(), species2, species, isEventLegal)) + switch (CanRegisterMonForTradingBoard(*(struct RfuGameCompatibilityData *)GetHostRfuGameData(), species2, species, isModernFatefulEncounter)) { case CANT_REGISTER_MON_NOW: StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow); @@ -3614,10 +3639,10 @@ static void CursorCb_Register(u8 taskId) static void CursorCb_Trade1(u8 taskId) { - u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); + u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES_OR_EGG); u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); - u8 isEventLegal = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_EVENT_LEGAL); - u32 stringId = GetUnionRoomTradeMessageId(*(struct RfuGameCompatibilityData *)GetHostRfuGameData(), gRfuPartnerCompatibilityData, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, isEventLegal); + u8 isModernFatefulEncounter = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MODERN_FATEFUL_ENCOUNTER); + u32 stringId = GetUnionRoomTradeMessageId(*(struct RfuGameCompatibilityData *)GetHostRfuGameData(), gRfuPartnerCompatibilityData, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, isModernFatefulEncounter); if (stringId != UR_TRADE_MSG_NONE) { @@ -3923,7 +3948,7 @@ static void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *m { u16 species2; - species2 = GetMonData(mon, MON_DATA_SPECIES2); + species2 = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); CreatePartyMonIconSpriteParameterized(species2, GetMonData(mon, MON_DATA_PERSONALITY), menuBox, 1); UpdatePartyMonHPBar(menuBox->monSpriteId, mon); } @@ -4282,12 +4307,10 @@ static void Task_SetSacredAshCB(u8 taskId) static bool8 IsHPRecoveryItem(u16 item) { - const u8 *effect; + const u8 *effect = GetItemEffect(item); - if (item == ITEM_ENIGMA_BERRY_E_READER) - effect = gSaveBlock1Ptr->enigmaBerry.itemEffect; - else - effect = gItemEffectTable[item - ITEM_POTION]; + if (effect == NULL) + return FALSE; if (effect[4] & ITEM4_HEAL_HP) return TRUE; @@ -4295,7 +4318,7 @@ static bool8 IsHPRecoveryItem(u16 item) return FALSE; } -static void GetMedicineItemEffectMessage(u16 item) +static void GetMedicineItemEffectMessage(u16 item, u32 statusCured) { switch (GetItemEffectType(item)) { @@ -4308,8 +4331,11 @@ static void GetMedicineItemEffectMessage(u16 item) case ITEM_EFFECT_CURE_BURN: StringExpandPlaceholders(gStringVar4, gText_PkmnBurnHealed); break; - case ITEM_EFFECT_CURE_FREEZE: - StringExpandPlaceholders(gStringVar4, gText_PkmnThawedOut); + case ITEM_EFFECT_CURE_FREEZE_FROSTBITE: + if (statusCured & STATUS1_FREEZE) + StringExpandPlaceholders(gStringVar4, gText_PkmnThawedOut); + if (statusCured & STATUS1_FROSTBITE) + StringExpandPlaceholders(gStringVar4, gText_PkmnFrostbiteHealed); break; case ITEM_EFFECT_CURE_PARALYSIS: StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfParalysis); @@ -4374,18 +4400,94 @@ static bool8 IsItemFlute(u16 item) return FALSE; } -static bool8 ExecuteTableBasedItemEffect_(u8 partyMonIndex, u16 item, u8 monMoveIndex) +static bool32 CannotUsePartyBattleItem(u16 itemId, struct Pokemon* mon) { - if (gMain.inBattle) + u8 i; + u8 cannotUse = FALSE; + u16 battleUsage = ItemId_GetBattleUsage(itemId); + u16 hp = GetMonData(mon, MON_DATA_HP); + + // Embargo Check + if ((gPartyMenu.slotId == 0 && gStatuses3[B_POSITION_PLAYER_LEFT] & STATUS3_EMBARGO) + || (gPartyMenu.slotId == 1 && gStatuses3[B_POSITION_PLAYER_RIGHT] & STATUS3_EMBARGO)) { - if ((partyMonIndex == 0 && gStatuses3[B_POSITION_PLAYER_LEFT] & STATUS3_EMBARGO) - || (partyMonIndex == 1 && gStatuses3[B_POSITION_PLAYER_RIGHT] & STATUS3_EMBARGO)) - return TRUE; // cannot use on this mon - else - return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, GetPartyIdFromBattleSlot(partyMonIndex), monMoveIndex); + return FALSE; + } + // Items that restore HP (Potions, Sitrus Berry, etc.) + if (battleUsage == EFFECT_ITEM_RESTORE_HP && (hp == 0 || hp == GetMonData(mon, MON_DATA_MAX_HP))) + { + cannotUse++; + } + // Items that cure status (Burn Heal, Awakening, etc.) + if (battleUsage == EFFECT_ITEM_CURE_STATUS + && !((GetMonData(mon, MON_DATA_STATUS) & GetItemStatus1Mask(itemId)) + || (gPartyMenu.slotId == 0 && gBattleMons[gBattlerInMenuId].status2 & GetItemStatus2Mask(itemId)))) + { + cannotUse++; + } + // Items that restore HP and cure status (Full Restore) + if (battleUsage == EFFECT_ITEM_HEAL_AND_CURE_STATUS + && (hp == 0 || hp == GetMonData(mon, MON_DATA_MAX_HP)) + && !((GetMonData(mon, MON_DATA_STATUS) & GetItemStatus1Mask(itemId)) + || (gPartyMenu.slotId == 0 && gBattleMons[gBattlerInMenuId].status2 & GetItemStatus2Mask(itemId)))) + { + cannotUse++; + } + // Items that revive a party member + if (battleUsage == EFFECT_ITEM_REVIVE && hp != 0) + { + cannotUse++; + } + // Items that restore PP (Elixir, Ether, Leppa Berry) + if (battleUsage == EFFECT_ITEM_RESTORE_PP) + { + if (GetItemEffect(itemId)[6] == ITEM4_HEAL_PP) + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (GetMonData(mon, MON_DATA_PP1 + i) < CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + i), GetMonData(mon, MON_DATA_PP_BONUSES), i)); + break; + } + if (i == MAX_MON_MOVES) + cannotUse++; + } + else if (GetMonData(mon, MON_DATA_PP1 + gPartyMenu.data1) == CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + gPartyMenu.data1), GetMonData(mon, MON_DATA_PP_BONUSES), gPartyMenu.data1)) + { + cannotUse++; + } + } + return cannotUse; +} + +// Battle scripts called in HandleAction_UseItem +void ItemUseCB_BattleScript(u8 taskId, TaskFunc task) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + if (CannotUsePartyBattleItem(gSpecialVar_ItemId, mon)) + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = task; } else - return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, partyMonIndex, monMoveIndex); + { + gBattleStruct->itemPartyIndex[gBattlerInMenuId] = GetPartyIdFromBattleSlot(gPartyMenu.slotId); + gPartyMenuUseExitCallback = TRUE; + PlaySE(SE_SELECT); + RemoveBagItem(gSpecialVar_ItemId, 1); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = task; + } +} + +void ItemUseCB_BattleChooseMove(u8 taskId, TaskFunc task) +{ + PlaySE(SE_SELECT); + DisplayPartyMenuStdMessage(PARTY_MSG_RESTORE_WHICH_MOVE); + ShowMoveSelectWindow(gPartyMenu.slotId); + gTasks[taskId].func = Task_HandleWhichMoveInput; } void ItemUseCB_Medicine(u8 taskId, TaskFunc task) @@ -4394,6 +4496,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task) struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 item = gSpecialVar_ItemId; bool8 canHeal, cannotUse; + u32 oldStatus = GetMonData(mon, MON_DATA_STATUS); if (NotUsingHPEVItemOnShedinja(mon, item) == FALSE) { @@ -4408,7 +4511,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task) if (hp == GetMonData(mon, MON_DATA_MAX_HP)) canHeal = FALSE; } - cannotUse = ExecuteTableBasedItemEffect_(gPartyMenu.slotId, item, 0); + cannotUse = ExecuteTableBasedItemEffect(mon, item, gPartyMenu.slotId, 0); } if (cannotUse != FALSE) @@ -4446,7 +4549,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task) else { GetMonNickname(mon, gStringVar1); - GetMedicineItemEffectMessage(item); + GetMedicineItemEffectMessage(item, oldStatus); DisplayPartyMenuMessage(gStringVar4, TRUE); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = task; @@ -4560,7 +4663,6 @@ void Task_AbilityPatch(u8 taskId) // Can't use. if (gSpeciesInfo[tSpecies].abilities[tAbilityNum] == 0 || !tSpecies - || GetMonData(&gPlayerParty[tMonId], MON_DATA_ABILITY_NUM, NULL) > 1 ) { gPartyMenuUseExitCallback = FALSE; @@ -4631,7 +4733,10 @@ void ItemUseCB_AbilityPatch(u8 taskId, TaskFunc task) tState = 0; tMonId = gPartyMenu.slotId; tSpecies = GetMonData(&gPlayerParty[tMonId], MON_DATA_SPECIES, NULL); - tAbilityNum = 2; + if (GetMonData(&gPlayerParty[tMonId], MON_DATA_ABILITY_NUM, NULL) == 2) + tAbilityNum = 0; + else + tAbilityNum = 2; SetWordTaskArg(taskId, tOldFunc, (uintptr_t)(gTasks[taskId].func)); gTasks[taskId].func = Task_AbilityPatch; } @@ -4669,7 +4774,7 @@ void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task) u8 effectType = GetItemEffectType(item); u16 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); u16 ev = ItemEffectToMonEv(mon, effectType); - bool8 cannotUseEffect = ExecuteTableBasedItemEffect_(gPartyMenu.slotId, item, 0); + bool8 cannotUseEffect = ExecuteTableBasedItemEffect(mon, item, gPartyMenu.slotId, 0); u16 newFriendship = GetMonData(mon, MON_DATA_FRIENDSHIP); u16 newEv = ItemEffectToMonEv(mon, effectType); @@ -4785,25 +4890,19 @@ static void Task_HandleWhichMoveInput(u8 taskId) else { PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); - SetSelectedMoveForPPItem(taskId); + SetSelectedMoveForItem(taskId); } } } void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task) { - const u8 *effect; - u16 item = gSpecialVar_ItemId; - - if (item == ITEM_ENIGMA_BERRY_E_READER) - effect = gSaveBlock1Ptr->enigmaBerry.itemEffect; - else - effect = gItemEffectTable[item - ITEM_POTION]; + const u8 *effect = GetItemEffect(gSpecialVar_ItemId); - if (!(effect[4] & ITEM4_HEAL_PP_ONE)) + if (effect == NULL || !(effect[4] & ITEM4_HEAL_PP_ONE)) { gPartyMenu.data1 = 0; - TryUsePPItem(taskId); + TryUseItemOnMove(taskId); } else { @@ -4814,11 +4913,11 @@ void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task) } } -static void SetSelectedMoveForPPItem(u8 taskId) +static void SetSelectedMoveForItem(u8 taskId) { PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); gPartyMenu.data1 = Menu_GetCursorPos(); - TryUsePPItem(taskId); + TryUseItemOnMove(taskId); } static void ReturnToUseOnWhichMon(u8 taskId) @@ -4829,34 +4928,58 @@ static void ReturnToUseOnWhichMon(u8 taskId) DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON); } -static void TryUsePPItem(u8 taskId) +static void TryUseItemOnMove(u8 taskId) { - u16 move = MOVE_NONE; - s16 *moveSlot = &gPartyMenu.data1; - u16 item = gSpecialVar_ItemId; struct PartyMenu *ptr = &gPartyMenu; - struct Pokemon *mon; - - if (ExecuteTableBasedItemEffect_(ptr->slotId, item, *moveSlot)) + struct Pokemon *mon = &gPlayerParty[ptr->slotId]; + // In battle, set appropriate variables to be used in battle script. + if (gMain.inBattle) { - gPartyMenuUseExitCallback = FALSE; - PlaySE(SE_SELECT); - DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); - ScheduleBgCopyTilemapToVram(2); - gTasks[taskId].func = Task_ClosePartyMenuAfterText; + if (CannotUsePartyBattleItem(gSpecialVar_ItemId, mon)) + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } + else + { + gBattleStruct->itemPartyIndex[gBattlerInMenuId] = GetPartyIdFromBattleSlot(gPartyMenu.slotId); + gBattleStruct->itemMoveIndex[gBattlerInMenuId] = ptr->data1; + gPartyMenuUseExitCallback = TRUE; + RemoveBagItem(gSpecialVar_ItemId, 1); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } } + // Outside of battle, only PP items are used on moves. else { - gPartyMenuUseExitCallback = TRUE; - mon = &gPlayerParty[ptr->slotId]; - PlaySE(SE_USE_ITEM); - RemoveBagItem(item, 1); - move = GetMonData(mon, MON_DATA_MOVE1 + *moveSlot); - StringCopy(gStringVar1, gMoveNames[move]); - GetMedicineItemEffectMessage(item); - DisplayPartyMenuMessage(gStringVar4, TRUE); - ScheduleBgCopyTilemapToVram(2); - gTasks[taskId].func = Task_ClosePartyMenuAfterText; + u16 move = MOVE_NONE; + s16 *moveSlot = &gPartyMenu.data1; + u16 item = gSpecialVar_ItemId; + + if (ExecuteTableBasedItemEffect(mon, item, ptr->slotId, *moveSlot)) + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } + else + { + gPartyMenuUseExitCallback = TRUE; + PlaySE(SE_USE_ITEM); + RemoveBagItem(item, 1); + move = GetMonData(mon, MON_DATA_MOVE1 + *moveSlot); + StringCopy(gStringVar1, gMoveNames[move]); + GetMedicineItemEffectMessage(item, 0); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } } } @@ -4970,7 +5093,7 @@ static void Task_LearnedMove(u8 taskId) if (move[1] == 0) { AdjustFriendship(mon, FRIENDSHIP_EVENT_LEARN_TMHM); - if (item < ITEM_HM01_CUT) + if (!ItemId_GetImportance(item)) RemoveBagItem(item, 1); } GetMonNickname(mon, gStringVar1); @@ -5170,7 +5293,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) if (sInitialLevel != MAX_LEVEL) { BufferMonStatsToTaskData(mon, arrayPtr); - cannotUseEffect = ExecuteTableBasedItemEffect_(gPartyMenu.slotId, *itemPtr, 0); + cannotUseEffect = ExecuteTableBasedItemEffect(mon, *itemPtr, gPartyMenu.slotId, 0); BufferMonStatsToTaskData(mon, &ptr->data[NUM_STATS]); } else @@ -5437,7 +5560,7 @@ static void UseSacredAsh(u8 taskId) } hp = GetMonData(mon, MON_DATA_HP); - if (ExecuteTableBasedItemEffect_(gPartyMenu.slotId, gSpecialVar_ItemId, 0)) + if (ExecuteTableBasedItemEffect(mon, gSpecialVar_ItemId, gPartyMenu.slotId, 0)) { gTasks[taskId].func = Task_SacredAshLoop; return; @@ -5504,7 +5627,7 @@ void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task) { PlaySE(SE_SELECT); gCB2_AfterEvolution = gPartyMenu.exitCallback; - if (ExecuteTableBasedItemEffect_(gPartyMenu.slotId, gSpecialVar_ItemId, 0)) + if (ExecuteTableBasedItemEffect(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId, gPartyMenu.slotId, 0)) { gPartyMenuUseExitCallback = FALSE; DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); @@ -5513,7 +5636,8 @@ void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task) } else { - RemoveBagItem(gSpecialVar_ItemId, 1); + if (ItemId_GetPocket(gSpecialVar_ItemId) != POCKET_KEY_ITEMS) + RemoveBagItem(gSpecialVar_ItemId, 1); FreePartyPointers(); } } @@ -5616,7 +5740,7 @@ static void Task_TryItemUseFormChange(u8 taskId) bool32 TryItemUseFormChange(u8 taskId, TaskFunc task) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; - u16 targetSpecies = GetFormChangeTargetSpecies(mon, ItemId_GetSecondaryId(gSpecialVar_ItemId), gSpecialVar_ItemId); + u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_ITEM_USE, gSpecialVar_ItemId); if (targetSpecies != SPECIES_NONE) { @@ -5651,7 +5775,7 @@ void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task) } void TryItemHoldFormChange(struct Pokemon *mon) { - u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_ITEM_HOLD, 0); + u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { PlayCry_NormalNoDucking(targetSpecies, 0, CRY_VOLUME_RS, CRY_VOLUME_RS); @@ -5668,20 +5792,22 @@ void TryItemHoldFormChange(struct Pokemon *mon) #undef tAnimWait #undef tNextFunc +const u8* GetItemEffect(u16 item) +{ + if (item == ITEM_ENIGMA_BERRY_E_READER) + return gSaveBlock1Ptr->enigmaBerry.itemEffect; + else + return gItemEffectTable[item]; +} + u8 GetItemEffectType(u16 item) { - const u8 *itemEffect; u32 statusCure; + const u8 *itemEffect = GetItemEffect(item); - if (!ITEM_HAS_EFFECT(item)) + if (itemEffect == NULL) return ITEM_EFFECT_NONE; - // Read the item's effect properties. - if (item == ITEM_ENIGMA_BERRY_E_READER) - itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect; - else - itemEffect = gItemEffectTable[item - ITEM_POTION]; - if ((itemEffect[0] & ITEM0_DIRE_HIT) || itemEffect[1] || (itemEffect[3] & ITEM3_GUARD_SPEC)) return ITEM_EFFECT_X_ITEM; else if (itemEffect[0] & ITEM0_SACRED_ASH) @@ -5699,7 +5825,7 @@ u8 GetItemEffectType(u16 item) else if (statusCure == ITEM3_BURN) return ITEM_EFFECT_CURE_BURN; else if (statusCure == ITEM3_FREEZE) - return ITEM_EFFECT_CURE_FREEZE; + return ITEM_EFFECT_CURE_FREEZE_FROSTBITE; else if (statusCure == ITEM3_PARALYSIS) return ITEM_EFFECT_CURE_PARALYSIS; else if (statusCure == ITEM3_CONFUSION) diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 9a7ce414d6ee..7b61eec478e9 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -725,14 +725,14 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) { case 0: // Load mon gfx - species = GetMonData(mon, MON_DATA_SPECIES2); + species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); sPokeblockFeed->loadGfxState++; break; case 1: // Load mon palette - species = GetMonData(mon, MON_DATA_SPECIES2); + species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); trainerId = GetMonData(mon, MON_DATA_OT_ID); palette = GetMonSpritePalStructFromOtIdPersonality(species, trainerId, personality); @@ -907,7 +907,7 @@ static void Task_FadeOutPokeblockFeed(u8 taskId) static u8 CreateMonSprite(struct Pokemon *mon) { - u16 species = GetMonData(mon, MON_DATA_SPECIES2); + u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, MON_X, MON_Y, 2); sPokeblockFeed->species = species; diff --git a/src/pokedex.c b/src/pokedex.c index 2388626ff4cf..c5b8105b2d7b 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -93,6 +93,13 @@ enum NAME_YZ, }; +enum { + WIN_INFO, + WIN_FOOTPRINT, + WIN_CRY_WAVE, + WIN_VU_METER, +}; + // For scrolling search parameter #define MAX_SEARCH_PARAM_ON_SCREEN 6 #define MAX_SEARCH_PARAM_CURSOR_POS (MAX_SEARCH_PARAM_ON_SCREEN - 1) @@ -888,11 +895,6 @@ static const struct BgTemplate sInfoScreen_BgTemplate[] = } }; -#define WIN_INFO 0 -#define WIN_FOOTPRINT 1 -#define WIN_CRY_WAVE 2 -#define WIN_VU_METER 3 - static const struct WindowTemplate sInfoScreen_WindowTemplates[] = { [WIN_INFO] = @@ -3264,7 +3266,7 @@ static void Task_LoadInfoScreen(u8 taskId) case 4: PrintMonInfo(sPokedexListItem->dexNum, sPokedexView->dexMode == DEX_MODE_HOENN ? FALSE : TRUE, sPokedexListItem->owned, 0); if (!sPokedexListItem->owned) - LoadPalette(gPlttBufferUnfaded + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(16 - 1)); + LoadPalette(&gPlttBufferUnfaded[BG_PLTT_ID(0) + 1], BG_PLTT_ID(3) + 1, PLTT_SIZEOF(16 - 1)); CopyWindowToVram(WIN_INFO, COPYWIN_FULL); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); @@ -4527,28 +4529,44 @@ static void PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top) PrintInfoSubMenuText(windowId, str, left, top); } +// The footprints are drawn on WIN_FOOTPRINT, which uses BG palette 15 (loaded with graphics/text_window/message_box.gbapal) +// The footprint pixels are stored as 1BPP, and set to the below color index in this palette when converted to 4BPP. +#define FOOTPRINT_COLOR_IDX 2 + +#define NUM_FOOTPRINT_TILES 4 + static void DrawFootprint(u8 windowId, u16 dexNum) { - u8 footprint[32 * 4] = {0}; + u8 footprint4bpp[TILE_SIZE_4BPP * NUM_FOOTPRINT_TILES]; const u8 *footprintGfx = gMonFootprintTable[NationalPokedexNumToSpecies(dexNum)]; u32 i, j, tileIdx = 0; if (footprintGfx != NULL) { - for (i = 0; i < 32; i++) + for (i = 0; i < TILE_SIZE_1BPP * NUM_FOOTPRINT_TILES; i++) { - u8 tile = footprintGfx[i]; + u8 footprint1bpp = footprintGfx[i]; + + // Convert the 8 pixels in the above 1BPP byte to 4BPP. + // Each iteration creates one 4BPP byte (2 pixels), + // so we need 4 iterations to do all 8 pixels. for (j = 0; j < 4; j++) { - u8 value = ((tile >> (2 * j)) & 1 ? 2 : 0); - if (tile & (2 << (2 * j))) - value |= 0x20; - footprint[tileIdx] = value; + u8 tile = 0; + if (footprint1bpp & (1 << (2 * j))) + tile |= FOOTPRINT_COLOR_IDX; // Set pixel + if (footprint1bpp & (2 << (2 * j))) + tile |= FOOTPRINT_COLOR_IDX << 4; // Set pixel + footprint4bpp[tileIdx] = tile; tileIdx++; } } } - CopyToWindowPixelBuffer(windowId, footprint, sizeof(footprint), 0); + else + { + CpuFastFill(0, footprint4bpp, sizeof(footprint4bpp)); + } + CopyToWindowPixelBuffer(windowId, footprint4bpp, sizeof(footprint4bpp), 0); } // Unused Ruby/Sapphire function. diff --git a/src/pokedex_area_region_map.c b/src/pokedex_area_region_map.c index ff32f8eef134..da50f8c688e6 100644 --- a/src/pokedex_area_region_map.c +++ b/src/pokedex_area_region_map.c @@ -41,7 +41,7 @@ void LoadPokedexAreaMapGfx(const struct PokedexAreaMapTemplate *template) ChangeBgX(template->bg, 0, BG_COORD_SET); ChangeBgY(template->bg, 0, BG_COORD_SET); SetBgAttribute(template->bg, BG_ATTR_PALETTEMODE, 1); - CpuCopy32(sPokedexAreaMap_Pal, &gPlttBufferUnfaded[0x70], sizeof(sPokedexAreaMap_Pal)); + CpuCopy32(sPokedexAreaMap_Pal, &gPlttBufferUnfaded[BG_PLTT_ID(7)], sizeof(sPokedexAreaMap_Pal)); *sPokedexAreaMapBgNum = template->bg; } diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index 01cbacb44732..f9181a985b6e 100755 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -224,7 +224,7 @@ static bool8 DrawAreaGlow(void) case 3: if (!FreeTempTileDataBuffersIfPossible()) { - CpuCopy32(sAreaGlow_Pal, &gPlttBufferUnfaded[GLOW_PALETTE * 16], sizeof(sAreaGlow_Pal)); + CpuCopy32(sAreaGlow_Pal, &gPlttBufferUnfaded[BG_PLTT_ID(GLOW_PALETTE)], sizeof(sAreaGlow_Pal)); sPokedexAreaScreen->drawAreaGlowState++; } return TRUE; diff --git a/src/pokemon.c b/src/pokemon.c index afb6e902781b..c02802be2c7c 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -42,6 +42,7 @@ #include "constants/battle_frontier.h" #include "constants/battle_move_effects.h" #include "constants/battle_script_commands.h" +#include "constants/form_change_types.h" #include "constants/hold_effects.h" #include "constants/item_effects.h" #include "constants/items.h" @@ -63,7 +64,6 @@ static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 perso static void EncryptBoxMon(struct BoxPokemon *boxMon); static void DecryptBoxMon(struct BoxPokemon *boxMon); static void Task_PlayMapChosenOrBattleBGM(u8 taskId); -static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); static bool8 ShouldSkipFriendshipChange(void); static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv); void TrySpecialOverworldEvo(); @@ -1670,6 +1670,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_CALYREX_ICE_RIDER - 1] = NATIONAL_DEX_CALYREX, [SPECIES_CALYREX_SHADOW_RIDER - 1] = NATIONAL_DEX_CALYREX, [SPECIES_ENAMORUS_THERIAN - 1] = NATIONAL_DEX_ENAMORUS, + [SPECIES_BASCULEGION_FEMALE - 1] = NATIONAL_DEX_BASCULEGION, #endif }; @@ -1909,42 +1910,41 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = const struct SpindaSpot gSpindaSpotGraphics[] = { - {.x = 16, .y = 7, .image = INCBIN_U16("graphics/spinda_spots/spot_0.bin")}, - {.x = 40, .y = 8, .image = INCBIN_U16("graphics/spinda_spots/spot_1.bin")}, - {.x = 22, .y = 25, .image = INCBIN_U16("graphics/spinda_spots/spot_2.bin")}, - {.x = 34, .y = 26, .image = INCBIN_U16("graphics/spinda_spots/spot_3.bin")} + {.x = 16, .y = 7, .image = INCBIN_U16("graphics/spinda_spots/spot_0.1bpp")}, + {.x = 40, .y = 8, .image = INCBIN_U16("graphics/spinda_spots/spot_1.1bpp")}, + {.x = 22, .y = 25, .image = INCBIN_U16("graphics/spinda_spots/spot_2.1bpp")}, + {.x = 34, .y = 26, .image = INCBIN_U16("graphics/spinda_spots/spot_3.1bpp")} }; #include "data/pokemon/item_effects.h" const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = -{ - // Atk Def Spd Sp.Atk Sp.Def - [NATURE_HARDY] = { 0, 0, 0, 0, 0}, - [NATURE_LONELY] = { +1, -1, 0, 0, 0}, - [NATURE_BRAVE] = { +1, 0, -1, 0, 0}, - [NATURE_ADAMANT] = { +1, 0, 0, -1, 0}, - [NATURE_NAUGHTY] = { +1, 0, 0, 0, -1}, - [NATURE_BOLD] = { -1, +1, 0, 0, 0}, - [NATURE_DOCILE] = { 0, 0, 0, 0, 0}, - [NATURE_RELAXED] = { 0, +1, -1, 0, 0}, - [NATURE_IMPISH] = { 0, +1, 0, -1, 0}, - [NATURE_LAX] = { 0, +1, 0, 0, -1}, - [NATURE_TIMID] = { -1, 0, +1, 0, 0}, - [NATURE_HASTY] = { 0, -1, +1, 0, 0}, - [NATURE_SERIOUS] = { 0, 0, 0, 0, 0}, - [NATURE_JOLLY] = { 0, 0, +1, -1, 0}, - [NATURE_NAIVE] = { 0, 0, +1, 0, -1}, - [NATURE_MODEST] = { -1, 0, 0, +1, 0}, - [NATURE_MILD] = { 0, -1, 0, +1, 0}, - [NATURE_QUIET] = { 0, 0, -1, +1, 0}, - [NATURE_BASHFUL] = { 0, 0, 0, 0, 0}, - [NATURE_RASH] = { 0, 0, 0, +1, -1}, - [NATURE_CALM] = { -1, 0, 0, 0, +1}, - [NATURE_GENTLE] = { 0, -1, 0, 0, +1}, - [NATURE_SASSY] = { 0, 0, -1, 0, +1}, - [NATURE_CAREFUL] = { 0, 0, 0, -1, +1}, - [NATURE_QUIRKY] = { 0, 0, 0, 0, 0}, +{ // Attack Defense Speed Sp.Atk Sp. Def + [NATURE_HARDY] = { 0, 0, 0, 0, 0 }, + [NATURE_LONELY] = { +1, -1, 0, 0, 0 }, + [NATURE_BRAVE] = { +1, 0, -1, 0, 0 }, + [NATURE_ADAMANT] = { +1, 0, 0, -1, 0 }, + [NATURE_NAUGHTY] = { +1, 0, 0, 0, -1 }, + [NATURE_BOLD] = { -1, +1, 0, 0, 0 }, + [NATURE_DOCILE] = { 0, 0, 0, 0, 0 }, + [NATURE_RELAXED] = { 0, +1, -1, 0, 0 }, + [NATURE_IMPISH] = { 0, +1, 0, -1, 0 }, + [NATURE_LAX] = { 0, +1, 0, 0, -1 }, + [NATURE_TIMID] = { -1, 0, +1, 0, 0 }, + [NATURE_HASTY] = { 0, -1, +1, 0, 0 }, + [NATURE_SERIOUS] = { 0, 0, 0, 0, 0 }, + [NATURE_JOLLY] = { 0, 0, +1, -1, 0 }, + [NATURE_NAIVE] = { 0, 0, +1, 0, -1 }, + [NATURE_MODEST] = { -1, 0, 0, +1, 0 }, + [NATURE_MILD] = { 0, -1, 0, +1, 0 }, + [NATURE_QUIET] = { 0, 0, -1, +1, 0 }, + [NATURE_BASHFUL] = { 0, 0, 0, 0, 0 }, + [NATURE_RASH] = { 0, 0, 0, +1, -1 }, + [NATURE_CALM] = { -1, 0, 0, 0, +1 }, + [NATURE_GENTLE] = { 0, -1, 0, 0, +1 }, + [NATURE_SASSY] = { 0, 0, -1, 0, +1 }, + [NATURE_CAREFUL] = { 0, 0, 0, -1, +1 }, + [NATURE_QUIRKY] = { 0, 0, 0, 0, 0 }, }; #include "data/pokemon/trainer_class_lookups.h" @@ -3938,12 +3938,12 @@ void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerP GetMonData(mon, MON_DATA_NICKNAME, dest->nickname); } -void CreateEventLegalMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId) +static void CreateEventMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId) { - bool32 isEventLegal = TRUE; + bool32 isModernFatefulEncounter = TRUE; CreateMon(mon, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId); - SetMonData(mon, MON_DATA_EVENT_LEGAL, &isEventLegal); + SetMonData(mon, MON_DATA_MODERN_FATEFUL_ENCOUNTER, &isModernFatefulEncounter); } // If FALSE, should load this game's Deoxys form. If TRUE, should load normal Deoxys form @@ -4033,14 +4033,14 @@ u16 GetUnionRoomTrainerClass(void) return gFacilityClassToTrainerClass[gUnionRoomFacilityClasses[arrId]]; } -void CreateEventLegalEnemyMon(void) +void CreateEnemyEventMon(void) { s32 species = gSpecialVar_0x8004; s32 level = gSpecialVar_0x8005; s32 itemId = gSpecialVar_0x8006; ZeroEnemyPartyMons(); - CreateEventLegalMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + CreateEventMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); if (itemId) { u8 heldItem[2]; @@ -4138,13 +4138,14 @@ void CalculateMonStats(struct Pokemon *mon) { if (currentHP == 0 && oldMaxHP == 0) currentHP = newMaxHP; - else if (currentHP != 0) { - // BUG: currentHP is unintentionally able to become <= 0 after the instruction below. This causes the pomeg berry glitch. - currentHP += newMaxHP - oldMaxHP; - #ifdef BUGFIX + else if (currentHP != 0) + { + if (newMaxHP > oldMaxHP) + currentHP += newMaxHP - oldMaxHP; if (currentHP <= 0) currentHP = 1; - #endif + if (currentHP > newMaxHP) + currentHP = newMaxHP; } else return; @@ -4194,7 +4195,7 @@ u16 GiveMoveToMon(struct Pokemon *mon, u16 move) return GiveMoveToBoxMon(&mon->box, move); } -static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move) +u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move) { s32 i; for (i = 0; i < MAX_MON_MOVES; i++) @@ -4235,6 +4236,17 @@ void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot) SetMonData(mon, MON_DATA_PP1 + slot, &gBattleMoves[move].pp); } +static void SetMonMoveSlot_KeepPP(struct Pokemon *mon, u16 move, u8 slot) +{ + u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); + u8 currPP = GetMonData(mon, MON_DATA_PP1 + slot, NULL); + u8 newPP = CalculatePPWithBonus(move, ppBonuses, slot); + u8 finalPP = min(currPP, newPP); + + SetMonData(mon, MON_DATA_MOVE1 + slot, &move); + SetMonData(mon, MON_DATA_PP1 + slot, &finalPP); +} + void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot) { mon->moves[slot] = move; @@ -4939,10 +4951,10 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_UNUSED_RIBBONS: retVal = substruct3->unusedRibbons; break; - case MON_DATA_EVENT_LEGAL: - retVal = substruct3->eventLegal; + case MON_DATA_MODERN_FATEFUL_ENCOUNTER: + retVal = substruct3->modernFatefulEncounter; break; - case MON_DATA_SPECIES2: + case MON_DATA_SPECIES_OR_EGG: retVal = substruct0->species; if (substruct0->species && (substruct3->isEgg || boxMon->isBadEgg)) retVal = SPECIES_EGG; @@ -5069,7 +5081,7 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg) case MON_DATA_MAIL: SET8(mon->mail); break; - case MON_DATA_SPECIES2: + case MON_DATA_SPECIES_OR_EGG: break; default: SetBoxMonData(&mon->box, field, data); @@ -5323,8 +5335,8 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) case MON_DATA_UNUSED_RIBBONS: SET8(substruct3->unusedRibbons); break; - case MON_DATA_EVENT_LEGAL: - SET8(substruct3->eventLegal); + case MON_DATA_MODERN_FATEFUL_ENCOUNTER: + SET8(substruct3->modernFatefulEncounter); break; case MON_DATA_IVS: { @@ -5446,9 +5458,9 @@ u8 GetMonsStateToDoubles(void) for (i = 0; i < gPlayerPartyCount; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HP, NULL) != 0 - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_NONE) + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL) != SPECIES_NONE) aliveCount++; } @@ -5462,7 +5474,7 @@ u8 GetMonsStateToDoubles_2(void) for (i = 0; i < PARTY_SIZE; i++) { - u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL); + u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL); if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP, NULL) != 0) aliveCount++; @@ -5736,57 +5748,16 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov // Get item hold effect heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL); if (heldItem == ITEM_ENIGMA_BERRY_E_READER) - { - if (gMain.inBattle) - holdEffect = gEnigmaBerries[gBattlerInMenuId].holdEffect; - else - holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; - } + holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; else - { holdEffect = ItemId_GetHoldEffect(heldItem); - } - - // Get battler id (if relevant) - gPotentialItemEffectBattler = gBattlerInMenuId; - if (gMain.inBattle) - { - gActiveBattler = gBattlerInMenuId; - i = (GetBattlerSide(gActiveBattler) != B_SIDE_PLAYER); - while (i < gBattlersCount) - { - if (gBattlerPartyIndexes[i] == partyIndex) - { - battlerId = i; - break; - } - i += 2; - } - } - else - { - gActiveBattler = 0; - battlerId = MAX_BATTLERS_COUNT; - } // Skip using the item if it won't do anything - if (!ITEM_HAS_EFFECT(item)) - return TRUE; - if (gItemEffectTable[item - ITEM_POTION] == NULL && item != ITEM_ENIGMA_BERRY_E_READER) + if (gItemEffectTable[item] == NULL && item != ITEM_ENIGMA_BERRY_E_READER) return TRUE; // Get item effect - if (item == ITEM_ENIGMA_BERRY_E_READER) - { - if (gMain.inBattle) - itemEffect = gEnigmaBerries[gActiveBattler].itemEffect; - else - itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect; - } - else - { - itemEffect = gItemEffectTable[item - ITEM_POTION]; - } + itemEffect = GetItemEffect(item); // Do item effect for (i = 0; i < ITEM_EFFECT_ARG_START; i++) @@ -5795,85 +5766,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov { // Handle ITEM0 effects (infatuation, Dire Hit, X Attack). ITEM0_SACRED_ASH is handled in party_menu.c + // Now handled in item battle scripts. case 0: - // Cure infatuation - if ((itemEffect[i] & ITEM0_INFATUATION) - && gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && (gBattleMons[battlerId].status2 & STATUS2_INFATUATION)) - { - gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION; - retVal = FALSE; - } - - // Dire Hit - if ((itemEffect[i] & ITEM0_DIRE_HIT) - && !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY)) - { - gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY; - retVal = FALSE; - } break; // Handle ITEM1 effects (in-battle stat boosting effects) + // Now handled in item battle scripts. case 1: - // X Attack - if ((itemEffect[i] & ITEM1_X_ATTACK) - && gBattleMons[gActiveBattler].statStages[STAT_ATK] < MAX_STAT_STAGE) - { - gBattleMons[gActiveBattler].statStages[STAT_ATK] += X_ITEM_STAGES; - if (gBattleMons[gActiveBattler].statStages[STAT_ATK] > MAX_STAT_STAGE) - gBattleMons[gActiveBattler].statStages[STAT_ATK] = MAX_STAT_STAGE; - retVal = FALSE; - } - - // X Defense - if ((itemEffect[i] & ITEM1_X_DEFENSE) - && gBattleMons[gActiveBattler].statStages[STAT_DEF] < MAX_STAT_STAGE) - { - gBattleMons[gActiveBattler].statStages[STAT_DEF] += X_ITEM_STAGES; - if (gBattleMons[gActiveBattler].statStages[STAT_DEF] > MAX_STAT_STAGE) - gBattleMons[gActiveBattler].statStages[STAT_DEF] = MAX_STAT_STAGE; - retVal = FALSE; - } - - // X Speed - if ((itemEffect[i] & ITEM1_X_SPEED) - && gBattleMons[gActiveBattler].statStages[STAT_SPEED] < MAX_STAT_STAGE) - { - gBattleMons[gActiveBattler].statStages[STAT_SPEED] += X_ITEM_STAGES; - if (gBattleMons[gActiveBattler].statStages[STAT_SPEED] > MAX_STAT_STAGE) - gBattleMons[gActiveBattler].statStages[STAT_SPEED] = MAX_STAT_STAGE; - retVal = FALSE; - } - - // X Sp Attack - if ((itemEffect[i] & ITEM1_X_SPATK) - && gBattleMons[gActiveBattler].statStages[STAT_SPATK] < MAX_STAT_STAGE) - { - gBattleMons[gActiveBattler].statStages[STAT_SPATK] += X_ITEM_STAGES; - if (gBattleMons[gActiveBattler].statStages[STAT_SPATK] > MAX_STAT_STAGE) - gBattleMons[gActiveBattler].statStages[STAT_SPATK] = MAX_STAT_STAGE; - retVal = FALSE; - } - - // X Sp Defense - if ((itemEffect[i] & ITEM1_X_SPDEF) - && gBattleMons[gActiveBattler].statStages[STAT_SPDEF] < MAX_STAT_STAGE) - { - gBattleMons[gActiveBattler].statStages[STAT_SPDEF] += X_ITEM_STAGES; - if (gBattleMons[gActiveBattler].statStages[STAT_SPDEF] > MAX_STAT_STAGE) - gBattleMons[gActiveBattler].statStages[STAT_SPDEF] = MAX_STAT_STAGE; - retVal = FALSE; - } - - // X Accuracy - if ((itemEffect[i] & ITEM1_X_ACCURACY) - && gBattleMons[gActiveBattler].statStages[STAT_ACC] < MAX_STAT_STAGE) - { - gBattleMons[gActiveBattler].statStages[STAT_ACC] += X_ITEM_STAGES; - if (gBattleMons[gActiveBattler].statStages[STAT_ACC] > MAX_STAT_STAGE) - gBattleMons[gActiveBattler].statStages[STAT_ACC] = MAX_STAT_STAGE; - retVal = FALSE; - } break; // Formerly used by the item effects of the X Sp. Atk and the X Accuracy case 2: @@ -5881,14 +5780,6 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov // Handle ITEM3 effects (Guard Spec, Rare Candy, cure status) case 3: - // Guard Spec - if ((itemEffect[i] & ITEM3_GUARD_SPEC) - && gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0) - { - gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5; - retVal = FALSE; - } - // Rare Candy / EXP Candy if ((itemEffect[i] & ITEM3_LEVEL_UP) && GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL) @@ -5917,27 +5808,16 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } // Cure status - if ((itemEffect[i] & ITEM3_SLEEP) - && HealStatusConditions(mon, partyIndex, STATUS1_SLEEP, battlerId) == 0) - { - if (battlerId != MAX_BATTLERS_COUNT) - gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE; + if ((itemEffect[i] & ITEM3_SLEEP) && HealStatusConditions(mon, partyIndex, STATUS1_SLEEP, battlerId) == 0) retVal = FALSE; - } if ((itemEffect[i] & ITEM3_POISON) && HealStatusConditions(mon, partyIndex, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battlerId) == 0) retVal = FALSE; if ((itemEffect[i] & ITEM3_BURN) && HealStatusConditions(mon, partyIndex, STATUS1_BURN, battlerId) == 0) retVal = FALSE; - if ((itemEffect[i] & ITEM3_FREEZE) && HealStatusConditions(mon, partyIndex, STATUS1_FREEZE, battlerId) == 0) + if ((itemEffect[i] & ITEM3_FREEZE) && HealStatusConditions(mon, partyIndex, STATUS1_FREEZE | STATUS1_FROSTBITE, battlerId) == 0) retVal = FALSE; if ((itemEffect[i] & ITEM3_PARALYSIS) && HealStatusConditions(mon, partyIndex, STATUS1_PARALYSIS, battlerId) == 0) retVal = FALSE; - if ((itemEffect[i] & ITEM3_CONFUSION) // heal confusion - && gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)) - { - gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; - retVal = FALSE; - } break; // Handle ITEM4 effects (Change HP/Atk EVs, HP heal, PP heal, PP up, Revive, and evolution stones) @@ -5986,7 +5866,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (itemEffect[10] & ITEM10_IS_VITAMIN) evCap = EV_ITEM_RAISE_LIMIT; else - evCap = 252; + evCap = MAX_PER_STAT_EVS; if (dataSigned >= evCap) break; @@ -6012,6 +5892,10 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov break; } dataSigned += evChange; + #if I_EV_LOWERING_BERRY_JUMP == GEN_4 + if (dataSigned > 100) + dataSigned = 100; + #endif if (dataSigned < 0) dataSigned = 0; } @@ -6024,38 +5908,12 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov break; case 2: // ITEM4_HEAL_HP - // If Revive, update number of times revive has been used - if (effectFlags & (ITEM4_REVIVE >> 2)) + // Check use validity. + if ((effectFlags & (ITEM4_REVIVE >> 2) && GetMonData(mon, MON_DATA_HP, NULL) != 0) + || (!(effectFlags & (ITEM4_REVIVE >> 2)) && GetMonData(mon, MON_DATA_HP, NULL) == 0)) { - if (GetMonData(mon, MON_DATA_HP, NULL) != 0) - { - itemEffectParam++; - break; - } - if (gMain.inBattle) - { - if (battlerId != MAX_BATTLERS_COUNT) - { - gAbsentBattlerFlags &= ~gBitTable[battlerId]; - CopyPlayerPartyMonToBattleData(battlerId, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battlerId])); - if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255) - gBattleResults.numRevivesUsed++; - } - else - { - gAbsentBattlerFlags &= ~gBitTable[gActiveBattler ^ 2]; - if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255) - gBattleResults.numRevivesUsed++; - } - } - } - else - { - if (GetMonData(mon, MON_DATA_HP, NULL) == 0) - { - itemEffectParam++; - break; - } + itemEffectParam++; + break; } // Get amount of HP to restore @@ -6083,35 +5941,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov // Only restore HP if not at max health if (GetMonData(mon, MON_DATA_MAX_HP, NULL) != GetMonData(mon, MON_DATA_HP, NULL)) { - if (!usedByAI) - { - // Restore HP - dataUnsigned = GetMonData(mon, MON_DATA_HP, NULL) + dataUnsigned; - if (dataUnsigned > GetMonData(mon, MON_DATA_MAX_HP, NULL)) - dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL); - SetMonData(mon, MON_DATA_HP, &dataUnsigned); - - // Update battler (if applicable) - if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT) - { - gBattleMons[battlerId].hp = dataUnsigned; - if (!(effectFlags & (ITEM4_REVIVE >> 2)) && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) - { - if (gBattleResults.numHealingItemsUsed < 255) - gBattleResults.numHealingItemsUsed++; - - temp2 = gActiveBattler; - gActiveBattler = battlerId; - BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, 0); - MarkBattlerForControllerExec(gActiveBattler); - gActiveBattler = temp2; - } - } - } - else - { - gBattleMoveDamage = -dataUnsigned; - } + // Restore HP + dataUnsigned = GetMonData(mon, MON_DATA_HP, NULL) + dataUnsigned; + if (dataUnsigned > GetMonData(mon, MON_DATA_MAX_HP, NULL)) + dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL); + SetMonData(mon, MON_DATA_HP, &dataUnsigned); retVal = FALSE; } effectFlags &= ~(ITEM4_REVIVE >> 2); @@ -6136,11 +5970,6 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov dataUnsigned = CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2); } SetMonData(mon, MON_DATA_PP1 + temp2, &dataUnsigned); - - // Heal battler PP too (if applicable) - if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && MOVE_IS_PERMANENT(battlerId, temp2)) - gBattleMons[battlerId].pp[temp2] = dataUnsigned; - retVal = FALSE; } } @@ -6162,11 +5991,6 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov dataUnsigned = CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); } SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned); - - // Heal battler PP too (if applicable) - if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && MOVE_IS_PERMANENT(battlerId, moveIndex)) - gBattleMons[battlerId].pp[moveIndex] = dataUnsigned; - retVal = FALSE; } } @@ -6222,7 +6046,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (itemEffect[10] & ITEM10_IS_VITAMIN) evCap = EV_ITEM_RAISE_LIMIT; else - evCap = 252; + evCap = MAX_PER_STAT_EVS; if (dataSigned >= evCap) break; @@ -6248,6 +6072,10 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov break; } dataSigned += evChange; + #if I_BERRY_EV_JUMP == GEN_4 + if (dataSigned > 100) + dataSigned = 100; + #endif if (dataSigned < 0) dataSigned = 0; } @@ -6339,9 +6167,9 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) offset = ITEM_EFFECT_ARG_START; - temp = gItemEffectTable[itemId - ITEM_POTION]; + temp = gItemEffectTable[itemId]; - if (!temp && itemId != ITEM_ENIGMA_BERRY_E_READER) + if (temp != NULL && !temp && itemId != ITEM_ENIGMA_BERRY_E_READER) return 0; if (itemId == ITEM_ENIGMA_BERRY_E_READER) @@ -6469,7 +6297,7 @@ u8 *UseStatIncreaseItem(u16 itemId) } else { - itemEffect = gItemEffectTable[itemId - ITEM_POTION]; + itemEffect = gItemEffectTable[itemId]; } gPotentialItemEffectBattler = gBattlerInMenuId; @@ -6770,6 +6598,14 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s } } break; + case EVO_ITEM_HOLD: + if (heldItem == gEvolutionTable[species][i].param) + { + heldItem = 0; + SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); + targetSpecies = gEvolutionTable[species][i].targetSpecies; + } + break; } } break; @@ -6814,6 +6650,16 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s if (GetMonGender(mon) == MON_MALE && gEvolutionTable[species][i].param == evolutionItem) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; + case EVO_ITEM_NIGHT: + RtcCalcLocalTime(); + if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && gEvolutionTable[species][i].param == evolutionItem) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; + case EVO_ITEM_DAY: + RtcCalcLocalTime(); + if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && gEvolutionTable[species][i].param == evolutionItem) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; } } break; @@ -7153,7 +6999,7 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) if (ShouldSkipFriendshipChange()) return; - species = GetMonData(mon, MON_DATA_SPECIES2, 0); + species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, 0); heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0); if (heldItem == ITEM_ENIGMA_BERRY_E_READER) @@ -7590,7 +7436,7 @@ u8 GetNumberOfRelearnableMoves(struct Pokemon *mon) u16 learnedMoves[MAX_MON_MOVES]; u16 moves[MAX_LEVEL_UP_MOVES]; u8 numMoves = 0; - u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); + u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, 0); u8 level = GetMonData(mon, MON_DATA_LEVEL, 0); int i, j, k; @@ -7759,7 +7605,7 @@ static void Task_PlayMapChosenOrBattleBGM(u8 taskId) const u32 *GetMonFrontSpritePal(struct Pokemon *mon) { - u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); + u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); return GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality); @@ -7791,7 +7637,7 @@ const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 p const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon) { - u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); + u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); return GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); @@ -8281,8 +8127,6 @@ static bool8 ShouldSkipFriendshipChange(void) #define ALLOC_FAIL_BUFFER (1 << 0) #define ALLOC_FAIL_STRUCT (1 << 1) #define GFX_MANAGER_ACTIVE 0xA3 // Arbitrary value -#define GFX_MANAGER_SPR_SIZE (MON_PIC_SIZE * 4) // Only Castform uses more than MON_PIC_SIZE, despite not displaying its forms. -#define GFX_MANAGER_NUM_FRAMES 4 // Only 2 frames are needed static void InitMonSpritesGfx_Battle(struct MonSpritesGfxManager* gfx) { @@ -8329,7 +8173,7 @@ struct MonSpritesGfxManager *CreateMonSpritesGfxManager(u8 managerId, u8 mode) case MON_SPR_GFX_MODE_FULL_PARTY: gfx->numSprites = PARTY_SIZE + 1; gfx->numSprites2 = PARTY_SIZE + 1; - gfx->numFrames = GFX_MANAGER_NUM_FRAMES; + gfx->numFrames = MAX_MON_PIC_FRAMES; gfx->dataSize = 1; gfx->mode = MON_SPR_GFX_MODE_FULL_PARTY; break; @@ -8338,14 +8182,14 @@ struct MonSpritesGfxManager *CreateMonSpritesGfxManager(u8 managerId, u8 mode) default: gfx->numSprites = MAX_BATTLERS_COUNT; gfx->numSprites2 = MAX_BATTLERS_COUNT; - gfx->numFrames = GFX_MANAGER_NUM_FRAMES; + gfx->numFrames = MAX_MON_PIC_FRAMES; gfx->dataSize = 1; gfx->mode = MON_SPR_GFX_MODE_NORMAL; break; } // Set up sprite / sprite pointer buffers - gfx->spriteBuffer = AllocZeroed(gfx->dataSize * GFX_MANAGER_SPR_SIZE * gfx->numSprites); + gfx->spriteBuffer = AllocZeroed(gfx->dataSize * MON_PIC_SIZE * MAX_MON_PIC_FRAMES * gfx->numSprites); gfx->spritePointers = AllocZeroed(gfx->numSprites * 32); // ? Only * 4 is necessary, perhaps they were thinking bits. if (gfx->spriteBuffer == NULL || gfx->spritePointers == NULL) { @@ -8354,7 +8198,7 @@ struct MonSpritesGfxManager *CreateMonSpritesGfxManager(u8 managerId, u8 mode) else { for (i = 0; i < gfx->numSprites; i++) - gfx->spritePointers[i] = gfx->spriteBuffer + (gfx->dataSize * GFX_MANAGER_SPR_SIZE * i); + gfx->spritePointers[i] = gfx->spriteBuffer + (gfx->dataSize * MON_PIC_SIZE * MAX_MON_PIC_FRAMES * i); } // Set up sprite structs @@ -8492,18 +8336,18 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 heldItem = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM, NULL); ability = GetAbilityBySpecies(species, GetBoxMonData(boxMon, MON_DATA_ABILITY_NUM, NULL)); - for (i = 0; formChanges[i].method != FORM_CHANGE_END; i++) + for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) { if (method == formChanges[i].method && species != formChanges[i].targetSpecies) { switch (method) { - case FORM_ITEM_HOLD: + case FORM_CHANGE_ITEM_HOLD: if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) && (ability == formChanges[i].param2 || formChanges[i].param2 == ABILITY_NONE)) targetSpecies = formChanges[i].targetSpecies; break; - case FORM_ITEM_USE: + case FORM_CHANGE_ITEM_USE: if (arg == formChanges[i].param1) { switch (formChanges[i].param2) @@ -8524,14 +8368,23 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 } } break; - case FORM_MOVE: + case FORM_CHANGE_MOVE: if (BoxMonKnowsMove(boxMon, formChanges[i].param1) != formChanges[i].param2) targetSpecies = formChanges[i].targetSpecies; break; - case FORM_BATTLE_BEGIN: - case FORM_BATTLE_END: + case FORM_CHANGE_BEGIN_BATTLE: + case FORM_CHANGE_END_BATTLE: if (heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) targetSpecies = formChanges[i].targetSpecies; + break; + case FORM_CHANGE_END_BATTLE_TERRAIN: + if (gBattleTerrain == formChanges[i].param1) + targetSpecies = formChanges[i].targetSpecies; + break; + case FORM_CHANGE_WITHDRAW: + case FORM_CHANGE_FAINT: + targetSpecies = formChanges[i].targetSpecies; + break; } } } @@ -8540,6 +8393,23 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 return targetSpecies; } +bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method) +{ + u32 i, j; + const struct FormChange *formChanges = gFormChangeTablePointers[species]; + + if (formChanges != NULL) + { + for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) + { + if (method == formChanges[i].method && species != formChanges[i].targetSpecies) + return TRUE; + } + } + + return FALSE; +} + u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove) { u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); @@ -8622,20 +8492,47 @@ bool32 ShouldShowFemaleDifferences(u16 species, u32 personality) return (gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE; } -void TryToSetBattleFormChangeMoves(struct Pokemon *mon) +bool32 TryFormChange(u32 monId, u32 side, u16 method) +{ + struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + u16 targetSpecies; + + if (GetMonData(&party[monId], MON_DATA_SPECIES_OR_EGG, 0) == SPECIES_NONE + || GetMonData(&party[monId], MON_DATA_SPECIES_OR_EGG, 0) == SPECIES_EGG) + return FALSE; + + targetSpecies = GetFormChangeTargetSpecies(&party[monId], method, 0); + + if (targetSpecies == SPECIES_NONE && gBattleStruct != NULL) + targetSpecies = gBattleStruct->changedSpecies[monId]; + + if (targetSpecies != SPECIES_NONE) + { + TryToSetBattleFormChangeMoves(&party[monId], method); + SetMonData(&party[monId], MON_DATA_SPECIES, &targetSpecies); + CalculateMonStats(&party[monId]); + return TRUE; + } + + return FALSE; +} + +void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method) { int i, j; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); const struct FormChange *formChanges = gFormChangeTablePointers[species]; - u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); - if (formChanges == NULL) + if (formChanges == NULL + || (method != FORM_CHANGE_BEGIN_BATTLE && method != FORM_CHANGE_END_BATTLE)) return; - for (i = 0; formChanges[i].method != FORM_CHANGE_END; i++) + for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) { - if ((formChanges[i].method == FORM_BATTLE_BEGIN || formChanges[i].method == FORM_BATTLE_END) - && formChanges[i].param2 && formChanges[i].param3 && formChanges[i].targetSpecies == species) + if (formChanges[i].method == method + && formChanges[i].param2 + && formChanges[i].param3 + && formChanges[i].targetSpecies != species) { u16 originalMove = formChanges[i].param2; u16 newMove = formChanges[i].param3; @@ -8643,20 +8540,9 @@ void TryToSetBattleFormChangeMoves(struct Pokemon *mon) for (j = 0; j < MAX_MON_MOVES; j++) { u16 currMove = GetMonData(mon, MON_DATA_MOVE1 + j, NULL); - u8 totalPp = gBattleMoves[currMove].pp; // Get current move's max PP - u8 currPp = GetMonData(mon, MON_DATA_PP1 + j, NULL); // Get current move's remaining PP - u8 diffPp = totalPp - currPp; // Current move's PP difference - u8 finalPp = gBattleMoves[newMove].pp - diffPp; // Apply the PP difference to the new move - if (currMove == originalMove) - { - if (finalPp > gBattleMoves[newMove].pp) - finalPp = 0; - SetMonMoveSlot(mon, newMove, j); - SetMonData(mon, MON_DATA_PP1 + j, &finalPp); - } + SetMonMoveSlot_KeepPP(mon, newMove, j); } - SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); break; } } diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index c7518ba23ed8..e0847233e518 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -215,392 +215,900 @@ static bool32 sIsSummaryAnim; static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = { - [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_IVYSAUR] = BACK_ANIM_H_SLIDE, - [SPECIES_VENUSAUR] = BACK_ANIM_H_SHAKE, - [SPECIES_CHARMANDER] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CHARMELEON] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_CHARIZARD] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SQUIRTLE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_WARTORTLE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_BLASTOISE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_CATERPIE] = BACK_ANIM_H_SLIDE, - [SPECIES_METAPOD] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_BUTTERFREE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WEEDLE] = BACK_ANIM_H_SLIDE, - [SPECIES_KAKUNA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_BEEDRILL] = BACK_ANIM_H_VIBRATE, - [SPECIES_PIDGEY] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_PIDGEOTTO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_PIDGEOT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_RATTATA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_RATICATE] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_SPEAROW] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_FEAROW] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_EKANS] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_ARBOK] = BACK_ANIM_V_SHAKE, - [SPECIES_PIKACHU] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_RAICHU] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_SANDSHREW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SANDSLASH] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_NIDORAN_F] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_NIDORINA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_NIDOQUEEN] = BACK_ANIM_V_SHAKE, - [SPECIES_NIDORAN_M] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_NIDORINO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_NIDOKING] = BACK_ANIM_V_SHAKE, - [SPECIES_CLEFAIRY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_CLEFABLE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_VULPIX] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_NINETALES] = BACK_ANIM_H_VIBRATE, - [SPECIES_JIGGLYPUFF] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_WIGGLYTUFF] = BACK_ANIM_GROW, - [SPECIES_ZUBAT] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_GOLBAT] = BACK_ANIM_V_SHAKE, - [SPECIES_ODDISH] = BACK_ANIM_H_SLIDE, - [SPECIES_GLOOM] = BACK_ANIM_H_SLIDE, - [SPECIES_VILEPLUME] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_PARAS] = BACK_ANIM_H_SLIDE, - [SPECIES_PARASECT] = BACK_ANIM_H_SHAKE, - [SPECIES_VENONAT] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_VENOMOTH] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_DIGLETT] = BACK_ANIM_V_SHAKE, - [SPECIES_DUGTRIO] = BACK_ANIM_V_SHAKE, - [SPECIES_MEOWTH] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_PERSIAN] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_PSYDUCK] = BACK_ANIM_H_SLIDE, - [SPECIES_GOLDUCK] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MANKEY] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_PRIMEAPE] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GROWLITHE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_ARCANINE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_POLIWAG] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_POLIWHIRL] = BACK_ANIM_V_SHAKE, - [SPECIES_POLIWRATH] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_ABRA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_KADABRA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_ALAKAZAM] = BACK_ANIM_GROW_STUTTER, - [SPECIES_MACHOP] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MACHOKE] = BACK_ANIM_V_SHAKE, - [SPECIES_MACHAMP] = BACK_ANIM_V_SHAKE, - [SPECIES_BELLSPROUT] = BACK_ANIM_V_STRETCH, - [SPECIES_WEEPINBELL] = BACK_ANIM_V_STRETCH, - [SPECIES_VICTREEBEL] = BACK_ANIM_V_STRETCH, - [SPECIES_TENTACOOL] = BACK_ANIM_H_SLIDE, - [SPECIES_TENTACRUEL] = BACK_ANIM_H_SLIDE, - [SPECIES_GEODUDE] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_GRAVELER] = BACK_ANIM_H_SHAKE, - [SPECIES_GOLEM] = BACK_ANIM_H_SHAKE, - [SPECIES_PONYTA] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_RAPIDASH] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SLOWPOKE] = BACK_ANIM_H_SLIDE, - [SPECIES_SLOWBRO] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_MAGNEMITE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_MAGNETON] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_FARFETCHD] = BACK_ANIM_H_SLIDE, - [SPECIES_DODUO] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_DODRIO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SEEL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_DEWGONG] = BACK_ANIM_H_SLIDE, - [SPECIES_GRIMER] = BACK_ANIM_V_STRETCH, - [SPECIES_MUK] = BACK_ANIM_H_STRETCH, - [SPECIES_SHELLDER] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_CLOYSTER] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GASTLY] = BACK_ANIM_H_VIBRATE, - [SPECIES_HAUNTER] = BACK_ANIM_H_VIBRATE, - [SPECIES_GENGAR] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_ONIX] = BACK_ANIM_V_SHAKE, - [SPECIES_DROWZEE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_HYPNO] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_KRABBY] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_KINGLER] = BACK_ANIM_V_SHAKE, - [SPECIES_VOLTORB] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_ELECTRODE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_EXEGGCUTE] = BACK_ANIM_H_SLIDE, - [SPECIES_EXEGGUTOR] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_CUBONE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MAROWAK] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_HITMONLEE] = BACK_ANIM_H_SLIDE, - [SPECIES_HITMONCHAN] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LICKITUNG] = BACK_ANIM_H_SLIDE, - [SPECIES_KOFFING] = BACK_ANIM_GROW, - [SPECIES_WEEZING] = BACK_ANIM_GROW, - [SPECIES_RHYHORN] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_RHYDON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CHANSEY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_TANGELA] = BACK_ANIM_V_STRETCH, - [SPECIES_KANGASKHAN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_HORSEA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SEADRA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_GOLDEEN] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SEAKING] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_STARYU] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_STARMIE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_MR_MIME] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SCYTHER] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_JYNX] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_ELECTABUZZ] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MAGMAR] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_PINSIR] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_TAUROS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_MAGIKARP] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GYARADOS] = BACK_ANIM_V_SHAKE, - [SPECIES_LAPRAS] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_DITTO] = BACK_ANIM_SHRINK_GROW, - [SPECIES_EEVEE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_VAPOREON] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_JOLTEON] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_FLAREON] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_PORYGON] = BACK_ANIM_H_VIBRATE, - [SPECIES_OMANYTE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_OMASTAR] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_KABUTO] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_KABUTOPS] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_AERODACTYL] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SNORLAX] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_ARTICUNO] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_ZAPDOS] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MOLTRES] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_DRATINI] = BACK_ANIM_H_SLIDE, - [SPECIES_DRAGONAIR] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_DRAGONITE] = BACK_ANIM_V_SHAKE, - [SPECIES_MEWTWO] = BACK_ANIM_GROW_STUTTER, - [SPECIES_MEW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CHIKORITA] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_BAYLEEF] = BACK_ANIM_H_SLIDE, - [SPECIES_MEGANIUM] = BACK_ANIM_V_SHAKE, - [SPECIES_CYNDAQUIL] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_QUILAVA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_TYPHLOSION] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_TOTODILE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_CROCONAW] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_FERALIGATR] = BACK_ANIM_V_SHAKE, - [SPECIES_SENTRET] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FURRET] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_HOOTHOOT] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_NOCTOWL] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LEDYBA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_LEDIAN] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SPINARAK] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_ARIADOS] = BACK_ANIM_H_SLIDE, - [SPECIES_CROBAT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_CHINCHOU] = BACK_ANIM_V_STRETCH, - [SPECIES_LANTURN] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_PICHU] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CLEFFA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_IGGLYBUFF] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_TOGEPI] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_TOGETIC] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_NATU] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_XATU] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MAREEP] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLAAFFY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_AMPHAROS] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_BELLOSSOM] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_MARILL] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_AZUMARILL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SUDOWOODO] = BACK_ANIM_H_SLIDE, - [SPECIES_POLITOED] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_HOPPIP] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SKIPLOOM] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_JUMPLUFF] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_AIPOM] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SUNKERN] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SUNFLORA] = BACK_ANIM_H_SLIDE, - [SPECIES_YANMA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WOOPER] = BACK_ANIM_V_STRETCH, - [SPECIES_QUAGSIRE] = BACK_ANIM_H_SLIDE, - [SPECIES_ESPEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_UMBREON] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MURKROW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SLOWKING] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_MISDREAVUS] = BACK_ANIM_H_VIBRATE, - [SPECIES_UNOWN] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_WOBBUFFET] = BACK_ANIM_V_STRETCH, - [SPECIES_GIRAFARIG] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_PINECO] = BACK_ANIM_H_SHAKE, - [SPECIES_FORRETRESS] = BACK_ANIM_V_SHAKE, - [SPECIES_DUNSPARCE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GLIGAR] = BACK_ANIM_SHRINK_GROW, - [SPECIES_STEELIX] = BACK_ANIM_V_SHAKE, - [SPECIES_SNUBBULL] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_GRANBULL] = BACK_ANIM_V_SHAKE, - [SPECIES_QWILFISH] = BACK_ANIM_GROW_STUTTER, - [SPECIES_SCIZOR] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SHUCKLE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_HERACROSS] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SNEASEL] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_TEDDIURSA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_URSARING] = BACK_ANIM_V_SHAKE, - [SPECIES_SLUGMA] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_MAGCARGO] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SWINUB] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_PILOSWINE] = BACK_ANIM_H_SHAKE, - [SPECIES_CORSOLA] = BACK_ANIM_H_SLIDE, - [SPECIES_REMORAID] = BACK_ANIM_H_SLIDE, - [SPECIES_OCTILLERY] = BACK_ANIM_SHRINK_GROW, - [SPECIES_DELIBIRD] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_MANTINE] = BACK_ANIM_H_SLIDE, - [SPECIES_SKARMORY] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_HOUNDOUR] = BACK_ANIM_V_SHAKE, - [SPECIES_HOUNDOOM] = BACK_ANIM_V_SHAKE, - [SPECIES_KINGDRA] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_PHANPY] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_DONPHAN] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PORYGON2] = BACK_ANIM_H_VIBRATE, - [SPECIES_STANTLER] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SMEARGLE] = BACK_ANIM_H_SLIDE, - [SPECIES_TYROGUE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_HITMONTOP] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_SMOOCHUM] = BACK_ANIM_H_SLIDE, - [SPECIES_ELEKID] = BACK_ANIM_H_SHAKE, - [SPECIES_MAGBY] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_MILTANK] = BACK_ANIM_H_SLIDE, - [SPECIES_BLISSEY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_RAIKOU] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_ENTEI] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SUICUNE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_LARVITAR] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PUPITAR] = BACK_ANIM_V_SHAKE, - [SPECIES_TYRANITAR] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_LUGIA] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_HO_OH] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_CELEBI] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_TREECKO] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GROVYLE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SCEPTILE] = BACK_ANIM_V_SHAKE, - [SPECIES_TORCHIC] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_COMBUSKEN] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_BLAZIKEN] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_MUDKIP] = BACK_ANIM_H_SLIDE, - [SPECIES_MARSHTOMP] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SWAMPERT] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_POOCHYENA] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MIGHTYENA] = BACK_ANIM_H_SHAKE, - [SPECIES_ZIGZAGOON] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LINOONE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_WURMPLE] = BACK_ANIM_V_STRETCH, - [SPECIES_SILCOON] = BACK_ANIM_H_SHAKE, - [SPECIES_BEAUTIFLY] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_CASCOON] = BACK_ANIM_H_SHAKE, - [SPECIES_DUSTOX] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LOTAD] = BACK_ANIM_H_SLIDE, - [SPECIES_LOMBRE] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_LUDICOLO] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SEEDOT] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_NUZLEAF] = BACK_ANIM_V_SHAKE, - [SPECIES_SHIFTRY] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_NINJASK] = BACK_ANIM_H_VIBRATE, - [SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_TAILLOW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SWELLOW] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SPINDA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_WINGULL] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_PELIPPER] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SURSKIT] = BACK_ANIM_H_SPRING, - [SPECIES_MASQUERAIN] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WAILMER] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_WAILORD] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE, - [SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_TORKOAL] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SABLEYE] = BACK_ANIM_H_VIBRATE, - [SPECIES_BARBOACH] = BACK_ANIM_V_STRETCH, - [SPECIES_WHISCASH] = BACK_ANIM_V_SHAKE, - [SPECIES_LUVDISC] = BACK_ANIM_H_SPRING_REPEATED, - [SPECIES_CORPHISH] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_FEEBAS] = BACK_ANIM_H_SPRING, - [SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_CARVANHA] = BACK_ANIM_H_SPRING_REPEATED, - [SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_VIBRAVA] = BACK_ANIM_H_VIBRATE, - [SPECIES_FLYGON] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MANECTRIC] = BACK_ANIM_V_SHAKE, - [SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CAMERUPT] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SEALEO] = BACK_ANIM_V_SHAKE, - [SPECIES_WALREIN] = BACK_ANIM_V_SHAKE, - [SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_CACTURNE] = BACK_ANIM_H_SHAKE, - [SPECIES_SNORUNT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GLALIE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_AZURILL] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SPOINK] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MINUN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MAWILE] = BACK_ANIM_V_SHAKE, - [SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SWABLU] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ALTARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_DUSKULL] = BACK_ANIM_H_VIBRATE, - [SPECIES_DUSCLOPS] = BACK_ANIM_H_VIBRATE, - [SPECIES_ROSELIA] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_SLAKOTH] = BACK_ANIM_H_SLIDE, - [SPECIES_VIGOROTH] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SLAKING] = BACK_ANIM_H_SHAKE, - [SPECIES_GULPIN] = BACK_ANIM_V_STRETCH, - [SPECIES_SWALOT] = BACK_ANIM_V_STRETCH, - [SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_WHISMUR] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_LOUDRED] = BACK_ANIM_V_SHAKE, - [SPECIES_EXPLOUD] = BACK_ANIM_GROW_STUTTER, - [SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_HUNTAIL] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_GOREBYSS] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE, - [SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE, - [SPECIES_SEVIPER] = BACK_ANIM_V_STRETCH, - [SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE, - [SPECIES_ARON] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_LAIRON] = BACK_ANIM_V_SHAKE, - [SPECIES_AGGRON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_VOLBEAT] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ILLUMISE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_LILEEP] = BACK_ANIM_H_STRETCH, - [SPECIES_CRADILY] = BACK_ANIM_V_STRETCH, - [SPECIES_ANORITH] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_ARMALDO] = BACK_ANIM_V_SHAKE, - [SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_BAGON] = BACK_ANIM_V_SHAKE, - [SPECIES_SHELGON] = BACK_ANIM_V_SHAKE, - [SPECIES_SALAMENCE] = BACK_ANIM_H_SHAKE, - [SPECIES_BELDUM] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_METANG] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_METAGROSS] = BACK_ANIM_V_SHAKE, - [SPECIES_REGIROCK] = BACK_ANIM_V_SHAKE, - [SPECIES_REGICE] = BACK_ANIM_V_SHAKE, - [SPECIES_REGISTEEL] = BACK_ANIM_V_SHAKE, - [SPECIES_KYOGRE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_GROUDON] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_STUTTER, - [SPECIES_LATIAS] = BACK_ANIM_H_VIBRATE, - [SPECIES_LATIOS] = BACK_ANIM_H_VIBRATE, - [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_IVYSAUR] = BACK_ANIM_H_SLIDE, + [SPECIES_VENUSAUR] = BACK_ANIM_H_SHAKE, + [SPECIES_CHARMANDER] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_CHARMELEON] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_CHARIZARD] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_SQUIRTLE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_WARTORTLE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_BLASTOISE] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_CATERPIE] = BACK_ANIM_H_SLIDE, + [SPECIES_METAPOD] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_BUTTERFREE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_WEEDLE] = BACK_ANIM_H_SLIDE, + [SPECIES_KAKUNA] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_BEEDRILL] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIDGEY] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_PIDGEOTTO] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_PIDGEOT] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_RATTATA] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_RATICATE] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_SPEAROW] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_FEAROW] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_EKANS] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_ARBOK] = BACK_ANIM_V_SHAKE, + [SPECIES_PIKACHU] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_RAICHU] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_SANDSHREW] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SANDSLASH] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_NIDORAN_F] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_NIDORINA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_NIDOQUEEN] = BACK_ANIM_V_SHAKE, + [SPECIES_NIDORAN_M] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_NIDORINO] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_NIDOKING] = BACK_ANIM_V_SHAKE, + [SPECIES_CLEFAIRY] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_CLEFABLE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_VULPIX] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_NINETALES] = BACK_ANIM_H_VIBRATE, + [SPECIES_JIGGLYPUFF] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_WIGGLYTUFF] = BACK_ANIM_GROW, + [SPECIES_ZUBAT] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_GOLBAT] = BACK_ANIM_V_SHAKE, + [SPECIES_ODDISH] = BACK_ANIM_H_SLIDE, + [SPECIES_GLOOM] = BACK_ANIM_H_SLIDE, + [SPECIES_VILEPLUME] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_PARAS] = BACK_ANIM_H_SLIDE, + [SPECIES_PARASECT] = BACK_ANIM_H_SHAKE, + [SPECIES_VENONAT] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_VENOMOTH] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_DIGLETT] = BACK_ANIM_V_SHAKE, + [SPECIES_DUGTRIO] = BACK_ANIM_V_SHAKE, + [SPECIES_MEOWTH] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_PERSIAN] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_PSYDUCK] = BACK_ANIM_H_SLIDE, + [SPECIES_GOLDUCK] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_MANKEY] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_PRIMEAPE] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_GROWLITHE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_ARCANINE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_POLIWAG] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_POLIWHIRL] = BACK_ANIM_V_SHAKE, + [SPECIES_POLIWRATH] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_ABRA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_KADABRA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_ALAKAZAM] = BACK_ANIM_GROW_STUTTER, + [SPECIES_MACHOP] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MACHOKE] = BACK_ANIM_V_SHAKE, + [SPECIES_MACHAMP] = BACK_ANIM_V_SHAKE, + [SPECIES_BELLSPROUT] = BACK_ANIM_V_STRETCH, + [SPECIES_WEEPINBELL] = BACK_ANIM_V_STRETCH, + [SPECIES_VICTREEBEL] = BACK_ANIM_V_STRETCH, + [SPECIES_TENTACOOL] = BACK_ANIM_H_SLIDE, + [SPECIES_TENTACRUEL] = BACK_ANIM_H_SLIDE, + [SPECIES_GEODUDE] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_GRAVELER] = BACK_ANIM_H_SHAKE, + [SPECIES_GOLEM] = BACK_ANIM_H_SHAKE, + [SPECIES_PONYTA] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_RAPIDASH] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SLOWPOKE] = BACK_ANIM_H_SLIDE, + [SPECIES_SLOWBRO] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_MAGNEMITE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_MAGNETON] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_FARFETCHD] = BACK_ANIM_H_SLIDE, + [SPECIES_DODUO] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_DODRIO] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SEEL] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_DEWGONG] = BACK_ANIM_H_SLIDE, + [SPECIES_GRIMER] = BACK_ANIM_V_STRETCH, + [SPECIES_MUK] = BACK_ANIM_H_STRETCH, + [SPECIES_SHELLDER] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_CLOYSTER] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GASTLY] = BACK_ANIM_H_VIBRATE, + [SPECIES_HAUNTER] = BACK_ANIM_H_VIBRATE, + [SPECIES_GENGAR] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_ONIX] = BACK_ANIM_V_SHAKE, + [SPECIES_DROWZEE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_HYPNO] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_KRABBY] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_KINGLER] = BACK_ANIM_V_SHAKE, + [SPECIES_VOLTORB] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_ELECTRODE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_EXEGGCUTE] = BACK_ANIM_H_SLIDE, + [SPECIES_EXEGGUTOR] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_CUBONE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MAROWAK] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_HITMONLEE] = BACK_ANIM_H_SLIDE, + [SPECIES_HITMONCHAN] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_LICKITUNG] = BACK_ANIM_H_SLIDE, + [SPECIES_KOFFING] = BACK_ANIM_GROW, + [SPECIES_WEEZING] = BACK_ANIM_GROW, + [SPECIES_RHYHORN] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_RHYDON] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_CHANSEY] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_TANGELA] = BACK_ANIM_V_STRETCH, + [SPECIES_KANGASKHAN] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_HORSEA] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SEADRA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_GOLDEEN] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_SEAKING] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_STARYU] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_STARMIE] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_MR_MIME] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_SCYTHER] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_JYNX] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_ELECTABUZZ] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_MAGMAR] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_PINSIR] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_TAUROS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_MAGIKARP] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_GYARADOS] = BACK_ANIM_V_SHAKE, + [SPECIES_LAPRAS] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_DITTO] = BACK_ANIM_SHRINK_GROW, + [SPECIES_EEVEE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_VAPOREON] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_JOLTEON] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_FLAREON] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_PORYGON] = BACK_ANIM_H_VIBRATE, + [SPECIES_OMANYTE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_OMASTAR] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_KABUTO] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_KABUTOPS] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_AERODACTYL] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SNORLAX] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_ARTICUNO] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_ZAPDOS] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_MOLTRES] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_DRATINI] = BACK_ANIM_H_SLIDE, + [SPECIES_DRAGONAIR] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_DRAGONITE] = BACK_ANIM_V_SHAKE, + [SPECIES_MEWTWO] = BACK_ANIM_GROW_STUTTER, + [SPECIES_MEW] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_CHIKORITA] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_BAYLEEF] = BACK_ANIM_H_SLIDE, + [SPECIES_MEGANIUM] = BACK_ANIM_V_SHAKE, + [SPECIES_CYNDAQUIL] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_QUILAVA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_TYPHLOSION] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_TOTODILE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_CROCONAW] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_FERALIGATR] = BACK_ANIM_V_SHAKE, + [SPECIES_SENTRET] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FURRET] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_HOOTHOOT] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_NOCTOWL] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_LEDYBA] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_LEDIAN] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_SPINARAK] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_ARIADOS] = BACK_ANIM_H_SLIDE, + [SPECIES_CROBAT] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_CHINCHOU] = BACK_ANIM_V_STRETCH, + [SPECIES_LANTURN] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_PICHU] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_CLEFFA] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_IGGLYBUFF] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_TOGEPI] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_TOGETIC] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_NATU] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_XATU] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_MAREEP] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLAAFFY] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_AMPHAROS] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_BELLOSSOM] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_MARILL] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_AZUMARILL] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SUDOWOODO] = BACK_ANIM_H_SLIDE, + [SPECIES_POLITOED] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_HOPPIP] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_SKIPLOOM] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_JUMPLUFF] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_AIPOM] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SUNKERN] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SUNFLORA] = BACK_ANIM_H_SLIDE, + [SPECIES_YANMA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_WOOPER] = BACK_ANIM_V_STRETCH, + [SPECIES_QUAGSIRE] = BACK_ANIM_H_SLIDE, + [SPECIES_ESPEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_UMBREON] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_MURKROW] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SLOWKING] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_MISDREAVUS] = BACK_ANIM_H_VIBRATE, + [SPECIES_UNOWN] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_WOBBUFFET] = BACK_ANIM_V_STRETCH, + [SPECIES_GIRAFARIG] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_PINECO] = BACK_ANIM_H_SHAKE, + [SPECIES_FORRETRESS] = BACK_ANIM_V_SHAKE, + [SPECIES_DUNSPARCE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GLIGAR] = BACK_ANIM_SHRINK_GROW, + [SPECIES_STEELIX] = BACK_ANIM_V_SHAKE, + [SPECIES_SNUBBULL] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_GRANBULL] = BACK_ANIM_V_SHAKE, + [SPECIES_QWILFISH] = BACK_ANIM_GROW_STUTTER, + [SPECIES_SCIZOR] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SHUCKLE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_HERACROSS] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SNEASEL] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_TEDDIURSA] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_URSARING] = BACK_ANIM_V_SHAKE, + [SPECIES_SLUGMA] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_MAGCARGO] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_SWINUB] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_PILOSWINE] = BACK_ANIM_H_SHAKE, + [SPECIES_CORSOLA] = BACK_ANIM_H_SLIDE, + [SPECIES_REMORAID] = BACK_ANIM_H_SLIDE, + [SPECIES_OCTILLERY] = BACK_ANIM_SHRINK_GROW, + [SPECIES_DELIBIRD] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_MANTINE] = BACK_ANIM_H_SLIDE, + [SPECIES_SKARMORY] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_HOUNDOUR] = BACK_ANIM_V_SHAKE, + [SPECIES_HOUNDOOM] = BACK_ANIM_V_SHAKE, + [SPECIES_KINGDRA] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_PHANPY] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_DONPHAN] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_PORYGON2] = BACK_ANIM_H_VIBRATE, + [SPECIES_STANTLER] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SMEARGLE] = BACK_ANIM_H_SLIDE, + [SPECIES_TYROGUE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_HITMONTOP] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_SMOOCHUM] = BACK_ANIM_H_SLIDE, + [SPECIES_ELEKID] = BACK_ANIM_H_SHAKE, + [SPECIES_MAGBY] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_MILTANK] = BACK_ANIM_H_SLIDE, + [SPECIES_BLISSEY] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_RAIKOU] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_ENTEI] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_SUICUNE] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_LARVITAR] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_PUPITAR] = BACK_ANIM_V_SHAKE, + [SPECIES_TYRANITAR] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_LUGIA] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_HO_OH] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_CELEBI] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_TREECKO] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_GROVYLE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SCEPTILE] = BACK_ANIM_V_SHAKE, + [SPECIES_TORCHIC] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_COMBUSKEN] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_BLAZIKEN] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_MUDKIP] = BACK_ANIM_H_SLIDE, + [SPECIES_MARSHTOMP] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SWAMPERT] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_POOCHYENA] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_MIGHTYENA] = BACK_ANIM_H_SHAKE, + [SPECIES_ZIGZAGOON] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_LINOONE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_WURMPLE] = BACK_ANIM_V_STRETCH, + [SPECIES_SILCOON] = BACK_ANIM_H_SHAKE, + [SPECIES_BEAUTIFLY] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_CASCOON] = BACK_ANIM_H_SHAKE, + [SPECIES_DUSTOX] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_LOTAD] = BACK_ANIM_H_SLIDE, + [SPECIES_LOMBRE] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_LUDICOLO] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SEEDOT] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_NUZLEAF] = BACK_ANIM_V_SHAKE, + [SPECIES_SHIFTRY] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_NINJASK] = BACK_ANIM_H_VIBRATE, + [SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_TAILLOW] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SWELLOW] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SPINDA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_WINGULL] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_PELIPPER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_SURSKIT] = BACK_ANIM_H_SPRING, + [SPECIES_MASQUERAIN] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_WAILMER] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_WAILORD] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE, + [SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_TORKOAL] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_SABLEYE] = BACK_ANIM_H_VIBRATE, + [SPECIES_BARBOACH] = BACK_ANIM_V_STRETCH, + [SPECIES_WHISCASH] = BACK_ANIM_V_SHAKE, + [SPECIES_LUVDISC] = BACK_ANIM_H_SPRING_REPEATED, + [SPECIES_CORPHISH] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_FEEBAS] = BACK_ANIM_H_SPRING, + [SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_CARVANHA] = BACK_ANIM_H_SPRING_REPEATED, + [SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_VIBRAVA] = BACK_ANIM_H_VIBRATE, + [SPECIES_FLYGON] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MANECTRIC] = BACK_ANIM_V_SHAKE, + [SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_CAMERUPT] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SEALEO] = BACK_ANIM_V_SHAKE, + [SPECIES_WALREIN] = BACK_ANIM_V_SHAKE, + [SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_CACTURNE] = BACK_ANIM_H_SHAKE, + [SPECIES_SNORUNT] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GLALIE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_AZURILL] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SPOINK] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_MINUN] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_MAWILE] = BACK_ANIM_V_SHAKE, + [SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_SWABLU] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_ALTARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_DUSKULL] = BACK_ANIM_H_VIBRATE, + [SPECIES_DUSCLOPS] = BACK_ANIM_H_VIBRATE, + [SPECIES_ROSELIA] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_SLAKOTH] = BACK_ANIM_H_SLIDE, + [SPECIES_VIGOROTH] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SLAKING] = BACK_ANIM_H_SHAKE, + [SPECIES_GULPIN] = BACK_ANIM_V_STRETCH, + [SPECIES_SWALOT] = BACK_ANIM_V_STRETCH, + [SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_WHISMUR] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_LOUDRED] = BACK_ANIM_V_SHAKE, + [SPECIES_EXPLOUD] = BACK_ANIM_GROW_STUTTER, + [SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_HUNTAIL] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_GOREBYSS] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE, + [SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE, + [SPECIES_SEVIPER] = BACK_ANIM_V_STRETCH, + [SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE, + [SPECIES_ARON] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_LAIRON] = BACK_ANIM_V_SHAKE, + [SPECIES_AGGRON] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_VOLBEAT] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_ILLUMISE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_LILEEP] = BACK_ANIM_H_STRETCH, + [SPECIES_CRADILY] = BACK_ANIM_V_STRETCH, + [SPECIES_ANORITH] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_ARMALDO] = BACK_ANIM_V_SHAKE, + [SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_BAGON] = BACK_ANIM_V_SHAKE, + [SPECIES_SHELGON] = BACK_ANIM_V_SHAKE, + [SPECIES_SALAMENCE] = BACK_ANIM_H_SHAKE, + [SPECIES_BELDUM] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_METANG] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_METAGROSS] = BACK_ANIM_V_SHAKE, + [SPECIES_REGIROCK] = BACK_ANIM_V_SHAKE, + [SPECIES_REGICE] = BACK_ANIM_V_SHAKE, + [SPECIES_REGISTEEL] = BACK_ANIM_V_SHAKE, + [SPECIES_KYOGRE] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_GROUDON] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_STUTTER, + [SPECIES_LATIAS] = BACK_ANIM_H_VIBRATE, + [SPECIES_LATIOS] = BACK_ANIM_H_VIBRATE, + [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC, + + // Gen 4 + [SPECIES_TURTWIG] = BACK_ANIM_H_SLIDE, + [SPECIES_GROTLE] = BACK_ANIM_H_SLIDE, + [SPECIES_TORTERRA] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_CHIMCHAR] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_MONFERNO] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_INFERNAPE] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_PIPLUP] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_PRINPLUP] = BACK_ANIM_V_STRETCH, + [SPECIES_EMPOLEON] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_STARLY] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_STARAVIA] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_STARAPTOR] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_BIDOOF] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_BIBAREL] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_KRICKETOT] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_KRICKETUNE] = BACK_ANIM_H_VIBRATE, + [SPECIES_SHINX] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_LUXIO] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_LUXRAY] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_BUDEW] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_ROSERADE] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_CRANIDOS] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_RAMPARDOS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_SHIELDON] = BACK_ANIM_V_SHAKE, + [SPECIES_BASTIODON] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_BURMY] = BACK_ANIM_H_SHAKE, + [SPECIES_WORMADAM] = BACK_ANIM_V_SHAKE, + [SPECIES_MOTHIM] = BACK_ANIM_H_SHAKE, + [SPECIES_COMBEE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_VESPIQUEN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_PACHIRISU] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_BUIZEL] = BACK_ANIM_H_SLIDE, + [SPECIES_FLOATZEL] = BACK_ANIM_V_STRETCH, + [SPECIES_CHERUBI] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_CHERRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_SHELLOS] = BACK_ANIM_H_SPRING, + [SPECIES_GASTRODON] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_AMBIPOM] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_DRIFLOON] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_DRIFBLIM] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_BUNEARY] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_LOPUNNY] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_MISMAGIUS] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_HONCHKROW] = BACK_ANIM_H_STRETCH, + [SPECIES_GLAMEOW] = BACK_ANIM_SHRINK_GROW, + [SPECIES_PURUGLY] = BACK_ANIM_GROW_STUTTER, + [SPECIES_CHINGLING] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_STUNKY] = BACK_ANIM_H_SLIDE, + [SPECIES_SKUNTANK] = BACK_ANIM_H_STRETCH, + [SPECIES_BRONZOR] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_BRONZONG] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_BONSLY] = BACK_ANIM_H_VIBRATE, + [SPECIES_MIME_JR] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_HAPPINY] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_CHATOT] = BACK_ANIM_V_STRETCH, + [SPECIES_SPIRITOMB] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_GIBLE] = BACK_ANIM_H_SHAKE, + [SPECIES_GABITE] = BACK_ANIM_V_SHAKE, + [SPECIES_GARCHOMP] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_MUNCHLAX] = BACK_ANIM_GROW, + [SPECIES_RIOLU] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_LUCARIO] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_HIPPOPOTAS] = BACK_ANIM_H_SLIDE, + [SPECIES_HIPPOWDON] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_SKORUPI] = BACK_ANIM_H_SLIDE, + [SPECIES_DRAPION] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_CROAGUNK] = BACK_ANIM_GROW, + [SPECIES_TOXICROAK] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_CARNIVINE] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FINNEON] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_LUMINEON] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_MANTYKE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_SNOVER] = BACK_ANIM_V_STRETCH, + [SPECIES_ABOMASNOW] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_WEAVILE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MAGNEZONE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_LICKILICKY] = BACK_ANIM_V_SHAKE, + [SPECIES_RHYPERIOR] = BACK_ANIM_V_SHAKE, + [SPECIES_TANGROWTH] = BACK_ANIM_GROW, + [SPECIES_ELECTIVIRE] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_MAGMORTAR] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_TOGEKISS] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_YANMEGA] = BACK_ANIM_H_VIBRATE, + [SPECIES_LEAFEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_GLACEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_GLISCOR] = BACK_ANIM_V_STRETCH, + [SPECIES_MAMOSWINE] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_PORYGON_Z] = BACK_ANIM_H_VIBRATE, + [SPECIES_GALLADE] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_PROBOPASS] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_DUSKNOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FROSLASS] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_ROTOM] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_UXIE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_MESPRIT] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_AZELF] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_DIALGA] = BACK_ANIM_V_SHAKE, + [SPECIES_PALKIA] = BACK_ANIM_H_SHAKE, + [SPECIES_HEATRAN] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_REGIGIGAS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_GIRATINA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_CRESSELIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_PHIONE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_MANAPHY] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_DARKRAI] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_SHAYMIN] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_ARCEUS] = BACK_ANIM_GROW, + + //Gen 4 Forms + [SPECIES_DEOXYS_ATTACK] = BACK_ANIM_GROW_STUTTER, + [SPECIES_DEOXYS_DEFENSE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_DEOXYS_SPEED] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_BURMY_SANDY_CLOAK] = BACK_ANIM_H_SHAKE, + [SPECIES_BURMY_TRASH_CLOAK] = BACK_ANIM_H_SHAKE, + [SPECIES_WORMADAM_SANDY_CLOAK] = BACK_ANIM_V_SHAKE, + [SPECIES_WORMADAM_TRASH_CLOAK] = BACK_ANIM_V_SHAKE, + [SPECIES_CHERRIM_SUNSHINE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SHELLOS_EAST_SEA] = BACK_ANIM_H_SPRING, + [SPECIES_GASTRODON_EAST_SEA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_ROTOM_HEAT] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_ROTOM_WASH] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_ROTOM_FROST] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_ROTOM_FAN] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_ROTOM_MOW] = BACK_ANIM_H_SLIDE, + [SPECIES_GIRATINA_ORIGIN] = BACK_ANIM_GROW_STUTTER, + [SPECIES_SHAYMIN_SKY] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_ARCEUS_FIGHTING] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_FLYING] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_POISON] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_GROUND] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_ROCK] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_BUG] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_GHOST] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_STEEL] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_FIRE] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_WATER] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_GRASS] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_ELECTRIC] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_PSYCHIC] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_ICE] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_DRAGON] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_DARK] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_FAIRY] = BACK_ANIM_GROW_STUTTER, + + // Gen 5 + [SPECIES_VICTINI] = BACK_ANIM_H_SHAKE, + [SPECIES_SNIVY] = BACK_ANIM_H_SLIDE, + [SPECIES_SERVINE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_SERPERIOR] = BACK_ANIM_V_STRETCH, + [SPECIES_TEPIG] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_PIGNITE] = BACK_ANIM_GROW_STUTTER, + [SPECIES_EMBOAR] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_OSHAWOTT] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_DEWOTT] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SAMUROTT] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_PATRAT] = BACK_ANIM_H_SLIDE, + [SPECIES_WATCHOG] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_LILLIPUP] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_HERDIER] = BACK_ANIM_H_SHAKE, + [SPECIES_STOUTLAND] = BACK_ANIM_V_STRETCH, + [SPECIES_PURRLOIN] = BACK_ANIM_V_STRETCH, + [SPECIES_LIEPARD] = BACK_ANIM_H_STRETCH, + [SPECIES_PANSAGE] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SIMISAGE] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_PANSEAR] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SIMISEAR] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_PANPOUR] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SIMIPOUR] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_MUNNA] = BACK_ANIM_SHRINK_GROW, + [SPECIES_MUSHARNA] = BACK_ANIM_GROW, + [SPECIES_PIDOVE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_TRANQUILL] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_UNFEZANT] = BACK_ANIM_V_STRETCH, + [SPECIES_BLITZLE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_ZEBSTRIKA] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_ROGGENROLA] = BACK_ANIM_V_SHAKE, + [SPECIES_BOLDORE] = BACK_ANIM_H_SHAKE, + [SPECIES_GIGALITH] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_WOOBAT] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_SWOOBAT] = BACK_ANIM_V_STRETCH, + [SPECIES_DRILBUR] = BACK_ANIM_V_SHAKE, + [SPECIES_EXCADRILL] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_AUDINO] = BACK_ANIM_SHRINK_GROW, + [SPECIES_TIMBURR] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_GURDURR] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_CONKELDURR] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_TYMPOLE] = BACK_ANIM_H_SPRING, + [SPECIES_PALPITOAD] = BACK_ANIM_H_VIBRATE, + [SPECIES_SEISMITOAD] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_THROH] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_SAWK] = BACK_ANIM_H_STRETCH, + [SPECIES_SEWADDLE] = BACK_ANIM_H_SLIDE, + [SPECIES_SWADLOON] = BACK_ANIM_H_VIBRATE, + [SPECIES_LEAVANNY] = BACK_ANIM_GROW_STUTTER, + [SPECIES_VENIPEDE] = BACK_ANIM_H_VIBRATE, + [SPECIES_WHIRLIPEDE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SCOLIPEDE] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_COTTONEE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_WHIMSICOTT] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_PETILIL] = BACK_ANIM_V_STRETCH, + [SPECIES_LILLIGANT] = BACK_ANIM_SHRINK_GROW, + [SPECIES_BASCULIN] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SANDILE] = BACK_ANIM_H_SLIDE, + [SPECIES_KROKOROK] = BACK_ANIM_V_STRETCH, + [SPECIES_KROOKODILE] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_DARUMAKA] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_DARMANITAN] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_MARACTUS] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_DWEBBLE] = BACK_ANIM_H_SLIDE, + [SPECIES_CRUSTLE] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_SCRAGGY] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_SCRAFTY] = BACK_ANIM_GROW, + [SPECIES_SIGILYPH] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_YAMASK] = BACK_ANIM_V_SHAKE, + [SPECIES_COFAGRIGUS] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_TIRTOUGA] = BACK_ANIM_H_SLIDE, + [SPECIES_CARRACOSTA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_ARCHEN] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_ARCHEOPS] = BACK_ANIM_V_STRETCH, + [SPECIES_TRUBBISH] = BACK_ANIM_SHRINK_GROW, + [SPECIES_GARBODOR] = BACK_ANIM_H_STRETCH, + [SPECIES_ZORUA] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_ZOROARK] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MINCCINO] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_CINCCINO] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_GOTHITA] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_GOTHORITA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_GOTHITELLE] = BACK_ANIM_H_STRETCH, + [SPECIES_SOLOSIS] = BACK_ANIM_SHRINK_GROW, + [SPECIES_DUOSION] = BACK_ANIM_GROW, + [SPECIES_REUNICLUS] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_DUCKLETT] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SWANNA] = BACK_ANIM_H_STRETCH, + [SPECIES_VANILLITE] = BACK_ANIM_H_SLIDE, + [SPECIES_VANILLISH] = BACK_ANIM_H_SLIDE, + [SPECIES_VANILLUXE] = BACK_ANIM_H_SHAKE, + [SPECIES_DEERLING] = BACK_ANIM_H_SLIDE, + [SPECIES_SAWSBUCK] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_EMOLGA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_KARRABLAST] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_ESCAVALIER] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_FOONGUS] = BACK_ANIM_SHRINK_GROW, + [SPECIES_AMOONGUSS] = BACK_ANIM_GROW_STUTTER, + [SPECIES_FRILLISH] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_JELLICENT] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ALOMOMOLA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_JOLTIK] = BACK_ANIM_H_SLIDE, + [SPECIES_GALVANTULA] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_FERROSEED] = BACK_ANIM_H_SHAKE, + [SPECIES_FERROTHORN] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_KLINK] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_KLANG] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_KLINKLANG] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_TYNAMO] = BACK_ANIM_H_SLIDE, + [SPECIES_EELEKTRIK] = BACK_ANIM_SHRINK_GROW, + [SPECIES_EELEKTROSS] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_ELGYEM] = BACK_ANIM_SHRINK_GROW, + [SPECIES_BEHEEYEM] = BACK_ANIM_H_SHAKE, + [SPECIES_LITWICK] = BACK_ANIM_SHRINK_GROW, + [SPECIES_LAMPENT] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_CHANDELURE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_AXEW] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FRAXURE] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_HAXORUS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_CUBCHOO] = BACK_ANIM_H_SLIDE, + [SPECIES_BEARTIC] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_CRYOGONAL] = BACK_ANIM_H_VIBRATE, + [SPECIES_SHELMET] = BACK_ANIM_V_SHAKE, + [SPECIES_ACCELGOR] = BACK_ANIM_H_SPRING_REPEATED, + [SPECIES_STUNFISK] = BACK_ANIM_H_STRETCH, + [SPECIES_MIENFOO] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_MIENSHAO] = BACK_ANIM_V_STRETCH, + [SPECIES_DRUDDIGON] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_GOLETT] = BACK_ANIM_H_SLIDE, + [SPECIES_GOLURK] = BACK_ANIM_V_SHAKE, + [SPECIES_PAWNIARD] = BACK_ANIM_H_SLIDE, + [SPECIES_BISHARP] = BACK_ANIM_GROW_STUTTER, + [SPECIES_BOUFFALANT] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_RUFFLET] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_BRAVIARY] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_VULLABY] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_MANDIBUZZ] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_HEATMOR] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_DURANT] = BACK_ANIM_H_VIBRATE, + [SPECIES_DEINO] = BACK_ANIM_H_SLIDE, + [SPECIES_ZWEILOUS] = BACK_ANIM_H_SHAKE, + [SPECIES_HYDREIGON] = BACK_ANIM_GROW_STUTTER, + [SPECIES_LARVESTA] = BACK_ANIM_H_SLIDE, + [SPECIES_VOLCARONA] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_COBALION] = BACK_ANIM_V_STRETCH, + [SPECIES_TERRAKION] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_VIRIZION] = BACK_ANIM_H_SHAKE, + [SPECIES_TORNADUS] = BACK_ANIM_V_SHAKE, + [SPECIES_THUNDURUS] = BACK_ANIM_V_SHAKE, + [SPECIES_RESHIRAM] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_ZEKROM] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_LANDORUS] = BACK_ANIM_V_SHAKE, + [SPECIES_KYUREM] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_KELDEO] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MELOETTA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_GENESECT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + + //Gen 5 Forms + [SPECIES_BASCULIN_BLUE_STRIPED] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_DARMANITAN_ZEN_MODE] = BACK_ANIM_H_SHAKE, + [SPECIES_DEERLING_SUMMER] = BACK_ANIM_H_SLIDE, + [SPECIES_DEERLING_AUTUMN] = BACK_ANIM_H_SLIDE, + [SPECIES_DEERLING_WINTER] = BACK_ANIM_H_SLIDE, + [SPECIES_SAWSBUCK_SUMMER] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SAWSBUCK_AUTUMN] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SAWSBUCK_WINTER] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_TORNADUS_THERIAN] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_THUNDURUS_THERIAN] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_LANDORUS_THERIAN] = BACK_ANIM_GROW_STUTTER, + [SPECIES_KYUREM_WHITE] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_KYUREM_BLACK] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_KELDEO_RESOLUTE] = BACK_ANIM_GROW_STUTTER, + [SPECIES_MELOETTA_PIROUETTE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GENESECT_DOUSE_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_GENESECT_SHOCK_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_GENESECT_BURN_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_GENESECT_CHILL_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + + //Gen 6 + [SPECIES_CHESPIN] = BACK_ANIM_H_SLIDE, + [SPECIES_QUILLADIN] = BACK_ANIM_GROW, + [SPECIES_CHESNAUGHT] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_FENNEKIN] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_BRAIXEN] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_DELPHOX] = BACK_ANIM_GROW_STUTTER, + [SPECIES_FROAKIE] = BACK_ANIM_SHRINK_GROW, + [SPECIES_FROGADIER] = BACK_ANIM_GROW_STUTTER, + [SPECIES_GRENINJA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_BUNNELBY] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_DIGGERSBY] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_FLETCHLING] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLETCHINDER] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_TALONFLAME] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_SCATTERBUG] = BACK_ANIM_H_SLIDE, + [SPECIES_SPEWPA] = BACK_ANIM_H_VIBRATE, + [SPECIES_VIVILLON] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_LITLEO] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_PYROAR] = BACK_ANIM_H_STRETCH, + [SPECIES_FLABEBE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLOETTE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_FLORGES] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_SKIDDO] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_GOGOAT] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_PANCHAM] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_PANGORO] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_FURFROU] = BACK_ANIM_V_STRETCH, + [SPECIES_ESPURR] = BACK_ANIM_H_SLIDE, + [SPECIES_MEOWSTIC] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_HONEDGE] = BACK_ANIM_V_SHAKE, + [SPECIES_DOUBLADE] = BACK_ANIM_H_SHAKE, + [SPECIES_AEGISLASH] = BACK_ANIM_H_VIBRATE, + [SPECIES_SPRITZEE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_AROMATISSE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_SWIRLIX] = BACK_ANIM_H_SPRING, + [SPECIES_SLURPUFF] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_INKAY] = BACK_ANIM_SHRINK_GROW, + [SPECIES_MALAMAR] = BACK_ANIM_V_STRETCH, + [SPECIES_BINACLE] = BACK_ANIM_H_SLIDE, + [SPECIES_BARBARACLE] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_SKRELP] = BACK_ANIM_V_STRETCH, + [SPECIES_DRAGALGE] = BACK_ANIM_H_STRETCH, + [SPECIES_CLAUNCHER] = BACK_ANIM_H_SLIDE, + [SPECIES_CLAWITZER] = BACK_ANIM_V_SHAKE, + [SPECIES_HELIOPTILE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_HELIOLISK] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_TYRUNT] = BACK_ANIM_H_SHAKE, + [SPECIES_TYRANTRUM] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_AMAURA] = BACK_ANIM_H_SLIDE, + [SPECIES_AURORUS] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_SYLVEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_HAWLUCHA] = BACK_ANIM_GROW_STUTTER, + [SPECIES_DEDENNE] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_CARBINK] = BACK_ANIM_H_VIBRATE, + [SPECIES_GOOMY] = BACK_ANIM_H_SPRING, + [SPECIES_SLIGGOO] = BACK_ANIM_SHRINK_GROW, + [SPECIES_GOODRA] = BACK_ANIM_SHRINK_GROW, + [SPECIES_KLEFKI] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_PHANTUMP] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_TREVENANT] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_PUMPKABOO] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GOURGEIST] = BACK_ANIM_V_STRETCH, + [SPECIES_BERGMITE] = BACK_ANIM_H_SHAKE, + [SPECIES_AVALUGG] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_NOIBAT] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_NOIVERN] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_XERNEAS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_YVELTAL] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_ZYGARDE] = BACK_ANIM_V_STRETCH, + [SPECIES_DIANCIE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_HOOPA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_VOLCANION] = BACK_ANIM_SHAKE_GLOW_RED, + + //Gen 6 Forms + [SPECIES_GRENINJA_ASH] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_GRENINJA_BATTLE_BOND] = BACK_ANIM_V_STRETCH, + [SPECIES_VIVILLON_POLAR] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_TUNDRA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_CONTINENTAL] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_GARDEN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_ELEGANT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_MEADOW] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_MODERN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_MARINE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_ARCHIPELAGO] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_HIGH_PLAINS] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_SANDSTORM] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_RIVER] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_MONSOON] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_SAVANNA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_SUN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_OCEAN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_JUNGLE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_FANCY] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_POKE_BALL] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_FLABEBE_YELLOW_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLABEBE_ORANGE_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLABEBE_BLUE_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLABEBE_WHITE_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLOETTE_YELLOW_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_FLOETTE_ORANGE_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_FLOETTE_BLUE_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_FLOETTE_WHITE_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_FLOETTE_ETERNAL_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_FLORGES_YELLOW_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FLORGES_ORANGE_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FLORGES_BLUE_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FLORGES_WHITE_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FURFROU_HEART_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_STAR_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_DIAMOND_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_DEBUTANTE_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_MATRON_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_DANDY_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_LA_REINE_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_KABUKI_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_PHARAOH_TRIM] = BACK_ANIM_V_STRETCH, + [SPECIES_MEOWSTIC_FEMALE] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_AEGISLASH_BLADE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_PUMPKABOO_SMALL] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_PUMPKABOO_LARGE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_PUMPKABOO_SUPER] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GOURGEIST_SMALL] = BACK_ANIM_V_STRETCH, + [SPECIES_GOURGEIST_LARGE] = BACK_ANIM_V_STRETCH, + [SPECIES_GOURGEIST_SUPER] = BACK_ANIM_V_STRETCH, + [SPECIES_XERNEAS_ACTIVE] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_ZYGARDE_10] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_ZYGARDE_COMPLETE] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_HOOPA_UNBOUND] = BACK_ANIM_V_SHAKE_LOW, + + //Gen 6 Megas (Thanks Furret/CyanSMP64!) + [SPECIES_VENUSAUR_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_CHARIZARD_MEGA_X] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_CHARIZARD_MEGA_Y] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_BLASTOISE_MEGA] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_BEEDRILL_MEGA] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIDGEOT_MEGA] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_ALAKAZAM_MEGA] = BACK_ANIM_GROW_STUTTER, + [SPECIES_SLOWBRO_MEGA] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_GENGAR_MEGA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_KANGASKHAN_MEGA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_PINSIR_MEGA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_GYARADOS_MEGA] = BACK_ANIM_V_SHAKE, + [SPECIES_AERODACTYL_MEGA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MEWTWO_MEGA_X] = BACK_ANIM_GROW_STUTTER, + [SPECIES_MEWTWO_MEGA_Y] = BACK_ANIM_GROW_STUTTER, + [SPECIES_AMPHAROS_MEGA] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_STEELIX_MEGA] = BACK_ANIM_V_SHAKE, + [SPECIES_SCIZOR_MEGA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_HERACROSS_MEGA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_HOUNDOOM_MEGA] = BACK_ANIM_V_SHAKE, + [SPECIES_TYRANITAR_MEGA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_SCEPTILE_MEGA] = BACK_ANIM_V_SHAKE, + [SPECIES_BLAZIKEN_MEGA] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_SWAMPERT_MEGA] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_GARDEVOIR_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_SABLEYE_MEGA] = BACK_ANIM_H_VIBRATE, + [SPECIES_MAWILE_MEGA] = BACK_ANIM_V_SHAKE, + [SPECIES_AGGRON_MEGA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_MEDICHAM_MEGA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_MANECTRIC_MEGA] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_SHARPEDO_MEGA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_CAMERUPT_MEGA] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_ALTARIA_MEGA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_BANETTE_MEGA] = BACK_ANIM_H_VIBRATE, + [SPECIES_ABSOL_MEGA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_GLALIE_MEGA] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_SALAMENCE_MEGA] = BACK_ANIM_H_SHAKE, + [SPECIES_METAGROSS_MEGA] = BACK_ANIM_V_SHAKE, + [SPECIES_LATIAS_MEGA] = BACK_ANIM_H_VIBRATE, + [SPECIES_LATIOS_MEGA] = BACK_ANIM_H_VIBRATE, + [SPECIES_LOPUNNY_MEGA] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_GARCHOMP_MEGA] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_LUCARIO_MEGA] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_ABOMASNOW_MEGA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_GALLADE_MEGA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_RAYQUAZA_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_KYOGRE_PRIMAL] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_GROUDON_PRIMAL] = BACK_ANIM_SHAKE_GLOW_RED, + }; // Equivalent to struct YellowFlashData, but doesn't match as a struct diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 0758ea37d3f4..9255e1c03b9f 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -815,9 +815,9 @@ const u8 *const gMonIconTable[] = [SPECIES_BRUXISH] = gMonIcon_Bruxish, [SPECIES_DRAMPA] = gMonIcon_Drampa, [SPECIES_DHELMISE] = gMonIcon_Dhelmise, - [SPECIES_JANGMO_O] = gMonIcon_Jangmoo, - [SPECIES_HAKAMO_O] = gMonIcon_Hakamoo, - [SPECIES_KOMMO_O] = gMonIcon_Kommoo, + [SPECIES_JANGMO_O] = gMonIcon_JangmoO, + [SPECIES_HAKAMO_O] = gMonIcon_HakamoO, + [SPECIES_KOMMO_O] = gMonIcon_KommoO, [SPECIES_TAPU_KOKO] = gMonIcon_TapuKoko, [SPECIES_TAPU_LELE] = gMonIcon_TapuLele, [SPECIES_TAPU_BULU] = gMonIcon_TapuBulu, @@ -1293,6 +1293,7 @@ const u8 *const gMonIconTable[] = [SPECIES_CALYREX_ICE_RIDER] = gMonIcon_CalyrexIceRider, [SPECIES_CALYREX_SHADOW_RIDER] = gMonIcon_CalyrexShadowRider, [SPECIES_ENAMORUS_THERIAN] = gMonIcon_EnamorusTherian, + [SPECIES_BASCULEGION_FEMALE] = gMonIcon_BasculegionFemale, #endif [SPECIES_EGG] = gMonIcon_Egg, }; @@ -1325,9 +1326,6 @@ const u8 *const gMonIconTableFemale[] = #if P_GEN_6_POKEMON == TRUE [SPECIES_PYROAR] = gMonIcon_PyroarF, #endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_BASCULEGION] = gMonIcon_BasculegionF, -#endif }; const u8 gMonIconPaletteIndices[] = @@ -2542,6 +2540,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_CALYREX_ICE_RIDER] = 0, [SPECIES_CALYREX_SHADOW_RIDER] = 0, [SPECIES_ENAMORUS_THERIAN] = 1, + [SPECIES_BASCULEGION_FEMALE] = 0, #endif [SPECIES_EGG] = 1, }; @@ -2868,16 +2867,12 @@ const u8 *GetMonIconTiles(u16 species, u32 personality) void TryLoadAllMonIconPalettesAtOffset(u16 offset) { s32 i; - const struct SpritePalette* monIconPalettePtr; - - if (offset <= BG_PLTT_ID(10)) + if (offset <= BG_PLTT_ID(16 - ARRAY_COUNT(gMonIconPaletteTable))) { - monIconPalettePtr = gMonIconPaletteTable; - for (i = ARRAY_COUNT(gMonIconPaletteTable) - 1; i >= 0; i--) + for (i = 0; i < (int)ARRAY_COUNT(gMonIconPaletteTable); i++) { - LoadPalette(monIconPalettePtr->data, offset, PLTT_SIZE_4BPP); - offset += 0x10; - monIconPalettePtr++; + LoadPalette(gMonIconPaletteTable[i].data, offset, PLTT_SIZE_4BPP); + offset += 16; } } } diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index f7438f1395e6..aba3e9d31c9e 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -2536,7 +2536,7 @@ void IsPokemonJumpSpeciesInParty(void) { if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES)) { - u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); if (IsSpeciesAllowedInPokemonJump(species)) { gSpecialVar_Result = TRUE; @@ -2896,7 +2896,7 @@ static void CreateJumpMonSprite(struct PokemonJumpGfx *jumpGfx, struct PokemonJu u8 spriteId; spriteTemplate = sSpriteTemplate_JumpMon; - buffer = Alloc(0x2000); + buffer = Alloc(MON_PIC_SIZE * MAX_MON_PIC_FRAMES); unusedBuffer = Alloc(MON_PIC_SIZE); if (multiplayerId == GetPokeJumpMultiplayerId()) subpriority = 3; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index d83533d59e3a..50f315abdefe 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -36,6 +36,7 @@ #include "trig.h" #include "walda_phrase.h" #include "window.h" +#include "constants/form_change_types.h" #include "constants/items.h" #include "constants/moves.h" #include "constants/rgb.h" @@ -551,7 +552,7 @@ struct PokemonStorageSystemData u16 *displayMonTilePtr; struct Sprite *displayMonSprite; u16 displayMonPalBuffer[0x40]; - u8 tileBuffer[MON_PIC_SIZE * 4]; // 4x the size of a 'Mon sprite to account for Castform + u8 tileBuffer[MON_PIC_SIZE * MAX_MON_PIC_FRAMES]; u8 itemIconBuffer[0x800]; u8 wallpaperBgTilemapBuffer[0x1000]; u8 displayMenuTilemapBuffer[0x800]; @@ -4444,7 +4445,7 @@ static u8 GetMonIconPriorityByCursorPos(void) static void CreateMovingMonIcon(void) { u32 personality = GetMonData(&sStorage->movingMon, MON_DATA_PERSONALITY); - u16 species = GetMonData(&sStorage->movingMon, MON_DATA_SPECIES2); + u16 species = GetMonData(&sStorage->movingMon, MON_DATA_SPECIES_OR_EGG); u8 priority = GetMonIconPriorityByCursorPos(); sStorage->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7); @@ -4466,7 +4467,7 @@ static void InitBoxMonSprites(u8 boxId) { for (j = 0; j < IN_BOX_COLUMNS; j++) { - species = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); + species = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES_OR_EGG); if (species != SPECIES_NONE) { personality = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); @@ -4494,7 +4495,7 @@ static void InitBoxMonSprites(u8 boxId) static void CreateBoxMonIconAtPos(u8 boxPosition) { - u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES2); + u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES_OR_EGG); if (species != SPECIES_NONE) { @@ -4728,7 +4729,7 @@ static void GetIncomingBoxMonData(u8 boxId) { for (j = 0; j < IN_BOX_COLUMNS; j++) { - sStorage->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); + sStorage->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES_OR_EGG); if (sStorage->boxSpecies[boxPosition] != SPECIES_NONE) sStorage->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); boxPosition++; @@ -4756,14 +4757,14 @@ static void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode) static void CreatePartyMonsSprites(bool8 visible) { u16 i, count; - u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2); + u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES_OR_EGG); u32 personality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY); sStorage->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12); count = 1; for (i = 1; i < PARTY_SIZE; i++) { - species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); if (species != SPECIES_NONE) { personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); @@ -5527,7 +5528,7 @@ static void InitBoxTitle(u8 boxId) tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE); sStorage->boxTitlePalOffset = OBJ_PLTT_ID(tagIndex) + 14; - sStorage->wallpaperPalBits |= 0x10000 << tagIndex; + sStorage->wallpaperPalBits |= (1 << 16) << tagIndex; // The below seems intended to have separately tracked // the incoming wallpaper title's palette, but as they now @@ -5535,7 +5536,7 @@ static void InitBoxTitle(u8 boxId) // this is redundant along with the use of boxTitleAltPalOffset tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE); sStorage->boxTitleAltPalOffset = OBJ_PLTT_ID(tagIndex) + 14; - sStorage->wallpaperPalBits |= 0x10000 << tagIndex; + sStorage->wallpaperPalBits |= (1 << 16) << tagIndex; StringCopyPadded(sStorage->boxTitleText, GetBoxNamePtr(boxId), 0, BOX_NAME_LENGTH); DrawTextWindowAndBufferTiles(sStorage->boxTitleText, sStorage->boxTitleTiles, 0, 0, 2); @@ -5653,9 +5654,9 @@ static void CycleBoxTitleColor(void) u8 boxId = StorageGetCurrentBox(); u8 wallpaperId = GetBoxWallpaper(boxId); if (sStorage->boxTitleCycleId == 0) - CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + sStorage->boxTitlePalOffset, 4); + CpuCopy16(sBoxTitleColors[wallpaperId], &gPlttBufferUnfaded[sStorage->boxTitlePalOffset], PLTT_SIZEOF(2)); else - CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + sStorage->boxTitleAltPalOffset, 4); + CpuCopy16(sBoxTitleColors[wallpaperId], &gPlttBufferUnfaded[sStorage->boxTitleAltPalOffset], PLTT_SIZEOF(2)); } static s16 GetBoxTitleBaseX(const u8 *string) @@ -6893,7 +6894,7 @@ static void ReshowDisplayMon(void) void SetMonFormPSS(struct BoxPokemon *boxMon) { - u16 targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, FORM_ITEM_HOLD, 0); + u16 targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, FORM_CHANGE_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { SetBoxMonData(boxMon, MON_DATA_SPECIES, &targetSpecies); @@ -6914,7 +6915,7 @@ static void SetDisplayMonData(void *pokemon, u8 mode) { struct Pokemon *mon = (struct Pokemon *)pokemon; - sStorage->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES2); + sStorage->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); if (sStorage->displayMonSpecies != SPECIES_NONE) { sanityIsBadEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG); @@ -6937,7 +6938,7 @@ static void SetDisplayMonData(void *pokemon, u8 mode) { struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon; - sStorage->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2); + sStorage->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES_OR_EGG); if (sStorage->displayMonSpecies != SPECIES_NONE) { u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); @@ -8485,7 +8486,7 @@ static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn) static void MultiMove_SetIconToBg(u8 x, u8 y) { u8 position = x + (IN_BOX_COLUMNS * y); - u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES_OR_EGG); u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); if (species != SPECIES_NONE) @@ -8510,7 +8511,7 @@ static void MultiMove_SetIconToBg(u8 x, u8 y) static void MultiMove_ClearIconFromBg(u8 x, u8 y) { u8 position = x + (IN_BOX_COLUMNS * y); - u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES_OR_EGG); if (species != SPECIES_NONE) { @@ -8793,8 +8794,7 @@ static void CreateItemIconSprites(void) LoadCompressedSpriteSheet(&spriteSheet); sStorage->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * TILE_SIZE_4BPP + (void *)(OBJ_VRAM0); sStorage->itemIcons[i].palIndex = AllocSpritePalette(PALTAG_ITEM_ICON_0 + i); - sStorage->itemIcons[i].palIndex *= 16; - sStorage->itemIcons[i].palIndex += 0x100; + sStorage->itemIcons[i].palIndex = OBJ_PLTT_ID(sStorage->itemIcons[i].palIndex); spriteTemplate.tileTag = GFXTAG_ITEM_ICON_0 + i; spriteTemplate.paletteTag = PALTAG_ITEM_ICON_0 + i; spriteId = CreateSprite(&spriteTemplate, 0, 0, 11); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 2d42002adbf3..f7106b8752ac 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1112,6 +1112,10 @@ static const union AnimCmd sSpriteAnim_StatusFaint[] = { ANIMCMD_FRAME(24, 0, FALSE, FALSE), ANIMCMD_END }; +static const union AnimCmd sSpriteAnim_StatusFrostbite[] = { + ANIMCMD_FRAME(28, 0, FALSE, FALSE), + ANIMCMD_END +}; static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = { sSpriteAnim_StatusPoison, sSpriteAnim_StatusParalyzed, @@ -1120,11 +1124,12 @@ static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = { sSpriteAnim_StatusBurn, sSpriteAnim_StatusPokerus, sSpriteAnim_StatusFaint, + sSpriteAnim_StatusFrostbite, }; static const struct CompressedSpriteSheet sStatusIconsSpriteSheet = { .data = gStatusGfx_Icons, - .size = 0x380, + .size = 0x400, .tag = TAG_MON_STATUS }; static const struct CompressedSpritePalette sStatusIconsSpritePalette = @@ -1474,7 +1479,7 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *mon) { case 0: sum->species = GetMonData(mon, MON_DATA_SPECIES); - sum->species2 = GetMonData(mon, MON_DATA_SPECIES2); + sum->species2 = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); sum->exp = GetMonData(mon, MON_DATA_EXP); sum->level = GetMonData(mon, MON_DATA_LEVEL); sum->abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM); diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c index 0477ebbf527b..3c06f6c6492c 100644 --- a/src/pokenav_conditions.c +++ b/src/pokenav_conditions.c @@ -531,7 +531,7 @@ static void ConditionGraphDrawMonPic(s16 listId, u8 loadId) boxId = monListPtr->monData[listId].boxId; monId = monListPtr->monData[listId].monId; - species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES2, NULL); + species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES_OR_EGG, NULL); tid = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL); personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL); LoadSpecialPokePic(menu->monPicGfx[loadId], species, personality, TRUE); diff --git a/src/pokenav_conditions_search_results.c b/src/pokenav_conditions_search_results.c index db24220309be..24fe966dc329 100644 --- a/src/pokenav_conditions_search_results.c +++ b/src/pokenav_conditions_search_results.c @@ -432,7 +432,7 @@ static u32 LoopedTask_OpenConditionSearchResults(s32 state) SetBgTilemapBuffer(1, gfx->buff); CopyToBgTilemapBuffer(1, sConditionSearchResultTilemap, 0, 0); CopyBgTilemapBufferToVram(1); - CopyPaletteIntoBufferUnfaded(sConditionSearchResultFramePal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sConditionSearchResultFramePal, BG_PLTT_ID(1), sizeof(sConditionSearchResultFramePal)); CopyBgTilemapBufferToVram(1); return LT_INC_AND_PAUSE; case 1: @@ -444,7 +444,7 @@ static u32 LoopedTask_OpenConditionSearchResults(s32 state) case 2: if (FreeTempTileDataBuffersIfPossible()) return LT_PAUSE; - CopyPaletteIntoBufferUnfaded(sListBg_Pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sListBg_Pal, BG_PLTT_ID(2), sizeof(sListBg_Pal)); CreateSearchResultsList(); return LT_INC_AND_PAUSE; case 3: diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c index bfc5ba0cb4f7..761f572d6bda 100644 --- a/src/pokenav_main_menu.c +++ b/src/pokenav_main_menu.c @@ -443,7 +443,7 @@ static u32 LoopedTask_SlideMenuHeaderDown(s32 state) void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size) { - CpuCopy16(palette, gPlttBufferUnfaded + bufferOffset, size); + CpuCopy16(palette, &gPlttBufferUnfaded[bufferOffset], size); } void Pokenav_AllocAndLoadPalettes(const struct SpritePalette *palettes) @@ -468,7 +468,7 @@ void Pokenav_AllocAndLoadPalettes(const struct SpritePalette *palettes) void PokenavFillPalette(u32 palIndex, u16 fillValue) { - CpuFill16(fillValue, gPlttBufferFaded + 0x100 + (palIndex * 16), 16 * sizeof(u16)); + CpuFill16(fillValue, &gPlttBufferFaded[OBJ_PLTT_ID(palIndex)], PLTT_SIZE_4BPP); } void PokenavCopyPalette(const u16 *src, const u16 *dest, int size, int a3, int a4, u16 *palette) diff --git a/src/pokenav_match_call_gfx.c b/src/pokenav_match_call_gfx.c index 626e584b70dd..4271e2ff23b9 100755 --- a/src/pokenav_match_call_gfx.c +++ b/src/pokenav_match_call_gfx.c @@ -49,7 +49,7 @@ struct Pokenav_MatchCallGfx u8 unusedTilemapBuffer[BG_SCREEN_SIZE]; u8 bgTilemapBuffer2[BG_SCREEN_SIZE]; u8 *trainerPicGfxPtr; - u8 trainerPicGfx[0x800]; + u8 trainerPicGfx[TRAINER_PIC_SIZE]; u8 trainerPicPal[0x20]; }; @@ -333,7 +333,7 @@ static u32 LoopedTask_OpenMatchCall(s32 state) SetBgTilemapBuffer(2, gfx->bgTilemapBuffer2); CopyToBgTilemapBuffer(2, sMatchCallUI_Tilemap, 0, 0); CopyBgTilemapBufferToVram(2); - CopyPaletteIntoBufferUnfaded(sMatchCallUI_Pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sMatchCallUI_Pal, BG_PLTT_ID(2), sizeof(sMatchCallUI_Pal)); CopyBgTilemapBufferToVram(2); return LT_INC_AND_PAUSE; case 1: @@ -343,7 +343,7 @@ static u32 LoopedTask_OpenMatchCall(s32 state) BgDmaFill(1, 0, 0, 1); SetBgTilemapBuffer(1, gfx->bgTilemapBuffer1); FillBgTilemapBufferRect_Palette0(1, 0x1000, 0, 0, 32, 20); - CopyPaletteIntoBufferUnfaded(sCallWindow_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sCallWindow_Pal, BG_PLTT_ID(1), sizeof(sCallWindow_Pal)); CopyBgTilemapBufferToVram(1); return LT_INC_AND_PAUSE; case 2: @@ -352,7 +352,7 @@ static u32 LoopedTask_OpenMatchCall(s32 state) LoadCallWindowAndFade(gfx); DecompressAndCopyTileDataToVram(3, sPokeball_Gfx, 0, 0, 0); - CopyPaletteIntoBufferUnfaded(sListWindow_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sListWindow_Pal, BG_PLTT_ID(3), sizeof(sListWindow_Pal)); CopyPaletteIntoBufferUnfaded(sPokeball_Pal, BG_PLTT_ID(5), PLTT_SIZE_4BPP); return LT_INC_AND_PAUSE; case 3: @@ -913,9 +913,9 @@ static void Task_FlashPokeballIcons(u8 taskId) tSinIdx += 4; tSinIdx &= 0x7F; tSinVal = gSineTable[tSinIdx] >> 4; - PokenavCopyPalette(sPokeball_Pal, &sPokeball_Pal[0x10], 0x10, 0x10, tSinVal, &gPlttBufferUnfaded[0x50]); + PokenavCopyPalette(sPokeball_Pal, &sPokeball_Pal[0x10], 0x10, 0x10, tSinVal, &gPlttBufferUnfaded[BG_PLTT_ID(5)]); if (!gPaletteFade.active) - CpuCopy32(&gPlttBufferUnfaded[0x50], &gPlttBufferFaded[0x50], 0x20); + CpuCopy32(&gPlttBufferUnfaded[BG_PLTT_ID(5)], &gPlttBufferFaded[BG_PLTT_ID(5)], PLTT_SIZE_4BPP); } } diff --git a/src/pokenav_menu_handler_gfx.c b/src/pokenav_menu_handler_gfx.c index 0c664a0d07c1..dd18eb843364 100644 --- a/src/pokenav_menu_handler_gfx.c +++ b/src/pokenav_menu_handler_gfx.c @@ -470,14 +470,14 @@ static u32 LoopedTask_OpenMenu(s32 state) return LT_PAUSE; DecompressAndCopyTileDataToVram(2, sPokenavDeviceBgTiles, 0, 0, 0); DecompressAndCopyTileDataToVram(2, sPokenavDeviceBgTilemap, 0, 0, 1); - CopyPaletteIntoBufferUnfaded(sPokenavDeviceBgPal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sPokenavDeviceBgPal, BG_PLTT_ID(2), sizeof(sPokenavDeviceBgPal)); return LT_INC_AND_PAUSE; case 2: if (FreeTempTileDataBuffersIfPossible()) return LT_PAUSE; DecompressAndCopyTileDataToVram(3, sPokenavBgDotsTiles, 0, 0, 0); DecompressAndCopyTileDataToVram(3, sPokenavBgDotsTilemap, 0, 0, 1); - CopyPaletteIntoBufferUnfaded(sPokenavBgDotsPal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sPokenavBgDotsPal, BG_PLTT_ID(3), sizeof(sPokenavBgDotsPal)); if (GetPokenavMenuType() == POKENAV_MENU_TYPE_CONDITION || GetPokenavMenuType() == POKENAV_MENU_TYPE_CONDITION_SEARCH) ChangeBgDotsColorToPurple(); return LT_INC_AND_PAUSE; diff --git a/src/pokenav_region_map.c b/src/pokenav_region_map.c index 50f01345c8d8..e589e28187b7 100755 --- a/src/pokenav_region_map.c +++ b/src/pokenav_region_map.c @@ -515,7 +515,7 @@ static void LoadPokenavRegionMapGfx(struct Pokenav_RegionMapGfx *state) FillWindowPixelBuffer(state->infoWindowId, PIXEL_FILL(1)); PutWindowTilemap(state->infoWindowId); CopyWindowToVram(state->infoWindowId, COPYWIN_FULL); - CopyPaletteIntoBufferUnfaded(sMapSecInfoWindow_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sMapSecInfoWindow_Pal, BG_PLTT_ID(1), sizeof(sMapSecInfoWindow_Pal)); CopyPaletteIntoBufferUnfaded(gRegionMapCityZoomTiles_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); if (!IsRegionMapZoomed()) ChangeBgY(1, -0x6000, BG_COORD_SET); diff --git a/src/pokenav_ribbons_list.c b/src/pokenav_ribbons_list.c index 075bcc7ce27b..56492b4ec22e 100644 --- a/src/pokenav_ribbons_list.c +++ b/src/pokenav_ribbons_list.c @@ -432,7 +432,7 @@ static u32 LoopedTask_OpenRibbonsMonList(s32 state) DecompressAndCopyTileDataToVram(1, sMonRibbonListFrameTiles, 0, 0, 0); SetBgTilemapBuffer(1, menu->buff); CopyToBgTilemapBuffer(1, sMonRibbonListFrameTilemap, 0, 0); - CopyPaletteIntoBufferUnfaded(sMonRibbonListFramePal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sMonRibbonListFramePal, BG_PLTT_ID(1), sizeof(sMonRibbonListFramePal)); CopyBgTilemapBufferToVram(1); return LT_INC_AND_PAUSE; case 1: @@ -447,7 +447,7 @@ static u32 LoopedTask_OpenRibbonsMonList(s32 state) case 2: if (FreeTempTileDataBuffersIfPossible()) return LT_PAUSE; - CopyPaletteIntoBufferUnfaded(sMonRibbonListUi_Pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sMonRibbonListUi_Pal, BG_PLTT_ID(2), sizeof(sMonRibbonListUi_Pal)); CreateRibbonMonsList(); return LT_INC_AND_PAUSE; case 3: diff --git a/src/pokenav_ribbons_summary.c b/src/pokenav_ribbons_summary.c index f9432c834968..f2e589e56d45 100644 --- a/src/pokenav_ribbons_summary.c +++ b/src/pokenav_ribbons_summary.c @@ -584,7 +584,7 @@ static u32 LoopedTask_OpenRibbonsSummaryMenu(s32 state) SetBgTilemapBuffer(1, menu->tilemapBuffers[1]); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20); CopyPaletteIntoBufferUnfaded(sRibbonIcons1_Pal, BG_PLTT_ID(2), 5 * PLTT_SIZE_4BPP); - CopyPaletteIntoBufferUnfaded(sMonInfo_Pal, BG_PLTT_ID(10), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sMonInfo_Pal, BG_PLTT_ID(10), sizeof(sMonInfo_Pal)); CopyBgTilemapBufferToVram(1); return LT_INC_AND_PAUSE; } diff --git a/src/random.c b/src/random.c index de923fba6383..14983e7764cc 100644 --- a/src/random.c +++ b/src/random.c @@ -31,3 +31,35 @@ u16 Random2(void) gRng2Value = ISO_RANDOMIZE1(gRng2Value); return gRng2Value >> 16; } + +__attribute__((weak, alias("RandomUniformDefault"))) +u32 RandomUniform(enum RandomTag tag, u32 lo, u32 hi); + +__attribute__((weak, alias("RandomWeightedArrayDefault"))) +u32 RandomWeightedArray(enum RandomTag tag, u32 sum, u32 n, const u8 *weights); + +__attribute__((weak, alias("RandomElementArrayDefault"))) +const void *RandomElementArray(enum RandomTag tag, const void *array, size_t size, size_t count); + +u32 RandomUniformDefault(enum RandomTag tag, u32 lo, u32 hi) +{ + return lo + (((hi - lo + 1) * Random()) >> 16); +} + +u32 RandomWeightedArrayDefault(enum RandomTag tag, u32 sum, u32 n, const u8 *weights) +{ + s32 i, targetSum; + targetSum = (sum * Random()) >> 16; + for (i = 0; i < n - 1; i++) + { + targetSum -= weights[i]; + if (targetSum < 0) + return i; + } + return n - 1; +} + +const void *RandomElementArrayDefault(enum RandomTag tag, const void *array, size_t size, size_t count) +{ + return (const u8 *)array + size * RandomUniformDefault(tag, 0, count - 1); +} diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 4cfa0e4c0c32..e4b1a55440bb 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -176,7 +176,7 @@ void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear) u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId) { if (gTestRunnerEnabled) - BattleTest_CheckBattleRecordActionType(battlerId, sBattlerRecordSizes[battlerId], actionType); + TestRunner_Battle_CheckBattleRecordActionType(battlerId, sBattlerRecordSizes[battlerId], actionType); // Trying to read past array or invalid action byte, battle is over. if (sBattlerRecordSizes[battlerId] >= BATTLER_RECORD_SIZE || sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == 0xFF) diff --git a/src/region_map.c b/src/region_map.c index ebe3afb8e9d5..f6123359be8b 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -621,7 +621,7 @@ bool8 LoadRegionMapGfx(void) void BlendRegionMap(u16 color, u32 coeff) { BlendPalettes(0x380, coeff, color); - CpuCopy16(gPlttBufferFaded + 0x70, gPlttBufferUnfaded + 0x70, 0x60); + CpuCopy16(&gPlttBufferFaded[BG_PLTT_ID(7)], &gPlttBufferUnfaded[BG_PLTT_ID(7)], 3 * PLTT_SIZE_4BPP); } void FreeRegionMapIconResources(void) diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index 118cc5e27706..7b8822acc6ad 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -9,8 +9,8 @@ // The purpose of this struct is for outside applications to be // able to access parts of the ROM or its save file, like a public API. // In vanilla, it was used by Colosseum and XD to access pokemon graphics. -// -// If this struct is rearranged in any way, it defeats the purpose of +// +// If this struct is rearranged in any way, it defeats the purpose of // having it at all. Applications like PKHex or streaming HUDs may find // these values useful, so there's some potential benefit to keeping it. // If there's a compilation problem below, just comment out the assignment diff --git a/src/roulette.c b/src/roulette.c index 283cceebfe57..d311ad094081 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -860,7 +860,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + { { // F_FLASH_COLOR_O_WYNAUT .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x5, + .paletteOffset = BG_PLTT_ID(0) + 5, .numColors = 1, .delay = 1, .unk6 = -1, @@ -870,7 +870,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_G_AZURILL .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0xA, + .paletteOffset = BG_PLTT_ID(0) + 10, .numColors = 1, .delay = 1, .unk6 = -1, @@ -880,7 +880,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_P_SKITTY .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x15, + .paletteOffset = BG_PLTT_ID(1) + 5, .numColors = 1, .delay = 1, .unk6 = -1, @@ -890,7 +890,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_O_MAKUHITA .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x55, + .paletteOffset = BG_PLTT_ID(5) + 5, .numColors = 1, .delay = 1, .unk6 = -1, @@ -900,7 +900,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_G_WYNAUT .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x5A, + .paletteOffset = BG_PLTT_ID(5) + 10, .numColors = 1, .delay = 1, .unk6 = -1, @@ -910,7 +910,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_P_AZURILL .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x65, + .paletteOffset = BG_PLTT_ID(6) + 5, .numColors = 1, .delay = 1, .unk6 = -1, @@ -920,7 +920,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_O_SKITTY .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x75, + .paletteOffset = BG_PLTT_ID(7) + 5, .numColors = 1, .delay = 1, .unk6 = -1, @@ -930,7 +930,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_G_MAKUHITA .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x7A, + .paletteOffset = BG_PLTT_ID(7) + 10, .numColors = 1, .delay = 1, .unk6 = -1, @@ -940,7 +940,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_P_WYNAUT .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x85, + .paletteOffset = BG_PLTT_ID(8) + 5, .numColors = 1, .delay = 1, .unk6 = -1, @@ -950,7 +950,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_O_AZURILL .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x95, + .paletteOffset = BG_PLTT_ID(9) + 5, .numColors = 1, .delay = 1, .unk6 = -1, @@ -960,7 +960,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_G_SKITTY .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0x9A, + .paletteOffset = BG_PLTT_ID(9) + 10, .numColors = 1, .delay = 1, .unk6 = -1, @@ -970,7 +970,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_COLOR_P_MAKUHITA .color = FLASHUTIL_USE_EXISTING_COLOR, - .paletteOffset = 0xA5, + .paletteOffset = BG_PLTT_ID(10) + 5, .numColors = 1, .delay = 1, .unk6 = -1, @@ -980,7 +980,7 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, { // F_FLASH_OUTER_EDGES .color = RGB(22, 30, 29), - .paletteOffset = 0x28, + .paletteOffset = BG_PLTT_ID(2) + 8, .numColors = 2, .delay = 10, .unk6 = -1, @@ -996,7 +996,7 @@ static const struct RouletteFlashSettings sFlashData_PokeIcons[NUM_BOARD_COLORS] { [GET_ROW_IDX(ROW_ORANGE)] = { .color = RGB(31, 31, 20), - .paletteOffset = 0x101, + .paletteOffset = OBJ_PLTT_ID(0) + 1, .numColors = 5, .delay = 30, .unk6 = -1, @@ -1006,7 +1006,7 @@ static const struct RouletteFlashSettings sFlashData_PokeIcons[NUM_BOARD_COLORS] }, [GET_ROW_IDX(ROW_GREEN)] = { .color = RGB(27, 31, 31), - .paletteOffset = 0x106, + .paletteOffset = OBJ_PLTT_ID(0) + 6, .numColors = 5, .delay = 30, .unk6 = -1, @@ -1016,7 +1016,7 @@ static const struct RouletteFlashSettings sFlashData_PokeIcons[NUM_BOARD_COLORS] }, [GET_ROW_IDX(ROW_PURPLE)] = { .color = RGB(31, 27, 31), - .paletteOffset = 0x10B, + .paletteOffset = OBJ_PLTT_ID(0) + 11, .numColors = 5, .delay = 30, .unk6 = -1, @@ -1129,9 +1129,9 @@ static void InitRouletteTableData(void) // Left table (with min bet of 1) has red background, other table has green if (sRoulette->minBet == 1) - gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = bgColors[0]; + gPlttBufferUnfaded[BG_PLTT_ID(0)] = gPlttBufferUnfaded[BG_PLTT_ID(5) + 1] = gPlttBufferFaded[BG_PLTT_ID(0)] = gPlttBufferFaded[BG_PLTT_ID(5) + 1] = bgColors[0]; else - gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = bgColors[1]; + gPlttBufferUnfaded[BG_PLTT_ID(0)] = gPlttBufferUnfaded[BG_PLTT_ID(5) + 1] = gPlttBufferFaded[BG_PLTT_ID(0)] = gPlttBufferFaded[BG_PLTT_ID(5) + 1] = bgColors[1]; RouletteFlash_Reset(&sRoulette->flashUtil); @@ -1144,7 +1144,7 @@ static void InitRouletteTableData(void) for (i = 0; i < PARTY_SIZE; i++) { - switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2)) + switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG)) { case SPECIES_SHROOMISH: sRoulette->partySpeciesFlags |= HAS_SHROOMISH; diff --git a/src/scrcmd.c b/src/scrcmd.c index 7b51df9f926e..98c20ef4e3be 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -650,12 +650,12 @@ bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) case FADE_TO_BLACK: case FADE_TO_WHITE: default: - CpuCopy32(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_DECOMP_BUFFER_SIZE); + CpuCopy32(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_SIZE); FadeScreen(mode, 0); break; case FADE_FROM_BLACK: case FADE_FROM_WHITE: - CpuCopy32(gPaletteDecompressionBuffer, gPlttBufferUnfaded, PLTT_DECOMP_BUFFER_SIZE); + CpuCopy32(gPaletteDecompressionBuffer, gPlttBufferUnfaded, PLTT_SIZE); FadeScreen(mode, 0); break; } @@ -2225,21 +2225,21 @@ bool8 ScrCmd_lockfortrainer(struct ScriptContext *ctx) } } -// This command will set a Pokémon's eventLegal bit; there is no similar command to clear it. -bool8 ScrCmd_setmoneventlegal(struct ScriptContext *ctx) +// This command will set a Pokémon's modernFatefulEncounter bit; there is no similar command to clear it. +bool8 ScrCmd_setmonmodernfatefulencounter(struct ScriptContext *ctx) { - bool8 isEventLegal = TRUE; + bool8 isModernFatefulEncounter = TRUE; u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); - SetMonData(&gPlayerParty[partyIndex], MON_DATA_EVENT_LEGAL, &isEventLegal); + SetMonData(&gPlayerParty[partyIndex], MON_DATA_MODERN_FATEFUL_ENCOUNTER, &isModernFatefulEncounter); return FALSE; } -bool8 ScrCmd_checkmoneventlegal(struct ScriptContext *ctx) +bool8 ScrCmd_checkmonmodernfatefulencounter(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_EVENT_LEGAL, NULL); + gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MODERN_FATEFUL_ENCOUNTER, NULL); return FALSE; } diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index e33c8ffcadbd..bfe2e7581abb 100755 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -72,7 +72,7 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); // In case a mon with a form changing item is given. Eg: SPECIES_ARCEUS with ITEM_SPLASH_PLATE will transform into SPECIES_ARCEUS_WATER upon gifted. - targetSpecies = GetFormChangeTargetSpecies(&mon, FORM_ITEM_HOLD, 0); + targetSpecies = GetFormChangeTargetSpecies(&mon, FORM_CHANGE_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { SetMonData(&mon, MON_DATA_SPECIES, &targetSpecies); @@ -128,7 +128,7 @@ static bool8 CheckPartyMonHasHeldItem(u16 item) for(i = 0; i < PARTY_SIZE; i++) { - u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item) return TRUE; } @@ -172,12 +172,12 @@ void CreateScriptedDoubleWildMon(u16 species1, u8 level1, u16 item1, u16 species SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem1); } - CreateMon(&gEnemyParty[3], species2, level2, 32, 0, 0, OT_ID_PLAYER_ID, 0); + CreateMon(&gEnemyParty[1], species2, level2, 32, 0, 0, OT_ID_PLAYER_ID, 0); if (item2) { heldItem2[0] = item2; heldItem2[1] = item2 >> 8; - SetMonData(&gEnemyParty[3], MON_DATA_HELD_ITEM, heldItem2); + SetMonData(&gEnemyParty[1], MON_DATA_HELD_ITEM, heldItem2); } } diff --git a/src/shop.c b/src/shop.c index 8fea1e1178b4..b4978f063e99 100644 --- a/src/shop.c +++ b/src/shop.c @@ -639,7 +639,10 @@ static void BuyMenuPrintPriceInList(u8 windowId, u32 itemId, u8 y) 5); } - StringExpandPlaceholders(gStringVar4, gText_PokedollarVar1); + if (ItemId_GetImportance(itemId) && (CheckBagHasItem(itemId, 1) || CheckPCHasItem(itemId, 1))) + StringCopy(gStringVar4, gText_SoldOut); + else + StringExpandPlaceholders(gStringVar4, gText_PokedollarVar1); x = GetStringRightAlignXOffset(FONT_NARROW, gStringVar4, 120); AddTextPrinterParameterized4(windowId, FONT_NARROW, x, y, 0, 0, sShopBuyMenuTextColors[COLORID_ITEM_LIST], TEXT_SKIP_DRAW, gStringVar4); } @@ -989,7 +992,9 @@ static void Task_BuyMenu(u8 taskId) else sShopData->totalCost = gDecorations[itemId].price; - if (!IsEnoughMoney(&gSaveBlock1Ptr->money, sShopData->totalCost)) + if (ItemId_GetImportance(itemId) && (CheckBagHasItem(itemId, 1) || CheckPCHasItem(itemId, 1))) + BuyMenuDisplayMessage(taskId, gText_ThatItemIsSoldOut, BuyMenuReturnToItemList); + else if (!IsEnoughMoney(&gSaveBlock1Ptr->money, sShopData->totalCost)) { BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, BuyMenuReturnToItemList); } @@ -998,7 +1003,15 @@ static void Task_BuyMenu(u8 taskId) if (sMartInfo.martType == MART_TYPE_NORMAL) { CopyItemName(itemId, gStringVar1); - if (ItemId_GetPocket(itemId) == POCKET_TM_HM) + if (ItemId_GetImportance(itemId)) + { + ConvertIntToDecimalStringN(gStringVar2, sShopData->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gText_YouWantedVar1ThatllBeVar2); + tItemCount = 1; + sShopData->totalCost = (ItemId_GetPrice(tItemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT)) * tItemCount; + BuyMenuDisplayMessage(taskId, gStringVar4, BuyMenuConfirmPurchase); + } + else if (ItemId_GetPocket(itemId) == POCKET_TM_HM) { StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(itemId)]); BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany2, Task_BuyHowManyDialogueInit); @@ -1103,8 +1116,8 @@ static void BuyMenuTryMakePurchase(u8 taskId) { if (AddBagItem(tItemId, tItemCount) == TRUE) { - BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, BuyMenuSubtractMoney); RecordItemPurchase(taskId); + BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, BuyMenuSubtractMoney); } else { @@ -1170,6 +1183,7 @@ static void BuyMenuReturnToItemList(u8 taskId) s16 *data = gTasks[taskId].data; ClearDialogWindowAndFrameToTransparent(WIN_MESSAGE, FALSE); + RedrawListMenu(tListTaskId); BuyMenuPrintCursor(tListTaskId, COLORID_ITEM_LIST); PutWindowTilemap(WIN_ITEM_LIST); PutWindowTilemap(WIN_ITEM_DESCRIPTION); diff --git a/src/slot_machine.c b/src/slot_machine.c index 2fc0e2c03541..581e5c78e00c 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -4427,7 +4427,7 @@ static void SpriteCB_ReelTimePikachuAura(struct Sprite *sprite) u8 colors[] = {16, 0}; if (sprite->sFlashPal && --sprite->sDelayTimer <= 0) { - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(PALTAG_PIKA_AURA) << 4) + 0x103, colors[sprite->sColorIdx], colors[sprite->sColorIdx], colors[sprite->sColorIdx]); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_PIKA_AURA)) + 3, colors[sprite->sColorIdx], colors[sprite->sColorIdx], colors[sprite->sColorIdx]); ++sprite->sColorIdx; sprite->sColorIdx &= 1; sprite->sDelayTimer = sprite->sDelay; @@ -4442,7 +4442,7 @@ static void SetReelTimePikachuAuraFlashDelay(s16 delay) static void DestroyReelTimePikachuAuraSprites(void) { u8 i; - MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(PALTAG_PIKA_AURA) << 4) + 0x103, 0, 0, 0); + MultiplyInvertedPaletteRGBComponents(OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_PIKA_AURA)) + 3, 0, 0, 0); for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimePikachuAuraSpriteIds); i++) DestroySprite(&gSprites[sSlotMachine->reelTimePikachuAuraSpriteIds[i]]); } diff --git a/src/strings.c b/src/strings.c index 8815212e0555..eb7bb8ba1f92 100644 --- a/src/strings.c +++ b/src/strings.c @@ -341,6 +341,8 @@ const u8 gText_Var1DisdainfullyAteVar2[] = _("{STR_VAR_1} disdainfully ate the\n const u8 gText_ShopBuy[] = _("BUY"); const u8 gText_ShopSell[] = _("SELL"); const u8 gText_ShopQuit[] = _("QUIT"); +const u8 gText_ThatItemIsSoldOut[] = _("I'm sorry, but that item is sold out.{PAUSE_UNTIL_PRESS}"); +const u8 gText_SoldOut[] = _("SOLD OUT"); const u8 gText_InBagVar1[] = _("IN BAG: {STR_VAR_1}"); const u8 gText_QuitShopping[] = _("Quit shopping."); const u8 gText_Var1CertainlyHowMany[] = _("{STR_VAR_1}? Certainly.\nHow many would you like?"); @@ -412,6 +414,7 @@ const u8 gText_PkmnCuredOfPoison[] = _("{STR_VAR_1} was cured of its\npoisoning. const u8 gText_PkmnCuredOfParalysis[] = _("{STR_VAR_1} was cured of\nparalysis.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnWokeUp2[] = _("{STR_VAR_1} woke up.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnBurnHealed[] = _("{STR_VAR_1}'s burn was healed.{PAUSE_UNTIL_PRESS}"); +const u8 gText_PkmnFrostbiteHealed[] = _("{STR_VAR_1}'s frostbite was healed.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnThawedOut[] = _("{STR_VAR_1} was thawed out.{PAUSE_UNTIL_PRESS}"); const u8 gText_PPWasRestored[] = _("PP was restored.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnRegainhedHealth[] = _("{STR_VAR_1} regained health.{PAUSE_UNTIL_PRESS}"); // Unused @@ -1191,7 +1194,11 @@ const u8 gText_PsychUp48BP[] = _("PSYCH UP{CLEAR_TO 0x4E}48BP"); const u8 gText_IcePunch48BP[] = _("ICE PUNCH{CLEAR_TO 0x4E}48BP"); const u8 gText_ThunderPunch48BP[] = _("THUNDERPUNCH{CLEAR_TO 0x4E}48BP"); const u8 gText_FirePunch48BP[] = _("FIRE PUNCH{CLEAR_TO 0x4E}48BP"); +#if OW_POISON_DAMAGE < GEN_4 const u8 gText_PkmnFainted_FldPsn[] = _("{STR_VAR_1} fainted…\p\n"); +#else +const u8 gText_PkmnFainted_FldPsn[] = _("{STR_VAR_1} survived the poisoning.\nThe poison faded away!\p"); +#endif const u8 gText_Marco[] = _("MARCO"); const u8 gText_TrainerCardName[] = _("NAME: "); const u8 gText_TrainerCardIDNo[] = _("IDNo."); diff --git a/src/test_runner_stub.c b/src/test_runner_stub.c index 2c8b54020453..9a9452ed21f4 100644 --- a/src/test_runner_stub.c +++ b/src/test_runner_stub.c @@ -9,38 +9,3 @@ const bool8 gTestRunnerEnabled = FALSE; // animations and messages play, which helps when debugging a test. const bool8 gTestRunnerHeadless = FALSE; const bool8 gTestRunnerSkipIsFail = FALSE; - -__attribute__((weak)) -void TestRunner_Battle_RecordAbilityPopUp(u32 battlerId, u32 ability) -{ -} - -__attribute__((weak)) -void TestRunner_Battle_RecordAnimation(u32 animType, u32 animId) -{ -} - -__attribute__((weak)) -void TestRunner_Battle_RecordHP(u32 battlerId, u32 oldHP, u32 newHP) -{ -} - -__attribute__((weak)) -void TestRunner_Battle_RecordMessage(const u8 *string) -{ -} - -__attribute__((weak)) -void TestRunner_Battle_RecordStatus1(u32 battlerId, u32 status1) -{ -} - -__attribute__((weak)) -void TestRunner_Battle_AfterLastTurn(void) -{ -} - -__attribute__((weak)) -void BattleTest_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType) -{ -} diff --git a/src/tileset_anims.c b/src/tileset_anims.c index 12701fb5f0ef..595ba08a6f51 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -1167,7 +1167,7 @@ static void QueueAnimTiles_BattlePyramid_StatueShadow(u16 timer) static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) { - CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); + CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[BG_PLTT_ID(8)], PLTT_SIZE_4BPP); BlendPalette(BG_PLTT_ID(8), 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) != TASK_NONE) { @@ -1178,7 +1178,7 @@ static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) static void BlendAnimPalette_BattleDome_FloorLightsNoBlend(u16 timer) { - CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); + CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[BG_PLTT_ID(8)], PLTT_SIZE_4BPP); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) == TASK_NONE) { BlendPalette(BG_PLTT_ID(8), 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); diff --git a/src/trade.c b/src/trade.c index 9186864fb37a..b09cc5af734f 100644 --- a/src/trade.c +++ b/src/trade.c @@ -564,7 +564,7 @@ static void CB2_CreateTradeMenu(void) for (i = 0; i < sTradeMenu->partyCounts[TRADE_PLAYER]; i++) { struct Pokemon *mon = &gPlayerParty[i]; - sTradeMenu->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2), + sTradeMenu->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES_OR_EGG), SpriteCB_MonIcon, (sTradeMonSpriteCoords[i][0] * 8) + 14, (sTradeMonSpriteCoords[i][1] * 8) - 12, @@ -575,7 +575,7 @@ static void CB2_CreateTradeMenu(void) for (i = 0; i < sTradeMenu->partyCounts[TRADE_PARTNER]; i++) { struct Pokemon *mon = &gEnemyParty[i]; - sTradeMenu->partySpriteIds[TRADE_PARTNER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), + sTradeMenu->partySpriteIds[TRADE_PARTNER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES_OR_EGG, NULL), SpriteCB_MonIcon, (sTradeMonSpriteCoords[i + PARTY_SIZE][0] * 8) + 14, (sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12, @@ -753,7 +753,7 @@ static void CB2_ReturnToTradeMenu(void) for (i = 0; i < sTradeMenu->partyCounts[TRADE_PLAYER]; i++) { struct Pokemon *mon = &gPlayerParty[i]; - sTradeMenu->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), + sTradeMenu->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES_OR_EGG, NULL), SpriteCB_MonIcon, (sTradeMonSpriteCoords[i][0] * 8) + 14, (sTradeMonSpriteCoords[i][1] * 8) - 12, @@ -764,7 +764,7 @@ static void CB2_ReturnToTradeMenu(void) for (i = 0; i < sTradeMenu->partyCounts[TRADE_PARTNER]; i++) { struct Pokemon *mon = &gEnemyParty[i]; - sTradeMenu->partySpriteIds[TRADE_PARTNER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), + sTradeMenu->partySpriteIds[TRADE_PARTNER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES_OR_EGG, NULL), SpriteCB_MonIcon, (sTradeMonSpriteCoords[i + PARTY_SIZE][0] * 8) + 14, (sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12, @@ -1281,7 +1281,7 @@ static void Leader_HandleCommunication(void) if (sTradeMenu->playerSelectStatus == STATUS_READY && sTradeMenu->partnerSelectStatus == STATUS_READY) { - // Both players have selected a pokemon to trade + // Both players have selected a pokemon to trade sTradeMenu->callbackId = CB_SET_SELECTED_MONS; sTradeMenu->linkData[0] = LINKCMD_SET_MONS_TO_TRADE; sTradeMenu->linkData[1] = sTradeMenu->cursorPosition; @@ -1573,7 +1573,7 @@ static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 player // Partner cant trade illegitimate Deoxys or Mew if (partnerSpecies == SPECIES_DEOXYS || partnerSpecies == SPECIES_MEW) { - if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_EVENT_LEGAL)) + if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_MODERN_FATEFUL_ENCOUNTER)) return PARTNER_MON_INVALID; } @@ -1900,7 +1900,7 @@ static void DrawSelectedMonScreen(u8 whichParty) StoreSpriteCallbackInData6(&gSprites[sTradeMenu->partySpriteIds[selectedMonParty][partyIdx]], SpriteCB_MonIcon); sTradeMenu->drawSelectedMonState[whichParty]++; Trade_MoveSelectedMonToTarget(&gSprites[sTradeMenu->partySpriteIds[selectedMonParty][partyIdx]]); - + CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, whichParty * 15, 0, 15, 17, 0); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); @@ -2380,7 +2380,7 @@ static void SaveTradeGiftRibbons(void) { if (gSaveBlock1Ptr->giftRibbons[i] == 0 && sTradeMenu->giftRibbons[i] != 0) { - if (sTradeMenu->giftRibbons[i] < 64) + if (sTradeMenu->giftRibbons[i] < MAX_GIFT_RIBBON) gSaveBlock1Ptr->giftRibbons[i] = sTradeMenu->giftRibbons[i]; } } @@ -2395,7 +2395,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int for (i = 0; i < partyCount; i++) { - species2[i] = GetMonData(&playerParty[i], MON_DATA_SPECIES2); + species2[i] = GetMonData(&playerParty[i], MON_DATA_SPECIES_OR_EGG); species[i] = GetMonData(&playerParty[i], MON_DATA_SPECIES); } @@ -2426,7 +2426,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int if (species[monIdx] == SPECIES_DEOXYS || species[monIdx] == SPECIES_MEW) { - if (!GetMonData(&playerParty[monIdx], MON_DATA_EVENT_LEGAL)) + if (!GetMonData(&playerParty[monIdx], MON_DATA_MODERN_FATEFUL_ENCOUNTER)) return CANT_TRADE_INVALID_MON; } @@ -2495,17 +2495,17 @@ s32 GetGameProgressForLinkTrade(void) return TRADE_BOTH_PLAYERS_READY; } -static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isEventLegal) +static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isModernFatefulEncounter) { if (species == SPECIES_DEOXYS || species == SPECIES_MEW) { - if (!isEventLegal) + if (!isModernFatefulEncounter) return TRUE; } return FALSE; } -int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isEventLegal) +int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isModernFatefulEncounter) { bool8 playerHasNationalDex = player.hasNationalDex; bool8 playerCanLinkNationally = player.canLinkNationally; @@ -2524,7 +2524,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf } // Cannot trade illegitimate Deoxys/Mew - if (IsDeoxysOrMewUntradable(playerSpecies, isEventLegal)) + if (IsDeoxysOrMewUntradable(playerSpecies, isModernFatefulEncounter)) return UR_TRADE_MSG_MON_CANT_BE_TRADED; // Can't trade specific species @@ -2571,11 +2571,11 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_NONE; } -int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isEventLegal) +int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isModernFatefulEncounter) { bool8 hasNationalDex = player.hasNationalDex; - if (IsDeoxysOrMewUntradable(species, isEventLegal)) + if (IsDeoxysOrMewUntradable(species, isModernFatefulEncounter)) return CANT_REGISTER_MON_NOW; // Can't trade specific species @@ -2605,7 +2605,7 @@ int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx) // Make Eggs not count for numMonsLeft for (i = 0; i < gPlayerPartyCount; i++) { - speciesArray[i] = GetMonData(&mon[i], MON_DATA_SPECIES2); + speciesArray[i] = GetMonData(&mon[i], MON_DATA_SPECIES_OR_EGG); if (speciesArray[i] == SPECIES_EGG) speciesArray[i] = SPECIES_NONE; } @@ -2815,7 +2815,7 @@ static void LoadTradeMonPic(u8 whichParty, u8 state) switch (state) { case 0: - species = GetMonData(mon, MON_DATA_SPECIES2); + species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[whichParty * 2 + B_POSITION_OPPONENT_LEFT], species, personality); diff --git a/src/trainer_hill.c b/src/trainer_hill.c index f6ee9e8182f1..2995a2cb29c4 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -685,7 +685,8 @@ static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floo void GenerateTrainerHillFloorLayout(u16 *mapArg) { s32 y, x; - u16 *src, *dst; + const u16 *src; + u16 *dst; u8 mapId = GetCurrentTrainerHillMapId(); if (mapId == TRAINER_HILL_ENTRANCE) diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 7707e59cc1d7..14849c19e54d 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -9,6 +9,12 @@ #include "pokemon.h" #include "constants/trainers.h" +#define PICS_COUNT 8 + +// Needs to be large enough to store either a decompressed pokemon pic or trainer pic +#define PIC_SPRITE_SIZE max(MON_PIC_SIZE, TRAINER_PIC_SIZE) +#define MAX_PIC_FRAMES max(MAX_MON_PIC_FRAMES, MAX_TRAINER_PIC_FRAMES) + struct PicData { u8 *frames; @@ -18,8 +24,6 @@ struct PicData u8 active; }; -#define PICS_COUNT 8 - static EWRAM_DATA struct SpriteTemplate sCreatingSpriteTemplate = {}; static EWRAM_DATA struct PicData sSpritePics[PICS_COUNT] = {}; @@ -138,11 +142,11 @@ static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFront if (i == PICS_COUNT) return 0xFFFF; - framePics = Alloc(4 * 0x800); + framePics = Alloc(PIC_SPRITE_SIZE * MAX_PIC_FRAMES); if (!framePics) return 0xFFFF; - images = Alloc(4 * sizeof(struct SpriteFrameImage)); + images = Alloc(sizeof(struct SpriteFrameImage) * MAX_PIC_FRAMES); if (!images) { Free(framePics); @@ -153,10 +157,10 @@ static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFront // debug trap? return 0xFFFF; } - for (j = 0; j < 4; j ++) + for (j = 0; j < MAX_PIC_FRAMES; j ++) { - images[j].data = framePics + 0x800 * j; - images[j].size = 0x800; + images[j].data = framePics + PIC_SPRITE_SIZE * j; + images[j].size = PIC_SPRITE_SIZE; } sCreatingSpriteTemplate.tileTag = TAG_NONE; sCreatingSpriteTemplate.oam = &sOamData_Normal; @@ -193,7 +197,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, if (i == PICS_COUNT) return 0xFFFF; - framePics = Alloc(4 * MON_PIC_SIZE); + framePics = Alloc(MON_PIC_SIZE * MAX_MON_PIC_FRAMES); if (!framePics) return 0xFFFF; @@ -206,7 +210,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, { type = flags; } - images = Alloc(4 * sizeof(struct SpriteFrameImage)); + images = Alloc(sizeof(struct SpriteFrameImage) * MAX_MON_PIC_FRAMES); if (!images) { Free(framePics); @@ -217,7 +221,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, // debug trap? return 0xFFFF; } - for (j = 0; j < 4; j ++) + for (j = 0; j < MAX_MON_PIC_FRAMES; j ++) { images[j].data = framePics + MON_PIC_SIZE * j; images[j].size = MON_PIC_SIZE; @@ -291,10 +295,10 @@ static u16 CreateTrainerCardSprite(u16 species, u32 otId, u32 personality, bool8 { u8 *framePics; - framePics = Alloc(4 * 0x800); + framePics = Alloc(TRAINER_PIC_SIZE * MAX_TRAINER_PIC_FRAMES); if (framePics && !DecompressPic(species, personality, isFrontPic, framePics, isTrainer)) { - BlitBitmapRectToWindow(windowId, framePics, 0, 0, 0x40, 0x40, destX, destY, 0x40, 0x40); + BlitBitmapRectToWindow(windowId, framePics, 0, 0, TRAINER_PIC_WIDTH, TRAINER_PIC_HEIGHT, destX, destY, TRAINER_PIC_WIDTH, TRAINER_PIC_HEIGHT); LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer); Free(framePics); return 0; diff --git a/src/union_room.c b/src/union_room.c index 3739c59527ed..38f2b22fa8c0 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -4176,7 +4176,7 @@ static s32 IsRequestedTradeInPlayerParty(u32 type, u32 species) { for (i = 0; i < gPlayerPartyCount; i++) { - species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); if (species == SPECIES_EGG) return UR_TRADE_MATCH; } @@ -4186,7 +4186,7 @@ static s32 IsRequestedTradeInPlayerParty(u32 type, u32 species) { for (i = 0; i < gPlayerPartyCount; i++) { - species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); if (gSpeciesInfo[species].types[0] == type || gSpeciesInfo[species].types[1] == type) return UR_TRADE_MATCH; } @@ -4319,7 +4319,7 @@ static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void) for (i = 0; i < gPlayerPartyCount; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= UNION_ROOM_MAX_LEVEL - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) count++; } @@ -4348,7 +4348,7 @@ void Script_ResetUnionRoomTrade(void) static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade *trade) { - trade->playerSpecies = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2); + trade->playerSpecies = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES_OR_EGG); trade->playerLevel = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); trade->playerPersonality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); if (trade->playerSpecies == SPECIES_EGG) @@ -4359,7 +4359,7 @@ static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade *trad static void RegisterTradeMon(u32 monId, struct UnionRoomTrade *trade) { - trade->species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2); + trade->species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES_OR_EGG); trade->level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); trade->personality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); } @@ -4390,7 +4390,7 @@ static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade *trade, u8 mult cur_personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); if (cur_personality != personality) continue; - cur_species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + cur_species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); if (cur_species != species) continue; response = i; diff --git a/src/union_room_chat.c b/src/union_room_chat.c old mode 100755 new mode 100644 index 5d91e264a0bf..253e025689b7 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -173,8 +173,7 @@ struct UnionRoomChatDisplay u8 bg1Buffer[BG_SCREEN_SIZE]; u8 bg3Buffer[BG_SCREEN_SIZE]; u8 bg2Buffer[BG_SCREEN_SIZE]; - u8 unk2128[0x20]; - u8 unk2148[0x20]; + u8 textEntryTiles[TILE_SIZE_4BPP * 2]; }; struct UnionRoomChatSprites @@ -254,11 +253,11 @@ static void FreeSprites(void); static void ResetGpuBgState(void); static void SetBgTilemapBuffers(void); static void ClearBg0(void); -static void LoadChatWindowBorderGfx(void); +static void LoadKeyboardWindowGfx(void); static void LoadChatWindowGfx(void); static void LoadChatUnkPalette(void); static void LoadChatMessagesWindow(void); -static void LoadKeyboardWindow(void); +static void DrawKeyboardWindow(void); static void LoadKeyboardSwapWindow(void); static void LoadTextEntryWindow(void); static void CreateKeyboardCursorSprite(void); @@ -527,8 +526,8 @@ static const u8 *const sUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT - 1][UNIO } }; -static const u16 sUnk_Palette1[] = INCBIN_U16("graphics/union_room_chat/unk_palette1.gbapal"); -static const u16 sUnk_Palette2[] = INCBIN_U16("graphics/union_room_chat/unk_palette2.gbapal"); +static const u16 sUnusedPalette[] = INCBIN_U16("graphics/union_room_chat/unused.gbapal"); // Loaded but never apparently used +static const u16 sChatMessagesWindow_Pal[] = INCBIN_U16("graphics/union_room_chat/chat_messages_window.gbapal"); static const struct BgTemplate sBgTemplates[] = { { @@ -759,15 +758,15 @@ static const u32 sTextEntryArrowTiles[] = INCBIN_U32("graphics/union_room_chat/t static const u32 sRButtonGfxTiles[] = INCBIN_U32("graphics/union_room_chat/r_button.4bpp.lz"); static const struct CompressedSpriteSheet sSpriteSheets[] = { - {sKeyboardCursorTiles, 0x1000, 0}, - {sTextEntryArrowTiles, 0x0040, 1}, - {sTextEntryCursorTiles, 0x0040, 2}, - {sRButtonGfxTiles, 0x0080, 3}, - {gUnionRoomChat_RButtonLabels, 0x0400, 4} + {.data = sKeyboardCursorTiles, .size = 0x1000, .tag = GFXTAG_KEYBOARD_CURSOR}, + {.data = sTextEntryArrowTiles, .size = 0x0040, .tag = GFXTAG_TEXT_ENTRY_ARROW}, + {.data = sTextEntryCursorTiles, .size = 0x0040, .tag = GFXTAG_TEXT_ENTRY_CURSOR}, + {.data = sRButtonGfxTiles, .size = 0x0080, .tag = GFXTAG_RBUTTON_ICON}, + {.data = gUnionRoomChat_RButtonLabels, .size = 0x0400, .tag = GFXTAG_RBUTTON_LABELS} }; static const struct SpritePalette sSpritePalette = { - sUnionRoomChatInterfacePal, 0 + .data = sUnionRoomChatInterfacePal, .tag = PALTAG_INTERFACE }; static const struct OamData sOam_KeyboardCursor = { @@ -970,7 +969,7 @@ static void CB2_LoadInterface(void) sChat->handleInputTask = CreateTask(Task_HandlePlayerInput, 8); sChat->receiveMessagesTask = CreateTask(Task_ReceiveChatMessage, 7); LoadWirelessStatusIndicatorSpriteGfx(); - CreateWirelessStatusIndicatorSprite(232, 150); + CreateWirelessStatusIndicatorSprite(DISPLAY_WIDTH - 8, DISPLAY_HEIGHT - 10); } break; } @@ -1759,7 +1758,7 @@ static void RegisterTextAtRow(void) static void ResetMessageEntryBuffer(void) { sChat->messageEntryBuffer[0] = EOS; - sChat->lastBufferCursorPos = 15; + sChat->lastBufferCursorPos = MAX_MESSAGE_LENGTH; sChat->bufferCursorPos = 0; } @@ -2063,10 +2062,10 @@ static void Task_ReceiveChatMessage(u8 taskId) tState = 3; // fall through case 3: - for (; tI < 5 && ((tBlockReceivedStatus >> tI) & 1) == 0; tI++) + for (; tI < MAX_RFU_PLAYERS && ((tBlockReceivedStatus >> tI) & 1) == 0; tI++) ; - if (tI == 5) + if (tI == MAX_RFU_PLAYERS) { tState = 1; return; @@ -2254,7 +2253,7 @@ static bool32 Display_LoadGfx(u8 *state) ClearBg0(); break; case 2: - LoadChatWindowBorderGfx(); + LoadKeyboardWindowGfx(); break; case 3: LoadChatWindowGfx(); @@ -2264,7 +2263,7 @@ static bool32 Display_LoadGfx(u8 *state) break; case 5: LoadChatMessagesWindow(); - LoadKeyboardWindow(); + DrawKeyboardWindow(); LoadKeyboardSwapWindow(); LoadTextEntryWindow(); break; @@ -3063,12 +3062,12 @@ static void ClearBg0(void) CopyBgTilemapBufferToVram(0); } -static void LoadChatWindowBorderGfx(void) +static void LoadKeyboardWindowGfx(void) { - LoadPalette(gUnionRoomChat_Window_Pal2, BG_PLTT_ID(7), PLTT_SIZE_4BPP); - LoadPalette(gUnionRoomChat_Window_Pal1, BG_PLTT_ID(12), PLTT_SIZE_4BPP); - DecompressAndCopyTileDataToVram(1, gUnionRoomChat_Border_Gfx, 0, 0, 0); - CopyToBgTilemapBuffer(1, gUnionRoomChat_Border_Tilemap, 0, 0); + LoadPalette(gUnionRoomChat_Keyboard_Pal, BG_PLTT_ID(7), PLTT_SIZE_4BPP); + LoadPalette(gUnionRoomChat_InputText_Pal, BG_PLTT_ID(12), PLTT_SIZE_4BPP); + DecompressAndCopyTileDataToVram(1, gUnionRoomChat_Keyboard_Gfx, 0, 0, 0); + CopyToBgTilemapBuffer(1, gUnionRoomChat_Keyboard_Tilemap, 0, 0); CopyBgTilemapBufferToVram(1); } @@ -3080,8 +3079,12 @@ static void LoadChatWindowGfx(void) ptr = DecompressAndCopyTileDataToVram(2, gUnionRoomChat_Background_Gfx, 0, 0, 0); if (ptr) { - CpuFastCopy(&ptr[0x220], sDisplay->unk2128, sizeof(sDisplay->unk2128)); - CpuFastCopy(&ptr[0x420], sDisplay->unk2148, sizeof(sDisplay->unk2148)); + // The below is nonsense. Tiles 0x11 and 0x21 of the background tileset are + // the second half of "OK" and the "T" in "START" in the instructions header. + // They're later blitted onto the text entry window, then immediately cleared. + // The window has a different palette as well, so the tiles would appear mostly black anyway. + CpuFastCopy(&ptr[0x11 * TILE_SIZE_4BPP], &sDisplay->textEntryTiles[TILE_SIZE_4BPP * 0], TILE_SIZE_4BPP); + CpuFastCopy(&ptr[0x21 * TILE_SIZE_4BPP], &sDisplay->textEntryTiles[TILE_SIZE_4BPP * 1], TILE_SIZE_4BPP); } CopyToBgTilemapBuffer(2, gUnionRoomChat_Background_Tilemap, 0, 0); @@ -3090,19 +3093,19 @@ static void LoadChatWindowGfx(void) static void LoadChatUnkPalette(void) { - LoadPalette(sUnk_Palette1, BG_PLTT_ID(8), sizeof(sUnk_Palette1)); - RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, 1); + LoadPalette(sUnusedPalette, BG_PLTT_ID(8), sizeof(sUnusedPalette)); + RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + TILE_SIZE_4BPP, TILE_SIZE_4BPP, 1); } static void LoadChatMessagesWindow(void) { - LoadPalette(sUnk_Palette2, BG_PLTT_ID(15), sizeof(sUnk_Palette2)); + LoadPalette(sChatMessagesWindow_Pal, BG_PLTT_ID(15), sizeof(sChatMessagesWindow_Pal)); PutWindowTilemap(WIN_CHAT_HISTORY); FillWindowPixelBuffer(WIN_CHAT_HISTORY, PIXEL_FILL(1)); CopyWindowToVram(WIN_CHAT_HISTORY, COPYWIN_FULL); } -static void LoadKeyboardWindow(void) +static void DrawKeyboardWindow(void) { PutWindowTilemap(WIN_KEYBOARD); PrintCurrentKeyboardPage(); @@ -3116,8 +3119,9 @@ static void LoadTextEntryWindow(void) unused[0] = 0; unused[1] = 0xFF; + // Pointless, cleared below. The tiles are nonsense anyway, see LoadChatWindowGfx. for (i = 0; i < MAX_MESSAGE_LENGTH; i++) - BlitBitmapToWindow(WIN_TEXT_ENTRY, sDisplay->unk2128, i * 8, 0, 8, 16); + BlitBitmapToWindow(WIN_TEXT_ENTRY, sDisplay->textEntryTiles, i * 8, 0, 8, 16); FillWindowPixelBuffer(WIN_TEXT_ENTRY, PIXEL_FILL(0)); PutWindowTilemap(WIN_TEXT_ENTRY); @@ -3129,7 +3133,7 @@ static void LoadKeyboardSwapWindow(void) FillWindowPixelBuffer(WIN_SWAP_MENU, PIXEL_FILL(1)); LoadUserWindowBorderGfx(WIN_SWAP_MENU, 1, BG_PLTT_ID(13)); LoadUserWindowBorderGfx_(WIN_SWAP_MENU, 0xA, BG_PLTT_ID(2)); - LoadPalette(gStandardMenuPalette, BG_PLTT_ID(14), PLTT_SIZE_4BPP); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(14), PLTT_SIZE_4BPP); } static void InitScanlineEffect(void) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index be6fc8934904..06df5d0a3349 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -88,7 +88,7 @@ struct UsePokeblockMenu { u32 unused; u16 partyPalettes[PARTY_SIZE][0x40]; - u8 partySheets[NUM_SELECTIONS_LOADED][0x2000]; + u8 partySheets[NUM_SELECTIONS_LOADED][MON_PIC_SIZE * MAX_MON_PIC_FRAMES]; u8 unusedBuffer[0x1000]; u8 tilemapBuffer[BG_SCREEN_SIZE + 2]; u8 selectionIconSpriteIds[PARTY_SIZE + 1]; @@ -173,8 +173,8 @@ static EWRAM_DATA struct UsePokeblockMenu *sMenu = NULL; static const u32 sMonFrame_Pal[] = INCBIN_U32("graphics/pokeblock/use_screen/mon_frame_pal.bin"); static const u32 sMonFrame_Gfx[] = INCBIN_U32("graphics/pokeblock/use_screen/mon_frame.4bpp"); -static const u32 sMonFrame_Tilemap[] = INCBIN_U32("graphics/pokeblock/use_screen/mon_frame.bin"); -static const u32 sGraphData_Tilemap[] = INCBIN_U32("graphics/pokeblock/use_screen/graph_data.bin"); +static const u32 sMonFrame_Tilemap[] = INCBIN_U32("graphics/pokeblock/use_screen/mon_frame.bin.lz"); +static const u32 sGraphData_Tilemap[] = INCBIN_U32("graphics/pokeblock/use_screen/graph_data.bin.lz"); // The condition/flavors aren't listed in their normal order in this file, they're listed as shown on the graph going counter-clockwise // Normally they would go Cool/Spicy, Beauty/Dry, Cute/Sweet, Smart/Bitter, Tough/Sour (also graph order, but clockwise) diff --git a/src/wild_encounter.c b/src/wild_encounter.c index d228b87a143a..ef668c3a1c8b 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -1097,7 +1097,11 @@ static void ApplyCleanseTagEncounterRateMod(u32 *encRate) bool8 TryDoDoubleWildBattle(void) { +#if B_DOUBLE_WILD_REQUIRE_2_MONS == TRUE if (GetSafariZoneFlag() || GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS) +#else + if (GetSafariZoneFlag()) +#endif return FALSE; #if B_FLAG_FORCE_DOUBLE_WILD != 0 else if (FlagGet(B_FLAG_FORCE_DOUBLE_WILD)) diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index f80e2356eee9..8c893121117a 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -222,7 +222,7 @@ static void CB2_InitWirelessCommunicationScreen(void) ChangeBgX(1, 0, BG_COORD_SET); ChangeBgY(1, 0, BG_COORD_SET); LoadPalette(sPalettes, BG_PLTT_ID(0), PLTT_SIZE_4BPP); - Menu_LoadStdPalAt(0xF0); + Menu_LoadStdPalAt(BG_PLTT_ID(15)); DynamicPlaceholderTextUtil_Reset(); FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 15); CopyBgTilemapBufferToVram(1); diff --git a/test/ability_blaze.c b/test/ability_blaze.c index 259b863ec360..1e12c6b2945c 100644 --- a/test/ability_blaze.c +++ b/test/ability_blaze.c @@ -15,6 +15,6 @@ SINGLE_BATTLE_TEST("Blaze boosts Fire-type moves in a pinch", s16 damage) } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_GT(results[1].damage, results[0].damage); + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } diff --git a/test/ability_compound_eyes.c b/test/ability_compound_eyes.c index 97ab84dd2739..6bdb15fa784d 100644 --- a/test/ability_compound_eyes.c +++ b/test/ability_compound_eyes.c @@ -3,10 +3,10 @@ SINGLE_BATTLE_TEST("Compound Eyes raises accuracy") { - PASSES_RANDOMLY(91, 100); + PASSES_RANDOMLY(91, 100, RNG_ACCURACY); GIVEN { ASSUME(gBattleMoves[MOVE_THUNDER].accuracy == 70); - PLAYER(SPECIES_BUTTERFREE) { Ability(ABILITY_COMPOUND_EYES); }; + PLAYER(SPECIES_BUTTERFREE) { Ability(ABILITY_COMPOUND_EYES); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_THUNDER); } @@ -16,17 +16,13 @@ SINGLE_BATTLE_TEST("Compound Eyes raises accuracy") } } -// This fails even though the ability works correctly. The failure is due to -// a statistical anomaly in the test system where FISSURE hits 3 times more often -// than we expect. SINGLE_BATTLE_TEST("Compound Eyes does not affect OHKO moves") { - KNOWN_FAILING; - PASSES_RANDOMLY(30, 100); + PASSES_RANDOMLY(30, 100, RNG_ACCURACY); GIVEN { ASSUME(gBattleMoves[MOVE_FISSURE].accuracy == 30); ASSUME(gBattleMoves[MOVE_FISSURE].effect == EFFECT_OHKO); - PLAYER(SPECIES_BUTTERFREE) { Ability(ABILITY_TINTED_LENS); }; + PLAYER(SPECIES_BUTTERFREE) { Ability(ABILITY_COMPOUND_EYES); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_FISSURE); } diff --git a/test/ability_contrary.c b/test/ability_contrary.c index 7fd902280bb4..33cfa7ce870d 100644 --- a/test/ability_contrary.c +++ b/test/ability_contrary.c @@ -21,7 +21,7 @@ SINGLE_BATTLE_TEST("Contrary raises Attack when Intimidated", s16 damage) if (ability == ABILITY_CONTRARY) { ABILITY_POPUP(opponent, ABILITY_CONTRARY); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's attack rose!"); + MESSAGE("Foe Spinda's Attack rose!"); } HP_BAR(player, captureDamage: &results[i].damage); } @@ -49,11 +49,11 @@ SINGLE_BATTLE_TEST("Contrary raises stats after using a move which would normall if (ability == ABILITY_CONTRARY) { // ABILITY_POPUP(opponent, ABILITY_CONTRARY); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's sp. attack sharply rose!"); + MESSAGE("Foe Spinda's Sp. Atk sharply rose!"); } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's sp. attack harshly fell!"); + MESSAGE("Foe Spinda's Sp. Atk harshly fell!"); } // MESSAGE("Foe Spinda used Overheat!"); @@ -61,11 +61,11 @@ SINGLE_BATTLE_TEST("Contrary raises stats after using a move which would normall if (ability == ABILITY_CONTRARY) { // ABILITY_POPUP(opponent, ABILITY_CONTRARY); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's sp. attack sharply rose!"); + MESSAGE("Foe Spinda's Sp. Atk sharply rose!"); } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's sp. attack harshly fell!"); + MESSAGE("Foe Spinda's Sp. Atk harshly fell!"); } } FINALLY { @@ -95,11 +95,11 @@ SINGLE_BATTLE_TEST("Contrary lowers a stat after using a move which would normal if (ability == ABILITY_CONTRARY) { // ABILITY_POPUP(opponent, ABILITY_CONTRARY); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's attack harshly fell!"); + MESSAGE("Foe Spinda's Attack harshly fell!"); } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's attack sharply rose!"); + MESSAGE("Foe Spinda's Attack sharply rose!"); } // MESSAGE("Foe Spinda used Tackle!"); @@ -127,11 +127,11 @@ SINGLE_BATTLE_TEST("Contrary raises a stat after using a move which would normal if (ability == ABILITY_CONTRARY) { // ABILITY_POPUP(opponent, ABILITY_CONTRARY); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's attack rose!"); + MESSAGE("Foe Spinda's Attack rose!"); } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Spinda's attack fell!"); + MESSAGE("Foe Spinda's Attack fell!"); } MESSAGE("Foe Spinda used Tackle!"); diff --git a/test/ability_cute_charm.c b/test/ability_cute_charm.c index 5e089efdf26d..ccf5c490b3f7 100644 --- a/test/ability_cute_charm.c +++ b/test/ability_cute_charm.c @@ -1,9 +1,6 @@ #include "global.h" #include "test_battle.h" -// TODO: Currently PASSES_RANDOMLY is incapable of testing Cute Charm -// because it only activates 33% of the time, but we only want to -// measure the 50% of the time that the infatuation prevents our move. SINGLE_BATTLE_TEST("Cute Charm inflicts infatuation on contact") { u32 move; diff --git a/test/ability_damp.c b/test/ability_damp.c index 33d1ae466ac0..c473660f5c74 100644 --- a/test/ability_damp.c +++ b/test/ability_damp.c @@ -19,6 +19,26 @@ SINGLE_BATTLE_TEST("Damp prevents explosion-like moves from enemies") } } +DOUBLE_BATTLE_TEST("Damp prevents explosion-like moves from enemies in a double battle") +{ + u32 move; + PARAMETRIZE { move = MOVE_EXPLOSION; } + PARAMETRIZE { move = MOVE_SELF_DESTRUCT; } + PARAMETRIZE { move = MOVE_MIND_BLOWN; } + PARAMETRIZE { move = MOVE_MISTY_EXPLOSION; } + GIVEN { + PLAYER(SPECIES_PARAS) { Ability(ABILITY_DAMP); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, move); } + } SCENE { + ABILITY_POPUP(playerLeft, ABILITY_DAMP); + NONE_OF { HP_BAR(playerLeft); HP_BAR(opponentLeft); HP_BAR(playerRight); HP_BAR(opponentRight); } + } +} + SINGLE_BATTLE_TEST("Damp prevents explosion-like moves from self") { u32 move; diff --git a/test/ability_download.c b/test/ability_download.c new file mode 100644 index 000000000000..d83d90196e00 --- /dev/null +++ b/test/ability_download.c @@ -0,0 +1,95 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + ASSUME(gBattleMoves[MOVE_TRI_ATTACK].split == SPLIT_SPECIAL); +} + +SINGLE_BATTLE_TEST("Download raises Attack if player has lower Def than Sp. Def", s16 damage) +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_TRACE; } + PARAMETRIZE { ability = ABILITY_DOWNLOAD; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Defense(100); SpDefense(200); }; + OPPONENT(SPECIES_PORYGON) { Ability(ability); Attack(100); }; + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (ability == ABILITY_DOWNLOAD) + { + ABILITY_POPUP(opponent, ABILITY_DOWNLOAD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Porygon's Download raised its Attack!"); + } + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Download raises Sp.Attack if enemy has lower Sp. Def than Def", s16 damage) +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_TRACE; } + PARAMETRIZE { ability = ABILITY_DOWNLOAD; } + GIVEN { + PLAYER(SPECIES_PORYGON) { Ability(ability); SpAttack(100); }; + OPPONENT(SPECIES_WOBBUFFET) {Defense(200); SpDefense(100); }; + } WHEN { + TURN { MOVE(player, MOVE_TRI_ATTACK); } + } SCENE { + if (ability == ABILITY_DOWNLOAD) + { + ABILITY_POPUP(player, ABILITY_DOWNLOAD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Porygon's Download raised its Sp. Atk!"); + } + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Download doesn't activate if target hasn't been sent out yet", s16 damagePhysical, s16 damageSpecial) +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_TRACE; } + PARAMETRIZE { ability = ABILITY_DOWNLOAD; } + GIVEN { + ASSUME(gBattleMoves[MOVE_EXPLOSION].effect == EFFECT_EXPLOSION); + PLAYER(SPECIES_WOBBUFFET) { Speed(100); }; + PLAYER(SPECIES_PORYGON) { Ability(ability); Defense(400); SpDefense(300); Speed(300); Attack(100); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); }; + OPPONENT(SPECIES_PORYGON2) { Ability(ability); Defense(100); SpDefense(200); Speed(200); }; + } WHEN { + TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TRI_ATTACK);} + } SCENE { + HP_BAR(player, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); + // Everyone faints. + + MESSAGE("Go! Porygon!"); + MESSAGE("2 sent out Porygon2!"); + + if (ability == ABILITY_DOWNLOAD) + { + ABILITY_POPUP(player, ABILITY_DOWNLOAD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Porygon's Download raised its Attack!"); + ABILITY_POPUP(opponent, ABILITY_DOWNLOAD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Porygon2's Download raised its Sp. Atk!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent, captureDamage: &results[i].damagePhysical); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, opponent); + HP_BAR(player, captureDamage: &results[i].damageSpecial); + } FINALLY { + EXPECT_MUL_EQ(results[0].damagePhysical, Q_4_12(1.5), results[1].damagePhysical); + EXPECT_MUL_EQ(results[0].damageSpecial, Q_4_12(1.5), results[1].damageSpecial); + } +} diff --git a/test/ability_dry_skin.c b/test/ability_dry_skin.c new file mode 100644 index 000000000000..855872d761c2 --- /dev/null +++ b/test/ability_dry_skin.c @@ -0,0 +1,117 @@ +#include "global.h" +#include "test_battle.h" + +#define TEST_MAX_HP (200) + +SINGLE_BATTLE_TEST("Dry Skin causes 1/8th Max HP damage in Sun") +{ + GIVEN { + PLAYER(SPECIES_PARASECT) { Ability(ABILITY_DRY_SKIN); HP(100); MaxHP(TEST_MAX_HP); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUNNY_DAY); } + } SCENE { + ABILITY_POPUP(player, ABILITY_DRY_SKIN); + HP_BAR(player, damage: TEST_MAX_HP / 8); + MESSAGE("The Parasect's Dry Skin takes its toll!"); + } +} + +SINGLE_BATTLE_TEST("Dry Skin heals 1/8th Max HP in Rain") +{ + GIVEN { + PLAYER(SPECIES_PARASECT) { Ability(ABILITY_DRY_SKIN); HP(100); MaxHP(TEST_MAX_HP); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RAIN_DANCE); } + } SCENE { + ABILITY_POPUP(player, ABILITY_DRY_SKIN); + MESSAGE("Parasect's Dry Skin restored its HP a little!"); + HP_BAR(player, hp: TEST_MAX_HP / 8 + 100); + } +} + +SINGLE_BATTLE_TEST("Dry Skin increases damage taken from Fire-type moves by 25%", s16 damage) +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_EFFECT_SPORE; } + PARAMETRIZE { ability = ABILITY_DRY_SKIN; } + GIVEN { + ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PARASECT) { Ability(ability); }; + } WHEN { + TURN {MOVE(player, MOVE_EMBER); } + } SCENE { + MESSAGE("Wobbuffet used Ember!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.25), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Dry Skin heals 25% when hit by water type moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_BUBBLE].type == TYPE_WATER); + PLAYER(SPECIES_PARASECT) { Ability(ABILITY_DRY_SKIN); HP(100); MaxHP(TEST_MAX_HP); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_BUBBLE); } + } SCENE { + ABILITY_POPUP(player, ABILITY_DRY_SKIN); + HP_BAR(player, hp: TEST_MAX_HP / 4 + 100); + MESSAGE("Parasect restored HP using its Dry Skin!"); + } +} + +SINGLE_BATTLE_TEST("Dry Skin does not activate if protected") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_BUBBLE].type == TYPE_WATER); + PLAYER(SPECIES_PARASECT) { Ability(ABILITY_DRY_SKIN); HP(100); MaxHP(TEST_MAX_HP); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PROTECT); MOVE(opponent, MOVE_BUBBLE); } + } SCENE { + NONE_OF { ABILITY_POPUP(player, ABILITY_DRY_SKIN); HP_BAR(player); MESSAGE("Parasect restored HP using its Dry Skin!"); } + } +} + +SINGLE_BATTLE_TEST("Dry Skin is only triggered once on multi strike moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_WATER_SHURIKEN].type == TYPE_WATER); + ASSUME(gBattleMoves[MOVE_WATER_SHURIKEN].effect == EFFECT_MULTI_HIT); + PLAYER(SPECIES_PARASECT) { Ability(ABILITY_DRY_SKIN); HP(100); MaxHP(TEST_MAX_HP); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_WATER_SHURIKEN); } + } SCENE { + ABILITY_POPUP(player, ABILITY_DRY_SKIN); + HP_BAR(player, hp: TEST_MAX_HP / 4 + 100); + MESSAGE("Parasect restored HP using its Dry Skin!"); + } +} + +SINGLE_BATTLE_TEST("Dry Skin prevents Absorb Bulb and Luminous Moss from activating") +{ + u32 item; + PARAMETRIZE { item = ITEM_ABSORB_BULB; } + PARAMETRIZE { item = ITEM_LUMINOUS_MOSS; } + GIVEN { + ASSUME(gBattleMoves[MOVE_BUBBLE].type == TYPE_WATER); + PLAYER(SPECIES_PARASECT) { Ability(ABILITY_DRY_SKIN); HP(100); MaxHP(TEST_MAX_HP); Item(item); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_BUBBLE); } + } SCENE { + ABILITY_POPUP(player, ABILITY_DRY_SKIN); + HP_BAR(player, hp: TEST_MAX_HP / 4 + 100); + MESSAGE("Parasect restored HP using its Dry Skin!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } + } +} diff --git a/test/ability_flower_gift.c b/test/ability_flower_gift.c new file mode 100644 index 000000000000..dd01736a2428 --- /dev/null +++ b/test/ability_flower_gift.c @@ -0,0 +1,123 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim in harsh sunlight") +{ + GIVEN { + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + } SCENE { + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + } +} + +SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when weather changes") +{ + GIVEN { + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(opponent, MOVE_RAIN_DANCE); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + // back to normal + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + } +} + +SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when its ability is suppressed") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(opponent, MOVE_GASTRO_ACID); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + // back to normal + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + } +} + +DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies by 1.5x", s16 damageL, s16 damageR) +{ + bool32 sunny; + PARAMETRIZE { sunny = FALSE; } + PARAMETRIZE { sunny = TRUE; } + GIVEN { + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (sunny) + TURN { MOVE(playerLeft, MOVE_SUNNY_DAY); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); + MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + } SCENE { + // sun activates + if (sunny) { + ABILITY_POPUP(playerLeft, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, playerLeft); + MESSAGE("Cherrim transformed!"); + } + // player uses Tackle + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + HP_BAR(opponentLeft, captureDamage: &results[i].damageL); + // partner uses Tackle + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + HP_BAR(opponentLeft, captureDamage: &results[i].damageR); + } FINALLY { + EXPECT_MUL_EQ(results[0].damageL, UQ_4_12(1.5), results[1].damageL); + EXPECT_MUL_EQ(results[0].damageR, UQ_4_12(1.5), results[1].damageR); + } +} + +DOUBLE_BATTLE_TEST("Flower Gift increases the Sp. Def of Cherrim and its allies by 1.5x", s16 damageL, s16 damageR) +{ + bool32 sunny; + PARAMETRIZE { sunny = FALSE; } + PARAMETRIZE { sunny = TRUE; } + GIVEN { + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (sunny) + TURN { MOVE(playerLeft, MOVE_SUNNY_DAY); } + TURN { MOVE(opponentLeft, MOVE_HYPER_VOICE, target: playerLeft); } + } SCENE { + // sun activates + if (sunny) { + ABILITY_POPUP(playerLeft, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, playerLeft); + MESSAGE("Cherrim transformed!"); + } + // opponentLeft uses Hyper Voice + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, opponentLeft); + HP_BAR(playerLeft, captureDamage: &results[i].damageL); + HP_BAR(playerRight, captureDamage: &results[i].damageR); + } FINALLY { + EXPECT_MUL_EQ(results[1].damageL, UQ_4_12(1.5), results[0].damageL); + EXPECT_MUL_EQ(results[1].damageR, UQ_4_12(1.5), results[0].damageR); + } +} + +TO_DO_BATTLE_TEST("Flower Gift does not transform Cherrim back to normal when suppressed if Cherrim is Dynamaxed"); diff --git a/test/ability_forecast.c b/test/ability_forecast.c new file mode 100644 index 000000000000..96559706acc8 --- /dev/null +++ b/test/ability_forecast.c @@ -0,0 +1,255 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from an opponent's move") +{ + u32 move; + PARAMETRIZE { move = MOVE_SUNNY_DAY; } + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); } + } SCENE { + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from its own move") +{ + u32 move; + PARAMETRIZE { move = MOVE_SUNNY_DAY; } + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +DOUBLE_BATTLE_TEST("Forecast transforms Castform in weather from a partner's move") +{ + u32 move; + PARAMETRIZE { move = MOVE_SUNNY_DAY; } + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerRight, move); } + } SCENE { + ABILITY_POPUP(playerLeft, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, playerLeft); + MESSAGE("Castform transformed!"); + } +} + +DOUBLE_BATTLE_TEST("Forecast transforms all Castforms present in weather") +{ + u32 move; + PARAMETRIZE { move = MOVE_SUNNY_DAY; } + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + } WHEN { + TURN { MOVE(playerRight, move); } + } SCENE { + ABILITY_POPUP(playerLeft, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, playerLeft); + MESSAGE("Castform transformed!"); + ABILITY_POPUP(opponentLeft, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponentLeft); + MESSAGE("Foe Castform transformed!"); + ABILITY_POPUP(playerRight, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, playerRight); + MESSAGE("Castform transformed!"); + ABILITY_POPUP(opponentRight, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponentRight); + MESSAGE("Foe Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from an ability") +{ + u32 species, ability; + PARAMETRIZE { species = SPECIES_KYOGRE; ability = ABILITY_DRIZZLE; } + PARAMETRIZE { species = SPECIES_GROUDON; ability = ABILITY_DROUGHT; } + PARAMETRIZE { species = SPECIES_ABOMASNOW; ability = ABILITY_SNOW_WARNING; } + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); }; + } WHEN { + TURN { SWITCH(opponent, 1); } + } SCENE { + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform in primal weather") +{ + u32 species, item, ability; + PARAMETRIZE { species = SPECIES_KYOGRE; ability = ABILITY_PRIMORDIAL_SEA; item = ITEM_BLUE_ORB; } + PARAMETRIZE { species = SPECIES_GROUDON; ability = ABILITY_DESOLATE_LAND; item = ITEM_RED_ORB; } + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(species) { Item(item); }; + } WHEN { + TURN { SWITCH(opponent, 1); } + } SCENE { + ABILITY_POPUP(opponent, ability); + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when weather expires") +{ + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RAIN_DANCE); } + TURN { } + TURN { } + TURN { } + TURN { } + TURN { } + } SCENE { + // transforms + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + // back to normal + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when Sandstorm is active") +{ + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RAIN_DANCE); } + TURN { MOVE(player, MOVE_SANDSTORM); } + } SCENE { + // transforms + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + // back to normal + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal under Air Lock") +{ + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_RAYQUAZA); + } WHEN { + TURN { MOVE(player, MOVE_RAIN_DANCE); } + TURN { SWITCH(opponent, 1); } + TURN { MOVE(opponent, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + // transforms + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + // back to normal + ABILITY_POPUP(opponent, ABILITY_AIR_LOCK); + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform on switch-in") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RAIN_DANCE); } + TURN { SWITCH(player, 1); } + } SCENE { + // turn 1 + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAIN_DANCE, player); + // turn 2 + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform when weather changes") +{ + GIVEN { + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RAIN_DANCE); } + TURN { MOVE(player, MOVE_SUNNY_DAY); } + } SCENE { + // transforms + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + // transforms again + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability is suppressed") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(opponent, MOVE_GASTRO_ACID); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + // back to normal + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + } +} diff --git a/test/ability_hunger_switch.c b/test/ability_hunger_switch.c new file mode 100644 index 000000000000..9250ae85a510 --- /dev/null +++ b/test/ability_hunger_switch.c @@ -0,0 +1,25 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the turn") +{ + u16 species; + PARAMETRIZE { species = SPECIES_MORPEKO; } + PARAMETRIZE { species = SPECIES_MORPEKO_HANGRY; } + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + PLAYER(species) { Speed(2); }; + OPPONENT(SPECIES_WOBBUFFET) { Speed(1); }; + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Morpeko used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } THEN { + if (species == SPECIES_MORPEKO) + EXPECT_EQ(player->species, SPECIES_MORPEKO_HANGRY); + else + EXPECT_EQ(player->species, SPECIES_MORPEKO); + } +} diff --git a/test/ability_hydration.c b/test/ability_hydration.c new file mode 100644 index 000000000000..45689b2121ed --- /dev/null +++ b/test/ability_hydration.c @@ -0,0 +1,16 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Hydration cures non-volatile Status conditions if it is raining") +{ + GIVEN { + PLAYER(SPECIES_VAPOREON) { Ability(ABILITY_HYDRATION); Status1(STATUS1_BURN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RAIN_DANCE); } + } SCENE { + ABILITY_POPUP(player, ABILITY_HYDRATION); + MESSAGE("Vaporeon's Hydration cured its burn problem!"); + STATUS_ICON(player, none: TRUE); + } +} diff --git a/test/ability_ice_body.c b/test/ability_ice_body.c new file mode 100644 index 000000000000..b28c5ef0ab5d --- /dev/null +++ b/test/ability_ice_body.c @@ -0,0 +1,30 @@ +#include "global.h" +#include "test_battle.h" + +#define TEST_MAX_HP (100) + +SINGLE_BATTLE_TEST("Ice Body prevents damage from hail") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GLALIE) { Ability(ABILITY_ICE_BODY); }; + } WHEN { + TURN { MOVE(player, MOVE_HAIL); MOVE(opponent, MOVE_SKILL_SWAP); } + } SCENE { + NONE_OF { HP_BAR(player); } + } +} + +SINGLE_BATTLE_TEST("Ice Body recovers 1/16th of Max HP in hail.") +{ + GIVEN { + PLAYER(SPECIES_GLALIE) { Ability(ABILITY_ICE_BODY); HP(1); MaxHP(TEST_MAX_HP); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_HAIL); } + } SCENE { + ABILITY_POPUP(player, ABILITY_ICE_BODY); + MESSAGE("Glalie's Ice Body healed it a little bit!"); + HP_BAR(player, hp: TEST_MAX_HP / 16 + 1); + } +} diff --git a/test/ability_insomnia.c b/test/ability_insomnia.c index b9fe38753283..9398bd30abb0 100644 --- a/test/ability_insomnia.c +++ b/test/ability_insomnia.c @@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Insomnia prevents sleep") TURN { MOVE(opponent, MOVE_SPORE); } } SCENE { ABILITY_POPUP(player, ABILITY_INSOMNIA); - NONE_OF { + NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_SPORE, opponent); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player); STATUS_ICON(player, sleep: TRUE); @@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Insomnia prevents yawn") TURN { } } SCENE { ABILITY_POPUP(player, ABILITY_INSOMNIA); - NONE_OF { + NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_YAWN, opponent); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player); STATUS_ICON(player, sleep: TRUE); @@ -49,7 +49,7 @@ SINGLE_BATTLE_TEST("Insomnia prevents rest") TURN { MOVE(player, MOVE_REST); } } SCENE { ABILITY_POPUP(player, ABILITY_INSOMNIA); - NONE_OF { + NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_REST, player); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player); STATUS_ICON(player, sleep: TRUE); diff --git a/test/ability_intimidate.c b/test/ability_intimidate.c index 450ca640294c..40804cbb197b 100644 --- a/test/ability_intimidate.c +++ b/test/ability_intimidate.c @@ -10,17 +10,21 @@ SINGLE_BATTLE_TEST("Intimidate (opponent) lowers player's attack after switch ou { u32 ability; PARAMETRIZE { ability = ABILITY_INTIMIDATE; } - PARAMETRIZE { ability = ABILITY_RECKLESS; } + PARAMETRIZE { ability = ABILITY_SHED_SKIN; } GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_STARAPTOR) { Ability(ability); }; + OPPONENT(SPECIES_ARBOK) { Ability(ability); }; } WHEN { TURN { SWITCH(opponent, 1); } TURN { MOVE(player, MOVE_TACKLE); } } SCENE { if (ability == ABILITY_INTIMIDATE) + { ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Foe Arbok's Intimidate cuts Wobbuffet's attack!"); + } HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); @@ -30,21 +34,128 @@ SINGLE_BATTLE_TEST("Intimidate (opponent) lowers player's attack after switch ou SINGLE_BATTLE_TEST("Intimidate (opponent) lowers player's attack after KO", s16 damage) { u32 ability; - KNOWN_FAILING; PARAMETRIZE { ability = ABILITY_INTIMIDATE; } - PARAMETRIZE { ability = ABILITY_RECKLESS; } + PARAMETRIZE { ability = ABILITY_SHED_SKIN; } GIVEN { PLAYER(SPECIES_WOBBUFFET) { Speed(2); }; OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(1); }; - OPPONENT(SPECIES_STARAPTOR) { Ability(ABILITY_INTIMIDATE); Speed(1); }; + OPPONENT(SPECIES_ARBOK) { Ability(ability); Speed(1); }; } WHEN { TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } TURN { MOVE(player, MOVE_TACKLE); } } SCENE { + HP_BAR(opponent); if (ability == ABILITY_INTIMIDATE) + { ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Foe Arbok's Intimidate cuts Wobbuffet's attack!"); + } HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } + +DOUBLE_BATTLE_TEST("Intimidate doesn't activate on an empty field in a double battle") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_EXPLOSION].effect == EFFECT_EXPLOSION); + PLAYER(SPECIES_WOBBUFFET) { }; + PLAYER(SPECIES_WOBBUFFET) { HP(1); }; + PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; + PLAYER(SPECIES_ABRA); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(1); }; + OPPONENT(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); }; + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_EXPLOSION); SEND_OUT(playerLeft, 2); SEND_OUT(opponentLeft, 2); SEND_OUT(playerRight, 3); SEND_OUT(opponentRight, 3); } + TURN { MOVE(playerLeft, MOVE_CELEBRATE);} + } SCENE { + HP_BAR(playerLeft, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, playerLeft); + // Everyone faints. + + MESSAGE("Go! Ekans!"); + MESSAGE("2 sent out Arbok!"); + MESSAGE("Go! Abra!"); + MESSAGE("2 sent out Wynaut!"); + + ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Ekans's Intimidate cuts Foe Arbok's attack!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Ekans's Intimidate cuts Foe Wynaut's attack!"); + + ABILITY_POPUP(opponentLeft, ABILITY_INTIMIDATE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Foe Arbok's Intimidate cuts Ekans's attack!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Foe Arbok's Intimidate cuts Abra's attack!"); + } +} + +SINGLE_BATTLE_TEST("Intimidate and Eject Button force the opponent to Attack") +{ + GIVEN { + ASSUME(gItems[ITEM_EJECT_BUTTON].holdEffect == HOLD_EFFECT_EJECT_BUTTON); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_HITMONTOP) { Moves(MOVE_TACKLE); }; + } WHEN { + TURN { + MOVE(player, MOVE_QUICK_ATTACK); + MOVE(opponent, MOVE_TACKLE); + SEND_OUT(opponent, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Wobbuffet is switched out with the Eject Button!"); + MESSAGE("2 sent out Hitmontop!"); + ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); + MESSAGE("Foe Hitmontop's Intimidate cuts Wobbuffet's attack!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("Foe Hitmontop used Tackle!"); + } + } +} + +DOUBLE_BATTLE_TEST("Intimidate activates on an empty slot") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_CROAGUNK); + PLAYER(SPECIES_WYNAUT); + PLAYER(SPECIES_HITMONTOP) { Ability(ABILITY_INTIMIDATE); }; + OPPONENT(SPECIES_RALTS); + OPPONENT(SPECIES_AZURILL); + } WHEN { + TURN { + SWITCH(playerLeft, 2); + MOVE(playerRight, MOVE_GUNK_SHOT, target: opponentLeft); + MOVE(opponentRight, MOVE_SPLASH); + } + TURN { + SWITCH(playerLeft, 3); + MOVE(playerRight, MOVE_SPLASH); + } + + + } SCENE { + MESSAGE("Wobbuffet, that's enough! Come back!"); + MESSAGE("Go! Wynaut!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GUNK_SHOT, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLASH, opponentRight); + MESSAGE("Wynaut, that's enough! Come back!"); + MESSAGE("Go! Hitmontop!"); + ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); + NONE_OF { + MESSAGE("Hitmontop's Intimidate cuts Foe Ralts's attack!"); + } + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Hitmontop's Intimidate cuts Foe Azurill's attack!"); + } +} diff --git a/test/ability_leaf_guard.c b/test/ability_leaf_guard.c new file mode 100644 index 000000000000..a4c83c48561f --- /dev/null +++ b/test/ability_leaf_guard.c @@ -0,0 +1,95 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Leaf Guard prevents non-volatile status conditions in sun") +{ + u32 move; + PARAMETRIZE { move = MOVE_WILL_O_WISP; } + PARAMETRIZE { move = MOVE_HYPNOSIS; } + PARAMETRIZE { move = MOVE_THUNDER_WAVE; } + PARAMETRIZE { move = MOVE_TOXIC; } + PARAMETRIZE { move = MOVE_POWDER_SNOW; } + GIVEN { + ASSUME(gBattleMoves[MOVE_WILL_O_WISP].effect == EFFECT_WILL_O_WISP); + ASSUME(gBattleMoves[MOVE_HYPNOSIS].effect == EFFECT_SLEEP); + ASSUME(gBattleMoves[MOVE_THUNDER_WAVE].effect == EFFECT_PARALYZE); + ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); + ASSUME(gBattleMoves[MOVE_POWDER_SNOW].effect == EFFECT_FREEZE_HIT); + PLAYER(SPECIES_LEAFEON) { Ability(ABILITY_LEAF_GUARD); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUNNY_DAY); MOVE(opponent, move); } + } SCENE { + switch (move) + { + case MOVE_WILL_O_WISP: + MESSAGE("Foe Wobbuffet used Will-o-Wisp!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_WILL_O_WISP, opponent); + ABILITY_POPUP(player, ABILITY_LEAF_GUARD); + MESSAGE("It doesn't affect Leafeon…"); + break; + case MOVE_HYPNOSIS: + MESSAGE("Foe Wobbuffet used Hypnosis!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPNOSIS, opponent); + ABILITY_POPUP(player, ABILITY_LEAF_GUARD); + MESSAGE("It doesn't affect Leafeon…"); + break; + case MOVE_THUNDER_WAVE: + MESSAGE("Foe Wobbuffet used Thunder Wave!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_WAVE, opponent); + ABILITY_POPUP(player, ABILITY_LEAF_GUARD); + MESSAGE("It doesn't affect Leafeon…"); + break; + case MOVE_TOXIC: + MESSAGE("Foe Wobbuffet used Toxic!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, opponent); + ABILITY_POPUP(player, ABILITY_LEAF_GUARD); + MESSAGE("It doesn't affect Leafeon…"); + break; + case MOVE_POWDER_SNOW: + MESSAGE("Foe Wobbuffet used Powder Snow!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_POWDER_SNOW, opponent); + MESSAGE("It's super effective!"); + break; + } + NONE_OF {STATUS_ICON(player, status1: TRUE);} + } +} + +SINGLE_BATTLE_TEST("Leaf Guard prevents status conditions from Flame Orb and Toxic Orb") +{ + u32 item; + PARAMETRIZE { item = ITEM_FLAME_ORB; } + PARAMETRIZE { item = ITEM_TOXIC_ORB; } + GIVEN { + ASSUME(gItems[ITEM_FLAME_ORB].holdEffect == HOLD_EFFECT_FLAME_ORB); + ASSUME(gItems[ITEM_TOXIC_ORB].holdEffect == HOLD_EFFECT_TOXIC_ORB); + PLAYER(SPECIES_LEAFEON) {Ability(ABILITY_LEAF_GUARD); Item(item); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUNNY_DAY); } + } SCENE { + if (item == ITEM_FLAME_ORB) { + NONE_OF { MESSAGE("Leafeon was burned!"); STATUS_ICON(player, burn: TRUE);} + } + else { + NONE_OF { MESSAGE("Leafeon is badly poisoned!"); STATUS_ICON(player, poison: TRUE);} + } + } +} + +SINGLE_BATTLE_TEST("Leaf Guard prevents Rest during sun") +{ + GIVEN { + ASSUME(B_LEAF_GUARD_PREVENTS_REST >= GEN_5); + ASSUME(gBattleMoves[MOVE_REST].effect == EFFECT_REST); + PLAYER(SPECIES_LEAFEON) { Ability(ABILITY_LEAF_GUARD); HP(100); MaxHP(200); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_REST); } + } SCENE { + MESSAGE("But it failed!"); + NOT STATUS_ICON(player, sleep: TRUE); + NONE_OF {HP_BAR(player);} + } +} diff --git a/test/ability_magic_bounce.c b/test/ability_magic_bounce.c index d52b93c4a54b..848f632ab590 100644 --- a/test/ability_magic_bounce.c +++ b/test/ability_magic_bounce.c @@ -74,11 +74,11 @@ DOUBLE_BATTLE_TEST("Magic Bounce bounces back moves hitting both foes at two foe MESSAGE("Abra's Leer was bounced back by Foe Espeon's Magic Bounce!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_LEER, opponentLeft); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); - MESSAGE("Abra's defense fell!"); + MESSAGE("Abra's Defense fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); - MESSAGE("Kadabra's defense fell!"); + MESSAGE("Kadabra's Defense fell!"); // Also check if second original target gets hit by Leer as this was once bugged ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); - MESSAGE("Foe Wynaut's defense fell!"); + MESSAGE("Foe Wynaut's Defense fell!"); } } diff --git a/test/ability_oblivious.c b/test/ability_oblivious.c index 0708845ed167..efe2901ecad3 100644 --- a/test/ability_oblivious.c +++ b/test/ability_oblivious.c @@ -63,6 +63,6 @@ SINGLE_BATTLE_TEST("Oblivious prevents Intimidate") ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); ABILITY_POPUP(player, ABILITY_OBLIVIOUS); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - MESSAGE("Slowpoke's attack was not lowered!"); + MESSAGE("Slowpoke's Attack was not lowered!"); } } diff --git a/test/ability_overgrow.c b/test/ability_overgrow.c new file mode 100644 index 000000000000..82d8dd467e74 --- /dev/null +++ b/test/ability_overgrow.c @@ -0,0 +1,20 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Overgrow boosts Grass-type moves in a pinch", s16 damage) +{ + u16 hp; + PARAMETRIZE { hp = 99; } + PARAMETRIZE { hp = 33; } + GIVEN { + ASSUME(gBattleMoves[MOVE_VINE_WHIP].type == TYPE_GRASS); + PLAYER(SPECIES_BULBASAUR) { Ability(ABILITY_OVERGROW); MaxHP(99); HP(hp); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_VINE_WHIP); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} diff --git a/test/ability_pastel_veil.c b/test/ability_pastel_veil.c index 5d7a8f020353..ddc0806198ed 100644 --- a/test/ability_pastel_veil.c +++ b/test/ability_pastel_veil.c @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Pastel Veil immediately cures Mold Breaker poison") { GIVEN { ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); - PLAYER(SPECIES_DRILBUR) { Ability(ABILITY_MOLD_BREAKER); } + PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { TURN { MOVE(player, MOVE_TOXIC); } @@ -52,7 +52,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil does not cure Mold Breaker poison on partner") { GIVEN { ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); - PLAYER(SPECIES_DRILBUR) { Ability(ABILITY_MOLD_BREAKER); } + PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } OPPONENT(SPECIES_WYNAUT); diff --git a/test/ability_rain_dish.c b/test/ability_rain_dish.c new file mode 100644 index 000000000000..f9a457d4a5b7 --- /dev/null +++ b/test/ability_rain_dish.c @@ -0,0 +1,18 @@ +#include "global.h" +#include "test_battle.h" + +#define TEST_MAX_HP (100) + +SINGLE_BATTLE_TEST("Rain Dish recovers 1/16th of Max HP in Rain") +{ + GIVEN { + PLAYER(SPECIES_LUDICOLO) { Ability(ABILITY_RAIN_DISH); HP(1); MaxHP(TEST_MAX_HP); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); } + } SCENE { + ABILITY_POPUP(player, ABILITY_RAIN_DISH); + MESSAGE("Ludicolo's Rain Dish restored its HP a little!"); + HP_BAR(player, hp: TEST_MAX_HP / 16 + 1); + } +} diff --git a/test/ability_sand_veil.c b/test/ability_sand_veil.c index 5d2325140d13..ec7c17f8ecc0 100644 --- a/test/ability_sand_veil.c +++ b/test/ability_sand_veil.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Sand Veil prevents damage from sandstorm") { GIVEN { - PLAYER(SPECIES_SANDSHREW) { Ability(ABILITY_SAND_VEIL); }; + PLAYER(SPECIES_CACNEA) { Ability(ABILITY_SAND_VEIL); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SANDSTORM); } @@ -14,9 +14,9 @@ SINGLE_BATTLE_TEST("Sand Veil prevents damage from sandstorm") } } -SINGLE_BATTLE_TEST("Sand Veil reduces accuracy during sandstorm") +SINGLE_BATTLE_TEST("Sand Veil increases evasion during sandstorm") { - PASSES_RANDOMLY(4,5); + PASSES_RANDOMLY(4, 5, RNG_ACCURACY); GIVEN { ASSUME(gBattleMoves[MOVE_POUND].accuracy == 100); PLAYER(SPECIES_SANDSHREW) { Ability(ABILITY_SAND_VEIL); }; diff --git a/test/ability_schooling.c b/test/ability_schooling.c new file mode 100644 index 000000000000..03a5303f0a69 --- /dev/null +++ b/test/ability_schooling.c @@ -0,0 +1,111 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is 25-percent or less at the end of the turn") +{ + u16 level; + PARAMETRIZE { level = 19; } + PARAMETRIZE { level = 20; } + + GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI) + { + Level(level); + HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2); + Ability(ABILITY_SCHOOLING); + }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SUPER_FANG); } + } SCENE { + if (level >= 20) + { + ABILITY_POPUP(player, ABILITY_SCHOOLING); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } + MESSAGE("Wishiwashi used Celebrate!"); + MESSAGE("Foe Wobbuffet used Super Fang!"); + HP_BAR(player); + if (level >= 20) + { + ABILITY_POPUP(player, ABILITY_SCHOOLING); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } + } THEN { + EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + } +} + +SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is over 25-percent before the first turn") +{ + u16 level; + bool32 overQuarterHP; + PARAMETRIZE { level = 19; overQuarterHP = FALSE; } + PARAMETRIZE { level = 20; overQuarterHP = FALSE; } + PARAMETRIZE { level = 19; overQuarterHP = TRUE; } + PARAMETRIZE { level = 20; overQuarterHP = TRUE; } + + GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI) + { + Level(level); + HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / (overQuarterHP ? 2 : 4)); + Ability(ABILITY_SCHOOLING); + }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + if (level >= 20 && overQuarterHP) + { + ABILITY_POPUP(player, ABILITY_SCHOOLING); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } + MESSAGE("Wishiwashi used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } THEN { + if (level >= 20 && overQuarterHP) + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL); + else + EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + } +} + +SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is healed above 25-percent") +{ + u16 level; + PARAMETRIZE { level = 19; } + PARAMETRIZE { level = 20; } + + GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI) + { + Level(level); + HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 4); + Ability(ABILITY_SCHOOLING); + }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_HEAL_PULSE); } + } SCENE { + MESSAGE("Wishiwashi used Celebrate!"); + MESSAGE("Foe Wobbuffet used Heal Pulse!"); + HP_BAR(player); + if (level >= 20) + { + ABILITY_POPUP(player, ABILITY_SCHOOLING); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } + } THEN { + if (level >= 20) + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL); + else + EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + } +} diff --git a/test/ability_snow_cloak.c b/test/ability_snow_cloak.c new file mode 100644 index 000000000000..1f47eb94baba --- /dev/null +++ b/test/ability_snow_cloak.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Snow Cloak prevents damage from hail") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GLACEON) { Ability(ABILITY_SNOW_CLOAK); }; + } WHEN { + TURN { MOVE(player, MOVE_HAIL); MOVE(opponent, MOVE_SKILL_SWAP); } + } SCENE { + NONE_OF { HP_BAR(player); } + } +} + +SINGLE_BATTLE_TEST("Snow Cloak increases evasion during hail") +{ + PASSES_RANDOMLY(4, 5, RNG_ACCURACY); + GIVEN { + ASSUME(gBattleMoves[MOVE_POUND].accuracy == 100); + PLAYER(SPECIES_GLACEON) { Ability(ABILITY_SNOW_CLOAK); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_HAIL); } + TURN { MOVE(opponent, MOVE_POUND); } + } SCENE { + HP_BAR(player); + } +} diff --git a/test/ability_snow_warning.c b/test/ability_snow_warning.c new file mode 100644 index 000000000000..200a14acafb6 --- /dev/null +++ b/test/ability_snow_warning.c @@ -0,0 +1,24 @@ +#include "global.h" +#include "test_battle.h" + +#if B_SNOW_WARNING < GEN_9 +SINGLE_BATTLE_TEST("Snow Warning summons hail") +#elif B_SNOW_WARNING >= GEN_9 +SINGLE_BATTLE_TEST("Snow Warning summons snow") +#endif +{ + GIVEN { + PLAYER(SPECIES_ABOMASNOW) { Ability(ABILITY_SNOW_WARNING); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + } SCENE { + #if B_SNOW_WARNING < GEN_9 + MESSAGE("It started to hail!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HAIL_CONTINUES); + #elif B_SNOW_WARNING >= GEN_9 + MESSAGE("It started to snow!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SNOW_CONTINUES); + #endif + } +} diff --git a/test/ability_speed_boost.c b/test/ability_speed_boost.c index b3e128931a32..39219a5cc7bb 100644 --- a/test/ability_speed_boost.c +++ b/test/ability_speed_boost.c @@ -1,7 +1,7 @@ #include "global.h" #include "test_battle.h" -SINGLE_BATTLE_TEST("Speed Boost gradually boosts speed") +SINGLE_BATTLE_TEST("Speed Boost gradually boosts Speed") { GIVEN { PLAYER(SPECIES_TORCHIC) { Ability(ABILITY_SPEED_BOOST); Speed(99); }; diff --git a/test/ability_stench.c b/test/ability_stench.c index 7285ee768c61..fb76ebc07ee3 100644 --- a/test/ability_stench.c +++ b/test/ability_stench.c @@ -3,10 +3,10 @@ SINGLE_BATTLE_TEST("Stench has a 10% chance to flinch") { - PASSES_RANDOMLY(1,10); + PASSES_RANDOMLY(1, 10, RNG_STENCH); GIVEN { ASSUME(gBattleMoves[MOVE_TACKLE].power > 0); - PLAYER(SPECIES_STUNKY) { Ability(ABILITY_STENCH); }; + PLAYER(SPECIES_GRIMER) { Ability(ABILITY_STENCH); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); } @@ -17,12 +17,13 @@ SINGLE_BATTLE_TEST("Stench has a 10% chance to flinch") SINGLE_BATTLE_TEST("Stench does not stack with King's Rock") { - PASSES_RANDOMLY(1,10); + KNOWN_FAILING; + PASSES_RANDOMLY(1, 10, RNG_STENCH); GIVEN { ASSUME(gItems[ITEM_KINGS_ROCK].holdEffect == HOLD_EFFECT_FLINCH); ASSUME(gBattleMoves[MOVE_TACKLE].power > 0); - PLAYER(SPECIES_STUNKY) { Ability(ABILITY_STENCH); Item(ITEM_KINGS_ROCK); }; + PLAYER(SPECIES_GRIMER) { Ability(ABILITY_STENCH); Item(ITEM_KINGS_ROCK); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); } diff --git a/test/ability_swarm.c b/test/ability_swarm.c new file mode 100644 index 000000000000..7709e976eae0 --- /dev/null +++ b/test/ability_swarm.c @@ -0,0 +1,20 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Swarm boosts Bug-type moves in a pinch", s16 damage) +{ + u16 hp; + PARAMETRIZE { hp = 99; } + PARAMETRIZE { hp = 33; } + GIVEN { + ASSUME(gBattleMoves[MOVE_BUG_BITE].type == TYPE_BUG); + PLAYER(SPECIES_LEDYBA) { Ability(ABILITY_SWARM); MaxHP(99); HP(hp); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BUG_BITE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} diff --git a/test/ability_torrent.c b/test/ability_torrent.c new file mode 100644 index 000000000000..e5c701775d61 --- /dev/null +++ b/test/ability_torrent.c @@ -0,0 +1,20 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Torrent boosts Water-type moves in a pinch", s16 damage) +{ + u16 hp; + PARAMETRIZE { hp = 99; } + PARAMETRIZE { hp = 33; } + GIVEN { + ASSUME(gBattleMoves[MOVE_BUBBLE].type == TYPE_WATER); + PLAYER(SPECIES_SQUIRTLE) { Ability(ABILITY_TORRENT); MaxHP(99); HP(hp); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BUBBLE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} diff --git a/test/ability_volt_absorb.c b/test/ability_volt_absorb.c index f485f6557493..6b9296268c38 100644 --- a/test/ability_volt_absorb.c +++ b/test/ability_volt_absorb.c @@ -63,6 +63,30 @@ SINGLE_BATTLE_TEST("Volt Absorb is only triggered once on multi strike moves") } } +DOUBLE_BATTLE_TEST("Volt Absorb does not stop Electric Typed Explosion from damaging other pokemon") // Fixed issue #1961 +{ + s16 damage1, damage2; + GIVEN { + ASSUME(gBattleMoves[MOVE_EXPLOSION].effect == EFFECT_EXPLOSION); + ASSUME(gBattleMoves[MOVE_EXPLOSION].type == TYPE_NORMAL); + PLAYER(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); HP(1); MaxHP(TEST_MAX_HP); } + PLAYER(SPECIES_ABRA); + OPPONENT(SPECIES_GRAVELER_ALOLAN) { Ability(ABILITY_GALVANIZE); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_EXPLOSION); } + } SCENE { + ABILITY_POPUP(playerLeft, ABILITY_VOLT_ABSORB); + HP_BAR(playerLeft, hp: TEST_MAX_HP / 4 + 1); + MESSAGE("Jolteon restored HP using its Volt Absorb!"); + HP_BAR(playerRight, captureDamage: &damage1); + HP_BAR(opponentRight, captureDamage: &damage2); + } THEN { + EXPECT_NE(damage1, 0); + EXPECT_NE(damage2, 0); + } +} + SINGLE_BATTLE_TEST("Volt Absorb prevents Cell Battery from activating") { GIVEN { @@ -75,11 +99,11 @@ SINGLE_BATTLE_TEST("Volt Absorb prevents Cell Battery from activating") ABILITY_POPUP(player, ABILITY_VOLT_ABSORB); HP_BAR(player, hp: TEST_MAX_HP / 4 + 1); MESSAGE("Jolteon restored HP using its Volt Absorb!"); - NONE_OF { + NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Using Cell Battery, the attack of Jolteon rose!"); + MESSAGE("Using Cell Battery, the Attack of Jolteon rose!"); } - + } } diff --git a/test/ability_water_absorb.c b/test/ability_water_absorb.c index 1748ee7ff5d9..7d62748367b5 100644 --- a/test/ability_water_absorb.c +++ b/test/ability_water_absorb.c @@ -63,7 +63,7 @@ SINGLE_BATTLE_TEST("Water Absorb is only triggered once on multi strike moves") } } -SINGLE_BATTLE_TEST("Water Absorb prevents Items from activating") +SINGLE_BATTLE_TEST("Water Absorb prevents Absorb Bulb and Luminous Moss from activating") { u32 item; PARAMETRIZE { item = ITEM_ABSORB_BULB; } @@ -78,10 +78,10 @@ SINGLE_BATTLE_TEST("Water Absorb prevents Items from activating") ABILITY_POPUP(player, ABILITY_WATER_ABSORB); HP_BAR(player, hp: TEST_MAX_HP / 4 + 1); MESSAGE("Poliwag restored HP using its Water Absorb!"); - NONE_OF { + NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - + } } diff --git a/test/ability_zen_mode.c b/test/ability_zen_mode.c new file mode 100644 index 000000000000..f18f6d6595f0 --- /dev/null +++ b/test/ability_zen_mode.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less at the end of the turn") +{ + u16 standardSpecies, zenSpecies; + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + + GIVEN { + ASSUME(P_GEN_5_POKEMON == TRUE); + ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); + ASSUME(gSpeciesInfo[zenSpecies].baseHP == 105); + PLAYER(standardSpecies) + { + Ability(ABILITY_ZEN_MODE); + HP((GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2) + 1); + }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Darmanitan used Celebrate!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + HP_BAR(player); + ABILITY_POPUP(player, ABILITY_ZEN_MODE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } THEN { + ASSUME(player->hp <= player->maxHP / 2); + EXPECT_EQ(player->species, zenSpecies); + } +} + +SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less before the first turn") +{ + u16 standardSpecies, zenSpecies; + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + + GIVEN { + ASSUME(P_GEN_5_POKEMON == TRUE); + ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); + ASSUME(gSpeciesInfo[zenSpecies].baseHP == 105); + PLAYER(standardSpecies) + { + Ability(ABILITY_ZEN_MODE); + HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2); + }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + ABILITY_POPUP(player, ABILITY_ZEN_MODE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Darmanitan used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } THEN { + EXPECT_LE(player->hp, player->maxHP / 2); + EXPECT_EQ(player->species, zenSpecies); + } +} + +SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is healed above half") +{ + u16 standardSpecies, zenSpecies; + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + + GIVEN { + ASSUME(P_GEN_5_POKEMON == TRUE); + ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); + ASSUME(gSpeciesInfo[zenSpecies].baseHP == 105); + PLAYER(standardSpecies) + { + Ability(ABILITY_ZEN_MODE); + HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2); + }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_HEAL_PULSE); } + } SCENE { + ABILITY_POPUP(player, ABILITY_ZEN_MODE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Darmanitan used Celebrate!"); + MESSAGE("Foe Wobbuffet used Heal Pulse!"); + HP_BAR(player); + ABILITY_POPUP(player, ABILITY_ZEN_MODE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } THEN { + EXPECT_GT(player->hp, player->maxHP / 2); + EXPECT_EQ(player->species, standardSpecies); + } +} diff --git a/test/form_change.c b/test/form_change.c new file mode 100644 index 000000000000..74ba2b75f7f5 --- /dev/null +++ b/test/form_change.c @@ -0,0 +1,119 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Xerneas changes into Active Form upon battle start") +{ + GIVEN { + ASSUME(P_GEN_6_POKEMON == TRUE); + PLAYER(SPECIES_XERNEAS); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + } THEN { + EXPECT_EQ(player->species, SPECIES_XERNEAS_ACTIVE); + } +} + +SINGLE_BATTLE_TEST("Zacian changes into its Crowned Form when holding the Rusted Sword upon battle start") +{ + u16 item; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_RUSTED_SWORD; } + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + PLAYER(SPECIES_ZACIAN) { Item(item); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + } THEN { + if (item == ITEM_NONE) + EXPECT_EQ(player->species, SPECIES_ZACIAN); + else + EXPECT_EQ(player->species, SPECIES_ZACIAN_CROWNED_SWORD); + } +} + +SINGLE_BATTLE_TEST("Zacian's Iron Head becomes Behemoth Blade upon form change") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + PLAYER(SPECIES_ZACIAN) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + } THEN { + ASSUME(player->species == SPECIES_ZACIAN_CROWNED_SWORD); // Assumes form change worked. + EXPECT_EQ(player->moves[0], MOVE_BEHEMOTH_BLADE); + } +} + +SINGLE_BATTLE_TEST("Zamazenta changes into its Crowned Form when holding the Rusted Shield upon battle start") +{ + u16 item; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_RUSTED_SHIELD; } + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + PLAYER(SPECIES_ZAMAZENTA) { Item(item); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + } THEN { + if (item == ITEM_NONE) + EXPECT_EQ(player->species, SPECIES_ZAMAZENTA); + else + EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_CROWNED_SHIELD); + } +} + +SINGLE_BATTLE_TEST("Zamazenta's Iron Head becomes Behemoth Bash upon form change") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + PLAYER(SPECIES_ZAMAZENTA) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + } THEN { + ASSUME(player->species == SPECIES_ZAMAZENTA_CROWNED_SHIELD); // Assumes form change worked. + EXPECT_EQ(player->moves[0], MOVE_BEHEMOTH_BASH); + } +} + +SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon switching out") +{ + GIVEN { + ASSUME(P_GEN_6_POKEMON == TRUE); + PLAYER(SPECIES_AEGISLASH); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); } + } SCENE { + ABILITY_POPUP(player, ABILITY_STANCE_CHANGE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Aegislash used Tackle!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_AEGISLASH); + } +} + +SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting") +{ + GIVEN { + ASSUME(P_GEN_6_POKEMON == TRUE); + PLAYER(SPECIES_AEGISLASH) { HP(1); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_GUST); SEND_OUT(player, 1);} + } SCENE { + MESSAGE("Foe Wobbuffet used Gust!"); + MESSAGE("Aegislash fainted!"); + } THEN { + EXPECT_EQ(GetMonData(&PLAYER_PARTY[0], MON_DATA_SPECIES), SPECIES_AEGISLASH); + } +} diff --git a/test/hold_effect_berserk_gene.c b/test/hold_effect_berserk_gene.c new file mode 100644 index 000000000000..103a0a1a3ef2 --- /dev/null +++ b/test/hold_effect_berserk_gene.c @@ -0,0 +1,180 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gItems[ITEM_BERSERK_GENE].holdEffect == HOLD_EFFECT_BERSERK_GENE); +} + +SINGLE_BATTLE_TEST("Berserk Gene sharply raises attack at the start of battle", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { if (useItem) Item(ITEM_BERSERK_GENE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, WITH_RNG(RNG_CONFUSION, FALSE)); } + } SCENE { + if (useItem) + { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Berserk Gene, the Attack of Wobbuffet sharply rose!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + MESSAGE("Wobbuffet became confused!"); + } + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Berserk Gene activates on switch in", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + PLAYER(SPECIES_WYNAUT); + PLAYER(SPECIES_WOBBUFFET) { if (useItem) Item(ITEM_BERSERK_GENE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SWITCH(player, 1); } + TURN { MOVE(player, MOVE_TACKLE, WITH_RNG(RNG_CONFUSION, FALSE)); } + } SCENE { + if (useItem) + { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Berserk Gene, the Attack of Wobbuffet sharply rose!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + MESSAGE("Wobbuffet became confused!"); + } + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but still raises attack sharply", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + PLAYER(SPECIES_SLOWBRO) { Ability(ABILITY_OWN_TEMPO); if (useItem) Item(ITEM_BERSERK_GENE); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(player, MOVE_TACKLE); + } + } SCENE { + if (useItem) + { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Berserk Gene, the Attack of Slowbro sharply rose!"); + ABILITY_POPUP(player, ABILITY_OWN_TEMPO); + MESSAGE("Slowbro's Own Tempo prevents confusion!"); + } + HP_BAR(opponent, captureDamage: &results[i].damage); + NONE_OF + { + MESSAGE("Slowbro became confused!"); + } + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Berserk Gene does not confuse on Misty Terrain but still raises attack sharply") +{ + GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); + PLAYER(SPECIES_TAPU_FINI) { Ability(ABILITY_MISTY_SURGE); Item(ITEM_BERSERK_GENE); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(player, MOVE_TACKLE); + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Berserk Gene, the Attack of Tapu Fini sharply rose!"); + NONE_OF + { + MESSAGE("Tapu Fini became confused!"); + } + } +} + +SINGLE_BATTLE_TEST("Berserk Gene does not confuse when Safeguard is active") +{ + GIVEN { + PLAYER(SPECIES_WYNAUT); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_BERSERK_GENE); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SAFEGUARD); } + TURN { SWITCH(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Berserk Gene, the Attack of Wobbuffet sharply rose!"); + MESSAGE("Wobbuffet's party is protected by SAFEGUARD!"); + NONE_OF + { + MESSAGE("Wobbuffet became confused!"); + } + } +} + +SINGLE_BATTLE_TEST("Berserk Gene causes confusion for more than 5 turns") // how else would be check for infinite? +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_BERSERK_GENE); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + TURN {} + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + NONE_OF + { + MESSAGE("Wobbuffet snapped out of confusion!"); + } + } +} + +SINGLE_BATTLE_TEST("Berserk Gene causes infinite confusion") // check if bit is set +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_BERSERK_GENE); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + } SCENE { + } THEN { + EXPECT(gStatuses4[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] & STATUS4_INFINITE_CONFUSION); + } +} + +SINGLE_BATTLE_TEST("Berserk Gene causes confusion timer to not tick down", u32 status2) +{ + u32 turns; + PARAMETRIZE { turns = 1; } + PARAMETRIZE { turns = 2; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_BERSERK_GENE); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + u32 count; + for (count = 0; count < turns; count++) { + TURN {} + } + } THEN { + results[i].status2 = player->status2; + } FINALLY { + EXPECT_EQ(results[0].status2, results[1].status2); + } +} diff --git a/test/hold_effect_eject_button.c b/test/hold_effect_eject_button.c new file mode 100644 index 000000000000..0d28d7bf04ca --- /dev/null +++ b/test/hold_effect_eject_button.c @@ -0,0 +1,189 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gItems[ITEM_EJECT_BUTTON].holdEffect == HOLD_EFFECT_EJECT_BUTTON); +} + +SINGLE_BATTLE_TEST("Eject Button is not triggered when there is nothing to switch in") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(0); }; + } WHEN { + TURN { + MOVE(player, MOVE_QUICK_ATTACK); + MOVE(opponent, MOVE_TACKLE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Wobbuffet is switched out with the Eject Button!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Eject Button is not activated by a Sheer Force boosted move") +{ + GIVEN { + PLAYER(SPECIES_NIDOKING) { Ability(ABILITY_SHEER_FORCE); }; + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(player, MOVE_FLAMETHROWER); + MOVE(opponent, MOVE_TACKLE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLAMETHROWER, player); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Wobbuffet is switched out with the Eject Button!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Eject Button will not activate under Substitute") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_RAICHU) { Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(opponent, MOVE_SUBSTITUTE); + MOVE(player, MOVE_TACKLE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent); + MESSAGE("Foe Raichu made a SUBSTITUTE!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + MESSAGE("The SUBSTITUTE took damage for Foe Raichu!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Raichu is switched out with the Eject Button!"); + } + } +} + +SINGLE_BATTLE_TEST("Eject Button is not blocked by trapping abilities or moves") +{ + GIVEN { + PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_ARENA_TRAP); }; + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(player, MOVE_TACKLE); + SEND_OUT(opponent, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Wobbuffet is switched out with the Eject Button!"); + MESSAGE("2 sent out Wobbuffet!"); + } +} + +SINGLE_BATTLE_TEST("Eject Button is not triggered after the mon loses Eject Button") +{ + GIVEN { + PLAYER(SPECIES_RAICHU); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(player, MOVE_KNOCK_OFF); + MOVE(opponent, MOVE_TACKLE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Wobbuffet is switched out with the Eject Button!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Eject Button is not triggered after given to player by Picketpocket") +{ + GIVEN { + PLAYER(SPECIES_REGIELEKI) { Item(ITEM_EJECT_BUTTON); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SNEASEL) { Ability(ABILITY_PICKPOCKET); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(player, MOVE_TACKLE); + MOVE(opponent, MOVE_TACKLE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ABILITY_POPUP(opponent, ABILITY_PICKPOCKET); + MESSAGE("Foe Sneasel stole Regieleki's Eject Button!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Eject Button has no chance to activate after Dragon Tail") +{ + GIVEN { + PLAYER(SPECIES_KOMMO_O); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_CHANSEY); + } WHEN { + TURN { + MOVE(player, MOVE_DRAGON_TAIL); + MOVE(opponent, MOVE_TACKLE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, player); + MESSAGE("Foe Chansey was dragged out!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Chansey is switched out with the Eject Button!"); + } + } +} + +SINGLE_BATTLE_TEST("Eject Button prevents Volt Switch / U-Turn from activating") +{ + GIVEN { + PLAYER(SPECIES_MANECTRIC); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { + MOVE(player, MOVE_VOLT_SWITCH); + SEND_OUT(opponent, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_VOLT_SWITCH, player); + MESSAGE("Foe Wobbuffet is switched out with the Eject Button!"); + } +} + +SINGLE_BATTLE_TEST("Eject Button is activated before Emergency Exit") +{ + GIVEN { + PLAYER(SPECIES_LATIAS); + OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); Item(ITEM_EJECT_BUTTON); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(player, MOVE_THUNDERBOLT); + SEND_OUT(opponent, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Golisopod is switched out with the Eject Button!"); + } +} diff --git a/test/hold_effect_mirror_herb.c b/test/hold_effect_mirror_herb.c new file mode 100644 index 000000000000..22f564b85007 --- /dev/null +++ b/test/hold_effect_mirror_herb.c @@ -0,0 +1,49 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gItems[ITEM_MIRROR_HERB].holdEffect == HOLD_EFFECT_MIRROR_HERB); +} + +SINGLE_BATTLE_TEST("Mirror Herb copies all of foe's stat changes in a turn", s16 damage) +{ + u32 item; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_MIRROR_HERB; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(5); Item(item); } + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_DANCE); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (item == ITEM_NONE) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + } + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + EXPECT_EQ(player->statStages[STAT_ATK], opponent->statStages[STAT_ATK]); + EXPECT_EQ(player->statStages[STAT_SPEED], opponent->statStages[STAT_SPEED]); + } +} + +SINGLE_BATTLE_TEST("Mirror Herb copies all of of Stuff Cheeks") +{ + GIVEN { + ASSUME(gItems[ITEM_LIECHI_BERRY].holdEffect == HOLD_EFFECT_ATTACK_UP); + PLAYER(SPECIES_SKWOVET) { Item(ITEM_LIECHI_BERRY); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_MIRROR_HERB); } + } WHEN { + TURN { MOVE(player, MOVE_STUFF_CHEEKS); } + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], opponent->statStages[STAT_ATK]); + EXPECT_EQ(player->statStages[STAT_DEF], opponent->statStages[STAT_DEF]); + } +} diff --git a/test/hold_effect_red_card.c b/test/hold_effect_red_card.c new file mode 100644 index 000000000000..0a8bb3460cba --- /dev/null +++ b/test/hold_effect_red_card.c @@ -0,0 +1,380 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gItems[ITEM_RED_CARD].holdEffect == HOLD_EFFECT_RED_CARD); +} + +SINGLE_BATTLE_TEST("Red Card switches the attacker with a random non-fainted replacement") +{ + PASSES_RANDOMLY(1, 2, RNG_FORCE_RANDOM_SWITCH); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BULBASAUR); + OPPONENT(SPECIES_CHARMANDER); + OPPONENT(SPECIES_SQUIRTLE) { HP(0); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + MESSAGE("Foe Bulbasaur was dragged out!"); + } +} + +DOUBLE_BATTLE_TEST("Red Card switches the target with a random non-battler, non-fainted replacement") +{ + PASSES_RANDOMLY(1, 2, RNG_FORCE_RANDOM_SWITCH); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_BULBASAUR); + OPPONENT(SPECIES_CHARMANDER); + OPPONENT(SPECIES_SQUIRTLE) { HP(0); } + } WHEN { + TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + MESSAGE("Foe Bulbasaur was dragged out!"); + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if holder faints") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); Item(ITEM_RED_CARD); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if target is behind a Substitute") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } + } +} + +SINGLE_BATTLE_TEST("Red Card activates after the last hit of a multi-hit move") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_DOUBLE_KICK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_KICK, opponent); + HP_BAR(player); + HP_BAR(player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if no replacements") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if replacements fainted") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT) { HP(0); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if knocked off") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_KNOCK_OFF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if stolen by a move") +{ + u32 item; + bool32 activate; + PARAMETRIZE { item = ITEM_NONE; activate = FALSE; } + PARAMETRIZE { item = ITEM_POTION; activate = TRUE; } + ASSUME(gBattleMoves[MOVE_THIEF].effect == EFFECT_THIEF); + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET) { Item(item); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_THIEF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THIEF, opponent); + if (activate) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if stolen by Magician") +{ + u32 item; + bool32 activate; + PARAMETRIZE { item = ITEM_NONE; activate = FALSE; } + PARAMETRIZE { item = ITEM_POTION; activate = TRUE; } + + GIVEN { + ASSUME(P_GEN_6_POKEMON == TRUE); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_FENNEKIN) { Ability(ABILITY_MAGICIAN); Item(item); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + if (activate) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Fennekin!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Fennekin!"); + } + } + } +} + +DOUBLE_BATTLE_TEST("Red Card activates for only the fastest target") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(3); Item(ITEM_RED_CARD); } + PLAYER(SPECIES_WYNAUT) { Speed(2); Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } + OPPONENT(SPECIES_WYNAUT) { Speed(4); } + OPPONENT(SPECIES_UNOWN) { Speed(1); } + } WHEN { + TURN { + MOVE(opponentLeft, MOVE_ROCK_SLIDE); + MOVE(opponentRight, MOVE_TACKLE, target: playerRight); + } + } SCENE { + // Fastest target's Red Card activates. + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROCK_SLIDE, opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + MESSAGE("Foe Unown was dragged out!"); + + // Slower target's Red Card still able to activate on other battler. + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight); + MESSAGE("Wynaut held up its Red Card against Foe Wynaut!"); + MESSAGE("Foe Wobbuffet was dragged out!"); + } +} + +DOUBLE_BATTLE_TEST("Red Card activates but fails if the attacker is rooted") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_UNOWN); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_INGRAIN); } + TURN { + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + MESSAGE("Foe Wobbuffet anchored itself with its roots!"); + + // Red Card already consumed so cannot activate. + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight); + MESSAGE("Wynaut held up its Red Card against Foe Wynaut!"); + } + } +} + +DOUBLE_BATTLE_TEST("Red Card activates but fails if the attacker has Suction Cups") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_OCTILLERY) { Ability(ABILITY_SUCTION_CUPS); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_UNOWN); + } WHEN { + TURN { + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); + MESSAGE("Wobbuffet held up its Red Card against Foe Octillery!"); + MESSAGE("Foe Octillery anchors itself with Suction Cups!"); + + // Red Card already consumed so cannot activate. + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight); + MESSAGE("Wynaut held up its Red Card against Foe Wynaut!"); + } + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if switched by Dragon Tail") +{ + bool32 hasWynaut, activate; + PARAMETRIZE { hasWynaut = TRUE; activate = FALSE; } + PARAMETRIZE { hasWynaut = FALSE; activate = TRUE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + if (hasWynaut) PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, opponent); + if (activate) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Red Card activates and overrides U-turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_U_TURN); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } +} + +SINGLE_BATTLE_TEST("Red Card does not activate if attacker's Sheer Force applied") +{ + u32 move; + bool32 activate; + PARAMETRIZE { move = MOVE_TACKLE; activate = TRUE; } + PARAMETRIZE { move = MOVE_STOMP; activate = FALSE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_TAUROS) { Ability(ABILITY_SHEER_FORCE); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + if (activate) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Tauros!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Tauros!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Red Card activates before Emergency Exit") +{ + GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); + PLAYER(SPECIES_GOLISOPOD) { MaxHP(100); HP(51); Item(ITEM_RED_CARD); } + PLAYER(SPECIES_WIMPOD); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Golisopod held up its Red Card against Foe Wobbuffet!"); + ABILITY_POPUP(player, ABILITY_EMERGENCY_EXIT); + MESSAGE("Go! Wimpod!"); + } +} + +// SINGLE_BATTLE_TEST("Red Card activates but fails if the attacker has Dynamaxed") diff --git a/test/item_effect_cure_status.c b/test/item_effect_cure_status.c new file mode 100644 index 000000000000..1f7c9d7a23f9 --- /dev/null +++ b/test/item_effect_cure_status.c @@ -0,0 +1,339 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Paralyze Heal heals a battler from being paralyzed") +{ + GIVEN { + ASSUME(gItems[ITEM_PARALYZE_HEAL].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_PARALYSIS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_PARALYZE_HEAL, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Antidote heals a battler from being poisoned") +{ + GIVEN { + ASSUME(gItems[ITEM_ANTIDOTE].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ANTIDOTE, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Antidote heals a battler from being badly poisoned") +{ + GIVEN { + ASSUME(gItems[ITEM_ANTIDOTE].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_TOXIC_POISON); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ANTIDOTE, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Awakening heals a battler from being asleep") +{ + GIVEN { + ASSUME(gItems[ITEM_AWAKENING].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_AWAKENING, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Burn Heal heals a battler from being burned") +{ + GIVEN { + ASSUME(gItems[ITEM_BURN_HEAL].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_BURN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_BURN_HEAL, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Ice Heal heals a battler from being paralyzed") +{ + GIVEN { + ASSUME(gItems[ITEM_ICE_HEAL].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ICE_HEAL, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Full Heal heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_FULL_HEAL].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_FULL_HEAL, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Heal Powder heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_HEAL_POWDER].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_HEAL_POWDER, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Pewter Crunchies heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_PEWTER_CRUNCHIES].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_PEWTER_CRUNCHIES, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Lava Cookies heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_LAVA_COOKIE].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_LAVA_COOKIE, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Rage Candy Bar heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_RAGE_CANDY_BAR].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_RAGE_CANDY_BAR, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Old Gateu heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_OLD_GATEAU].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_OLD_GATEAU, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Casteliacone heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_CASTELIACONE].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_CASTELIACONE, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Lumiose Galette heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_LUMIOSE_GALETTE].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_LUMIOSE_GALETTE, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!");; + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Shalour Sable heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_SHALOUR_SABLE].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_SHALOUR_SABLE, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Big Malasada heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_BIG_MALASADA].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_BIG_MALASADA, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Full Heal, Heal Powder and Local Specialties heal a battler from being confused") +{ + u16 item; + PARAMETRIZE { item = ITEM_FULL_HEAL; } + PARAMETRIZE { item = ITEM_HEAL_POWDER; } + PARAMETRIZE { item = ITEM_PEWTER_CRUNCHIES; } + PARAMETRIZE { item = ITEM_LAVA_COOKIE; } + PARAMETRIZE { item = ITEM_RAGE_CANDY_BAR; } + PARAMETRIZE { item = ITEM_OLD_GATEAU; } + PARAMETRIZE { item = ITEM_CASTELIACONE; } + PARAMETRIZE { item = ITEM_LUMIOSE_GALETTE; } + PARAMETRIZE { item = ITEM_SHALOUR_SABLE; } + PARAMETRIZE { item = ITEM_BIG_MALASADA; } + GIVEN { + ASSUME(gItems[item].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GENGAR); + } WHEN { + TURN { MOVE(opponent, MOVE_CONFUSE_RAY); } + TURN { USE_ITEM(player, item, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status2, STATUS1_NONE); // because we dont have STATUS2_NONE + } +} diff --git a/test/item_effect_heal_and_cure_status.c b/test/item_effect_heal_and_cure_status.c new file mode 100644 index 000000000000..17ac5be96945 --- /dev/null +++ b/test/item_effect_heal_and_cure_status.c @@ -0,0 +1,43 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Full Restore restores a battler's HP and cures any primary status") +{ + u16 status; + PARAMETRIZE{ status = STATUS1_BURN; } + PARAMETRIZE{ status = STATUS1_FREEZE; } + PARAMETRIZE{ status = STATUS1_PARALYSIS; } + PARAMETRIZE{ status = STATUS1_POISON; } + PARAMETRIZE{ status = STATUS1_TOXIC_POISON; } + PARAMETRIZE{ status = STATUS1_SLEEP; } + GIVEN { + ASSUME(gItems[ITEM_FULL_RESTORE].battleUsage == EFFECT_ITEM_HEAL_AND_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); Status1(status); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN{ USE_ITEM(player, ITEM_FULL_RESTORE, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its HP restored!"); + } THEN { + EXPECT_EQ(player->hp, player->maxHP); + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + +SINGLE_BATTLE_TEST("Full Restore restores a battler's HP and cures confusion") +{ + GIVEN { + ASSUME(gItems[ITEM_FULL_RESTORE].battleUsage == EFFECT_ITEM_HEAL_AND_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300);}; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN{ MOVE(opponent, MOVE_CONFUSE_RAY); } + TURN{ USE_ITEM(player, ITEM_FULL_RESTORE, partyIndex: 0); } + TURN{ MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet had its HP restored!"); + NONE_OF { MESSAGE("Wobbuffet is confused!"); } + } THEN { + EXPECT_EQ(player->hp, player->maxHP); + } +} diff --git a/test/item_effect_increase_stat.c b/test/item_effect_increase_stat.c new file mode 100644 index 000000000000..310932040c6b --- /dev/null +++ b/test/item_effect_increase_stat.c @@ -0,0 +1,253 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("X Attack sharply raises battler's Attack stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_X_ATTACK].battleUsage == EFFECT_ITEM_INCREASE_STAT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_X_ATTACK); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (B_X_ITEMS_BUFF >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + else + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("X Defense sharply raises battler's Defense stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_X_DEFENSE].battleUsage == EFFECT_ITEM_INCREASE_STAT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_X_DEFENSE); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Tackle!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + if (B_X_ITEMS_BUFF >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + else + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.66), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("X Sp. Atk sharply raises battler's Sp. Attack stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_X_SP_ATK].battleUsage == EFFECT_ITEM_INCREASE_STAT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_X_SP_ATK); } + TURN { MOVE(player, MOVE_DISARMING_VOICE); } + } SCENE { + MESSAGE("Wobbuffet used DisrmngVoice!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (B_X_ITEMS_BUFF >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + else + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("X Sp. Def sharply raises battler's Sp. Defense stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_X_SP_DEF].battleUsage == EFFECT_ITEM_INCREASE_STAT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_X_SP_DEF); } + TURN { MOVE(opponent, MOVE_DISARMING_VOICE); } + } SCENE { + MESSAGE("Foe Wobbuffet used DisrmngVoice!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + if (B_X_ITEMS_BUFF >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + else + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.66), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("X Speed sharply raises battler's Speed stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_X_SPEED].battleUsage == EFFECT_ITEM_INCREASE_STAT); + if (B_X_ITEMS_BUFF >= GEN_7) + { + PLAYER(SPECIES_WOBBUFFET) { Speed(3); }; + OPPONENT(SPECIES_WOBBUFFET) { Speed(4); }; + } + else + { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); }; + OPPONENT(SPECIES_WOBBUFFET) { Speed(5); }; + } + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_X_SPEED); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (useItem) + { + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + } else + { + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Tackle!"); + } + } +} + +SINGLE_BATTLE_TEST("X Accuracy sharply raises battler's Accuracy stat") +{ + + ASSUME(gBattleMoves[MOVE_SING].accuracy == 55); + if (B_X_ITEMS_BUFF >= GEN_7) + PASSES_RANDOMLY(gBattleMoves[MOVE_SING].accuracy * 5 / 3, 100, RNG_ACCURACY); + else + PASSES_RANDOMLY(gBattleMoves[MOVE_SING].accuracy * 4 / 3, 100, RNG_ACCURACY); + GIVEN { + ASSUME(gItems[ITEM_X_ACCURACY].battleUsage == EFFECT_ITEM_INCREASE_STAT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_X_ACCURACY); } + TURN { MOVE(player, MOVE_SING); } + } SCENE { + MESSAGE("Wobbuffet used Sing!"); + MESSAGE("Foe Wobbuffet fell asleep!"); + } +} + +SINGLE_BATTLE_TEST("Max Mushrooms raises battler's Attack stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_MAX_MUSHROOMS].battleUsage == EFFECT_ITEM_INCREASE_ALL_STATS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Max Mushrooms raises battler's Defense stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_MAX_MUSHROOMS].battleUsage == EFFECT_ITEM_INCREASE_ALL_STATS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Tackle!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.66), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Max Mushrooms raises battler's Sp. Attack stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_MAX_MUSHROOMS].battleUsage == EFFECT_ITEM_INCREASE_ALL_STATS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } + TURN { MOVE(player, MOVE_DISARMING_VOICE); } + } SCENE { + MESSAGE("Wobbuffet used DisrmngVoice!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Max Mushrooms battler's Sp. Defense stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_MAX_MUSHROOMS].battleUsage == EFFECT_ITEM_INCREASE_ALL_STATS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } + TURN { MOVE(opponent, MOVE_DISARMING_VOICE); } + } SCENE { + MESSAGE("Foe Wobbuffet used DisrmngVoice!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.66), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Max Mushrooms raises battler's Speed stat", s16 damage) +{ + u16 useItem; + PARAMETRIZE { useItem = FALSE; } + PARAMETRIZE { useItem = TRUE; } + GIVEN { + ASSUME(gItems[ITEM_MAX_MUSHROOMS].battleUsage == EFFECT_ITEM_INCREASE_ALL_STATS); + PLAYER(SPECIES_WOBBUFFET) { Speed(4); }; + OPPONENT(SPECIES_WOBBUFFET) { Speed(5); }; + } WHEN { + if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (useItem) + { + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + } else + { + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Tackle!"); + } + } +} diff --git a/test/item_effect_restore_hp.c b/test/item_effect_restore_hp.c new file mode 100644 index 000000000000..6fd58fe82418 --- /dev/null +++ b/test/item_effect_restore_hp.c @@ -0,0 +1,186 @@ +#include "global.h" +#include "test_battle.h" + +#define TEST_HP 1 +#define MAX_HP 400 + +SINGLE_BATTLE_TEST("Potion restores a battler's HP by 20") +{ + GIVEN { + ASSUME(gItems[ITEM_POTION].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_POTION, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 20); + } +} + +SINGLE_BATTLE_TEST("Super Potion restores a battler's HP by 60") +{ + GIVEN { + ASSUME(gItems[ITEM_SUPER_POTION].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_SUPER_POTION, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 60); + } +} + +SINGLE_BATTLE_TEST("Hyper Potion restores a battler's HP by 120") +{ + GIVEN { + ASSUME(gItems[ITEM_HYPER_POTION].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_HYPER_POTION, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 120); + } +} + +SINGLE_BATTLE_TEST("Max Potion restores a battler's HP fully") +{ + GIVEN { + ASSUME(gItems[ITEM_MAX_POTION].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_MAX_POTION, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: MAX_HP); + } +} + +SINGLE_BATTLE_TEST("Fresh Water restores a battler's HP by 30") +{ + GIVEN { + ASSUME(gItems[ITEM_FRESH_WATER].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_FRESH_WATER, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 30); + } +} + +SINGLE_BATTLE_TEST("Soda Pop restores a battler's HP by 50") +{ + GIVEN { + ASSUME(gItems[ITEM_SODA_POP].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_SODA_POP, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 50); + } +} + +SINGLE_BATTLE_TEST("Lemonade restores a battler's HP by 70") +{ + GIVEN { + ASSUME(gItems[ITEM_LEMONADE].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_LEMONADE, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 70); + } +} + +SINGLE_BATTLE_TEST("Moomoo Milk restores a battler's HP by 100") +{ + GIVEN { + ASSUME(gItems[ITEM_MOOMOO_MILK].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_MOOMOO_MILK, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 100); + } +} + +SINGLE_BATTLE_TEST("Energy Powder restores a battler's HP by 60(50)") +{ + GIVEN { + ASSUME(gItems[ITEM_ENERGY_POWDER].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ENERGY_POWDER, partyIndex: 0); } + } SCENE { + if (I_HEALTH_RECOVERY >= GEN_7) + HP_BAR(player, hp: TEST_HP + 60); + else + HP_BAR(player, hp: TEST_HP + 50); + } +} + +SINGLE_BATTLE_TEST("Energy Root restores a battler's HP by 120(200)") +{ + GIVEN { + ASSUME(gItems[ITEM_ENERGY_ROOT].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ENERGY_ROOT, partyIndex: 0); } + } SCENE { + if (I_HEALTH_RECOVERY >= GEN_7) + HP_BAR(player, hp: TEST_HP + 120); + else + HP_BAR(player, hp: TEST_HP + 200); + } +} + +SINGLE_BATTLE_TEST("Sweet Heart restores a battler's HP by 20") +{ + GIVEN { + ASSUME(gItems[ITEM_SWEET_HEART].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_SWEET_HEART, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 20); + } +} + +SINGLE_BATTLE_TEST("Oran Berry restores a battler's HP by 10") +{ + GIVEN { + ASSUME(gItems[ITEM_ORAN_BERRY].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ORAN_BERRY, partyIndex: 0); } + } SCENE { + HP_BAR(player, hp: TEST_HP + 10); + } +} + +SINGLE_BATTLE_TEST("Sitrus Berry restores a battler's HP by 25% of its max HP(30HP flat)") +{ + GIVEN { + ASSUME(gItems[ITEM_SITRUS_BERRY].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_SITRUS_BERRY, partyIndex: 0); } + } SCENE { + if (I_SITRUS_BERRY_HEAL >= GEN_4) + HP_BAR(player, hp: TEST_HP + MAX_HP * 0.25); + else + HP_BAR(player, hp: TEST_HP + 30); + } +} + +#undef TEST_HP +#undef MAX_HP diff --git a/test/item_effect_restore_pp.c b/test/item_effect_restore_pp.c new file mode 100644 index 000000000000..7194efbbb534 --- /dev/null +++ b/test/item_effect_restore_pp.c @@ -0,0 +1,66 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Ether restores the PP of one of a battler's moves by 10 ") +{ + GIVEN { + ASSUME(gItems[ITEM_ETHER].battleUsage == EFFECT_ITEM_RESTORE_PP); + ASSUME(gItems[ITEM_ETHER].type == ITEM_USE_PARTY_MENU_MOVES); + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TACKLE, 0}, {MOVE_CONFUSION, 20}); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ETHER, partyIndex: 0, move: MOVE_TACKLE); } + } THEN { + EXPECT_EQ(player->pp[0], 10); + EXPECT_EQ(player->pp[1], 20); + } +} + +SINGLE_BATTLE_TEST("Max Ether restores the PP of one of a battler's moves fully") +{ + GIVEN { + ASSUME(gItems[ITEM_MAX_ETHER].battleUsage == EFFECT_ITEM_RESTORE_PP); + ASSUME(gItems[ITEM_MAX_ETHER].type == ITEM_USE_PARTY_MENU_MOVES); + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TACKLE, 0}, {MOVE_CONFUSION, 20}); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_MAX_ETHER, partyIndex: 0, move: MOVE_TACKLE); } + } THEN { + EXPECT_EQ(player->pp[0], 35); + EXPECT_EQ(player->pp[1], 20); + } +} + +SINGLE_BATTLE_TEST("Elixir restores the PP of all of a battler's moves by 10") +{ + GIVEN { + ASSUME(gItems[ITEM_ELIXIR].battleUsage == EFFECT_ITEM_RESTORE_PP); + ASSUME(gItems[ITEM_ELIXIR].type == ITEM_USE_PARTY_MENU); + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TACKLE, 0}, {MOVE_CONFUSION, 0}, {MOVE_SCRATCH, 0}, {MOVE_GROWL, 0}); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ELIXIR, partyIndex: 0); } + } THEN { + EXPECT_EQ(player->pp[0], 10); + EXPECT_EQ(player->pp[1], 10); + EXPECT_EQ(player->pp[2], 10); + EXPECT_EQ(player->pp[3], 10); + } +} + +SINGLE_BATTLE_TEST("Max Elixir restores the PP of all of a battler's moves fully") +{ + GIVEN { + ASSUME(gItems[ITEM_MAX_ELIXIR].battleUsage == EFFECT_ITEM_RESTORE_PP); + ASSUME(gItems[ITEM_MAX_ELIXIR].type == ITEM_USE_PARTY_MENU); + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TACKLE, 0}, {MOVE_CONFUSION, 0}, {MOVE_SCRATCH, 0}, {MOVE_GROWL, 0}); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_MAX_ELIXIR, partyIndex: 0); } + } THEN { + EXPECT_EQ(player->pp[0], 35); + EXPECT_EQ(player->pp[1], 25); + EXPECT_EQ(player->pp[2], 35); + EXPECT_EQ(player->pp[3], 40); + } +} diff --git a/test/item_effect_revive.c b/test/item_effect_revive.c new file mode 100644 index 000000000000..77423fff1b29 --- /dev/null +++ b/test/item_effect_revive.c @@ -0,0 +1,78 @@ +#include "global.h" +#include "test_battle.h" + +#define MAX_HP 200 + +SINGLE_BATTLE_TEST("Revive restores a fainted battler's HP to half") +{ + GIVEN { + ASSUME(gItems[ITEM_REVIVE].battleUsage == EFFECT_ITEM_REVIVE); + PLAYER(SPECIES_WYNAUT) { HP(1); MaxHP(MAX_HP); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { USE_ITEM(player, ITEM_REVIVE, partyIndex: 0); } + TURN { SWITCH(player, 0); } + } SCENE { + MESSAGE("Wynaut had its HP restored!"); + } THEN { + EXPECT_EQ(player->hp, MAX_HP/2); + } +} + +SINGLE_BATTLE_TEST("Max Revive restores a fainted battler's HP fully") +{ + GIVEN { + ASSUME(gItems[ITEM_MAX_REVIVE].battleUsage == EFFECT_ITEM_REVIVE); + PLAYER(SPECIES_WYNAUT) { HP(1); MaxHP(MAX_HP); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { USE_ITEM(player, ITEM_MAX_REVIVE, partyIndex: 0); } + TURN { SWITCH(player, 0); } + } SCENE { + MESSAGE("Wynaut had its HP restored!"); + } THEN { + EXPECT_EQ(player->hp, MAX_HP); + } +} + +SINGLE_BATTLE_TEST("Revival Herb restores a fainted battler's HP fully") +{ + GIVEN { + ASSUME(gItems[ITEM_REVIVAL_HERB].battleUsage == EFFECT_ITEM_REVIVE); + PLAYER(SPECIES_WYNAUT) { HP(1); MaxHP(MAX_HP); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { USE_ITEM(player, ITEM_REVIVAL_HERB, partyIndex: 0); } + TURN { SWITCH(player, 0); } + } SCENE { + MESSAGE("Wynaut had its HP restored!"); + } THEN { + EXPECT_EQ(player->hp, MAX_HP); + } +} + +SINGLE_BATTLE_TEST("Max Honey restores a fainted battler's HP fully") +{ + GIVEN { + ASSUME(gItems[ITEM_MAX_HONEY].battleUsage == EFFECT_ITEM_REVIVE); + PLAYER(SPECIES_WYNAUT) { HP(1); MaxHP(MAX_HP); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { USE_ITEM(player, ITEM_MAX_HONEY, partyIndex: 0); } + TURN { SWITCH(player, 0); } + } SCENE { + MESSAGE("Wynaut had its HP restored!"); + } THEN { + EXPECT_EQ(player->hp, MAX_HP); + } +} + +#undef MAX_HP diff --git a/test/item_effect_set_focus_energy.c b/test/item_effect_set_focus_energy.c new file mode 100644 index 000000000000..95648465e68f --- /dev/null +++ b/test/item_effect_set_focus_energy.c @@ -0,0 +1,21 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Dire Hit increases a battler's critical hit chance by 2 stages") +{ + ASSUME(B_CRIT_CHANCE >= GEN_7); + PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); + GIVEN { + ASSUME(gItems[ITEM_DIRE_HIT].battleUsage == EFFECT_ITEM_SET_FOCUS_ENERGY); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_DIRE_HIT, partyIndex: 0); } + TURN { MOVE(player, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FOCUS_ENERGY, player); + MESSAGE("Wobbuffet used Dire Hit to get pumped!"); + MESSAGE("Wobbuffet used Scratch!"); + MESSAGE("A critical hit!"); + } +} diff --git a/test/item_effect_set_mist.c b/test/item_effect_set_mist.c new file mode 100644 index 000000000000..e01775ec4807 --- /dev/null +++ b/test/item_effect_set_mist.c @@ -0,0 +1,19 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Guard Spec. sets Mist effect on the battlers side") +{ + GIVEN { + ASSUME(gItems[ITEM_GUARD_SPEC].battleUsage == EFFECT_ITEM_SET_MIST); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_GUARD_SPEC, partyIndex: 0); } + TURN { MOVE(opponent, MOVE_GROWL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MIST, player); + MESSAGE("Ally became shrouded in MIST!"); + MESSAGE("Foe Wobbuffet used Growl!"); + MESSAGE("Wobbuffet is protected by MIST!"); + } +} diff --git a/test/mega_evolution.c b/test/mega_evolution.c index 13e9cd5b22a6..2c3f0f90f900 100644 --- a/test/mega_evolution.c +++ b/test/mega_evolution.c @@ -17,6 +17,44 @@ SINGLE_BATTLE_TEST("Venusaur can Mega Evolve holding Venusaurite") } } +DOUBLE_BATTLE_TEST("Mega Evolution's order is determined by Speed - opponent faster") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR) { Item(ITEM_VENUSAURITE); Speed(1); } + PLAYER(SPECIES_WOBBUFFET) { Speed(3);} + OPPONENT(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(3);} + OPPONENT(SPECIES_WOBBUFFET) { Speed(4);} + } WHEN { + TURN { MOVE(opponentLeft, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(playerLeft, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + MESSAGE("Foe Gardevoir's Gardevoirite is reacting to 's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponentLeft); + MESSAGE("Foe Gardevoir has Mega Evolved into Mega Gardevoir!"); + MESSAGE("Venusaur's Venusaurite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, playerLeft); + MESSAGE("Venusaur has Mega Evolved into Mega Venusaur!"); + } +} + +DOUBLE_BATTLE_TEST("Mega Evolution's order is determined by Speed - player faster") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR) { Item(ITEM_VENUSAURITE); Speed(5); } + PLAYER(SPECIES_WOBBUFFET) { Speed(3);} + OPPONENT(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(2);} + OPPONENT(SPECIES_WOBBUFFET) { Speed(4);} + } WHEN { + TURN { MOVE(opponentLeft, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(playerLeft, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + MESSAGE("Venusaur's Venusaurite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, playerLeft); + MESSAGE("Venusaur has Mega Evolved into Mega Venusaur!"); + MESSAGE("Foe Gardevoir's Gardevoirite is reacting to 's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponentLeft); + MESSAGE("Foe Gardevoir has Mega Evolved into Mega Gardevoir!"); + } +} + SINGLE_BATTLE_TEST("Rayquaza can Mega Evolve knowing Dragon Ascent") { GIVEN { @@ -37,15 +75,15 @@ SINGLE_BATTLE_TEST("Mega Evolution affects turn order") { GIVEN { ASSUME(B_MEGA_EVO_TURN_ORDER); - PLAYER(SPECIES_DIANCIE) { Item(ITEM_DIANCITE); Speed(105); } + PLAYER(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(105); } OPPONENT(SPECIES_WOBBUFFET) { Speed(106); } } WHEN { TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } } SCENE { - MESSAGE("Diancie used Celebrate!"); + MESSAGE("Gardevoir used Celebrate!"); MESSAGE("Foe Wobbuffet used Celebrate!"); } THEN { - ASSUME(player->speed == 225); + ASSUME(player->speed == 205); } } @@ -66,3 +104,52 @@ SINGLE_BATTLE_TEST("Abilities replaced by Mega Evolution do not affect turn orde ASSUME(player->speed == 45); } } + +DOUBLE_BATTLE_TEST("Mega Evolution happens after switching, but before Focus Punch-like Moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_FOCUS_PUNCH].effect == EFFECT_FOCUS_PUNCH); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_VENUSAUR) { Item(ITEM_VENUSAURITE);} + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SWITCH(opponentRight, 2); MOVE(playerRight, MOVE_FOCUS_PUNCH, megaEvolve: TRUE, target:opponentLeft); MOVE(playerLeft, MOVE_FOCUS_PUNCH, target:opponentLeft); } + TURN {}; + } SCENE { + MESSAGE("2 withdrew Wobbuffet!"); + MESSAGE("2 sent out Wobbuffet!"); + + MESSAGE("Venusaur's Venusaurite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, playerRight); + MESSAGE("Venusaur has Mega Evolved into Mega Venusaur!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FOCUS_PUNCH_SETUP, playerRight); + MESSAGE("Venusaur is tightening its focus!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FOCUS_PUNCH_SETUP, playerLeft); + MESSAGE("Wobbuffet is tightening its focus!"); + } +} + +SINGLE_BATTLE_TEST("Regular Mega Evolution and Fervent Wish Mega Evolution can happen on the same turn") +{ + GIVEN { + PLAYER(SPECIES_RAYQUAZA) { Moves(MOVE_DRAGON_ASCENT, MOVE_CELEBRATE); Speed(3);} + OPPONENT(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(2);} + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(opponent, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + MESSAGE("1's fervent wish has reached Rayquaza!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); + MESSAGE("Rayquaza has Mega Evolved into Mega Rayquaza!"); + + MESSAGE("Foe Gardevoir's Gardevoirite is reacting to 's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent); + MESSAGE("Foe Gardevoir has Mega Evolved into Mega Gardevoir!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_RAYQUAZA_MEGA); + EXPECT_EQ(opponent->species, SPECIES_GARDEVOIR_MEGA); + } +} diff --git a/test/move.c b/test/move.c index d7e759f27a54..9e23c2bd0098 100644 --- a/test/move.c +++ b/test/move.c @@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Accuracy controls the proportion of misses") PARAMETRIZE { move = MOVE_RAZOR_LEAF; } PARAMETRIZE { move = MOVE_SCRATCH; } ASSUME(0 < gBattleMoves[move].accuracy && gBattleMoves[move].accuracy <= 100); - PASSES_RANDOMLY(gBattleMoves[move].accuracy, 100); + PASSES_RANDOMLY(gBattleMoves[move].accuracy, 100, RNG_ACCURACY); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -27,10 +27,9 @@ SINGLE_BATTLE_TEST("Secondary Effect Chance controls the proportion of secondary PARAMETRIZE { move = MOVE_THUNDER_SHOCK; } PARAMETRIZE { move = MOVE_DISCHARGE; } PARAMETRIZE { move = MOVE_NUZZLE; } - ASSUME(gBattleMoves[move].accuracy == 100); ASSUME(gBattleMoves[move].effect == EFFECT_PARALYZE_HIT); ASSUME(0 < gBattleMoves[move].secondaryEffectChance && gBattleMoves[move].secondaryEffectChance <= 100); - PASSES_RANDOMLY(gBattleMoves[move].secondaryEffectChance, 100); + PASSES_RANDOMLY(gBattleMoves[move].secondaryEffectChance, 100, RNG_SECONDARY_EFFECT); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -55,7 +54,7 @@ SINGLE_BATTLE_TEST("Turn order is determined by priority") } } -SINGLE_BATTLE_TEST("Turn order is determined by speed if priority ties") +SINGLE_BATTLE_TEST("Turn order is determined by Speed if priority ties") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Speed(2); } @@ -68,8 +67,9 @@ SINGLE_BATTLE_TEST("Turn order is determined by speed if priority ties") } } -SINGLE_BATTLE_TEST("Turn order is determined randomly if priority and speed tie") +SINGLE_BATTLE_TEST("Turn order is determined randomly if priority and Speed tie") { + KNOWN_FAILING; // The algorithm is significantly biased. PASSES_RANDOMLY(1, 2); GIVEN { PLAYER(SPECIES_WOBBUFFET) { Speed(1); } @@ -85,15 +85,29 @@ SINGLE_BATTLE_TEST("Turn order is determined randomly if priority and speed tie" SINGLE_BATTLE_TEST("Critical hits occur at a 1/24 rate") { ASSUME(B_CRIT_CHANCE >= GEN_7); - ASSUME(gBattleMoves[MOVE_SCRATCH].accuracy == 100); - PASSES_RANDOMLY(100 / 24, 100); + PASSES_RANDOMLY(1, 24, RNG_CRITICAL_HIT); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("It's a critical hit!"); + MESSAGE("A critical hit!"); + } +} + +SINGLE_BATTLE_TEST("Slash's critical hits occur at a 1/8 rate") +{ + ASSUME(B_CRIT_CHANCE >= GEN_7); + ASSUME(gBattleMoves[MOVE_SLASH].flags & FLAG_HIGH_CRIT); + PASSES_RANDOMLY(1, 8, RNG_CRITICAL_HIT); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SLASH); } + } SCENE { + MESSAGE("A critical hit!"); } } diff --git a/test/move_effect_accuracy_down.c b/test/move_effect_accuracy_down.c index 2a90d8ea25d1..a6a79d8db6fb 100644 --- a/test/move_effect_accuracy_down.c +++ b/test/move_effect_accuracy_down.c @@ -9,7 +9,7 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Sand Attack lowers Accuracy") { ASSUME(gBattleMoves[MOVE_SCRATCH].accuracy == 100); - PASSES_RANDOMLY(gBattleMoves[MOVE_SCRATCH].accuracy * 3 / 4, 100); + PASSES_RANDOMLY(gBattleMoves[MOVE_SCRATCH].accuracy * 3 / 4, 100, RNG_ACCURACY); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/move_effect_assist.c b/test/move_effect_assist.c new file mode 100644 index 000000000000..e95d84654fca --- /dev/null +++ b/test/move_effect_assist.c @@ -0,0 +1,22 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_ASSIST].effect == EFFECT_ASSIST); +} + +SINGLE_BATTLE_TEST("Assist fails if there are no valid moves to choose from") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Moves(MOVE_ASSIST, MOVE_CELEBRATE, MOVE_METRONOME, MOVE_ME_FIRST); } + PLAYER(SPECIES_WOBBUFFET) {Moves(MOVE_ASSIST, MOVE_ENDURE, MOVE_DRAGON_TAIL, MOVE_SPOTLIGHT); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ASSIST); } + } SCENE { + MESSAGE("Wobbuffet used Assist!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ASSIST, player); + MESSAGE("But it failed!"); + } +} diff --git a/test/move_effect_attack_down.c b/test/move_effect_attack_down.c index 6333bbea1f0e..0df14f701a94 100644 --- a/test/move_effect_attack_down.c +++ b/test/move_effect_attack_down.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Growl lowers Attack", s16 damage) if (lowerAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Wobbuffet's attack fell!"); + MESSAGE("Foe Wobbuffet's Attack fell!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); HP_BAR(player, captureDamage: &results[i].damage); diff --git a/test/move_effect_attack_up.c b/test/move_effect_attack_up.c index 7b57fa0d2680..4978d03f9651 100644 --- a/test/move_effect_attack_up.c +++ b/test/move_effect_attack_up.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Meditate raises Attack", s16 damage) if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_MEDITATE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Wobbuffet's attack rose!"); + MESSAGE("Wobbuffet's Attack rose!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); HP_BAR(opponent, captureDamage: &results[i].damage); diff --git a/test/move_effect_attack_up_user_ally.c b/test/move_effect_attack_up_user_ally.c index e98df30d8ed8..e920752dec91 100644 --- a/test/move_effect_attack_up_user_ally.c +++ b/test/move_effect_attack_up_user_ally.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Howl raises user's Attack", s16 damage) if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_HOWL, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Wobbuffet's attack rose!"); + MESSAGE("Wobbuffet's Attack rose!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); HP_BAR(opponent, captureDamage: &results[i].damage); @@ -50,9 +50,9 @@ DOUBLE_BATTLE_TEST("Howl raises user's and partner's Attack", s16 damageLeft, s1 if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_HOWL, playerLeft); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); - MESSAGE("Wobbuffet's attack rose!"); + MESSAGE("Wobbuffet's Attack rose!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); - MESSAGE("Wynaut's attack rose!"); + MESSAGE("Wynaut's Attack rose!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); HP_BAR(opponentLeft, captureDamage: &results[i].damageLeft); diff --git a/test/move_effect_barb_barrage.c b/test/move_effect_barb_barrage.c new file mode 100644 index 000000000000..9d9c2cc84350 --- /dev/null +++ b/test/move_effect_barb_barrage.c @@ -0,0 +1,43 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + //ASSUME(gBattleMoves[MOVE_BARB_BARRAGE].effect == EFFECT_BARB_BARRAGE); +} + +SINGLE_BATTLE_TEST("Barb Barrage inflicts poison") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BARB_BARRAGE); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BARB_BARRAGE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Barb Barrage's power doubles if the target is poisoned/badly poisoned", s16 damage) +{ + u32 status1; + PARAMETRIZE { status1 = 0; } + PARAMETRIZE { status1 = STATUS1_POISON; } + PARAMETRIZE { status1 = STATUS1_TOXIC_POISON; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) {Status1(status1);} + } WHEN { + TURN { MOVE(player, MOVE_BARB_BARRAGE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BARB_BARRAGE, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[2].damage); + } +} diff --git a/test/move_effect_beak_blast.c b/test/move_effect_beak_blast.c new file mode 100644 index 000000000000..448eb6973fa7 --- /dev/null +++ b/test/move_effect_beak_blast.c @@ -0,0 +1,113 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_BEAK_BLAST].effect == EFFECT_BEAK_BLAST); +} + +DOUBLE_BATTLE_TEST("Beak Blast's charging message is shown before other moves are used") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_BEAK_BLAST].priority < 0); + PLAYER(SPECIES_WYNAUT) {Speed(10); } + PLAYER(SPECIES_WOBBUFFET) {Speed(5); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(3); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_BEAK_BLAST, target:opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_BEAK_BLAST_SETUP, playerLeft); + MESSAGE("Wynaut started heating up its beak!"); + + MESSAGE("Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentRight); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentLeft); + + MESSAGE("Wynaut used Beak Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BEAK_BLAST, playerLeft); + HP_BAR(opponentLeft); + } +} + +DOUBLE_BATTLE_TEST("Beak Blast burns all who make contact with the pokemon") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_BEAK_BLAST].priority < 0); + ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); + PLAYER(SPECIES_WYNAUT) {Speed(10); } + PLAYER(SPECIES_WOBBUFFET) {Speed(5); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(2); } + } WHEN { + TURN { MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft); MOVE(opponentRight, MOVE_TACKLE, target:playerLeft); MOVE(playerLeft, MOVE_BEAK_BLAST, target:opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_BEAK_BLAST_SETUP, playerLeft); + MESSAGE("Wynaut started heating up its beak!"); + + MESSAGE("Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); + + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + HP_BAR(playerLeft); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentLeft); + MESSAGE("Foe Wobbuffet was burned!"); + STATUS_ICON(opponentLeft, burn: TRUE); + + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + HP_BAR(playerLeft); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentRight); + MESSAGE("Foe Wobbuffet was burned!"); + STATUS_ICON(opponentRight, burn: TRUE); + + MESSAGE("Wynaut used Beak Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BEAK_BLAST, playerLeft); + HP_BAR(opponentLeft); + } +} + +SINGLE_BATTLE_TEST("Beak Blast burns only when contact moves are used") +{ + u32 move; + bool32 burn; + PARAMETRIZE { move = MOVE_TACKLE; burn = TRUE; } + PARAMETRIZE { move = MOVE_WATER_GUN; burn = FALSE; } + PARAMETRIZE { move = MOVE_LEER; burn = FALSE; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); + ASSUME(!(gBattleMoves[MOVE_WATER_GUN].flags & FLAG_MAKES_CONTACT)); + ASSUME(!(gBattleMoves[MOVE_LEER].flags & FLAG_MAKES_CONTACT)); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BEAK_BLAST); MOVE(opponent, move); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_BEAK_BLAST_SETUP, player); + MESSAGE("Wobbuffet started heating up its beak!"); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + + if (burn) { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + MESSAGE("Foe Wobbuffet was burned!"); + STATUS_ICON(opponent, burn: TRUE); + } + else { + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + MESSAGE("Foe Wobbuffet was burned!"); + STATUS_ICON(opponent, burn: TRUE); + } + } + + MESSAGE("Wobbuffet used Beak Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BEAK_BLAST, player); + HP_BAR(opponent); + } +} diff --git a/test/move_effect_bide.c b/test/move_effect_bide.c index 3a5c38735327..0b0e18408787 100644 --- a/test/move_effect_bide.c +++ b/test/move_effect_bide.c @@ -28,7 +28,7 @@ SINGLE_BATTLE_TEST("Bide deals twice the taken damage over two turns") MESSAGE("Wobbuffet unleashed energy!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_BIDE, player); HP_BAR(opponent, captureDamage: &bideDamage); - } FINALLY { - EXPECT_EQ(bideDamage, damage1 + damage2); + } THEN { + EXPECT_EQ(bideDamage, 2 * (damage1 + damage2)); } } diff --git a/test/move_effect_burn_up.c b/test/move_effect_burn_up.c new file mode 100644 index 000000000000..a53b1afa8655 --- /dev/null +++ b/test/move_effect_burn_up.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_BURN_UP].effect == EFFECT_BURN_UP); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_FIRE || gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_CYNDAQUIL].types[0] == TYPE_FIRE || gSpeciesInfo[SPECIES_CYNDAQUIL].types[1] == TYPE_FIRE); +} + +SINGLE_BATTLE_TEST("Burn Up user loses its Fire-type") +{ + GIVEN { + PLAYER(SPECIES_CYNDAQUIL); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BURN_UP); } + TURN { MOVE(player, MOVE_BURN_UP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BURN_UP, player); + MESSAGE("Cyndaquil burned itself out!"); + MESSAGE("Cyndaquil used Burn Up!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Burn Up fails if the user isn't a Fire-type") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BURN_UP); } + } SCENE { + NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_BURN_UP, player); } + MESSAGE("Wobbuffet used Burn Up!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Burn Up user loses its Fire-type if enemy faints") +{ + GIVEN { + PLAYER(SPECIES_CYNDAQUIL); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_BURN_UP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BURN_UP, player); + HP_BAR(opponent, hp: 0); + MESSAGE("Cyndaquil burned itself out!"); + } +} diff --git a/test/move_effect_defense_down.c b/test/move_effect_defense_down.c index 6e5a45e8480c..9ecd1c25f2e8 100644 --- a/test/move_effect_defense_down.c +++ b/test/move_effect_defense_down.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Tail Whip lowers Defense", s16 damage) if (lowerDefense) { ANIMATION(ANIM_TYPE_MOVE, MOVE_TAIL_WHIP, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Wobbuffet's defense fell!"); + MESSAGE("Foe Wobbuffet's Defense fell!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); HP_BAR(opponent, captureDamage: &results[i].damage); diff --git a/test/move_effect_defense_up.c b/test/move_effect_defense_up.c index 8db9a7f7e485..492ce7bc9364 100644 --- a/test/move_effect_defense_up.c +++ b/test/move_effect_defense_up.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Harden raises Defense", s16 damage) if (raiseDefense) { ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Wobbuffet's defense rose!"); + MESSAGE("Wobbuffet's Defense rose!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); HP_BAR(player, captureDamage: &results[i].damage); diff --git a/test/move_effect_defog.c b/test/move_effect_defog.c new file mode 100644 index 000000000000..751ddf60f6ef --- /dev/null +++ b/test/move_effect_defog.c @@ -0,0 +1,370 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_DEFOG].effect == EFFECT_DEFOG); + ASSUME(gBattleMoves[MOVE_REFLECT].effect == EFFECT_REFLECT); + ASSUME(gBattleMoves[MOVE_LIGHT_SCREEN].effect == EFFECT_LIGHT_SCREEN); + ASSUME(gBattleMoves[MOVE_MIST].effect == EFFECT_MIST); + ASSUME(gBattleMoves[MOVE_SAFEGUARD].effect == EFFECT_SAFEGUARD); + ASSUME(gBattleMoves[MOVE_AURORA_VEIL].effect == EFFECT_AURORA_VEIL); + ASSUME(gBattleMoves[MOVE_STEALTH_ROCK].effect == EFFECT_STEALTH_ROCK); + ASSUME(gBattleMoves[MOVE_SPIKES].effect == EFFECT_SPIKES); + ASSUME(gBattleMoves[MOVE_TOXIC_SPIKES].effect == EFFECT_TOXIC_SPIKES); + ASSUME(gBattleMoves[MOVE_STICKY_WEB].effect == EFFECT_STICKY_WEB); + ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); + ASSUME(gBattleMoves[MOVE_SCREECH].effect == EFFECT_DEFENSE_DOWN_2); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + ASSUME(gBattleMoves[MOVE_GUST].split == SPLIT_SPECIAL); +} + +SINGLE_BATTLE_TEST("Defog lowers evasiveness by 1") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DEFOG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DEFOG, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's evasiveness fell!"); + } +} + +SINGLE_BATTLE_TEST("Defog does not lower evasiveness if target behind Substitute") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Speed(4); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(5); } + } WHEN { + TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_DEFOG); } + } SCENE { + MESSAGE("Foe Wobbuffet used Substitute!"); + MESSAGE("But it failed!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DEFOG, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's evasiveness fell!"); + } + } +} + +DOUBLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes Reflect and Light Screen from opponent's side", s16 damagePhysical, s16 damageSpecial) +{ + u16 move; + + PARAMETRIZE { move = MOVE_DEFOG; } + PARAMETRIZE { move = MOVE_CELEBRATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Speed(4); } + PLAYER(SPECIES_WOBBUFFET) {Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(1); } + } WHEN { + TURN { MOVE(opponentLeft, MOVE_REFLECT); MOVE(opponentRight, MOVE_LIGHT_SCREEN); } + TURN { MOVE(playerLeft, move, target:opponentLeft); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target:opponentLeft); MOVE(playerRight, MOVE_GUST, target:opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_LIGHT_SCREEN, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); + if (move == MOVE_DEFOG) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Wobbuffet's evasiveness fell!"); + MESSAGE("Foe's Reflect wore off!"); + MESSAGE("Foe's Light Screen wore off!"); + } + MESSAGE("Wobbuffet used Tackle!"); + HP_BAR(opponentLeft, captureDamage: &results[i].damagePhysical); + MESSAGE("Wobbuffet used Gust!"); + HP_BAR(opponentRight, captureDamage: &results[i].damageSpecial); + } FINALLY { + EXPECT_MUL_EQ(results[1].damagePhysical, Q_4_12(1.5), results[0].damagePhysical); + EXPECT_MUL_EQ(results[1].damageSpecial, Q_4_12(1.5), results[0].damageSpecial); + } +} + +DOUBLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes Mist and Safeguard from opponent's side") +{ + u16 move; + + PARAMETRIZE { move = MOVE_DEFOG; } + PARAMETRIZE { move = MOVE_CELEBRATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Speed(4); } + PLAYER(SPECIES_WOBBUFFET) {Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(1); } + } WHEN { + TURN { MOVE(opponentLeft, MOVE_MIST); MOVE(opponentRight, MOVE_SAFEGUARD); } + TURN { MOVE(playerLeft, move, target:opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCREECH, target:opponentLeft); MOVE(playerRight, MOVE_TOXIC, target:opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MIST, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SAFEGUARD, opponentRight); + if (move == MOVE_DEFOG) { + MESSAGE("Foe Wobbuffet is protected by MIST!"); + ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); + MESSAGE("Foe's Mist wore off!"); + MESSAGE("Foe's Safeguard wore off!"); + } + MESSAGE("Wobbuffet used Screech!"); + if (move == MOVE_DEFOG) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCREECH, playerLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + } + else { + MESSAGE("Foe Wobbuffet is protected by MIST!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + } + MESSAGE("Wobbuffet used Toxic!"); + if (move == MOVE_DEFOG) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, playerRight); + STATUS_ICON(opponentRight, badPoison: TRUE); + } + else { + MESSAGE("Foe Wobbuffet's party is protected by SAFEGUARD!"); + NOT STATUS_ICON(opponentRight, badPoison: TRUE); + } + } +} + +DOUBLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes Stealth Rock and Sticky Web from player's side") +{ + u16 move; + + PARAMETRIZE { move = MOVE_DEFOG; } + PARAMETRIZE { move = MOVE_CELEBRATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Speed(4); } + PLAYER(SPECIES_WOBBUFFET) {Speed(3); } + PLAYER(SPECIES_WOBBUFFET) {Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(1); } + } WHEN { + TURN { MOVE(opponentLeft, MOVE_STEALTH_ROCK); MOVE(opponentRight, MOVE_STICKY_WEB); } + TURN { MOVE(playerLeft, move, target:opponentLeft); } + TURN { SWITCH(playerLeft, 2); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); + if (move == MOVE_DEFOG) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Wobbuffet's evasiveness fell!"); + MESSAGE("The pointed stones disappeared from around your team!"); + MESSAGE("The sticky web has disappeared from the ground around your team!"); + } + // Switch happens + MESSAGE("Wobbuffet, that's enough! Come back!"); + MESSAGE("Go! Wobbuffet!"); + if (move != MOVE_DEFOG) { + HP_BAR(playerLeft); + MESSAGE("Pointed stones dug into Wobbuffet!"); + MESSAGE("Wobbuffet was caught in a Sticky Web!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Speed fell!"); + } + else { + NONE_OF { + HP_BAR(playerLeft); + MESSAGE("Pointed stones dug into Wobbuffet!"); + MESSAGE("Wobbuffet was caught in a Sticky Web!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Speed fell!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes Spikes from player's side") +{ + u16 move; + + PARAMETRIZE { move = MOVE_DEFOG; } + PARAMETRIZE { move = MOVE_CELEBRATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Speed(2); } + PLAYER(SPECIES_WOBBUFFET) {Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(5); } + } WHEN { + TURN { MOVE(opponent, MOVE_SPIKES); MOVE(player, move); } + TURN { SWITCH(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + if (move == MOVE_DEFOG) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's evasiveness fell!"); + MESSAGE("The spikes disappeared from the ground around your team!"); + } + // Switch happens + MESSAGE("Wobbuffet, that's enough! Come back!"); + MESSAGE("Go! Wobbuffet!"); + if (move != MOVE_DEFOG) { + HP_BAR(player); + MESSAGE("Wobbuffet is hurt by spikes!"); + } + else { + NONE_OF { + HP_BAR(player); + MESSAGE("Wobbuffet is hurt by spikes!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes terrain") +{ + u16 move; + + PARAMETRIZE { move = MOVE_PSYCHIC_TERRAIN; } + PARAMETRIZE { move = MOVE_ELECTRIC_TERRAIN; } + PARAMETRIZE { move = MOVE_MISTY_TERRAIN; } + PARAMETRIZE { move = MOVE_GRASSY_TERRAIN; } + GIVEN { + ASSUME(B_DEFOG_CLEARS_TERRAIN >= GEN_8); + PLAYER(SPECIES_WOBBUFFET) {Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(5); } + } WHEN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_DEFOG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DEFOG, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's evasiveness fell!"); + if (move == MOVE_PSYCHIC_TERRAIN) { + MESSAGE("The weirdness disappeared from the battlefield."); + } + else if (move == MOVE_ELECTRIC_TERRAIN) { + MESSAGE("The electricity disappeared from the battlefield."); + } + else if (move == MOVE_MISTY_TERRAIN) { + MESSAGE("The mist disappeared from the battlefield."); + } + else if (move == MOVE_GRASSY_TERRAIN) { + MESSAGE("The grass disappeared from the battlefield."); + } + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_RESTORE_BG, player); + } +} + +SINGLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes Toxic Spikes from opponent's side") +{ + u16 move; + + PARAMETRIZE { move = MOVE_DEFOG; } + PARAMETRIZE { move = MOVE_CELEBRATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Speed(5); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(2); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); MOVE(opponent, move); } + TURN { SWITCH(opponent, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, player); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + if (move == MOVE_DEFOG) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's evasiveness fell!"); + MESSAGE("The poison spikes disappeared from the ground around the opposing team!"); + } + // Switch happens + MESSAGE("2 sent out Wobbuffet!"); + if (move != MOVE_DEFOG) { + MESSAGE("Foe Wobbuffet was poisoned!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + } + else { + NONE_OF { + MESSAGE("Foe Wobbuffet was poisoned!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + } + } + } +} + +DOUBLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes Aurora Veil from player's side", s16 damagePhysical, s16 damageSpecial) +{ + u16 move; + + PARAMETRIZE { move = MOVE_DEFOG; } + PARAMETRIZE { move = MOVE_CELEBRATE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_HAIL].effect == EFFECT_HAIL); + ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE); + PLAYER(SPECIES_GLALIE) {Speed(4); } + PLAYER(SPECIES_GLALIE) {Speed(3); } + OPPONENT(SPECIES_GLALIE) {Speed(2); } + OPPONENT(SPECIES_GLALIE) {Speed(1); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_HAIL); MOVE(playerRight, MOVE_AURORA_VEIL); } + TURN { MOVE(opponentLeft, move, target:playerLeft); } + TURN { MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft); MOVE(opponentRight, MOVE_GUST, target:playerRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HAIL, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_AURORA_VEIL, playerRight); + ANIMATION(ANIM_TYPE_MOVE, move, opponentLeft); + if (move == MOVE_DEFOG) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Glalie's evasiveness fell!"); + MESSAGE("Ally's Aurora Veil wore off!"); + } + MESSAGE("Foe Glalie used Tackle!"); + HP_BAR(playerLeft, captureDamage: &results[i].damagePhysical); + MESSAGE("Foe Glalie used Gust!"); + HP_BAR(playerRight, captureDamage: &results[i].damageSpecial); + } FINALLY { + EXPECT_MUL_EQ(results[1].damagePhysical, Q_4_12(1.5), results[0].damagePhysical); + EXPECT_MUL_EQ(results[1].damageSpecial, Q_4_12(1.5), results[0].damageSpecial); + } +} + +DOUBLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes everything it can") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_HAIL].effect == EFFECT_HAIL); + ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE); + PLAYER(SPECIES_GLALIE) {Speed(4); } + PLAYER(SPECIES_GLALIE) {Speed(3); } + PLAYER(SPECIES_GLALIE) {Speed(12); } + PLAYER(SPECIES_GLALIE) {Speed(3); } + OPPONENT(SPECIES_GLALIE) {Speed(2); } + OPPONENT(SPECIES_GLALIE) {Speed(1); } + OPPONENT(SPECIES_GLALIE) {Speed(1); } + OPPONENT(SPECIES_GLALIE) {Speed(1); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_STICKY_WEB); MOVE(playerRight, MOVE_SPIKES); MOVE(opponentLeft, MOVE_STICKY_WEB); MOVE(opponentRight, MOVE_SPIKES); } + TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); SWITCH(opponentLeft, 2); SWITCH(opponentRight, 3);} + TURN { MOVE(playerLeft, MOVE_TOXIC_SPIKES); MOVE(playerRight, MOVE_STEALTH_ROCK); MOVE(opponentLeft, MOVE_TOXIC_SPIKES); MOVE(opponentRight, MOVE_STEALTH_ROCK); } + TURN { MOVE(playerLeft, MOVE_HAIL); MOVE(playerRight, MOVE_AURORA_VEIL); MOVE(opponentLeft, MOVE_AURORA_VEIL); MOVE(opponentRight, MOVE_LIGHT_SCREEN); } + TURN { MOVE(playerLeft, MOVE_REFLECT); MOVE(playerRight, MOVE_LIGHT_SCREEN); MOVE(opponentLeft, MOVE_REFLECT); MOVE(opponentRight, MOVE_SAFEGUARD); } + TURN { MOVE(playerLeft, MOVE_MIST); MOVE(playerRight, MOVE_SAFEGUARD); MOVE(opponentLeft, MOVE_MIST); MOVE(opponentRight, MOVE_DEFOG, target: playerLeft); } + } SCENE { + MESSAGE("Foe Glalie used Defog!"); + MESSAGE("Glalie is protected by MIST!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DEFOG, opponentRight); + // Player side + MESSAGE("Ally's Reflect wore off!"); + MESSAGE("Ally's Light Screen wore off!"); + MESSAGE("Ally's Mist wore off!"); + MESSAGE("Ally's Aurora Veil wore off!"); + MESSAGE("Ally's Safeguard wore off!"); + + MESSAGE("The spikes disappeared from the ground around your team!"); + MESSAGE("The pointed stones disappeared from around your team!"); + MESSAGE("The poison spikes disappeared from the ground around your team!"); + MESSAGE("The sticky web has disappeared from the ground around your team!"); + + // Opponent side + MESSAGE("The spikes disappeared from the ground around the opposing team!"); + MESSAGE("The pointed stones disappeared from around the opposing team!"); + MESSAGE("The poison spikes disappeared from the ground around the opposing team!"); + MESSAGE("The sticky web has disappeared from the ground around the opposing team!"); + } +} diff --git a/test/move_effect_dire_claw.c b/test/move_effect_dire_claw.c new file mode 100644 index 000000000000..2212c3cb0ec8 --- /dev/null +++ b/test/move_effect_dire_claw.c @@ -0,0 +1,129 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_DIRE_CLAW].effect == EFFECT_DIRE_CLAW); +} + +SINGLE_BATTLE_TEST("Dire Claw can inflict poison, paralysis or sleep") +{ + u8 statusAnim; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; } + PASSES_RANDOMLY(1, 3, RNG_DIRE_CLAW); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DIRE_CLAW); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_SLP) { + STATUS_ICON(opponent, sleep: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponent, poison: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze poison/electric types respectively") +{ + u8 statusAnim; + u16 species; + u32 rng; + #if B_PARALYZE_ELECTRIC >= GEN_6 + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_RAICHU; } + #endif // B_PARALYZE_ELECTRIC + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = MOVE_EFFECT_POISON; species = SPECIES_ARBOK;} + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_DIRE_CLAW, WITH_RNG(RNG_DIRE_CLAW, rng)); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + NOT STATUS_ICON(opponent, paralysis: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_PSN) { + NOT STATUS_ICON(opponent, poison: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze/cause to fall asleep pokemon with abilities preventing respective statuses") +{ + u8 statusAnim; + u16 species, ability; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_RAICHU; ability = ABILITY_LIGHTNING_ROD; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_JOLTEON; ability = ABILITY_VOLT_ABSORB; } + #if P_GEN_4_POKEMON == TRUE + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_ELECTIVIRE; ability = ABILITY_MOTOR_DRIVE; } + #endif // P_GEN_4_POKEMON + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = MOVE_EFFECT_POISON; species = SPECIES_ZANGOOSE; ability = ABILITY_IMMUNITY; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = MOVE_EFFECT_SLEEP; species = SPECIES_VIGOROTH; ability = ABILITY_VITAL_SPIRIT; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = MOVE_EFFECT_SLEEP; species = SPECIES_HYPNO; ability = ABILITY_INSOMNIA; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) {Ability(ability);} + } WHEN { + TURN { MOVE(player, MOVE_DIRE_CLAW, WITH_RNG(RNG_DIRE_CLAW, rng)); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + NOT STATUS_ICON(opponent, paralysis: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_SLP) { + NOT STATUS_ICON(opponent, sleep: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_PSN) { + NOT STATUS_ICON(opponent, poison: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze/cause to fall asleep a mon which is already statused") +{ + u8 statusAnim; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = MOVE_EFFECT_POISON; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = MOVE_EFFECT_SLEEP; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_BURN);} + } WHEN { + TURN { MOVE(player, MOVE_DIRE_CLAW, WITH_RNG(RNG_DIRE_CLAW, rng)); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + NOT STATUS_ICON(opponent, paralysis: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_SLP) { + NOT STATUS_ICON(opponent, sleep: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_PSN) { + NOT STATUS_ICON(opponent, poison: TRUE); + } + } +} diff --git a/test/move_effect_double_shock.c b/test/move_effect_double_shock.c new file mode 100644 index 000000000000..c3651c4034cb --- /dev/null +++ b/test/move_effect_double_shock.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_DOUBLE_SHOCK].effect == EFFECT_DOUBLE_SHOCK); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_ELECTRIC || gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_ELECTRIC); + ASSUME(gSpeciesInfo[SPECIES_PIKACHU].types[0] == TYPE_ELECTRIC || gSpeciesInfo[SPECIES_PIKACHU].types[1] == TYPE_ELECTRIC); +} + +SINGLE_BATTLE_TEST("Double Shock user loses its Electric-type") +{ + GIVEN { + PLAYER(SPECIES_PIKACHU); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DOUBLE_SHOCK); } + TURN { MOVE(player, MOVE_DOUBLE_SHOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_SHOCK, player); + MESSAGE("Pikachu used up all of its electricity!"); + MESSAGE("Pikachu used Double Shock!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Double Shock fails if the user isn't an Electric-type") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DOUBLE_SHOCK); } + } SCENE { + NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_SHOCK, player); } + MESSAGE("Wobbuffet used Double Shock!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Double Shock user loses its Electric-type if enemy faints") +{ + GIVEN { + PLAYER(SPECIES_PIKACHU); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_DOUBLE_SHOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_SHOCK, player); + HP_BAR(opponent, hp: 0); + MESSAGE("Pikachu used up all of its electricity!"); + } +} diff --git a/test/move_effect_evasion_up.c b/test/move_effect_evasion_up.c index d14d15334465..4a4e99db72cf 100644 --- a/test/move_effect_evasion_up.c +++ b/test/move_effect_evasion_up.c @@ -9,7 +9,7 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Double Team raises Evasion") { ASSUME(gBattleMoves[MOVE_SCRATCH].accuracy == 100); - PASSES_RANDOMLY(gBattleMoves[MOVE_SCRATCH].accuracy * 3 / 4, 100); + PASSES_RANDOMLY(gBattleMoves[MOVE_SCRATCH].accuracy * 3 / 4, 100, RNG_ACCURACY); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/move_effect_explosion.c b/test/move_effect_explosion.c index 872f3f709054..41e74044ba2b 100644 --- a/test/move_effect_explosion.c +++ b/test/move_effect_explosion.c @@ -8,7 +8,6 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Explosion causes the user to faint") { - u16 remainingHP; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -17,12 +16,29 @@ SINGLE_BATTLE_TEST("Explosion causes the user to faint") } SCENE { HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); + MESSAGE("Wobbuffet fainted!"); + } +} + +SINGLE_BATTLE_TEST("Explosion causes the user & the target to faint") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EXPLOSION); } + } SCENE { + HP_BAR(player, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); + HP_BAR(opponent, hp: 0); + MESSAGE("Foe Wobbuffet fainted!"); + MESSAGE("Wobbuffet fainted!"); } } SINGLE_BATTLE_TEST("Explosion causes the user to faint even if it misses") { - u16 remainingHP; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -31,12 +47,12 @@ SINGLE_BATTLE_TEST("Explosion causes the user to faint even if it misses") } SCENE { HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); + MESSAGE("Wobbuffet fainted!"); } } SINGLE_BATTLE_TEST("Explosion causes the user to faint even if it has no effect") { - u16 remainingHP; GIVEN { ASSUME(gBattleMoves[MOVE_EXPLOSION].type == TYPE_NORMAL); ASSUME(gSpeciesInfo[SPECIES_GASTLY].types[0] == TYPE_GHOST); @@ -49,5 +65,29 @@ SINGLE_BATTLE_TEST("Explosion causes the user to faint even if it has no effect" ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); MESSAGE("It doesn't affect Foe Gastly…"); NOT HP_BAR(opponent); + MESSAGE("Wobbuffet fainted!"); + } +} + +DOUBLE_BATTLE_TEST("Explosion causes everyone to faint in a double battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT) { HP(1); } + OPPONENT(SPECIES_ABRA) { HP(1); } + OPPONENT(SPECIES_KADABRA) { HP(1); } + OPPONENT(SPECIES_KADABRA); + } WHEN { + TURN { MOVE(playerLeft, MOVE_EXPLOSION); } + } SCENE { + HP_BAR(playerLeft, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, playerLeft); + HP_BAR(opponentLeft, hp: 0); + MESSAGE("Foe Abra fainted!"); + HP_BAR(playerRight, hp: 0); + MESSAGE("Wynaut fainted!"); + HP_BAR(opponentRight, hp: 0); + MESSAGE("Foe Kadabra fainted!"); + MESSAGE("Wobbuffet fainted!"); } } diff --git a/test/move_effect_focus_punch.c b/test/move_effect_focus_punch.c new file mode 100644 index 000000000000..62c500300186 --- /dev/null +++ b/test/move_effect_focus_punch.c @@ -0,0 +1,76 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_FOCUS_PUNCH].effect == EFFECT_FOCUS_PUNCH); +} + +SINGLE_BATTLE_TEST("Focus Punch activates only if not damaged") +{ + u32 move; + bool32 activate; + PARAMETRIZE { move = MOVE_TACKLE; activate = FALSE; } + PARAMETRIZE { move = MOVE_WATER_GUN; activate = FALSE; } + PARAMETRIZE { move = MOVE_LEER; activate = TRUE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FOCUS_PUNCH); MOVE(opponent, move); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FOCUS_PUNCH_SETUP, player); + MESSAGE("Wobbuffet is tightening its focus!"); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + + if (activate) { + MESSAGE("Wobbuffet used Focus Punch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FOCUS_PUNCH, player); + HP_BAR(opponent); + } else { + MESSAGE("Wobbuffet lost its focus and couldn't move!"); + NONE_OF { + MESSAGE("Wobbuffet used Focus Punch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FOCUS_PUNCH, player); + HP_BAR(opponent); + } + } + } +} + +DOUBLE_BATTLE_TEST("Focus Punch activation is based on Speed") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {Speed(2) ;} + PLAYER(SPECIES_WYNAUT) {Speed(3) ;} + OPPONENT(SPECIES_WOBBUFFET) {Speed(1) ;} + OPPONENT(SPECIES_WYNAUT) {Speed(5) ;} + } WHEN { + TURN { MOVE(opponentRight, MOVE_FOCUS_PUNCH, target:playerLeft); MOVE(playerRight, MOVE_FOCUS_PUNCH, target:opponentLeft); MOVE(playerLeft, MOVE_FOCUS_PUNCH, target:opponentLeft); MOVE(opponentLeft, MOVE_FOCUS_PUNCH, target:playerLeft); } + } + SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FOCUS_PUNCH_SETUP, opponentRight); + MESSAGE("Foe Wynaut is tightening its focus!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FOCUS_PUNCH_SETUP, playerRight); + MESSAGE("Wynaut is tightening its focus!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FOCUS_PUNCH_SETUP, playerLeft); + MESSAGE("Wobbuffet is tightening its focus!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FOCUS_PUNCH_SETUP, opponentLeft); + MESSAGE("Foe Wobbuffet is tightening its focus!"); + + MESSAGE("Foe Wynaut used Focus Punch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FOCUS_PUNCH, opponentRight); + HP_BAR(playerLeft); + + MESSAGE("Wynaut used Focus Punch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FOCUS_PUNCH, playerRight); + HP_BAR(opponentLeft); + + MESSAGE("Wobbuffet lost its focus and couldn't move!"); + MESSAGE("Foe Wobbuffet lost its focus and couldn't move!"); + } +} diff --git a/test/move_effect_healing_wish.c b/test/move_effect_healing_wish.c new file mode 100644 index 000000000000..98e8730b3441 --- /dev/null +++ b/test/move_effect_healing_wish.c @@ -0,0 +1,80 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_HEALING_WISH].effect == EFFECT_HEALING_WISH); + ASSUME(gBattleMoves[MOVE_LUNAR_DANCE].effect == EFFECT_HEALING_WISH); +} + +#define TEST_MAX_HP (100) + +SINGLE_BATTLE_TEST("Healing Wish causes the user to faint and fully heals the replacement") +{ + GIVEN { + ASSUME(B_HEALING_WISH_SWITCH >= GEN_5); + PLAYER(SPECIES_GARDEVOIR); + PLAYER(SPECIES_WYNAUT) { HP(1); MaxHP(TEST_MAX_HP); Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_HEALING_WISH); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEALING_WISH, player); + HP_BAR(player, hp: 0); + MESSAGE("Gardevoir fainted!"); + MESSAGE("The healing wish came true for Wynaut!"); + HP_BAR(player, hp: TEST_MAX_HP); + STATUS_ICON(player, none: TRUE); + MESSAGE("Wynaut regained health!"); + } +} + +DOUBLE_BATTLE_TEST("Lunar Dance causes the user to faint and fully heals the replacement in a double battle") +{ + GIVEN { + ASSUME(B_HEALING_WISH_SWITCH >= GEN_5); + PLAYER(SPECIES_GARDEVOIR) { Speed(300); } + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + PLAYER(SPECIES_WYNAUT) { HP(TEST_MAX_HP - 1); MaxHP(TEST_MAX_HP); Status1(STATUS1_BURN); Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_LUNAR_DANCE); SEND_OUT(playerLeft, 2); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_LUNAR_DANCE, playerLeft); + HP_BAR(playerLeft, hp: 0); + MESSAGE("Gardevoir fainted!"); + MESSAGE("Wynaut became cloaked in mystical moonlight!"); + HP_BAR(playerLeft, hp: TEST_MAX_HP); + STATUS_ICON(playerLeft, none: TRUE); + MESSAGE("Wynaut regained health!"); + } +} + +SINGLE_BATTLE_TEST("Healing Wish effect activates only if the switched pokemon can be healed") +{ + GIVEN { + ASSUME(B_HEALING_WISH_SWITCH >= GEN_8); + PLAYER(SPECIES_GARDEVOIR) { Speed(300); } + PLAYER(SPECIES_NINJASK) { Speed(400); } + PLAYER(SPECIES_WYNAUT) { HP(TEST_MAX_HP / 2); MaxHP(TEST_MAX_HP); Status1(STATUS1_PARALYSIS); Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(50); } + } WHEN { + TURN { MOVE(player, MOVE_HEALING_WISH); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 2); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEALING_WISH, player); + HP_BAR(player, hp: 0); + MESSAGE("Gardevoir fainted!"); + NONE_OF { + MESSAGE("The healing wish came true for Wynaut!"); + MESSAGE("Wynaut regained health!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + MESSAGE("Do it! Wynaut!"); + MESSAGE("The healing wish came true for Wynaut!"); + HP_BAR(player, hp: TEST_MAX_HP); + STATUS_ICON(player, none: TRUE); + MESSAGE("Wynaut regained health!"); + } +} diff --git a/test/move_effect_hit_escape.c b/test/move_effect_hit_escape.c index cc34db2e280b..fb5ff2dd5459 100644 --- a/test/move_effect_hit_escape.c +++ b/test/move_effect_hit_escape.c @@ -65,6 +65,7 @@ SINGLE_BATTLE_TEST("U-turn does not switch the user out if replacements fainted" SINGLE_BATTLE_TEST("U-turn does not switch the user out if Wimp Out activates") { GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WIMPOD) { MaxHP(100); HP(51); Ability(ABILITY_WIMP_OUT); } @@ -82,6 +83,7 @@ SINGLE_BATTLE_TEST("U-turn does not switch the user out if Wimp Out activates") SINGLE_BATTLE_TEST("U-turn switches the user out if Wimp Out fails to activate") { GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WIMPOD) { MaxHP(100); HP(51); Ability(ABILITY_WIMP_OUT); } diff --git a/test/move_effect_hit_set_entry_hazardss.c b/test/move_effect_hit_set_entry_hazardss.c new file mode 100644 index 000000000000..4e9761aac3ad --- /dev/null +++ b/test/move_effect_hit_set_entry_hazardss.c @@ -0,0 +1,117 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_STONE_AXE].effect == EFFECT_HIT_SET_ENTRY_HAZARD); + ASSUME(gBattleMoves[MOVE_CEASELESS_EDGE].effect == EFFECT_HIT_SET_ENTRY_HAZARD); +} + +SINGLE_BATTLE_TEST("Stone Axe / Ceaseless Edge set up hazards after hitting the target") +{ + u16 move; + PARAMETRIZE {move = MOVE_STONE_AXE; } + PARAMETRIZE {move = MOVE_CEASELESS_EDGE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { SWITCH(opponent, 1); } + } SCENE { + s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent); + if (move == MOVE_CEASELESS_EDGE) { + MESSAGE("Spikes were scattered all around the opposing team!"); + } + else { + MESSAGE("Pointed stones float in the air around the opposing team!"); + } + MESSAGE("2 sent out Wobbuffet!"); + if (move == MOVE_CEASELESS_EDGE) { + HP_BAR(opponent, damage: maxHP / 8); + MESSAGE("Foe Wobbuffet is hurt by spikes!"); + } + else { + HP_BAR(opponent, damage: maxHP / 8); + MESSAGE("Pointed stones dug into Foe Wobbuffet!"); + } + } +} + +SINGLE_BATTLE_TEST("Ceaseless Edge can set up to 3 layers of Spikes") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_CEASELESS_EDGE); } + TURN { MOVE(player, MOVE_CEASELESS_EDGE); } + TURN { MOVE(player, MOVE_CEASELESS_EDGE); } + TURN { MOVE(player, MOVE_CEASELESS_EDGE); } + TURN { SWITCH(opponent, 1); } + } SCENE { + s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_CEASELESS_EDGE, player); + HP_BAR(opponent); + MESSAGE("Spikes were scattered all around the opposing team!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_CEASELESS_EDGE, player); + HP_BAR(opponent); + MESSAGE("Spikes were scattered all around the opposing team!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_CEASELESS_EDGE, player); + HP_BAR(opponent); + MESSAGE("Spikes were scattered all around the opposing team!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_CEASELESS_EDGE, player); + HP_BAR(opponent); + NOT MESSAGE("Spikes were scattered all around the opposing team!"); + + MESSAGE("2 sent out Wynaut!"); + HP_BAR(opponent, damage: maxHP / 4); + MESSAGE("Foe Wynaut is hurt by spikes!"); + } +} + +SINGLE_BATTLE_TEST("Stone Axe can set up pointed stones only once") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_STONE_AXE); } + TURN { MOVE(player, MOVE_STONE_AXE); } + TURN { MOVE(player, MOVE_STONE_AXE); } + TURN { MOVE(player, MOVE_STONE_AXE); } + TURN { SWITCH(opponent, 1); } + } SCENE { + s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_STONE_AXE, player); + HP_BAR(opponent); + MESSAGE("Pointed stones float in the air around the opposing team!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_STONE_AXE, player); + HP_BAR(opponent); + NOT MESSAGE("Pointed stones float in the air around the opposing team!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_STONE_AXE, player); + HP_BAR(opponent); + NOT MESSAGE("Pointed stones float in the air around the opposing team!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_STONE_AXE, player); + HP_BAR(opponent); + NOT MESSAGE("Pointed stones float in the air around the opposing team!"); + + MESSAGE("2 sent out Wynaut!"); + HP_BAR(opponent, damage: maxHP / 8); + MESSAGE("Pointed stones dug into Foe Wynaut!"); + } +} + diff --git a/test/move_effect_hit_switch_target.c b/test/move_effect_hit_switch_target.c new file mode 100644 index 000000000000..5af3062a4f02 --- /dev/null +++ b/test/move_effect_hit_switch_target.c @@ -0,0 +1,71 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_DRAGON_TAIL].effect == EFFECT_HIT_SWITCH_TARGET); + ASSUME(gBattleMoves[MOVE_LOCK_ON].effect == EFFECT_LOCK_ON); +} + +SINGLE_BATTLE_TEST("Dragon Tail switches the target with a random non-fainted replacement") +{ + PASSES_RANDOMLY(1, 2, RNG_FORCE_RANDOM_SWITCH); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BULBASAUR); + OPPONENT(SPECIES_CHARMANDER); + OPPONENT(SPECIES_SQUIRTLE) { HP(0); } + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_TAIL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, player); + MESSAGE("Foe Bulbasaur was dragged out!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Tail switches the target with a random non-battler, non-fainted replacement") +{ + PASSES_RANDOMLY(1, 2, RNG_FORCE_RANDOM_SWITCH); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_BULBASAUR); + OPPONENT(SPECIES_CHARMANDER); + OPPONENT(SPECIES_SQUIRTLE) { HP(0); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_TAIL, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, playerLeft); + MESSAGE("Foe Bulbasaur was dragged out!"); + } +} + +SINGLE_BATTLE_TEST("Dragon Tail does not fail if no replacements") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_TAIL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, player); + NOT MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Dragon Tail does not fail if replacements fainted") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT) { HP(0); } + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_TAIL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, player); + NOT MESSAGE("But it failed!"); + } +} diff --git a/test/move_effect_mind_blown.c b/test/move_effect_mind_blown.c new file mode 100644 index 000000000000..6b053cfb5662 --- /dev/null +++ b/test/move_effect_mind_blown.c @@ -0,0 +1,109 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_MIND_BLOWN].effect == EFFECT_MIND_BLOWN); +} + +#define HP_TEST (400) + +SINGLE_BATTLE_TEST("Mind Blown makes the user lose 1/2 of its HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(HP_TEST); MaxHP(HP_TEST); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MIND_BLOWN); } + } SCENE { + HP_BAR(player, hp: HP_TEST / 2); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MIND_BLOWN, player); + NOT MESSAGE("Wobbuffet fainted!"); // Wobb had more than 1/2 of its HP, so it can't faint. + } +} + +DOUBLE_BATTLE_TEST("Mind Blown makes the user lose 1/2 of its HP in a double battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(HP_TEST); MaxHP(HP_TEST); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MIND_BLOWN); } + } SCENE { + HP_BAR(playerLeft, hp: HP_TEST / 2); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MIND_BLOWN, playerLeft); + NOT MESSAGE("Wobbuffet fainted!"); // Wobb had more than 1/2 of its HP, so it can't faint. + } +} + +SINGLE_BATTLE_TEST("Mind Blown causes the user to faint when below 1/2 of its HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(HP_TEST / 2); MaxHP(HP_TEST); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MIND_BLOWN); } + } SCENE { + HP_BAR(player, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MIND_BLOWN, player); + MESSAGE("Wobbuffet fainted!"); + } +} + +DOUBLE_BATTLE_TEST("Mind Blown causes the user to faint when below 1/2 of its HP in a double battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(HP_TEST / 2); MaxHP(HP_TEST); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MIND_BLOWN);} + } SCENE { + HP_BAR(playerLeft, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MIND_BLOWN, playerLeft); + MESSAGE("Wobbuffet fainted!"); + } +} + +SINGLE_BATTLE_TEST("Mind Blown causes the user & the target to faint when below 1/2 of its HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(HP_TEST / 2) ; MaxHP(HP_TEST); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MIND_BLOWN);} + } SCENE { + HP_BAR(player, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MIND_BLOWN, player); + HP_BAR(opponent, hp: 0); + MESSAGE("Foe Wobbuffet fainted!"); + MESSAGE("Wobbuffet fainted!"); + } +} + +DOUBLE_BATTLE_TEST("Mind Blown causes everyone to faint in a double battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(HP_TEST / 2); MaxHP(HP_TEST); } + PLAYER(SPECIES_WYNAUT) { HP(1); } + OPPONENT(SPECIES_ABRA) { HP(1); } + OPPONENT(SPECIES_KADABRA) { HP(1); } + OPPONENT(SPECIES_KADABRA); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MIND_BLOWN, criticalHit: FALSE); } + } SCENE { + HP_BAR(playerLeft, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MIND_BLOWN, playerLeft); + HP_BAR(opponentLeft, hp: 0); + MESSAGE("Foe Abra fainted!"); + HP_BAR(playerRight, hp: 0); + MESSAGE("Wynaut fainted!"); + HP_BAR(opponentRight, hp: 0); + MESSAGE("Foe Kadabra fainted!"); + MESSAGE("Wobbuffet fainted!"); + } +} diff --git a/test/move_effect_rampage.c b/test/move_effect_rampage.c index a3afebf6bac7..aa4a002fb117 100644 --- a/test/move_effect_rampage.c +++ b/test/move_effect_rampage.c @@ -8,7 +8,7 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Thrash lasts for 2 or 3 turns") { - PASSES_RANDOMLY(1, 2); + PASSES_RANDOMLY(1, 2, RNG_RAMPAGE_TURNS); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -26,7 +26,6 @@ SINGLE_BATTLE_TEST("Thrash lasts for 2 or 3 turns") SINGLE_BATTLE_TEST("Thrash confuses the user after it finishes") { GIVEN { - RNGSeed(0x00000000); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -45,7 +44,6 @@ SINGLE_BATTLE_TEST("Thrash does not confuse the user if it is canceled on turn 1 { GIVEN { ASSUME(B_RAMPAGE_CANCELLING >= GEN_5); - RNGSeed(0x00000000); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -61,7 +59,6 @@ SINGLE_BATTLE_TEST("Thrash does not confuse the user if it is canceled on turn 2 { GIVEN { ASSUME(B_RAMPAGE_CANCELLING >= GEN_5); - RNGSeed(0x00000000); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -78,7 +75,6 @@ SINGLE_BATTLE_TEST("Thrash confuses the user if it is canceled on turn 3 of 3") KNOWN_FAILING; GIVEN { ASSUME(B_RAMPAGE_CANCELLING >= GEN_5); - RNGSeed(0x00000000); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/move_effect_recoil_if_miss.c b/test/move_effect_recoil_if_miss.c index 5c1f1a61af39..8a80309d7491 100644 --- a/test/move_effect_recoil_if_miss.c +++ b/test/move_effect_recoil_if_miss.c @@ -42,8 +42,8 @@ SINGLE_BATTLE_TEST("Jump Kick has 50% recoil on protect") SINGLE_BATTLE_TEST("Jump Kick has no recoil if no target") { - KNOWN_FAILING; // #2596. GIVEN { + ASSUME(B_HEALING_WISH_SWITCH >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); diff --git a/test/move_effect_revival_blessing.c b/test/move_effect_revival_blessing.c new file mode 100644 index 000000000000..6bc76ec85e31 --- /dev/null +++ b/test/move_effect_revival_blessing.c @@ -0,0 +1,117 @@ +#include "global.h" +#include "test_battle.h" + +// Note: Since these tests are recorded battle, they don't test the right battle controller +// behaviors. These have been tested in-game, in double, in multi, and in link battles. AI will always +// revive their first fainted party member in order. + +#define MOVE_MESSAGE(name) \ + do { \ + if (B_EXPANDED_MOVE_NAMES == FALSE) \ + MESSAGE(name" used RevivlBlesng!"); \ + else \ + MESSAGE(name" used Revival Blessing!"); \ + } while (0); \ + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_REVIVAL_BLESSING].effect == EFFECT_REVIVAL_BLESSING); +} + +SINGLE_BATTLE_TEST("Revival Blessing revives a chosen fainted party member for the player") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { HP(0); } + PLAYER(SPECIES_WYNAUT) { HP(0); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_REVIVAL_BLESSING); SEND_OUT(player, 2); } + } SCENE { + MOVE_MESSAGE("Wobbuffet") + MESSAGE("Wynaut was revived and is ready to fight again!"); + } +} + +SINGLE_BATTLE_TEST("Revival Blessing revives a fainted party member for an opponent") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_RAICHU); + OPPONENT(SPECIES_PICHU) { HP(0); } + OPPONENT(SPECIES_PIKACHU) { HP(0); } + } WHEN { + TURN { MOVE(opponent, MOVE_REVIVAL_BLESSING); SEND_OUT(opponent, 1); } + } SCENE { + MOVE_MESSAGE("Foe Raichu") + MESSAGE("Pichu was revived and is ready to fight again!"); + } +} + +SINGLE_BATTLE_TEST("Revival Blessing fails if no party members are fainted") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_REVIVAL_BLESSING); } + } SCENE { + MOVE_MESSAGE("Wobbuffet") + MESSAGE("But it failed!"); + } +} + +// Note: There isn't a good way to test multi battles at the moment, but +// this PASSES in game! +TO_DO_BATTLE_TEST("Revival Blessing cannot revive a partner's party member"); +// DOUBLE_BATTLE_TEST("Revival Blessing cannot revive a partner's party member") +// { +// struct BattlePokemon *user; +// gBattleTypeFlags |= BATTLE_TYPE_TWO_OPPONENTS; +// PARAMETRIZE { user = opponentLeft; } +// PARAMETRIZE { user = opponentRight; } +// GIVEN { +// ASSUME((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) != FALSE); +// PLAYER(SPECIES_WOBBUFFET); +// PLAYER(SPECIES_WOBBUFFET); +// OPPONENT(SPECIES_WOBBUFFET); +// OPPONENT(SPECIES_WOBBUFFET); +// OPPONENT(SPECIES_WOBBUFFET); +// OPPONENT(SPECIES_WYNAUT); +// OPPONENT(SPECIES_WYNAUT) { HP(0); } +// OPPONENT(SPECIES_WYNAUT); +// } WHEN { +// TURN { MOVE(user, MOVE_REVIVAL_BLESSING); } +// } SCENE { +// if (user == opponentLeft) { +// MOVE_MESSAGE(Foe Wobbuffet) +// MESSAGE("But it failed!"); +// } else { +// MOVE_MESSAGE(Foe Wynaut) +// MESSAGE("Wynaut was revived and is ready to fight again!"); +// } +// } +// } + +// Note: The test runner gets upset about "sending out" a battler on the field, +// but this PASSES in game! +TO_DO_BATTLE_TEST("Revived battlers still lose their turn"); +// DOUBLE_BATTLE_TEST("Revived battlers still lose their turn") +// { +// GIVEN { +// PLAYER(SPECIES_WOBBUFFET); +// PLAYER(SPECIES_WYNAUT); +// OPPONENT(SPECIES_WOBBUFFET); +// OPPONENT(SPECIES_WYNAUT) { HP(1); } +// } WHEN { +// TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); +// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); +// SEND_OUT(opponentLeft, 1); } +// } SCENE { +// MESSAGE("Wobbuffet used Tackle!"); +// MESSAGE("Foe Wynaut fainted!"); +// MOVE_MESSAGE("Foe Wobbuffet") +// MESSAGE("Wynaut was revived and is ready to fight again!"); +// NOT { MESSAGE("Wynaut used Celebrate!"); } +// } +// } diff --git a/test/move_effect_roar.c b/test/move_effect_roar.c new file mode 100644 index 000000000000..99256b298614 --- /dev/null +++ b/test/move_effect_roar.c @@ -0,0 +1,70 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_ROAR].effect == EFFECT_ROAR); +} + +SINGLE_BATTLE_TEST("Roar switches the target with a random non-fainted replacement") +{ + PASSES_RANDOMLY(1, 2, RNG_FORCE_RANDOM_SWITCH); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BULBASAUR); + OPPONENT(SPECIES_CHARMANDER); + OPPONENT(SPECIES_SQUIRTLE) { HP(0); } + } WHEN { + TURN { MOVE(player, MOVE_ROAR); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROAR, player); + MESSAGE("Foe Bulbasaur was dragged out!"); + } +} + +DOUBLE_BATTLE_TEST("Roar switches the target with a random non-battler, non-fainted replacement") +{ + PASSES_RANDOMLY(1, 2, RNG_FORCE_RANDOM_SWITCH); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_BULBASAUR); + OPPONENT(SPECIES_CHARMANDER); + OPPONENT(SPECIES_SQUIRTLE) { HP(0); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_ROAR, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROAR, playerLeft); + MESSAGE("Foe Bulbasaur was dragged out!"); + } +} + +SINGLE_BATTLE_TEST("Roar fails if no replacements") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ROAR); } + } SCENE { + MESSAGE("Wobbuffet used Roar!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Roar fails if replacements fainted") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT) { HP(0); } + } WHEN { + TURN { MOVE(player, MOVE_ROAR); } + } SCENE { + MESSAGE("Wobbuffet used Roar!"); + MESSAGE("But it failed!"); + } +} diff --git a/test/move_effect_shell_trap.c b/test/move_effect_shell_trap.c new file mode 100644 index 000000000000..27dc4b7f648e --- /dev/null +++ b/test/move_effect_shell_trap.c @@ -0,0 +1,168 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SHELL_TRAP].effect == EFFECT_SHELL_TRAP); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + ASSUME(gBattleMoves[MOVE_WATER_GUN].split == SPLIT_SPECIAL); + ASSUME(gBattleMoves[MOVE_LEER].split == SPLIT_STATUS); +} + +SINGLE_BATTLE_TEST("Shell Trap activates only if hit by a physical move") +{ + u32 move; + bool32 activate; + PARAMETRIZE { move = MOVE_TACKLE; activate = TRUE; } + PARAMETRIZE { move = MOVE_WATER_GUN; activate = FALSE; } + PARAMETRIZE { move = MOVE_LEER; activate = FALSE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SHELL_TRAP); MOVE(opponent, move); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, player); + MESSAGE("Wobbuffet set a shell trap!"); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + + if (activate) { + MESSAGE("Wobbuffet used Shell Trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, player); + HP_BAR(opponent); + } else { + MESSAGE("Wobbuffet's shell trap didn't work!"); + NONE_OF { + MESSAGE("Wobbuffet used Shell Trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, player); + HP_BAR(opponent); + } + } + } +} + +SINGLE_BATTLE_TEST("Shell Trap does not activate if attacker's Sheer Force applied") +{ + u32 move; + bool32 activate; + PARAMETRIZE { move = MOVE_TACKLE; activate = TRUE; } + PARAMETRIZE { move = MOVE_STOMP; activate = FALSE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TAUROS) { Ability(ABILITY_SHEER_FORCE); } + } WHEN { + TURN { MOVE(player, MOVE_SHELL_TRAP); MOVE(opponent, move); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, player); + MESSAGE("Wobbuffet set a shell trap!"); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + if (activate) { + MESSAGE("Wobbuffet used Shell Trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, player); + HP_BAR(opponent); + } else { + MESSAGE("Wobbuffet's shell trap didn't work!"); + NONE_OF { + MESSAGE("Wobbuffet used Shell Trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, player); + HP_BAR(opponent); + } + } + } +} + +SINGLE_BATTLE_TEST("Shell Trap does not activate if battler faints before being able to activate it") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SHELL_TRAP); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, player); + MESSAGE("Wobbuffet set a shell trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("Wobbuffet fainted!"); + MESSAGE("Go! Wobbuffet!"); + NONE_OF { + MESSAGE("Wobbuffet used Shell Trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, player); + HP_BAR(opponent); + } + } +} + +DOUBLE_BATTLE_TEST("Shell Trap activates immediately after being hit on turn 1 and attacks both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SHELL_TRAP].target == MOVE_TARGET_BOTH); + PLAYER(SPECIES_WOBBUFFET) { Speed(1); } + PLAYER(SPECIES_WOBBUFFET) { Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } + OPPONENT(SPECIES_WYNAUT) { Speed(1); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, playerLeft); + MESSAGE("Wobbuffet set a shell trap!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + MESSAGE("Wobbuffet used Shell Trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, playerLeft); + HP_BAR(opponentLeft); + HP_BAR(opponentRight); + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + } +} + +DOUBLE_BATTLE_TEST("Shell Trap activates immediately after being hit on turn 2 and attacks both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SHELL_TRAP].target == MOVE_TARGET_BOTH); + PLAYER(SPECIES_WOBBUFFET) { Speed(1); } + PLAYER(SPECIES_WOBBUFFET) { Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } + OPPONENT(SPECIES_WYNAUT) { Speed(6); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, playerLeft); + MESSAGE("Wobbuffet set a shell trap!"); + MESSAGE("Foe Wynaut used Celebrate!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + MESSAGE("Wobbuffet used Shell Trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, playerLeft); + HP_BAR(opponentLeft); + HP_BAR(opponentRight); + MESSAGE("Wobbuffet used Celebrate!"); + } +} + +DOUBLE_BATTLE_TEST("Shell Trap activates immediately after being hit on turn 3 and attacks both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SHELL_TRAP].target == MOVE_TARGET_BOTH); + PLAYER(SPECIES_WOBBUFFET) { Speed(1); } + PLAYER(SPECIES_WOBBUFFET) { Speed(7); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } + OPPONENT(SPECIES_WYNAUT) { Speed(6); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, playerLeft); + MESSAGE("Wobbuffet set a shell trap!"); + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + MESSAGE("Wobbuffet used Shell Trap!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, playerLeft); + HP_BAR(opponentLeft); + HP_BAR(opponentRight); + } +} diff --git a/test/move_effect_sleep.c b/test/move_effect_sleep.c index c80faf4bdf92..c34e1248eea7 100644 --- a/test/move_effect_sleep.c +++ b/test/move_effect_sleep.c @@ -6,16 +6,33 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_HYPNOSIS].effect == EFFECT_SLEEP); } -SINGLE_BATTLE_TEST("Hypnosis inflicts sleep") +SINGLE_BATTLE_TEST("Hypnosis inflicts 1-3 turns of sleep") { + u32 turns, count; + ASSUME(B_SLEEP_TURNS >= GEN_5); + PARAMETRIZE { turns = 1; } + PARAMETRIZE { turns = 2; } + PARAMETRIZE { turns = 3; } + PASSES_RANDOMLY(1, 3, RNG_SLEEP_TURNS); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_HYPNOSIS); } + TURN { MOVE(player, MOVE_HYPNOSIS); MOVE(opponent, MOVE_CELEBRATE); } + for (count = 0; count < turns; ++count) + TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPNOSIS, player); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponent); + MESSAGE("Foe Wobbuffet fell asleep!"); STATUS_ICON(opponent, sleep: TRUE); + for (count = 0; count < turns; ++count) + { + if (count < turns - 1) + MESSAGE("Foe Wobbuffet is fast asleep."); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponent); + } + MESSAGE("Foe Wobbuffet woke up!"); + STATUS_ICON(opponent, none: TRUE); } } diff --git a/test/move_effect_special_attack_down.c b/test/move_effect_special_attack_down.c index a20b8558e712..0511692d468c 100644 --- a/test/move_effect_special_attack_down.c +++ b/test/move_effect_special_attack_down.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Confide lowers Special Attack", s16 damage) if (lowerSpecialAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFIDE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Wobbuffet's sp. attack fell!"); + MESSAGE("Foe Wobbuffet's Sp. Atk fell!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponent); HP_BAR(player, captureDamage: &results[i].damage); diff --git a/test/move_effect_special_attack_up_3.c b/test/move_effect_special_attack_up_3.c index f7e7e11d14a3..ad53bedb9e54 100644 --- a/test/move_effect_special_attack_up_3.c +++ b/test/move_effect_special_attack_up_3.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Tail Glow drastically raises Special Attack", s16 damage) if (raiseSpecialAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_TAIL_GLOW, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Wobbuffet's sp. attack drastically rose!"); + MESSAGE("Wobbuffet's Sp. Atk drastically rose!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, player); HP_BAR(opponent, captureDamage: &results[i].damage); diff --git a/test/move_effect_spikes.c b/test/move_effect_spikes.c index 33b0bad4b99e..0c84a5fb1e8c 100644 --- a/test/move_effect_spikes.c +++ b/test/move_effect_spikes.c @@ -28,7 +28,7 @@ SINGLE_BATTLE_TEST("Spikes damage on switch in") s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); for (count = 0; count < layers; ++count) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, player); - MESSAGE("Spikes were scattered all around the opponent's side!"); + MESSAGE("Spikes were scattered all around the opposing team!"); } MESSAGE("2 sent out Wynaut!"); HP_BAR(opponent, damage: maxHP / divisor); @@ -51,11 +51,11 @@ SINGLE_BATTLE_TEST("Spikes fails after 3 layers") } SCENE { s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, player); - MESSAGE("Spikes were scattered all around the opponent's side!"); + MESSAGE("Spikes were scattered all around the opposing team!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, player); - MESSAGE("Spikes were scattered all around the opponent's side!"); + MESSAGE("Spikes were scattered all around the opposing team!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, player); - MESSAGE("Spikes were scattered all around the opponent's side!"); + MESSAGE("Spikes were scattered all around the opposing team!"); MESSAGE("Wobbuffet used Spikes!"); MESSAGE("But it failed!"); MESSAGE("2 sent out Wynaut!"); diff --git a/test/move_effect_stockpile.c b/test/move_effect_stockpile.c new file mode 100644 index 000000000000..bd0d3a113db9 --- /dev/null +++ b/test/move_effect_stockpile.c @@ -0,0 +1,254 @@ +#include "global.h" +#include "test_battle.h" + +// These tests cover all 3 effects: Stockpile, Spit up and Swallow. +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_STOCKPILE].effect == EFFECT_STOCKPILE); + ASSUME(gBattleMoves[MOVE_SWALLOW].effect == EFFECT_SWALLOW); + ASSUME(gBattleMoves[MOVE_SPIT_UP].effect == EFFECT_SPIT_UP); +} + +SINGLE_BATTLE_TEST("Stockpile's count can go up only to 3") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_STOCKPILE); } + TURN { MOVE(player, MOVE_STOCKPILE); } + TURN { MOVE(player, MOVE_STOCKPILE); } + TURN { MOVE(player, MOVE_STOCKPILE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 1!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 2!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 3!"); + + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet can't stockpile any more!"); + } +} + +#define MAX_HP_TEST 400 +SINGLE_BATTLE_TEST("Spit Up and Swallow don't work if used without Stockpile") +{ + u32 move; + PARAMETRIZE {move = MOVE_SWALLOW ;} + PARAMETRIZE {move = MOVE_SPIT_UP ;} + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {HP(10), MaxHP(MAX_HP_TEST) ;} + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_STOCKPILE); } + TURN { MOVE(player, move); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, move, player); + if (move == MOVE_SWALLOW) + MESSAGE("But it failed to swallow a thing!"); + else + MESSAGE("But it failed to spit up a thing!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 1!"); + + ANIMATION(ANIM_TYPE_MOVE, move, player); + if (move == MOVE_SPIT_UP) { + HP_BAR(opponent); + } + else { + HP_BAR(player); + } + } +} + +SINGLE_BATTLE_TEST("Spit Up's power raises depending on Stockpile's count", s16 damage) +{ + u8 count; + PARAMETRIZE { count = 1;} + PARAMETRIZE { count = 2;} + PARAMETRIZE { count = 3;} + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_STOCKPILE); } + if (count != 1){ + TURN { MOVE(player, MOVE_STOCKPILE); } + if (count == 3) { + TURN { MOVE(player, MOVE_STOCKPILE); } + } + } + TURN { MOVE(player, MOVE_SPIT_UP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 1!"); + if (count != 1) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 2!"); + if (count == 3) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 3!"); + } + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIT_UP, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + EXPECT_MUL_EQ(results[0].damage, Q_4_12(3.0), results[2].damage); + } +} + +SINGLE_BATTLE_TEST("Swallow heals HP depending on Stockpile's count", s16 hpHeal) +{ + u8 count; + PARAMETRIZE { count = 1;} + PARAMETRIZE { count = 2;} + PARAMETRIZE { count = 3;} + GIVEN { + PLAYER(SPECIES_WOBBUFFET) {HP(1), MaxHP(MAX_HP_TEST); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_STOCKPILE); } + if (count != 1){ + TURN { MOVE(player, MOVE_STOCKPILE); } + if (count == 3) { + TURN { MOVE(player, MOVE_STOCKPILE); } + } + } + TURN { MOVE(player, MOVE_SWALLOW); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 1!"); + if (count != 1) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 2!"); + if (count == 3) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, player); + MESSAGE("Wobbuffet stockpiled 3!"); + } + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWALLOW, player); + HP_BAR(player, captureDamage: &results[i].hpHeal); + } FINALLY { + EXPECT_EQ(results[0].hpHeal, -(MAX_HP_TEST / 4)); + EXPECT_EQ(results[1].hpHeal, -(MAX_HP_TEST / 2)); + EXPECT_EQ(results[2].hpHeal, -(MAX_HP_TEST - 1)); + } +} + +SINGLE_BATTLE_TEST("Stockpile temporarily raises Def and Sp. Def", s16 dmgPyhsical, s16 dmgSpecial) +{ + u16 move; + PARAMETRIZE {move = MOVE_STOCKPILE;} + PARAMETRIZE {move = MOVE_CELEBRATE;} + GIVEN { + ASSUME(B_STOCKPILE_RAISES_DEFS >= GEN_4); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + ASSUME(gBattleMoves[MOVE_GUST].split == SPLIT_SPECIAL); + PLAYER(SPECIES_WOBBUFFET) {Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(1); } + } WHEN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_GUST); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + if (move == MOVE_STOCKPILE) { + MESSAGE("Wobbuffet stockpiled 1!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Defense rose!"); + MESSAGE("Wobbuffet's Sp. Def rose!"); + } + + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].dmgPyhsical); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponent); + HP_BAR(player, captureDamage: &results[i].dmgSpecial); + } FINALLY { + EXPECT_MUL_EQ(results[0].dmgPyhsical, Q_4_12(1.5), results[1].dmgPyhsical); + EXPECT_MUL_EQ(results[0].dmgSpecial, Q_4_12(1.5), results[1].dmgSpecial); + } +} + +DOUBLE_BATTLE_TEST("Stockpile's Def and Sp. Def boost is lost after using Spit Up or Swallow", s16 dmgPyhsicalBefore, s16 dmgPhysicalAfter, s16 dmgSpecialBefore, s16 dmgSpecialAfter) +{ + u8 count; + u16 move; + PARAMETRIZE {count = 1, move = MOVE_SPIT_UP;} + PARAMETRIZE {count = 2, move = MOVE_SWALLOW;} + PARAMETRIZE {count = 3, move = MOVE_SPIT_UP;} + GIVEN { + ASSUME(B_STOCKPILE_RAISES_DEFS >= GEN_4); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + ASSUME(gBattleMoves[MOVE_GUST].split == SPLIT_SPECIAL); + PLAYER(SPECIES_WOBBUFFET) {Speed(4); HP(MAX_HP_TEST - 1); MaxHP(MAX_HP_TEST); } + PLAYER(SPECIES_WOBBUFFET) {Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(1); } + } WHEN { + TURN { MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft, criticalHit:FALSE); MOVE(opponentRight, MOVE_GUST, criticalHit:FALSE, target:playerLeft);} + TURN { MOVE(playerLeft, MOVE_STOCKPILE);} + if (count != 1) { + TURN { MOVE(playerLeft, MOVE_STOCKPILE);} + if (count == 3) { + TURN { MOVE(playerLeft, MOVE_STOCKPILE);} + } + } + TURN { MOVE(playerLeft, move, target:opponentLeft); MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft, criticalHit:FALSE); MOVE(opponentRight, MOVE_GUST, target:playerLeft, criticalHit:FALSE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + HP_BAR(playerLeft, captureDamage: &results[i].dmgPyhsicalBefore); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponentRight); + HP_BAR(playerLeft, captureDamage: &results[i].dmgSpecialBefore); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, playerLeft); + if (count != 1) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, playerLeft); + if (count == 3) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOCKPILE, playerLeft); + } + } + ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + if (count == 1) { + MESSAGE("Wobbuffet's Defense fell!"); + } + else if (count == 2) { + MESSAGE("Wobbuffet's Defense harshly fell!"); + } + else { + MESSAGE("Wobbuffet's Defense severely fell!"); + } + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + if (count == 1) { + MESSAGE("Wobbuffet's Sp. Def fell!"); + } + else if (count == 2) { + MESSAGE("Wobbuffet's Sp. Def harshly fell!"); + } + else { + MESSAGE("Wobbuffet's Sp. Def severely fell!"); + } + MESSAGE("Wobbuffet's stockpiled effect wore off!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + HP_BAR(playerLeft, captureDamage: &results[i].dmgPhysicalAfter); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponentRight); + HP_BAR(playerLeft, captureDamage: &results[i].dmgSpecialAfter); + } FINALLY { + EXPECT_MUL_EQ(results[0].dmgPyhsicalBefore, UQ_4_12(1.0), results[0].dmgPhysicalAfter); + EXPECT_MUL_EQ(results[0].dmgSpecialBefore, UQ_4_12(1.0), results[0].dmgSpecialAfter); + EXPECT_MUL_EQ(results[1].dmgPyhsicalBefore, UQ_4_12(1.0), results[1].dmgPhysicalAfter); + EXPECT_MUL_EQ(results[1].dmgSpecialBefore, UQ_4_12(1.0), results[1].dmgSpecialAfter); + EXPECT_MUL_EQ(results[2].dmgPyhsicalBefore, UQ_4_12(1.0), results[2].dmgPhysicalAfter); + EXPECT_MUL_EQ(results[2].dmgSpecialBefore, UQ_4_12(1.0), results[2].dmgSpecialAfter); + } +} + diff --git a/test/move_effect_tri_attack.c b/test/move_effect_tri_attack.c new file mode 100644 index 000000000000..c3fbfaacebf5 --- /dev/null +++ b/test/move_effect_tri_attack.c @@ -0,0 +1,135 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TRI_ATTACK].effect == EFFECT_TRI_ATTACK); +} + +SINGLE_BATTLE_TEST("Tri Attack can inflict paralysis, burn or freeze") +{ + u8 statusAnim; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_FRZ; } + PASSES_RANDOMLY(1, 3, RNG_TRI_ATTACK); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TRI_ATTACK); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + STATUS_ICON(opponent, burn: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_FRZ) { + STATUS_ICON(opponent, freeze: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze electric/fire/ice types respectively") +{ + u8 statusAnim; + u16 species; + u32 rng; + #if B_PARALYZE_ELECTRIC >= GEN_6 + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_RAICHU;} + #endif // B_PARALYZE_ELECTRIC + PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; species = SPECIES_ARCANINE; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_FRZ; rng = MOVE_EFFECT_FREEZE; species = SPECIES_GLALIE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_TRI_ATTACK, WITH_RNG(RNG_TRI_ATTACK, rng)); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + NOT STATUS_ICON(opponent, burn: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_FRZ) { + NOT STATUS_ICON(opponent, freeze: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + NOT STATUS_ICON(opponent, paralysis: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze pokemon with abilities preventing respective statuses") +{ + u8 statusAnim; + u16 species, ability; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_RAICHU; ability = ABILITY_LIGHTNING_ROD; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_JOLTEON; ability = ABILITY_VOLT_ABSORB; } + #if P_GEN_4_POKEMON == TRUE + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_ELECTIVIRE; ability = ABILITY_MOTOR_DRIVE; } + #endif // P_GEN_4_POKEMON + #if P_GEN_7_POKEMON == TRUE + PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; species = SPECIES_DEWPIDER; ability = ABILITY_WATER_BUBBLE; } + #endif // P_GEN_7_POKEMON + PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; species = SPECIES_SEAKING; ability = ABILITY_WATER_VEIL; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_FRZ; rng = MOVE_EFFECT_FREEZE; species = SPECIES_CAMERUPT; ability = ABILITY_MAGMA_ARMOR; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) {Ability(ability);} + } WHEN { + TURN { MOVE(player, MOVE_TRI_ATTACK, WITH_RNG(RNG_TRI_ATTACK, rng)); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + NOT STATUS_ICON(opponent, burn: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_FRZ) { + NOT STATUS_ICON(opponent, freeze: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + NOT STATUS_ICON(opponent, paralysis: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze a mon which is already statused") +{ + u8 statusAnim; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_FRZ; rng = MOVE_EFFECT_FREEZE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);} + } WHEN { + TURN { MOVE(player, MOVE_TRI_ATTACK, WITH_RNG(RNG_TRI_ATTACK, rng)); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + NOT STATUS_ICON(opponent, burn: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_FRZ) { + NOT STATUS_ICON(opponent, freeze: TRUE); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + NOT STATUS_ICON(opponent, paralysis: TRUE); + } + } +} diff --git a/test/move_effect_triple_kick.c b/test/move_effect_triple_kick.c new file mode 100644 index 000000000000..e0a91b011250 --- /dev/null +++ b/test/move_effect_triple_kick.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TRIPLE_KICK].effect & EFFECT_TRIPLE_KICK); +} + +SINGLE_BATTLE_TEST("Triple Kick damage is increased by its base damage for each hit") +{ + s16 firstHit; + s16 secondHit; + s16 thirdHit; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TRIPLE_KICK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRIPLE_KICK, player); + HP_BAR(opponent, captureDamage: &firstHit); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRIPLE_KICK, player); + HP_BAR(opponent, captureDamage: &secondHit); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRIPLE_KICK, player); + HP_BAR(opponent, captureDamage: &thirdHit); + } THEN { + EXPECT_MUL_EQ(firstHit, Q_4_12(2.0), secondHit); + EXPECT_MUL_EQ(firstHit, Q_4_12(3.0), thirdHit); + } +} diff --git a/test/move_effect_venoshock.c b/test/move_effect_venoshock.c new file mode 100644 index 000000000000..876f611c9376 --- /dev/null +++ b/test/move_effect_venoshock.c @@ -0,0 +1,27 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_VENOSHOCK].effect == EFFECT_VENOSHOCK); +} + +SINGLE_BATTLE_TEST("Venoshock's power doubles if the target is poisoned/badly poisoned", s16 damage) +{ + u32 status1; + PARAMETRIZE { status1 = 0; } + PARAMETRIZE { status1 = STATUS1_POISON; } + PARAMETRIZE { status1 = STATUS1_TOXIC_POISON; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) {Status1(status1);} + } WHEN { + TURN { MOVE(player, MOVE_VENOSHOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_VENOSHOCK, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[2].damage); + } +} diff --git a/test/move_flag_three_strikes.c b/test/move_flag_three_strikes.c new file mode 100644 index 000000000000..b597b4efef50 --- /dev/null +++ b/test/move_flag_three_strikes.c @@ -0,0 +1,57 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Three-strike flag turns a move into a 3-hit move") +{ + s16 firstHit; + s16 secondHit; + s16 thirdHit; + + GIVEN { + ASSUME(gBattleMoves[MOVE_TRIPLE_DIVE].flags & FLAG_THREE_STRIKES); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TRIPLE_DIVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRIPLE_DIVE, player); + HP_BAR(opponent, captureDamage: &firstHit); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRIPLE_DIVE, player); + HP_BAR(opponent, captureDamage: &secondHit); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRIPLE_DIVE, player); + HP_BAR(opponent, captureDamage: &thirdHit); + } THEN { + EXPECT_EQ(firstHit, secondHit); + EXPECT_EQ(secondHit, thirdHit); + EXPECT_EQ(firstHit, thirdHit); + } +} + +SINGLE_BATTLE_TEST("Surging Strikes hits 3 times with each hit being a critical hit") +{ + s16 firstHit; + s16 secondHit; + s16 thirdHit; + + GIVEN { + ASSUME(gBattleMoves[MOVE_SURGING_STRIKES].flags & FLAG_THREE_STRIKES); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURGING_STRIKES); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURGING_STRIKES, player); + HP_BAR(opponent, captureDamage: &firstHit); + MESSAGE("A critical hit!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURGING_STRIKES, player); + HP_BAR(opponent, captureDamage: &secondHit); + MESSAGE("A critical hit!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURGING_STRIKES, player); + HP_BAR(opponent, captureDamage: &thirdHit); + MESSAGE("A critical hit!"); + } THEN { + EXPECT_EQ(firstHit, secondHit); + EXPECT_EQ(secondHit, thirdHit); + EXPECT_EQ(firstHit, thirdHit); + } +} diff --git a/test/random.c b/test/random.c new file mode 100644 index 000000000000..39f587c062b6 --- /dev/null +++ b/test/random.c @@ -0,0 +1,112 @@ +#include "global.h" +#include "test.h" +#include "random.h" + +TEST("RandomUniform generates lo..hi") +{ + u32 lo, hi, i; + PARAMETRIZE { lo = 0; hi = 1; } + PARAMETRIZE { lo = 0; hi = 2; } + PARAMETRIZE { lo = 0; hi = 3; } + PARAMETRIZE { lo = 2; hi = 4; } + for (i = 0; i < 1024; i++) + { + u32 r = RandomUniformDefault(RNG_NONE, lo, hi); + EXPECT(lo <= r && r <= hi); + } +} + +TEST("RandomWeighted generates 0..n-1") +{ + u32 n, sum, i; + static const u8 ws[8] = { 1, 1, 1, 1, 1, 1, 1, 1 }; + PARAMETRIZE { n = 1; } + PARAMETRIZE { n = 2; } + PARAMETRIZE { n = 3; } + PARAMETRIZE { n = 4; } + ASSUME(n <= ARRAY_COUNT(ws)); + for (i = 0, sum = 0; i < n; i++) + sum += ws[i]; + for (i = 0; i < 1024; i++) + { + u32 r = RandomWeightedArrayDefault(RNG_NONE, sum, n, ws); + EXPECT(0 <= r && r < n); + } +} + +TEST("RandomElement generates an element") +{ + u32 i; + static const u8 es[4] = { 1, 2, 4, 8 }; + for (i = 0; i < 1024; i++) + { + u32 e = *(const u8 *)RandomElementArrayDefault(RNG_NONE, es, sizeof(es[0]), ARRAY_COUNT(es)); + EXPECT(e == 1 || e == 2 || e == 4 || e == 8); + } +} + +TEST("RandomUniform generates uniform distribution") +{ + u32 i, error; + u16 distribution[4]; + + memset(distribution, 0, sizeof(distribution)); + for (i = 0; i < 4096; i++) + { + u32 r = RandomUniformDefault(RNG_NONE, 0, ARRAY_COUNT(distribution) - 1); + EXPECT(0 <= r && r < ARRAY_COUNT(distribution)); + distribution[r]++; + } + + error = 0; + for (i = 0; i < ARRAY_COUNT(distribution); i++) + error += abs(UQ_4_12(0.25) - distribution[i]); + + EXPECT_LT(error, UQ_4_12(0.025)); +} + +TEST("RandomWeighted generates distribution in proportion to the weights") +{ + u32 i, sum, error; + static const u8 ws[4] = { 1, 2, 2, 3 }; + u16 distribution[ARRAY_COUNT(ws)]; + + for (i = 0, sum = 0; i < ARRAY_COUNT(ws); i++) + sum += ws[i]; + + memset(distribution, 0, sizeof(distribution)); + for (i = 0; i < 4096; i++) + { + u32 r = RandomWeightedArrayDefault(RNG_NONE, sum, ARRAY_COUNT(ws), ws); + EXPECT(0 <= r && r < ARRAY_COUNT(ws)); + distribution[r]++; + } + + error = 0; + error += abs(UQ_4_12(0.125) - distribution[0]); + error += abs(UQ_4_12(0.250) - distribution[1]); + error += abs(UQ_4_12(0.250) - distribution[2]); + error += abs(UQ_4_12(0.375) - distribution[3]); + + EXPECT_LT(error, UQ_4_12(0.025)); +} + +TEST("RandomElement generates a uniform distribution") +{ + u32 i, error; + static const u8 es[4] = { 1, 2, 4, 8 }; + u16 distribution[9]; + + memset(distribution, 0, sizeof(distribution)); + for (i = 0; i < 4096; i++) + { + u32 e = *(const u8 *)RandomElementArrayDefault(RNG_NONE, es, sizeof(es[0]), ARRAY_COUNT(es)); + distribution[e]++; + } + + error = 0; + for (i = 0; i < ARRAY_COUNT(es); i++) + error += abs(UQ_4_12(0.25) - distribution[es[i]]); + + EXPECT_LT(error, UQ_4_12(0.025)); +} diff --git a/test/status1.c b/test/status1.c index 63a9cd041411..c244b9a604aa 100644 --- a/test/status1.c +++ b/test/status1.c @@ -53,7 +53,7 @@ SINGLE_BATTLE_TEST("Burn deals 1/16th damage per turn") } } -SINGLE_BATTLE_TEST("Burn reduces attack by 50%", s16 damage) +SINGLE_BATTLE_TEST("Burn reduces Attack by 50%", s16 damage) { bool32 burned; PARAMETRIZE { burned = FALSE; } @@ -72,7 +72,7 @@ SINGLE_BATTLE_TEST("Burn reduces attack by 50%", s16 damage) SINGLE_BATTLE_TEST("Freeze has a 20% chance of being thawed") { - PASSES_RANDOMLY(20, 100); + PASSES_RANDOMLY(20, 100, RNG_FROZEN); GIVEN { PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); } OPPONENT(SPECIES_WOBBUFFET); @@ -90,9 +90,8 @@ SINGLE_BATTLE_TEST("Freeze is thawed by opponent's Fire-type attacks") PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_EMBER); } + TURN { MOVE(opponent, MOVE_EMBER); MOVE(player, MOVE_CELEBRATE); } } SCENE { - MESSAGE("Wobbuffet is frozen solid!"); MESSAGE("Foe Wobbuffet used Ember!"); MESSAGE("Wobbuffet was defrosted!"); STATUS_ICON(player, none: TRUE); @@ -114,7 +113,7 @@ SINGLE_BATTLE_TEST("Freeze is thawed by user's Flame Wheel") } } -SINGLE_BATTLE_TEST("Paralysis reduces speed by 50%") +SINGLE_BATTLE_TEST("Paralysis reduces Speed by 50%") { u16 playerSpeed; bool32 playerFirst; @@ -145,7 +144,7 @@ SINGLE_BATTLE_TEST("Paralysis reduces speed by 50%") SINGLE_BATTLE_TEST("Paralysis has a 25% chance of skipping the turn") { - PASSES_RANDOMLY(25, 100); + PASSES_RANDOMLY(25, 100, RNG_PARALYSIS); GIVEN { PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_PARALYSIS); } OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/status_frostbite.c b/test/status_frostbite.c new file mode 100644 index 000000000000..f03447821747 --- /dev/null +++ b/test/status_frostbite.c @@ -0,0 +1,96 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Frostbite reduces the special attack by 50 percent") +{ + s16 reducedDamage; + s16 normaleDamage; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_FROSTBITE); } + } WHEN { + TURN { MOVE(opponent, MOVE_SWIFT); MOVE(player, MOVE_FLAME_WHEEL); } + TURN { MOVE(opponent, MOVE_SWIFT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, opponent); + HP_BAR(player, captureDamage: &reducedDamage); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLAME_WHEEL, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, opponent); + HP_BAR(player, captureDamage: &normaleDamage); + } THEN { EXPECT_EQ(reducedDamage * 2, normaleDamage); } +} + +SINGLE_BATTLE_TEST("Frostbite deals 1/16 damage to effected pokemon") +{ + s16 frostbiteDamage; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_FROSTBITE); } + } WHEN { + TURN { } + } SCENE { + MESSAGE("Foe Wobbuffet is hurt by its frostbite!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); + HP_BAR(opponent, captureDamage: &frostbiteDamage); + } THEN { EXPECT_EQ(frostbiteDamage, opponent->maxHP / 16); } +} + +SINGLE_BATTLE_TEST("Frostbite is healed if hit with a thawing move") +{ + u32 move; + + PARAMETRIZE { move = MOVE_FLAME_WHEEL; } + PARAMETRIZE { move = MOVE_SACRED_FIRE; } + PARAMETRIZE { move = MOVE_FLARE_BLITZ; } + PARAMETRIZE { move = MOVE_FUSION_FLARE; } + PARAMETRIZE { move = MOVE_EMBER; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_FROSTBITE); } + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + if (move == MOVE_EMBER) { + NONE_OF { + MESSAGE("Foe Wobbuffet's frostbite was healed!"); + } + } else { + MESSAGE("Foe Wobbuffet's frostbite was healed!"); + } + } +} + +SINGLE_BATTLE_TEST("Frostbite is healed when the user uses a thawing move") +{ + u32 move; + + PARAMETRIZE { move = MOVE_FLAME_WHEEL; } + PARAMETRIZE { move = MOVE_SACRED_FIRE; } + PARAMETRIZE { move = MOVE_FLARE_BLITZ; } + PARAMETRIZE { move = MOVE_FUSION_FLARE; } + PARAMETRIZE { move = MOVE_EMBER; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FROSTBITE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent); + if (move == MOVE_EMBER) { + MESSAGE("Wobbuffet is hurt by its frostbite!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, player); + } else { + NONE_OF { + MESSAGE("Wobbuffet is hurt by its frostbite!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, player); + } + } + } +} diff --git a/test/terrain_electric.c b/test/terrain_electric.c new file mode 100644 index 000000000000..78f490c425f5 --- /dev/null +++ b/test/terrain_electric.c @@ -0,0 +1,92 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Electric Terrain protects grounded battlers from falling asleep") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CLAYDOL) { Ability(ABILITY_LEVITATE); } + } WHEN { + TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); MOVE(opponent, MOVE_SPORE); } + TURN { MOVE(player, MOVE_SPORE); } + } SCENE { + MESSAGE("Wobbuffet used ElctrcTrrain!"); + MESSAGE("Foe Claydol used Spore!"); + MESSAGE("Wobbuffet surrounds itself with electrified terrain!"); + MESSAGE("Wobbuffet used Spore!"); + MESSAGE("Foe Claydol fell asleep!"); + STATUS_ICON(opponent, sleep: TRUE); + } +} + +SINGLE_BATTLE_TEST("Electric Terrain activates Electric Seed and Mimicry") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gItems[ITEM_ELECTRIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); + ASSUME(gItems[ITEM_ELECTRIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ELECTRIC_SEED); } + OPPONENT(SPECIES_STUNFISK_GALARIAN) { Ability(ABILITY_MIMICRY); } + } WHEN { + TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Electric Seed, the Defense of Wobbuffet rose!"); + ABILITY_POPUP(opponent); + MESSAGE("Foe Stunfisk's type changed to Electr!"); + } THEN { + EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].type1, TYPE_ELECTRIC); + } +} + +SINGLE_BATTLE_TEST("Electric Terrain increases power of Electric-type moves by 30/50 percent", s16 damage) +{ + bool32 terrain; + PARAMETRIZE { terrain = FALSE; } + PARAMETRIZE { terrain = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (terrain) + TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } + TURN { MOVE(player, MOVE_THUNDER_SHOCK); } + } SCENE { + MESSAGE("Wobbuffet used ThunderShock!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (B_TERRAIN_TYPE_BOOST >= GEN_8) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.3), results[1].damage); + else + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Electric Terrain lasts for 5 turns") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_ELECTRIC_TERRAIN); } + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, player); + MESSAGE("An electric current runs across the battlefield!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("The electricity disappeared from the battlefield."); + } +} diff --git a/test/terrain_grassy.c b/test/terrain_grassy.c new file mode 100644 index 000000000000..21d64f61e4d5 --- /dev/null +++ b/test/terrain_grassy.c @@ -0,0 +1,115 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Grassy Terrain recovers 1/16th HP at end of turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + MESSAGE("Wobbuffet is healed by the grassy terrain!"); + HP_BAR(player, damage: -maxHP / 16); + } +} + +SINGLE_BATTLE_TEST("Grassy Terrain activates Grassy Seed and Mimicry") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gItems[ITEM_GRASSY_SEED].holdEffect == HOLD_EFFECT_SEEDS); + ASSUME(gItems[ITEM_GRASSY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_GRASSY_TERRAIN); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_GRASSY_SEED); } + OPPONENT(SPECIES_STUNFISK_GALARIAN) { Ability(ABILITY_MIMICRY); } + } WHEN { + TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Grassy Seed, the Defense of Wobbuffet rose!"); + ABILITY_POPUP(opponent); + MESSAGE("Foe Stunfisk's type changed to Grass!"); + } THEN { + EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].type1, TYPE_GRASS); + } +} + +SINGLE_BATTLE_TEST("Grassy Terrain increases power of Grass-type moves by 30/50 percent", s16 damage) +{ + bool32 terrain; + PARAMETRIZE { terrain = FALSE; } + PARAMETRIZE { terrain = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (terrain) + TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } + TURN { MOVE(player, MOVE_ABSORB); } + } SCENE { + MESSAGE("Wobbuffet used Absorb!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (B_TERRAIN_TYPE_BOOST >= GEN_8) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.3), results[1].damage); + else + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +// Magnitude is not tested because its damage is variable. +SINGLE_BATTLE_TEST("Grassy Terrain decreases power of Earthquake and Bulldoze by 50 percent", s16 damage) +{ + bool32 terrain; + u16 move; + PARAMETRIZE { terrain = FALSE; move = MOVE_EARTHQUAKE; } // 0 + PARAMETRIZE { terrain = TRUE; move = MOVE_EARTHQUAKE; } // 1 + PARAMETRIZE { terrain = FALSE; move = MOVE_BULLDOZE; } // 2 + PARAMETRIZE { terrain = TRUE; move = MOVE_BULLDOZE; } // 3 + GIVEN { + ASSUME(gBattleMoves[MOVE_EARTHQUAKE].effect == EFFECT_EARTHQUAKE); + ASSUME(gBattleMoves[MOVE_BULLDOZE].effect == EFFECT_BULLDOZE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (terrain) + TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + EXPECT_MUL_EQ(results[2].damage, Q_4_12(0.5), results[3].damage); + } +} + +SINGLE_BATTLE_TEST("Grassy Terrain lasts for 5 turns") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_GRASSY_TERRAIN); } + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASSY_TERRAIN, player); + MESSAGE("Grass grew to cover the battlefield!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("The grass disappeared from the battlefield."); + } +} diff --git a/test/terrain_misty.c b/test/terrain_misty.c new file mode 100644 index 000000000000..f60122075cf9 --- /dev/null +++ b/test/terrain_misty.c @@ -0,0 +1,109 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Misty Terrain protects grounded battlers from non-volatile status conditions") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CLAYDOL) { Ability(ABILITY_LEVITATE); } + } WHEN { + TURN { MOVE(player, MOVE_MISTY_TERRAIN); MOVE(opponent, MOVE_TOXIC); } + TURN { MOVE(player, MOVE_TOXIC); } + } SCENE { + MESSAGE("Wobbuffet used MistyTerrain!"); + MESSAGE("Foe Claydol used Toxic!"); + MESSAGE("Wobbuffet surrounds itself with a protective mist!"); + NOT { STATUS_ICON(opponent, badPoison: TRUE); } + MESSAGE("Wobbuffet used Toxic!"); + STATUS_ICON(opponent, badPoison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Misty Terrain activates Misty Seed and Mimicry") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gItems[ITEM_MISTY_SEED].holdEffect == HOLD_EFFECT_SEEDS); + ASSUME(gItems[ITEM_MISTY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_MISTY_TERRAIN); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_MISTY_SEED); } + OPPONENT(SPECIES_STUNFISK_GALARIAN) { Ability(ABILITY_MIMICRY); } + } WHEN { + TURN { MOVE(player, MOVE_MISTY_TERRAIN); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Misty Seed, the Sp. Def of Wobbuffet rose!"); + ABILITY_POPUP(opponent); + MESSAGE("Foe Stunfisk's type changed to Fairy!"); + } THEN { + EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].type1, TYPE_FAIRY); + } +} + +SINGLE_BATTLE_TEST("Misty Terrain does not increase the power of Fairy-type moves", s16 damage) +{ + bool32 terrain; + PARAMETRIZE { terrain = FALSE; } + PARAMETRIZE { terrain = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (terrain) + TURN { MOVE(player, MOVE_MISTY_TERRAIN); } + TURN { MOVE(player, MOVE_MOONBLAST); } + } SCENE { + MESSAGE("Wobbuffet used Moonblast!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Misty Terrain decreases power of Dragon-type moves by 50 percent", s16 damage) +{ + bool32 terrain; + PARAMETRIZE { terrain = FALSE; } + PARAMETRIZE { terrain = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (terrain) + TURN { MOVE(player, MOVE_MISTY_TERRAIN); } + TURN { MOVE(player, MOVE_DRAGON_CLAW); } + } SCENE { + MESSAGE("Wobbuffet used Dragon Claw!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Misty Terrain lasts for 5 turns") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_MISTY_TERRAIN); } + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MISTY_TERRAIN, player); + MESSAGE("Mist swirled about the battlefield!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("The mist disappeared from the battlefield."); + } +} diff --git a/test/terrain_psychic.c b/test/terrain_psychic.c new file mode 100644 index 000000000000..f9f95a47dbbb --- /dev/null +++ b/test/terrain_psychic.c @@ -0,0 +1,167 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Psychic Terrain protects grounded battlers from priority moves") +{ + GIVEN { + PLAYER(SPECIES_CLAYDOL) { Ability(ABILITY_LEVITATE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + TURN { MOVE(player, MOVE_QUICK_ATTACK); MOVE(opponent, MOVE_QUICK_ATTACK); } + } SCENE { + MESSAGE("Claydol used PsychcTrrain!"); + MESSAGE("Claydol cannot use Quick Attack!"); + NOT { HP_BAR(opponent); } + MESSAGE("Foe Wobbuffet used Quick Attack!"); + HP_BAR(player); + } +} + +SINGLE_BATTLE_TEST("Psychic Terrain activates Psychic Seed and Mimicry") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gItems[ITEM_PSYCHIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); + ASSUME(gItems[ITEM_PSYCHIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PSYCHIC_SEED); } + OPPONENT(SPECIES_STUNFISK_GALARIAN) { Ability(ABILITY_MIMICRY); } + } WHEN { + TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Psychic Seed, the Sp. Def of Wobbuffet rose!"); + ABILITY_POPUP(opponent); + MESSAGE("Foe Stunfisk's type changed to Psychc!"); + } THEN { + EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].type1, TYPE_PSYCHIC); + } +} + +SINGLE_BATTLE_TEST("Psychic Terrain increases power of Psychic-type moves by 30/50 percent", s16 damage) +{ + bool32 terrain; + PARAMETRIZE { terrain = FALSE; } + PARAMETRIZE { terrain = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (terrain) + TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + TURN { MOVE(player, MOVE_CONFUSION); } + } SCENE { + MESSAGE("Wobbuffet used Confusion!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (B_TERRAIN_TYPE_BOOST >= GEN_8) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.3), results[1].damage); + else + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves that target the user") +{ + GIVEN { + PLAYER(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + TURN { MOVE(player, MOVE_RECOVER); } + } SCENE { + MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Recover!"); + HP_BAR(player); + } +} + +SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves that target all battlers") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + TURN { MOVE(player, MOVE_HAZE); } + } SCENE { + MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Haze!"); + } +} + +SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves that target all opponents") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + TURN { MOVE(player, MOVE_SPIKES); } + } SCENE { + MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Spikes!"); + } +} + +DOUBLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves that target allies") +{ + GIVEN { + PLAYER(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_PSYCHIC_TERRAIN); } + TURN { MOVE(playerLeft, MOVE_HEAL_PULSE, target: playerRight); } + } SCENE { + MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Heal Pulse!"); + } +} + +SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority field moves") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + TURN { MOVE(player, MOVE_SUNNY_DAY); } + } SCENE { + MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Sunny Day!"); + } +} + +SINGLE_BATTLE_TEST("Psychic Terrain lasts for 5 turns") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_PSYCHIC_TERRAIN); } + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHIC_TERRAIN, player); + MESSAGE("The battlefield got weird!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("The weirdness disappeared from the battlefield."); + } +} diff --git a/test/test.h b/test/test.h index cbcf117178fa..bf3e0b0041f3 100644 --- a/test/test.h +++ b/test/test.h @@ -9,10 +9,11 @@ enum TestResult { TEST_RESULT_FAIL, TEST_RESULT_PASS, - TEST_RESULT_SKIP, + TEST_RESULT_ASSUMPTION_FAIL, TEST_RESULT_INVALID, TEST_RESULT_ERROR, TEST_RESULT_TIMEOUT, + TEST_RESULT_TODO, }; struct TestRunner @@ -39,13 +40,13 @@ struct TestRunnerState u8 exitCode; s32 tests; s32 passes; - s32 skips; const char *skipFilename; const struct Test *test; u32 processCosts[MAX_PROCESSES]; u8 result; u8 expectedResult; + bool8 expectLeaks:1; u32 timeoutSeconds; }; @@ -54,15 +55,37 @@ extern const u8 gTestRunnerI; extern const char gTestRunnerArgv[256]; extern const struct TestRunner gAssumptionsRunner; + +struct FunctionTestRunnerState +{ + u8 parameters; + u8 runParameter; +}; + +extern const struct TestRunner gFunctionTestRunner; +extern struct FunctionTestRunnerState *gFunctionTestRunnerState; + extern struct TestRunnerState gTestRunnerState; void CB2_TestRunner(void); void Test_ExpectedResult(enum TestResult); +void Test_ExpectLeaks(bool32); void Test_ExitWithResult(enum TestResult, const char *fmt, ...); s32 MgbaPrintf_(const char *fmt, ...); +#define TEST(_name) \ + static void CAT(Test, __LINE__)(void); \ + __attribute__((section(".tests"))) static const struct Test CAT(sTest, __LINE__) = \ + { \ + .name = _name, \ + .filename = __FILE__, \ + .runner = &gFunctionTestRunner, \ + .data = (void *)CAT(Test, __LINE__), \ + }; \ + static void CAT(Test, __LINE__)(void) + #define ASSUMPTIONS \ static void Assumptions(void); \ __attribute__((section(".tests"))) static const struct Test sAssumptions = \ @@ -78,7 +101,7 @@ s32 MgbaPrintf_(const char *fmt, ...); do \ { \ if (!(c)) \ - Test_ExitWithResult(TEST_RESULT_SKIP, "%s:%d: ASSUME failed", gTestRunnerState.test->filename, __LINE__); \ + Test_ExitWithResult(TEST_RESULT_ASSUMPTION_FAIL, "%s:%d: ASSUME failed", gTestRunnerState.test->filename, __LINE__); \ } while (0) #define EXPECT(c) \ @@ -139,4 +162,15 @@ s32 MgbaPrintf_(const char *fmt, ...); #define KNOWN_FAILING \ Test_ExpectedResult(TEST_RESULT_FAIL) +#define KNOWN_LEAKING \ + Test_ExpectLeaks(TRUE) + +#define PARAMETRIZE if (gFunctionTestRunnerState->parameters++ == gFunctionTestRunnerState->runParameter) + +#define TO_DO \ + Test_ExpectedResult(TEST_RESULT_TODO) + +#define EXPECT_TO_DO \ + Test_ExitWithResult(TEST_RESULT_TODO, "%s:%d: EXPECT_TO_DO", gTestRunnerState.test->filename, __LINE__) + #endif diff --git a/test/test_battle.h b/test/test_battle.h index 806e7947e1de..205c699192b1 100644 --- a/test/test_battle.h +++ b/test/test_battle.h @@ -65,8 +65,9 @@ * single turn. MOVE causes the player to use Stun Spore and adds the * move to the Pokémon's moveset if an explicit Moves was not specified. * Pokémon that are not mentioned in a TURN use Celebrate. - * The test runner attempts to rig the RNG so that the first move used - * in a turn does not miss and activates its secondary effects (if any). + * The test runner rigs the RNG so that unless otherwise specified, + * moves always hit, never critical hit, always activate their secondary + * effects, and always roll the same damage modifier. * * SCENE describes the player-visible output of the battle. In this case * ANIMATION checks that the Stun Spore animation played, MESSAGE checks @@ -228,12 +229,35 @@ * } * } * - * PASSES_RANDOMLY(successes, trials) - * Checks that the test passes approximately successes/trials. Used for - * testing RNG-based attacks, e.g.: + * PASSES_RANDOMLY(successes, trials, [tag]) + * Checks that the test passes successes/trials. If tag is provided, the + * test is run for each value that the tag can produce. For example, to + * check that Paralysis causes the turn to be skipped 25/100 times, we + * can write the following test that passes only if the Pokémon is fully + * paralyzed and specify that we expect it to pass 25/100 times when + * RNG_PARALYSIS varies: + * SINGLE_BATTLE_TEST("Paralysis has a 25% chance of skipping the turn") + * { + * PASSES_RANDOMLY(25, 100, RNG_PARALYSIS); + * GIVEN { + * PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_PARALYSIS); } + * OPPONENT(SPECIES_WOBBUFFET); + * } WHEN { + * TURN { MOVE(player, MOVE_CELEBRATE); } + * } SCENE { + * MESSAGE("Wobbuffet is paralyzed! It can't move!"); + * } + * } + * All BattleRandom calls involving tag will return the same number, so + * this cannot be used to have two moves independently hit or miss, for + * example. + * + * If the tag is not provided, runs the test 50 times and computes an + * approximate pass ratio. * PASSES_RANDOMLY(gBattleMoves[move].accuracy, 100); - * Note that PASSES_RANDOMLY makes the tests run very slowly and should - * be avoided where possible. + * Note that this mode of PASSES_RANDOMLY makes the tests run very + * slowly and should be avoided where possible. If the mechanic you are + * testing is missing its tag, you should add it. * * GIVEN * Contains the initial state of the parties before the battle. @@ -279,13 +303,14 @@ * The inference process is naive, if your test contains anything that * modifies the speed of a battler you should specify them explicitly. * - * MOVE(battler, move | moveSlot:, [megaEvolve:], [hit:], [criticalHit:], [target:], [allowed:]) + * MOVE(battler, move | moveSlot:, [megaEvolve:], [hit:], [criticalHit:], [target:], [allowed:], [WITH_RNG(tag, value]) * Used when the battler chooses Fight. Either the move ID or move slot * must be specified. megaEvolve: TRUE causes the battler to Mega Evolve * if able, hit: FALSE causes the move to miss, criticalHit: TRUE causes * the move to land a critical hit, target: is used in double battles to * choose the target (when necessary), and allowed: FALSE is used to - * reject an illegal move e.g. a Disabled one. + * reject an illegal move e.g. a Disabled one. WITH_RNG allows the move + * to specify an explicit outcome for an RNG tag. * MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); * If the battler does not have an explicit Moves specified the moveset * will be populated based on the MOVEs it uses. @@ -309,6 +334,13 @@ * via Switch, e.g. after fainting or due to a U-turn. * SEND_OUT(player, 1); * + * USE_ITEM(battler, itemId, [partyIndex:], [move:]) + * Used when the battler chooses to use an item from the Bag. The item + * ID must be specified, and party index and move slot if applicable, e.g: + * USE_ITEM(player, ITEM_X_ATTACK); + * USE_ITEM(player, ITEM_POTION, partyIndex: 0); + * USE_ITEM(player, ITEM_LEPPA_BERRY, partyIndex: 0, move: MOVE_TACKLE); + * * SCENE * Contains an abridged description of the UI during the THEN. The order * of the description must match too, e.g. @@ -337,7 +369,7 @@ * s16 damage; * HP_BAR(player, captureDamage: &damage); * If none of the above are used, causes the test to fail if the HP - * changes at all. + * does not change at all. * * MESSAGE(pattern) * Causes the test to fail if the message in pattern is not displayed. @@ -419,6 +451,7 @@ #include "battle_anim.h" #include "data.h" #include "item.h" +#include "random.h" #include "recorded_battle.h" #include "test.h" #include "util.h" @@ -433,7 +466,8 @@ // NOTE: If the stack is too small the test runner will probably crash // or loop. #define BATTLE_TEST_STACK_SIZE 1024 -#define MAX_QUEUED_EVENTS 16 +#define MAX_TURNS 16 +#define MAX_QUEUED_EVENTS 25 enum { BATTLE_TEST_SINGLES, BATTLE_TEST_DOUBLES }; @@ -492,8 +526,7 @@ struct QueuedMessageEvent struct QueuedStatusEvent { u32 battlerId:3; - u32 mask:8; - u32 unused_01:21; + u32 mask:29; }; struct QueuedEvent @@ -512,6 +545,20 @@ struct QueuedEvent } as; }; +struct TurnRNG +{ + u16 tag; + u16 value; +}; + +struct BattlerTurn +{ + u8 hit:2; + u8 criticalHit:2; + u8 secondaryEffect:2; + struct TurnRNG rng; +}; + struct BattleTestData { u8 stack[BATTLE_TEST_STACK_SIZE]; @@ -533,14 +580,13 @@ struct BattleTestData u8 turns; u8 actionBattlers; u8 moveBattlers; - bool8 hasRNGActions:1; struct RecordedBattleSave recordedBattle; u8 battleRecordTypes[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; u8 battleRecordSourceLineOffsets[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; u16 recordIndexes[MAX_BATTLERS_COUNT]; + struct BattlerTurn battleRecordTurns[MAX_TURNS][MAX_BATTLERS_COUNT]; u8 lastActionTurn; - u8 nextRNGTurn; u8 queuedEventsCount; u8 queueGroupType; @@ -555,11 +601,12 @@ struct BattleTestRunnerState u8 parametersCount; // Valid only in BattleTest_Setup. u8 parameters; u8 runParameter; + u16 rngTag; u8 trials; - u8 expectedPasses; - u8 observedPasses; - u8 skippedTrials; u8 runTrial; + u16 expectedRatio; + u16 observedRatio; + u16 trialRatio; bool8 runRandomly:1; bool8 runGiven:1; bool8 runWhen:1; @@ -567,6 +614,7 @@ struct BattleTestRunnerState bool8 runThen:1; bool8 runFinally:1; bool8 runningFinally:1; + bool8 tearDownBattle:1; struct BattleTestData data; u8 *results; u8 checkProgressParameter; @@ -601,6 +649,15 @@ extern struct BattleTestRunnerState *gBattleTestRunnerState; /* Test */ +#define TO_DO_BATTLE_TEST(_name) \ + SINGLE_BATTLE_TEST("TODO: " _name) \ + { \ + TO_DO; \ + GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } \ + WHEN { TURN { } } \ + THEN { EXPECT_TO_DO; } \ + } + #define SINGLE_BATTLE_TEST(_name, ...) \ struct CAT(Result, __LINE__) { MEMBERS(__VA_ARGS__) }; \ static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *, u32, struct BattlePokemon *, struct BattlePokemon *); \ @@ -639,16 +696,28 @@ extern struct BattleTestRunnerState *gBattleTestRunnerState; /* Parametrize */ +#undef PARAMETRIZE // Override test/test.h's implementation. + #define PARAMETRIZE if (gBattleTestRunnerState->parametersCount++ == i) /* Randomly */ -#define PASSES_RANDOMLY(passes, trials) for (; gBattleTestRunnerState->runRandomly; gBattleTestRunnerState->runRandomly = FALSE) Randomly(__LINE__, passes, trials) +#define PASSES_RANDOMLY(passes, trials, ...) for (; gBattleTestRunnerState->runRandomly; gBattleTestRunnerState->runRandomly = FALSE) Randomly(__LINE__, passes, trials, (struct RandomlyContext) { __VA_ARGS__ }) + +struct RandomlyContext +{ + u16 tag; +}; -void Randomly(u32 sourceLine, u32 passes, u32 trials); +void Randomly(u32 sourceLine, u32 passes, u32 trials, struct RandomlyContext); /* Given */ +struct moveWithPP { + u16 moveId; + u8 pp; +}; + #define GIVEN for (; gBattleTestRunnerState->runGiven; gBattleTestRunnerState->runGiven = FALSE) #define RNGSeed(seed) RNGSeed_(__LINE__, seed) @@ -669,6 +738,7 @@ void Randomly(u32 sourceLine, u32 passes, u32 trials); #define Speed(speed) Speed_(__LINE__, speed) #define Item(item) Item_(__LINE__, item) #define Moves(move1, ...) Moves_(__LINE__, (const u16 [MAX_MON_MOVES]) { move1, __VA_ARGS__ }) +#define MovesWithPP(movewithpp1, ...) MovesWithPP_(__LINE__, (struct moveWithPP[MAX_MON_MOVES]) {movewithpp1, __VA_ARGS__}) #define Friendship(friendship) Friendship_(__LINE__, friendship) #define Status1(status1) Status1_(__LINE__, status1) @@ -689,6 +759,7 @@ void SpDefense_(u32 sourceLine, u32 spDefense); void Speed_(u32 sourceLine, u32 speed); void Item_(u32 sourceLine, u32 item); void Moves_(u32 sourceLine, const u16 moves[MAX_MON_MOVES]); +void MovesWithPP_(u32 sourceLine, struct moveWithPP moveWithPP[MAX_MON_MOVES]); void Friendship_(u32 sourceLine, u32 friendship); void Status1_(u32 sourceLine, u32 status1); @@ -708,6 +779,8 @@ enum { TURN_CLOSED, TURN_OPEN, TURN_CLOSING }; #define SWITCH(battler, partyIndex) Switch(__LINE__, battler, partyIndex) #define SKIP_TURN(battler) SkipTurn(__LINE__, battler) #define SEND_OUT(battler, partyIndex) SendOut(__LINE__, battler, partyIndex) +#define USE_ITEM(battler, ...) UseItem(__LINE__, battler, (struct ItemContext) { APPEND_TRUE(__VA_ARGS__) }) +#define WITH_RNG(tag, value) rng: ((struct TurnRNG) { tag, value }) struct MoveContext { @@ -719,6 +792,8 @@ struct MoveContext u16 explicitHit:1; u16 criticalHit:1; u16 explicitCriticalHit:1; + u16 secondaryEffect:1; + u16 explicitSecondaryEffect:1; u16 megaEvolve:1; u16 explicitMegaEvolve:1; // TODO: u8 zMove:1; @@ -726,6 +801,18 @@ struct MoveContext u16 explicitAllowed:1; struct BattlePokemon *target; bool8 explicitTarget; + struct TurnRNG rng; + bool8 explicitRNG; +}; + +struct ItemContext +{ + u16 itemId; + u16 explicitItemId:1; + u16 partyIndex; + u16 explicitPartyIndex:1; + u16 move; + u16 explicitMove:1; }; void OpenTurn(u32 sourceLine); @@ -734,7 +821,7 @@ void Move(u32 sourceLine, struct BattlePokemon *, struct MoveContext); void ForcedMove(u32 sourceLine, struct BattlePokemon *); void Switch(u32 sourceLine, struct BattlePokemon *, u32 partyIndex); void SkipTurn(u32 sourceLine, struct BattlePokemon *); - +void UseItem(u32 sourceLine, struct BattlePokemon *, struct ItemContext); void SendOut(u32 sourceLine, struct BattlePokemon *, u32 partyIndex); /* Scene */ @@ -792,6 +879,7 @@ struct StatusEventContext bool8 freeze:1; bool8 paralysis:1; bool8 badPoison:1; + bool8 frostbite:1; }; void OpenQueueGroup(u32 sourceLine, enum QueueGroupType); @@ -809,7 +897,9 @@ void QueueStatus(u32 sourceLine, struct BattlePokemon *battler, struct StatusEve /* Finally */ -#define FINALLY for (; gBattleTestRunnerState->runFinally; gBattleTestRunnerState->runFinally = FALSE) if ((gBattleTestRunnerState->runningFinally = TRUE)) +#define FINALLY for (ValidateFinally(__LINE__); gBattleTestRunnerState->runFinally; gBattleTestRunnerState->runFinally = FALSE) if ((gBattleTestRunnerState->runningFinally = TRUE)) + +void ValidateFinally(u32 sourceLine); /* Expect */ diff --git a/test/test_runner.c b/test/test_runner.c index 3cb1f7c21379..bfd7b47a56e9 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -4,14 +4,16 @@ #include "gpu_regs.h" #include "main.h" #include "malloc.h" +#include "random.h" #include "test.h" #include "test_runner.h" -#define TIMEOUT_SECONDS 30 +#define TIMEOUT_SECONDS 55 void CB2_TestRunner(void); EWRAM_DATA struct TestRunnerState gTestRunnerState; +EWRAM_DATA struct FunctionTestRunnerState *gFunctionTestRunnerState; void TestRunner_Battle(const struct Test *); @@ -40,7 +42,14 @@ static bool32 PrefixMatch(const char *pattern, const char *string) } } -enum { STATE_INIT, STATE_NEXT_TEST, STATE_REPORT_RESULT, STATE_EXIT }; +enum +{ + STATE_INIT, + STATE_NEXT_TEST, + STATE_RUN_TEST, + STATE_REPORT_RESULT, + STATE_EXIT, +}; void CB2_TestRunner(void) { @@ -60,7 +69,6 @@ void CB2_TestRunner(void) gTestRunnerState.exitCode = 0; gTestRunnerState.tests = 0; gTestRunnerState.passes = 0; - gTestRunnerState.skips = 0; gTestRunnerState.skipFilename = NULL; gTestRunnerState.test = __start_tests - 1; break; @@ -70,20 +78,35 @@ void CB2_TestRunner(void) if (gTestRunnerState.test == __stop_tests) { - MgbaPrintf_("%s%d/%d PASSED\e[0m", gTestRunnerState.exitCode == 0 ? "\e[32m" : "\e[31m", gTestRunnerState.passes, gTestRunnerState.tests); - if (gTestRunnerState.skips) - { - if (gTestRunnerSkipIsFail) - MgbaPrintf_("\e[31m%d SKIPPED\e[0m", gTestRunnerState.skips); - else - MgbaPrintf_("%d SKIPPED", gTestRunnerState.skips); - } gTestRunnerState.state = STATE_EXIT; return; } - if (!PrefixMatch(gTestRunnerArgv, gTestRunnerState.test->name)) + if (gTestRunnerState.test->runner != &gAssumptionsRunner + && !PrefixMatch(gTestRunnerArgv, gTestRunnerState.test->name)) + { return; + } + + MgbaPrintf_(":N%s", gTestRunnerState.test->name); + gTestRunnerState.result = TEST_RESULT_PASS; + gTestRunnerState.expectedResult = TEST_RESULT_PASS; + gTestRunnerState.expectLeaks = FALSE; + if (gTestRunnerHeadless) + gTestRunnerState.timeoutSeconds = TIMEOUT_SECONDS; + else + gTestRunnerState.timeoutSeconds = UINT_MAX; + InitHeap(gHeap, HEAP_SIZE); + EnableInterrupts(INTR_FLAG_TIMER2); + REG_TM2CNT_L = UINT16_MAX - (274 * 60); // Approx. 1 second. + REG_TM2CNT_H = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK; + + // NOTE: Assumes that the compiler interns __FILE__. + if (gTestRunnerState.skipFilename == gTestRunnerState.test->filename) + { + gTestRunnerState.result = TEST_RESULT_ASSUMPTION_FAIL; + return; + } // Greedily assign tests to processes based on estimated cost. // TODO: Make processCosts a min heap. @@ -102,39 +125,26 @@ void CB2_TestRunner(void) } } + if (minCostProcess == gTestRunnerI) + gTestRunnerState.state = STATE_RUN_TEST; + else + gTestRunnerState.state = STATE_NEXT_TEST; + + // XXX: If estimateCost exits only on some processes then + // processCosts will be inconsistent. if (gTestRunnerState.test->runner->estimateCost) gTestRunnerState.processCosts[minCostProcess] += gTestRunnerState.test->runner->estimateCost(gTestRunnerState.test->data); else gTestRunnerState.processCosts[minCostProcess] += 1; - - if (minCostProcess != gTestRunnerI) - return; } - gTestRunnerState.state = STATE_REPORT_RESULT; - gTestRunnerState.result = TEST_RESULT_PASS; - gTestRunnerState.expectedResult = TEST_RESULT_PASS; - if (gTestRunnerHeadless) - gTestRunnerState.timeoutSeconds = TIMEOUT_SECONDS; - else - gTestRunnerState.timeoutSeconds = UINT_MAX; - InitHeap(gHeap, HEAP_SIZE); - EnableInterrupts(INTR_FLAG_TIMER2); - REG_TM2CNT_L = UINT16_MAX - (274 * 60); // Approx. 1 second. - REG_TM2CNT_H = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK; + break; - // NOTE: Assumes that the compiler interns __FILE__. - if (gTestRunnerState.skipFilename == gTestRunnerState.test->filename) - { - gTestRunnerState.result = TEST_RESULT_SKIP; - } - else - { - MgbaPrintf_(":N%s", gTestRunnerState.test->name); - if (gTestRunnerState.test->runner->setUp) - gTestRunnerState.test->runner->setUp(gTestRunnerState.test->data); - gTestRunnerState.test->runner->run(gTestRunnerState.test->data); - } + case STATE_RUN_TEST: + gTestRunnerState.state = STATE_REPORT_RESULT; + if (gTestRunnerState.test->runner->setUp) + gTestRunnerState.test->runner->setUp(gTestRunnerState.test->data); + gTestRunnerState.test->runner->run(gTestRunnerState.test->data); break; case STATE_REPORT_RESULT: @@ -145,17 +155,31 @@ void CB2_TestRunner(void) if (gTestRunnerState.test->runner->tearDown) gTestRunnerState.test->runner->tearDown(gTestRunnerState.test->data); + if (!gTestRunnerState.expectLeaks) + { + const struct MemBlock *head = HeapHead(); + const struct MemBlock *block = head; + do + { + if (block->allocated) + { + const char *location = MemBlockLocation(block); + if (location) + MgbaPrintf_("%s: %d bytes not freed", location, block->size); + else + MgbaPrintf_(": %d bytes not freed", block->size); + gTestRunnerState.result = TEST_RESULT_FAIL; + } + block = block->next; + } + while (block != head); + } + if (gTestRunnerState.test->runner == &gAssumptionsRunner) { if (gTestRunnerState.result != TEST_RESULT_PASS) gTestRunnerState.skipFilename = gTestRunnerState.test->filename; } - else if (gTestRunnerState.result == TEST_RESULT_SKIP) - { - gTestRunnerState.skips++; - if (gTestRunnerSkipIsFail) - gTestRunnerState.exitCode = 1; - } else { const char *color; @@ -169,7 +193,7 @@ void CB2_TestRunner(void) color = "\e[32m"; MgbaPrintf_(":N%s", gTestRunnerState.test->name); } - else if (gTestRunnerState.result != TEST_RESULT_SKIP || gTestRunnerSkipIsFail) + else if (gTestRunnerState.result != TEST_RESULT_ASSUMPTION_FAIL || gTestRunnerSkipIsFail) { gTestRunnerState.exitCode = 1; color = "\e[31m"; @@ -198,15 +222,41 @@ void CB2_TestRunner(void) result = "FAIL"; } break; - case TEST_RESULT_PASS: result = "PASS"; break; - case TEST_RESULT_SKIP: result = "SKIP"; break; - case TEST_RESULT_INVALID: result = "INVALID"; break; - case TEST_RESULT_ERROR: result = "ERROR"; break; - case TEST_RESULT_TIMEOUT: result = "TIMEOUT"; break; - default: result = "UNKNOWN"; break; + case TEST_RESULT_PASS: + result = "PASS"; + break; + case TEST_RESULT_ASSUMPTION_FAIL: + result = "ASSUMPTION_FAIL"; + color = "\e[33m"; + break; + case TEST_RESULT_TODO: + result = "TO_DO"; + color = "\e[33m"; + break; + case TEST_RESULT_INVALID: + result = "INVALID"; + break; + case TEST_RESULT_ERROR: + result = "ERROR"; + break; + case TEST_RESULT_TIMEOUT: + result = "TIMEOUT"; + break; + default: + result = "UNKNOWN"; + break; } - MgbaPrintf_(":R%s%s\e[0m", color, result); + if (gTestRunnerState.result == TEST_RESULT_PASS) + MgbaPrintf_(":P%s%s\e[0m", color, result); + else if (gTestRunnerState.result == TEST_RESULT_ASSUMPTION_FAIL) + MgbaPrintf_(":A%s%s\e[0m", color, result); + else if (gTestRunnerState.result == TEST_RESULT_TODO) + MgbaPrintf_(":T%s%s\e[0m", color, result); + else if (gTestRunnerState.expectedResult == gTestRunnerState.result) + MgbaPrintf_(":K%s%s\e[0m", color, result); + else + MgbaPrintf_(":F%s%s\e[0m", color, result); } break; @@ -222,6 +272,43 @@ void Test_ExpectedResult(enum TestResult result) gTestRunnerState.expectedResult = result; } +void Test_ExpectLeaks(bool32 expectLeaks) +{ + gTestRunnerState.expectLeaks = expectLeaks; +} + +static void FunctionTest_SetUp(void *data) +{ + (void)data; + gFunctionTestRunnerState = AllocZeroed(sizeof(*gFunctionTestRunnerState)); + SeedRng(0); +} + +static void FunctionTest_Run(void *data) +{ + void (*function)(void) = data; + do + { + if (gFunctionTestRunnerState->parameters) + MgbaPrintf_(":N%s %d/%d", gTestRunnerState.test->name, gFunctionTestRunnerState->runParameter + 1, gFunctionTestRunnerState->parameters); + gFunctionTestRunnerState->parameters = 0; + function(); + } while (++gFunctionTestRunnerState->runParameter < gFunctionTestRunnerState->parameters); +} + +static void FunctionTest_TearDown(void *data) +{ + (void)data; + FREE_AND_SET_NULL(gFunctionTestRunnerState); +} + +const struct TestRunner gFunctionTestRunner = +{ + .setUp = FunctionTest_SetUp, + .run = FunctionTest_Run, + .tearDown = FunctionTest_TearDown, +}; + static void Assumptions_Run(void *data) { void (*function)(void) = data; @@ -271,6 +358,8 @@ static void Intr_Timer2(void) } else { + if (gTestRunnerState.state == STATE_RUN_TEST) + gTestRunnerState.state = STATE_REPORT_RESULT; gTestRunnerState.result = TEST_RESULT_TIMEOUT; ReinitCallbacks(); IRQ_LR = ((uintptr_t)JumpToAgbMainLoop & ~1) + 4; @@ -282,13 +371,17 @@ void Test_ExitWithResult(enum TestResult result, const char *fmt, ...) { gTestRunnerState.result = result; ReinitCallbacks(); - if (gTestRunnerState.test->runner->handleExitWithResult - && !gTestRunnerState.test->runner->handleExitWithResult(gTestRunnerState.test->data, result) - && gTestRunnerState.result != gTestRunnerState.expectedResult) + if (gTestRunnerState.state == STATE_REPORT_RESULT + && gTestRunnerState.test->runner->handleExitWithResult) { - va_list va; - va_start(va, fmt); - MgbaVPrintf_(fmt, va); + if (!gTestRunnerState.test->runner->handleExitWithResult(gTestRunnerState.test->data, result) + && gTestRunnerState.result != gTestRunnerState.expectedResult) + { + va_list va; + va_start(va, fmt); + MgbaVPrintf_(fmt, va); + va_end(va); + } } JumpToAgbMainLoop(); } diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index e40ed3e50b88..d1feaee02a91 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -3,6 +3,7 @@ #include "battle_anim.h" #include "battle_controllers.h" #include "characters.h" +#include "item_menu.h" #include "main.h" #include "malloc.h" #include "random.h" @@ -15,26 +16,10 @@ #define STATE gBattleTestRunnerState #define DATA gBattleTestRunnerState->data -/* RNG seeds for controlling the first move of the turn. - * Found via brute force. */ +#define RNG_SEED_DEFAULT 0x00000000 -/* Default seed, triggers most things. - * The 1st roll % 100 is <= 29, to make 30%+ accuracycheck pass. - * The 2nd roll is not a critical hit at the regular crit stage. - * The 3rd roll is consumed by damagecalc. - * The 4th roll is consumed by adjustdamage. - * The 5th roll % 100 is <= 9, to make 10%+ seteffectwithchance pass - * and % 3 is == 0, to make Poison Point and other 1/3s pass. */ -#define RNG_SEED_DEFAULT 0x000002BE - -/* Causes the first attack to critical hit if B_CRIT_CHANCE >= GEN_6. - * The 2nd roll % 24 == 0 to be a critical hit at any stage. - * The other rolls match RNG_SEED_DEFAULT. */ -#define RNG_SEED_CRITICAL_HIT 0x0000A9F4 - -/* Causes the first attack to miss if possible. - * The 1st roll % 100 is 99, to make 99%- accuracycheck fail. */ -#define RNG_SEED_MISS 0x00000074 +#undef Q_4_12 +#define Q_4_12(n) (s32)((n) * 4096) EWRAM_DATA struct BattleTestRunnerState *gBattleTestRunnerState = NULL; @@ -129,12 +114,13 @@ static u32 BattleTest_EstimateCost(void *data) if (!STATE) return 0; STATE->runRandomly = TRUE; - DATA.recordedBattle.rngSeed = RNG_SEED_DEFAULT; InvokeTestFunction(test); cost = 1; if (STATE->parametersCount != 0) cost *= STATE->parametersCount; - if (STATE->trials != 0) + if (STATE->trials == 1) + cost *= 3; + else if (STATE->trials > 1) cost *= STATE->trials; FREE_AND_SET_NULL(STATE); return cost; @@ -148,6 +134,8 @@ static void BattleTest_SetUp(void *data) Test_ExitWithResult(TEST_RESULT_ERROR, "OOM: STATE = AllocZerod(%d)", sizeof(*STATE)); InvokeTestFunction(test); STATE->parameters = STATE->parametersCount; + if (STATE->parametersCount == 0 && test->resultsSize > 0) + Test_ExitWithResult(TEST_RESULT_INVALID, "results without PARAMETRIZE"); STATE->results = AllocZeroed(test->resultsSize * STATE->parameters); if (!STATE->results) Test_ExitWithResult(TEST_RESULT_ERROR, "OOM: STATE->results = AllocZerod(%d)", sizeof(test->resultsSize * STATE->parameters)); @@ -162,6 +150,28 @@ static void BattleTest_SetUp(void *data) } } +static void PrintTestName(void) +{ + if (STATE->trials && STATE->parameters) + { + if (STATE->trials == 1) + MgbaPrintf_(":N%s %d/%d (%d/?)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1); + else + MgbaPrintf_(":N%s %d/%d (%d/%d)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1, STATE->trials); + } + else if (STATE->trials) + { + if (STATE->trials == 1) + MgbaPrintf_(":N%s (%d/?)", gTestRunnerState.test->name, STATE->runTrial + 1); + else + MgbaPrintf_(":N%s (%d/%d)", gTestRunnerState.test->name, STATE->runTrial + 1, STATE->trials); + } + else if (STATE->parameters) + { + MgbaPrintf_(":N%s %d/%d", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters); + } +} + // This does not take into account priority, statuses, or any other // modifiers. static void SetImplicitSpeeds(void) @@ -280,12 +290,149 @@ static void BattleTest_Run(void *data) STATE->checkProgressTrial = 0; STATE->checkProgressTurn = 0; - if (STATE->trials && STATE->parameters) - MgbaPrintf_(":N%s %d/%d (%d/%d)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1, STATE->trials); - else if (STATE->trials) - MgbaPrintf_(":N%s (%d/%d)", gTestRunnerState.test->name, STATE->runTrial + 1, STATE->trials); - else if (STATE->parameters) - MgbaPrintf_(":N%s %d/%d", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters); + PrintTestName(); +} + +u32 RandomUniform(enum RandomTag tag, u32 lo, u32 hi) +{ + const struct BattlerTurn *turn = NULL; + u32 default_ = hi; + + if (gCurrentTurnActionNumber < gBattlersCount) + { + u32 battlerId = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + turn = &DATA.battleRecordTurns[gBattleResults.battleTurnCounter][battlerId]; + } + + if (turn && turn->rng.tag == tag) + { + default_ = turn->rng.value; + } + + if (tag == STATE->rngTag) + { + u32 n = hi - lo + 1; + if (STATE->trials == 1) + { + STATE->trials = n; + PrintTestName(); + } + else if (STATE->trials != n) + { + Test_ExitWithResult(TEST_RESULT_ERROR, "RandomUniform called with inconsistent trials %d and %d", STATE->trials, n); + } + STATE->trialRatio = Q_4_12(1) / n; + return STATE->runTrial + lo; + } + + return default_; +} + +u32 RandomWeightedArray(enum RandomTag tag, u32 sum, u32 n, const u8 *weights) +{ + const struct BattlerTurn *turn = NULL; + u32 default_ = n-1; + + if (gCurrentTurnActionNumber < gBattlersCount) + { + u32 battlerId = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + turn = &DATA.battleRecordTurns[gBattleResults.battleTurnCounter][battlerId]; + } + + if (turn && turn->rng.tag == tag) + { + default_ = turn->rng.value; + } + else + { + switch (tag) + { + case RNG_ACCURACY: + ASSUME(n == 2); + if (turn && turn->hit) + return turn->hit - 1; + default_ = TRUE; + break; + + case RNG_CRITICAL_HIT: + ASSUME(n == 2); + if (turn && turn->criticalHit) + return turn->criticalHit - 1; + default_ = FALSE; + break; + + case RNG_SECONDARY_EFFECT: + ASSUME(n == 2); + if (turn && turn->secondaryEffect) + return turn->secondaryEffect - 1; + default_ = TRUE; + break; + } + } + + if (tag == STATE->rngTag) + { + if (STATE->trials == 1) + { + STATE->trials = n; + PrintTestName(); + } + else if (STATE->trials != n) + { + Test_ExitWithResult(TEST_RESULT_ERROR, "RandomWeighted called with inconsistent trials %d and %d", STATE->trials, n); + } + // TODO: Detect inconsistent sum. + STATE->trialRatio = Q_4_12(weights[STATE->runTrial]) / sum; + return STATE->runTrial; + } + + return default_; +} + +const void *RandomElementArray(enum RandomTag tag, const void *array, size_t size, size_t count) +{ + const struct BattlerTurn *turn = NULL; + u32 index = count-1; + + if (gCurrentTurnActionNumber < gBattlersCount) + { + u32 battlerId = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + turn = &DATA.battleRecordTurns[gBattleResults.battleTurnCounter][battlerId]; + } + + if (turn && turn->rng.tag == tag) + { + u32 element = 0; + for (index = 0; index < count; index++) + { + memcpy(&element, (const u8 *)array + size * index, size); + if (element == turn->rng.value) + break; + } + if (index == count) + { + // TODO: Incorporate the line number. + const char *filename = gTestRunnerState.test->filename; + Test_ExitWithResult(TEST_RESULT_ERROR, "%s: RandomElement illegal value requested: %d", filename, turn->rng.value); + } + } + + if (tag == STATE->rngTag) + { + if (STATE->trials == 1) + { + STATE->trials = count; + PrintTestName(); + } + else if (STATE->trials != count) + { + Test_ExitWithResult(TEST_RESULT_ERROR, "RandomElement called with inconsistent trials %d and %d", STATE->trials, count); + } + STATE->trialRatio = Q_4_12(1) / count; + index = STATE->runTrial; + } + + return (const u8 *)array + size * index; } static s32 TryAbilityPopUp(s32 i, s32 n, u32 battlerId, u32 ability) @@ -711,42 +858,36 @@ static void CB2_BattleTest_NextTrial(void) SetMainCallback2(CB2_BattleTest_NextParameter); + switch (gTestRunnerState.result) + { + case TEST_RESULT_FAIL: + break; + case TEST_RESULT_PASS: + STATE->observedRatio += STATE->trialRatio; + break; + default: + return; + } + if (STATE->rngTag) + STATE->trialRatio = 0; + if (++STATE->runTrial < STATE->trials) { - switch (gTestRunnerState.result) - { - case TEST_RESULT_FAIL: - break; - case TEST_RESULT_PASS: - STATE->observedPasses++; - break; - case TEST_RESULT_SKIP: - STATE->skippedTrials++; - if (STATE->skippedTrials > STATE->trials / 4) - Test_ExitWithResult(TEST_RESULT_INVALID, "25%% of the trials were SKIPed"); - break; - default: - return; - } - if (STATE->parameters) - MgbaPrintf_(":N%s %d/%d (%d/%d)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1, STATE->trials); - else - MgbaPrintf_(":N%s (%d/%d)", gTestRunnerState.test->name, STATE->runTrial + 1, STATE->trials); - gTestRunnerState.result = TEST_RESULT_PASS; + PrintTestName(); + gTestRunnerState.result = TEST_RESULT_PASS; DATA.recordedBattle.rngSeed = ISO_RANDOMIZE1(STATE->runTrial); DATA.queuedEvent = 0; DATA.lastActionTurn = 0; - DATA.nextRNGTurn = 0; SetVariablesForRecordedBattle(&DATA.recordedBattle); SetMainCallback2(CB2_InitBattle); } else { - // This is a tolerance of +/- 4%. - if (abs(STATE->observedPasses - STATE->expectedPasses) <= 2) + // This is a tolerance of +/- ~2%. + if (abs(STATE->observedRatio - STATE->expectedRatio) <= Q_4_12(0.02)) gTestRunnerState.result = TEST_RESULT_PASS; else - Test_ExitWithResult(TEST_RESULT_FAIL, "Expected %d/%d passes, observed %d/%d", STATE->expectedPasses, STATE->trials, STATE->observedPasses, STATE->trials); + Test_ExitWithResult(TEST_RESULT_FAIL, "Expected %q passes/successes, observed %q", STATE->expectedRatio, STATE->observedRatio); } } @@ -754,6 +895,15 @@ static void BattleTest_TearDown(void *data) { if (STATE) { + // Free resources that aren't cleaned up when the battle was + // aborted unexpectedly. + if (STATE->tearDownBattle) + { + FreeMonSpritesGfx(); + FreeBattleSpritesData(); + FreeBattleResources(); + FreeAllWindowBuffers(); + } FREE_AND_SET_NULL(STATE->results); FREE_AND_SET_NULL(STATE); } @@ -773,7 +923,8 @@ static bool32 BattleTest_CheckProgress(void *data) static bool32 BattleTest_HandleExitWithResult(void *data, enum TestResult result) { - if (result != TEST_RESULT_INVALID + if (result != TEST_RESULT_ASSUMPTION_FAIL + && result != TEST_RESULT_INVALID && result != TEST_RESULT_ERROR && result != TEST_RESULT_TIMEOUT && STATE->runTrial < STATE->trials) @@ -783,20 +934,32 @@ static bool32 BattleTest_HandleExitWithResult(void *data, enum TestResult result } else { + STATE->tearDownBattle = TRUE; return FALSE; } } -void Randomly(u32 sourceLine, u32 passes, u32 trials) +void Randomly(u32 sourceLine, u32 passes, u32 trials, struct RandomlyContext ctx) { - INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); - // This is a precision of 2%. - STATE->trials = 50; - STATE->expectedPasses = STATE->trials * passes / trials; - STATE->observedPasses = 0; - STATE->skippedTrials = 0; + const struct BattleTest *test = gTestRunnerState.test->data; + INVALID_IF(test->resultsSize > 0, "PASSES_RANDOMLY is incompatible with results"); + INVALID_IF(passes > trials, "%d passes specified, but only %d trials", passes, trials); + STATE->rngTag = ctx.tag; STATE->runTrial = 0; - DATA.recordedBattle.rngSeed = 0; + STATE->expectedRatio = Q_4_12(passes) / trials; + STATE->observedRatio = 0; + if (STATE->rngTag) + { + STATE->trials = 1; + STATE->trialRatio = Q_4_12(1); + } + else + { + INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); + STATE->trials = 50; + STATE->trialRatio = Q_4_12(1) / STATE->trials; + DATA.recordedBattle.rngSeed = 0; + } } void RNGSeed_(u32 sourceLine, u32 seed) @@ -933,9 +1096,12 @@ void Ability_(u32 sourceLine, u32 ability) void Level_(u32 sourceLine, u32 level) { // TODO: Preserve any explicitly-set stats. + u32 species = GetMonData(DATA.currentMon, MON_DATA_SPECIES); INVALID_IF(!DATA.currentMon, "Level outside of PLAYER/OPPONENT"); INVALID_IF(level == 0 || level > MAX_LEVEL, "Illegal level: %d", level); SetMonData(DATA.currentMon, MON_DATA_LEVEL, &level); + SetMonData(DATA.currentMon, MON_DATA_EXP, &gExperienceTables[gSpeciesInfo[species].growthRate][level]); + CalculateMonStats(DATA.currentMon); } void MaxHP_(u32 sourceLine, u32 maxHP) @@ -1012,6 +1178,21 @@ void Moves_(u32 sourceLine, const u16 moves[MAX_MON_MOVES]) DATA.explicitMoves[DATA.currentSide] |= 1 << DATA.currentPartyIndex; } +void MovesWithPP_(u32 sourceLine, struct moveWithPP moveWithPP[MAX_MON_MOVES]) +{ + s32 i; + INVALID_IF(!DATA.currentMon, "Moves outside of PLAYER/OPPONENT"); + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moveWithPP[i].moveId == MOVE_NONE) + break; + INVALID_IF(moveWithPP[i].moveId >= MOVES_COUNT, "Illegal move: %d", &moveWithPP[i].moveId); + SetMonData(DATA.currentMon, MON_DATA_MOVE1 + i, &moveWithPP[i].moveId); + SetMonData(DATA.currentMon, MON_DATA_PP1 + i, &moveWithPP[i].pp); + } + DATA.explicitMoves[DATA.currentSide] |= 1 << DATA.currentPartyIndex; +} + void Friendship_(u32 sourceLine, u32 friendship) { INVALID_IF(!DATA.currentMon, "Friendship outside of PLAYER/OPPONENT"); @@ -1025,6 +1206,31 @@ void Status1_(u32 sourceLine, u32 status1) SetMonData(DATA.currentMon, MON_DATA_STATUS, &status1); } +static const char *const sBattlerIdentifiersSingles[] = +{ + "player", + "opponent", +}; + +static const char *const sBattlerIdentifiersDoubles[] = +{ + "playerLeft", + "opponentLeft", + "playerRight", + "opponentRight", +}; + +static const char *BattlerIdentifier(s32 battlerId) +{ + const struct BattleTest *test = gTestRunnerState.test->data; + switch (test->type) + { + case BATTLE_TEST_SINGLES: return sBattlerIdentifiersSingles[battlerId]; + case BATTLE_TEST_DOUBLES: return sBattlerIdentifiersDoubles[battlerId]; + } + return ""; +} + static void PushBattlerAction(u32 sourceLine, s32 battlerId, u32 actionType, u32 byte) { u32 recordIndex = DATA.recordIndexes[battlerId]++; @@ -1035,18 +1241,8 @@ static void PushBattlerAction(u32 sourceLine, s32 battlerId, u32 actionType, u32 DATA.recordedBattle.battleRecord[battlerId][recordIndex] = byte; } -void BattleTest_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType) +void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType) { - // TODO: Support explicit seeds for each turn? - if (DATA.nextRNGTurn == gBattleResults.battleTurnCounter - && (DATA.recordedBattle.rngSeed == RNG_SEED_DEFAULT - || DATA.recordedBattle.rngSeed == RNG_SEED_CRITICAL_HIT - || DATA.recordedBattle.rngSeed == RNG_SEED_MISS)) - { - gRngValue = DATA.recordedBattle.rngSeed; - DATA.nextRNGTurn++; - } - // An illegal move choice will cause the battle to request a new // move slot and target. This detects the move slot. if (actionType == RECORDED_MOVE_SLOT @@ -1088,6 +1284,9 @@ void BattleTest_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 case B_ACTION_SWITCH: actualMacro = "SWITCH"; break; + case B_ACTION_USE_ITEM: + actualMacro = "USE_ITEM"; + break; } break; case RECORDED_PARTY_INDEX: @@ -1122,10 +1321,11 @@ void BattleTest_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 void OpenTurn(u32 sourceLine) { INVALID_IF(DATA.turnState != TURN_CLOSED, "Nested TURN"); + if (DATA.turns == MAX_TURNS) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: TURN exceeds MAX_TURNS", gTestRunnerState.test->filename, sourceLine); DATA.turnState = TURN_OPEN; DATA.actionBattlers = 0x00; DATA.moveBattlers = 0x00; - DATA.hasRNGActions = FALSE; } static void SetSlowerThan(s32 battlerId) @@ -1195,7 +1395,6 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) else if (moveId == MOVE_NONE) { INVALID_IF(DATA.explicitMoves[battlerId & BIT_SIDE] & (1 << DATA.currentMonIndexes[battlerId]), "Missing explicit %S", gMoveNames[ctx.move]); - INVALID_IF(i == MAX_MON_MOVES, "Too many different moves"); SetMonData(mon, MON_DATA_MOVE1 + i, &ctx.move); SetMonData(DATA.currentMon, MON_DATA_PP1 + i, &gBattleMoves[ctx.move].pp); moveSlot = i; @@ -1203,6 +1402,7 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) break; } } + INVALID_IF(i == MAX_MON_MOVES, "Too many different moves for %s", BattlerIdentifier(battlerId)); } else if (ctx.explicitMoveSlot) { @@ -1227,6 +1427,7 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) const struct BattleMove *move = &gBattleMoves[moveId]; if (move->target == MOVE_TARGET_RANDOM || move->target == MOVE_TARGET_BOTH + || move->target == MOVE_TARGET_DEPENDS || move->target == MOVE_TARGET_FOES_AND_ALLY || move->target == MOVE_TARGET_OPPONENTS_FIELD || move->target == MOVE_TARGET_ALL_BATTLERS) @@ -1253,21 +1454,14 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) } } - if (ctx.explicitHit && !ctx.hit) - { - if (DATA.hasRNGActions != 0) - Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: hit only supported on the first move", gTestRunnerState.test->filename, sourceLine); - INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); - DATA.recordedBattle.rngSeed = RNG_SEED_MISS; - } - - if (ctx.explicitCriticalHit && ctx.criticalHit) - { - if (DATA.hasRNGActions != 0) - Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: criticalHit only supported on the first move", gTestRunnerState.test->filename, sourceLine); - INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); - DATA.recordedBattle.rngSeed = RNG_SEED_CRITICAL_HIT; - } + if (ctx.explicitHit) + DATA.battleRecordTurns[DATA.turns][battlerId].hit = 1 + ctx.hit; + if (ctx.explicitCriticalHit) + DATA.battleRecordTurns[DATA.turns][battlerId].criticalHit = 1 + ctx.criticalHit; + if (ctx.explicitSecondaryEffect) + DATA.battleRecordTurns[DATA.turns][battlerId].secondaryEffect = 1 + ctx.secondaryEffect; + if (ctx.explicitRNG) + DATA.battleRecordTurns[DATA.turns][battlerId].rng = ctx.rng; if (!(DATA.actionBattlers & (1 << battlerId))) { @@ -1288,14 +1482,6 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) DATA.actionBattlers |= 1 << battlerId; DATA.moveBattlers |= 1 << battlerId; } - - // WARNING: Approximation. The move could still cause the RNG to - // advance. - if (gBattleMoves[moveId].accuracy != 0 - || gBattleMoves[moveId].split != SPLIT_STATUS) - { - DATA.hasRNGActions = TRUE; - } } void ForcedMove(u32 sourceLine, struct BattlePokemon *battler) @@ -1358,6 +1544,42 @@ void SendOut(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) DATA.currentMonIndexes[battlerId] = partyIndex; } +void UseItem(u32 sourceLine, struct BattlePokemon *battler, struct ItemContext ctx) +{ + s32 i; + s32 battlerId = battler - gBattleMons; + bool32 requirePartyIndex = ItemId_GetType(ctx.itemId) == ITEM_USE_PARTY_MENU || ItemId_GetType(ctx.itemId) == ITEM_USE_PARTY_MENU_MOVES; + // Check general bad use. + INVALID_IF(DATA.turnState == TURN_CLOSED, "USE_ITEM outside TURN"); + INVALID_IF(DATA.actionBattlers & (1 << battlerId), "Multiple battler actions"); + INVALID_IF(ctx.itemId >= ITEMS_COUNT, "Illegal item: %d", ctx.itemId); + // Check party menu items. + INVALID_IF(requirePartyIndex && !ctx.explicitPartyIndex, "%S requires explicit party index", ItemId_GetName(ctx.itemId)); + INVALID_IF(requirePartyIndex && ctx.partyIndex >= ((battlerId & BIT_SIDE) == B_SIDE_PLAYER ? DATA.playerPartySize : DATA.opponentPartySize), \ + "USE_ITEM to invalid party index"); + // Check move slot items. + if (ItemId_GetType(ctx.itemId) == ITEM_USE_PARTY_MENU_MOVES) + { + INVALID_IF(!ctx.explicitMove, "%S requires an explicit move", ItemId_GetName(ctx.itemId)); + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (GetMonData(CurrentMon(battlerId), MON_DATA_MOVE1 + i, NULL) == ctx.move) + break; + } + INVALID_IF(i == MAX_MON_MOVES, "USE_ITEM on invalid move: %d", ctx.move); + } + else + { + i = 0; + } + PushBattlerAction(sourceLine, battlerId, RECORDED_ACTION_TYPE, B_ACTION_USE_ITEM); + PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_ID, (ctx.itemId >> 8) & 0xFF); + PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_ID, ctx.itemId & 0xFF); + PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_TARGET, ctx.partyIndex); + PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_MOVE, i); + DATA.actionBattlers |= 1 << battlerId; +} + static const char *const sQueueGroupTypeMacros[] = { [QUEUE_GROUP_NONE] = NULL, @@ -1505,7 +1727,6 @@ void QueueMessage(u32 sourceLine, const u8 *pattern) }; } - void QueueStatus(u32 sourceLine, struct BattlePokemon *battler, struct StatusEventContext ctx) { s32 battlerId = battler - gBattleMons; @@ -1529,6 +1750,8 @@ void QueueStatus(u32 sourceLine, struct BattlePokemon *battler, struct StatusEve mask = STATUS1_PARALYSIS; else if (ctx.badPoison) mask = STATUS1_TOXIC_POISON; + else if (ctx.frostbite) + mask = STATUS1_FROSTBITE; else mask = ctx.status1; @@ -1543,3 +1766,11 @@ void QueueStatus(u32 sourceLine, struct BattlePokemon *battler, struct StatusEve }}, }; } + +void ValidateFinally(u32 sourceLine) +{ + // Defer this error until after estimating the cost. + if (STATE->results == NULL) + return; + INVALID_IF(STATE->parametersCount == 0, "FINALLY without PARAMETRIZE"); +} diff --git a/test/trainer_control.c b/test/trainer_control.c new file mode 100644 index 000000000000..2a21dcdf61a7 --- /dev/null +++ b/test/trainer_control.c @@ -0,0 +1,140 @@ +#include "global.h" +#include "test.h" +#include "battle.h" +#include "battle_main.h" +#include "data.h" +#include "malloc.h" +#include "string_util.h" +#include "constants/item.h" +#include "constants/abilities.h" +#include "constants/trainers.h" +#include "constants/battle.h" + + +static const struct TrainerMonCustomized sTestParty1[] = +{ + { + .species = SPECIES_WOBBUFFET, + .ball = ITEM_MASTER_BALL, + .ability = ABILITY_TELEPATHY, + .friendship = 42, + .gender = TRAINER_MON_FEMALE, + .heldItem = ITEM_ASSAULT_VEST, + .isShiny = TRUE, + .iv = TRAINER_PARTY_IVS(25,26,27,28,29,30), + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 4, 0), + .lvl = 67, + .moves = {MOVE_AIR_SLASH, MOVE_BARRIER, MOVE_SOLAR_BEAM, MOVE_EXPLOSION}, + .nature = TRAINER_PARTY_NATURE(NATURE_HASTY), + .nickname = COMPOUND_STRING("Bubbles") + }, + { + .species = SPECIES_WOBBUFFET, + .ability = ABILITY_SHADOW_TAG, + .lvl = 5, + }, +}; + +static const struct TrainerMonNoItemDefaultMoves sTestParty2[] = +{ + { + .species = SPECIES_WOBBUFFET, + .lvl = 5, + }, + { + .species = SPECIES_WOBBUFFET, + .lvl = 6, + } +}; + +static const struct Trainer sTestTrainer1 = +{ + .trainerName = _("Test1"), + .party = EVERYTHING_CUSTOMIZED(sTestParty1), +}; + +static const struct Trainer sTestTrainer2 = +{ + .trainerName = _("Test2"), + .party = NO_ITEM_DEFAULT_MOVES(sTestParty2), +}; + +TEST("CreateNPCTrainerPartyForTrainer generates customized Pokémon") +{ + struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon)); + u8 nickBuffer[20]; + CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainer1, TRUE, BATTLE_TYPE_TRAINER); + EXPECT(IsMonShiny(&testParty[0])); + EXPECT(!IsMonShiny(&testParty[1])); + + EXPECT(GetMonData(&testParty[0], MON_DATA_POKEBALL, 0) == ITEM_MASTER_BALL); + EXPECT(GetMonData(&testParty[1], MON_DATA_POKEBALL, 0) == ITEM_POKE_BALL); + + EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES, 0) == SPECIES_WOBBUFFET); + EXPECT(GetMonData(&testParty[1], MON_DATA_SPECIES, 0) == SPECIES_WOBBUFFET); + + EXPECT(GetMonAbility(&testParty[0]) == ABILITY_TELEPATHY); + EXPECT(GetMonAbility(&testParty[1]) == ABILITY_SHADOW_TAG); + + EXPECT(GetMonData(&testParty[0], MON_DATA_FRIENDSHIP, 0) == 42); + EXPECT(GetMonData(&testParty[1], MON_DATA_FRIENDSHIP, 0) == 0); + + EXPECT(GetMonData(&testParty[0], MON_DATA_HELD_ITEM, 0) == ITEM_ASSAULT_VEST); + EXPECT(GetMonData(&testParty[1], MON_DATA_HELD_ITEM, 0) == ITEM_NONE); + + EXPECT(GetMonData(&testParty[0], MON_DATA_HP_IV, 0) == 25); + EXPECT(GetMonData(&testParty[0], MON_DATA_ATK_IV, 0) == 26); + EXPECT(GetMonData(&testParty[0], MON_DATA_DEF_IV, 0) == 27); + EXPECT(GetMonData(&testParty[0], MON_DATA_SPEED_IV, 0) == 28); + EXPECT(GetMonData(&testParty[0], MON_DATA_SPATK_IV, 0) == 29); + EXPECT(GetMonData(&testParty[0], MON_DATA_SPDEF_IV, 0) == 30); + + EXPECT(GetMonData(&testParty[1], MON_DATA_HP_IV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_ATK_IV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_DEF_IV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_SPEED_IV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_SPATK_IV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_SPDEF_IV, 0) == 0); + + EXPECT(GetMonData(&testParty[0], MON_DATA_HP_EV, 0) == 252); + EXPECT(GetMonData(&testParty[0], MON_DATA_ATK_EV, 0) == 0); + EXPECT(GetMonData(&testParty[0], MON_DATA_DEF_EV, 0) == 0); + EXPECT(GetMonData(&testParty[0], MON_DATA_SPEED_EV, 0) == 252); + EXPECT(GetMonData(&testParty[0], MON_DATA_SPATK_EV, 0) == 4); + EXPECT(GetMonData(&testParty[0], MON_DATA_SPDEF_EV, 0) == 0); + + EXPECT(GetMonData(&testParty[1], MON_DATA_HP_EV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_ATK_EV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_DEF_EV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_SPEED_EV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_SPATK_EV, 0) == 0); + EXPECT(GetMonData(&testParty[1], MON_DATA_SPDEF_EV, 0) == 0); + + EXPECT(GetMonData(&testParty[0], MON_DATA_LEVEL, 0) == 67); + EXPECT(GetMonData(&testParty[1], MON_DATA_LEVEL, 0) == 5); + + EXPECT(GetMonData(&testParty[0], MON_DATA_MOVE1, 0) == MOVE_AIR_SLASH); + EXPECT(GetMonData(&testParty[0], MON_DATA_MOVE2, 0) == MOVE_BARRIER); + EXPECT(GetMonData(&testParty[0], MON_DATA_MOVE3, 0) == MOVE_SOLAR_BEAM); + EXPECT(GetMonData(&testParty[0], MON_DATA_MOVE4, 0) == MOVE_EXPLOSION); + + GetMonData(&testParty[0], MON_DATA_NICKNAME, nickBuffer); + EXPECT(StringCompare(nickBuffer, COMPOUND_STRING("Bubbles")) == 0); + + GetMonData(&testParty[1], MON_DATA_NICKNAME, nickBuffer); + EXPECT(StringCompare(nickBuffer, COMPOUND_STRING("Wobbuffet")) == 0); + + EXPECT(GetGenderFromSpeciesAndPersonality(GetMonData(&testParty[0], MON_DATA_SPECIES, 0), testParty[0].box.personality) == MON_FEMALE); + + EXPECT(GetNature(&testParty[0]) == NATURE_HASTY); + + Free(testParty); +} + +TEST("CreateNPCTrainerPartyForTrainer generates different personalities for different mons") +{ + struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon)); + CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainer2, TRUE, BATTLE_TYPE_TRAINER); + EXPECT(testParty[0].box.personality != testParty[1].box.personality); + Free(testParty); +} diff --git a/test/weather_snow.c b/test/weather_snow.c new file mode 100644 index 000000000000..d313c921bbe5 --- /dev/null +++ b/test/weather_snow.c @@ -0,0 +1,157 @@ +#include "global.h" +#include "test_battle.h" + +#define TEST_HP 1 +#define MAX_HP 400 + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SNOWSCAPE].effect == EFFECT_SNOWSCAPE); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_ICE && gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_ICE); + ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE || gSpeciesInfo[SPECIES_GLALIE].types[1] == TYPE_ICE); +} + +SINGLE_BATTLE_TEST("Snow increases the defense of Ice types by 50 %", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + PARAMETRIZE{ move = MOVE_CELEBRATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GLALIE); + } WHEN { + TURN { MOVE(opponent, move); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Snow turns Weather Ball to an Ice-type move and doubles its power", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_WEATHER_BALL].effect == EFFECT_WEATHER_BALL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_DRAGONAIR); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.0), results[1].damage); // double base power + type effectiveness. + } +} + +SINGLE_BATTLE_TEST("Snow allows Blizzard to bypass accuracy checks") +{ + PASSES_RANDOMLY(100, 100); + GIVEN { + ASSUME(gBattleMoves[MOVE_BLIZZARD].accuracy == 70); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_BLIZZARD); } + } SCENE { + NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } + } +} + +SINGLE_BATTLE_TEST("Snow halves the power of Solar Beam", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_SOLAR_BEAM].effect == EFFECT_SOLAR_BEAM); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Snow halves the power of Solar Blade", s16 damage) +{ + u16 move; + KNOWN_FAILING; // fails bc the bp of solar blade gets rounded up which leads to slightly incorrect calcs down the line + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_SOLAR_BLADE].effect == EFFECT_SOLAR_BEAM); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Snow causes Moonlight to recover 1/4 of the user's max HP") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MOONLIGHT].effect == EFFECT_MOONLIGHT); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MOONLIGHT); } + } SCENE { + HP_BAR(player, hp: TEST_HP + (MAX_HP/4)); + } +} + +SINGLE_BATTLE_TEST("Snow causes Moonlight to recover 1/4 of the user's max HP") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MOONLIGHT].effect == EFFECT_MOONLIGHT); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MOONLIGHT); } + } SCENE { + HP_BAR(player, hp: TEST_HP + (MAX_HP/4)); + } +} + +SINGLE_BATTLE_TEST("Snow causes Synthesis to recover 1/4 of the user's max HP") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SYNTHESIS].effect == EFFECT_SYNTHESIS); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_SYNTHESIS); } + } SCENE { + HP_BAR(player, hp: TEST_HP + (MAX_HP/4)); + } +} + +SINGLE_BATTLE_TEST("Snow causes Morning Sun to recover 1/4 of the user's max HP") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MORNING_SUN].effect == EFFECT_MORNING_SUN); + PLAYER(SPECIES_WOBBUFFET) { HP(TEST_HP); MaxHP(MAX_HP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MORNING_SUN); } + } SCENE { + HP_BAR(player, hp: TEST_HP + (MAX_HP/4)); + } +} + +#undef MAX_HP +#undef TEST_HP diff --git a/tools/gbagfx/convert_png.c b/tools/gbagfx/convert_png.c index a5fefbd8b6e6..c9c240efbba0 100644 --- a/tools/gbagfx/convert_png.c +++ b/tools/gbagfx/convert_png.c @@ -130,7 +130,6 @@ void ReadPng(char *path, struct Image *image) FATAL_ERROR("Bit depth of image must be 1, 2, 4, or 8.\n"); image->pixels = ConvertBitDepth(image->pixels, bit_depth, image->bitDepth, image->width * image->height); free(src); - image->bitDepth = bit_depth; } } diff --git a/tools/gbagfx/gfx.c b/tools/gbagfx/gfx.c index 832e9bb39710..1dfc38e2d036 100644 --- a/tools/gbagfx/gfx.c +++ b/tools/gbagfx/gfx.c @@ -204,6 +204,18 @@ static void ConvertToTiles8Bpp(unsigned char *src, unsigned char *dest, int numT } } +// For untiled, plain images +static void CopyPlainPixels(unsigned char *src, unsigned char *dest, int size, int dataWidth, bool invertColors) +{ + if (dataWidth == 0) return; + for (int i = 0; i < size; i += dataWidth) { + for (int j = dataWidth; j > 0; j--) { + unsigned char pixels = src[i + j - 1]; + *dest++ = invertColors ? ~pixels : pixels; + } + } +} + static void DecodeAffineTilemap(unsigned char *input, unsigned char *output, unsigned char *tilemap, int tileSize, int numTiles) { for (int i = 0; i < numTiles; i++) @@ -345,9 +357,9 @@ static unsigned char *DecodeTilemap(unsigned char *tiles, struct Tilemap *tilema return decoded; } -void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors) +void ReadTileImage(char *path, int tilesWidth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors) { - int tileSize = bitDepth * 8; + int tileSize = image->bitDepth * 8; int fileSize; unsigned char *buffer = ReadWholeFile(path, &fileSize); @@ -355,26 +367,25 @@ void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int int numTiles = fileSize / tileSize; if (image->tilemap.data.affine != NULL) { - int outTileSize = (bitDepth == 4 && image->palette.numColors > 16) ? 64 : tileSize; - buffer = DecodeTilemap(buffer, &image->tilemap, &numTiles, image->isAffine, tileSize, outTileSize, bitDepth); + int outTileSize = (image->bitDepth == 4 && image->palette.numColors > 16) ? 64 : tileSize; + buffer = DecodeTilemap(buffer, &image->tilemap, &numTiles, image->isAffine, tileSize, outTileSize, image->bitDepth); if (outTileSize == 64) { tileSize = 64; - image->bitDepth = bitDepth = 8; + image->bitDepth = 8; } } int tilesHeight = (numTiles + tilesWidth - 1) / tilesWidth; if (tilesWidth % metatileWidth != 0) - FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)", tilesWidth, metatileWidth); + FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)\n", tilesWidth, metatileWidth); if (tilesHeight % metatileHeight != 0) - FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)", tilesHeight, metatileHeight); + FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)\n", tilesHeight, metatileHeight); image->width = tilesWidth * 8; image->height = tilesHeight * 8; - image->bitDepth = bitDepth; image->pixels = calloc(tilesWidth * tilesHeight, tileSize); if (image->pixels == NULL) @@ -382,7 +393,7 @@ void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int int metatilesWide = tilesWidth / metatileWidth; - switch (bitDepth) { + switch (image->bitDepth) { case 1: ConvertFromTiles1Bpp(buffer, image->pixels, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors); break; @@ -397,9 +408,9 @@ void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int free(buffer); } -void WriteImage(char *path, enum NumTilesMode numTilesMode, int numTiles, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors) +void WriteTileImage(char *path, enum NumTilesMode numTilesMode, int numTiles, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors) { - int tileSize = bitDepth * 8; + int tileSize = image->bitDepth * 8; if (image->width % 8 != 0) FATAL_ERROR("The width in pixels (%d) isn't a multiple of 8.\n", image->width); @@ -411,10 +422,10 @@ void WriteImage(char *path, enum NumTilesMode numTilesMode, int numTiles, int bi int tilesHeight = image->height / 8; if (tilesWidth % metatileWidth != 0) - FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)", tilesWidth, metatileWidth); + FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)\n", tilesWidth, metatileWidth); if (tilesHeight % metatileHeight != 0) - FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)", tilesHeight, metatileHeight); + FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)\n", tilesHeight, metatileHeight); int maxNumTiles = tilesWidth * tilesHeight; @@ -432,7 +443,7 @@ void WriteImage(char *path, enum NumTilesMode numTilesMode, int numTiles, int bi int metatilesWide = tilesWidth / metatileWidth; - switch (bitDepth) { + switch (image->bitDepth) { case 1: ConvertToTiles1Bpp(image->pixels, buffer, maxNumTiles, metatilesWide, metatileWidth, metatileHeight, invertColors); break; @@ -468,6 +479,57 @@ void WriteImage(char *path, enum NumTilesMode numTilesMode, int numTiles, int bi free(buffer); } +void ReadPlainImage(char *path, int dataWidth, struct Image *image, bool invertColors) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(path, &fileSize); + + if (fileSize % dataWidth != 0) + FATAL_ERROR("The image data size (%d) isn't a multiple of the specified data width %d.\n", fileSize, dataWidth); + + // png scanlines have wasted bits if they do not align to byte boundaries. + // pngs misaligned in this way are not currently handled. + int pixelsPerByte = 8 / image->bitDepth; + if (image->width % pixelsPerByte != 0) + FATAL_ERROR("The width in pixels (%d) isn't a multiple of %d.\n", image->width, pixelsPerByte); + + int numPixels = fileSize * pixelsPerByte; + image->height = (numPixels + image->width - 1) / image->width; + image->pixels = calloc(image->width * image->height * image->bitDepth / 8, 1); + + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate memory for pixels.\n"); + + CopyPlainPixels(buffer, image->pixels, fileSize, dataWidth, invertColors); + + free(buffer); +} + +void WritePlainImage(char *path, int dataWidth, struct Image *image, bool invertColors) +{ + int bufferSize = image->width * image->height * image->bitDepth / 8; + + if (bufferSize % dataWidth != 0) + FATAL_ERROR("The image data size (%d) isn't a multiple of the specified data width %d.\n", bufferSize, dataWidth); + + // png scanlines have wasted bits if they do not align to byte boundaries. + // pngs misaligned in this way are not currently handled. + int pixelsPerByte = 8 / image->bitDepth; + if (image->width % pixelsPerByte != 0) + FATAL_ERROR("The width in pixels (%d) isn't a multiple of %d.\n", image->width, pixelsPerByte); + + unsigned char *buffer = malloc(bufferSize); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for pixels.\n"); + + CopyPlainPixels(image->pixels, buffer, bufferSize, dataWidth, invertColors); + + WriteWholeFile(path, buffer, bufferSize); + + free(buffer); +} + void FreeImage(struct Image *image) { if (image->tilemap.data.affine != NULL) diff --git a/tools/gbagfx/gfx.h b/tools/gbagfx/gfx.h index f1dbfcf4f720..1797d84dfd71 100644 --- a/tools/gbagfx/gfx.h +++ b/tools/gbagfx/gfx.h @@ -50,8 +50,10 @@ enum NumTilesMode { NUM_TILES_ERROR, }; -void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors); -void WriteImage(char *path, enum NumTilesMode numTilesMode, int numTiles, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors); +void ReadTileImage(char *path, int tilesWidth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors); +void WriteTileImage(char *path, enum NumTilesMode numTilesMode, int numTiles, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors); +void ReadPlainImage(char *path, int dataWidth, struct Image *image, bool invertColors); +void WritePlainImage(char *path, int dataWidth, struct Image *image, bool invertColors); void FreeImage(struct Image *image); void ReadGbaPalette(char *path, struct Palette *palette); void WriteGbaPalette(char *path, struct Palette *palette); diff --git a/tools/gbagfx/main.c b/tools/gbagfx/main.c index 5d4faacab044..98a1a1edf9f2 100644 --- a/tools/gbagfx/main.c +++ b/tools/gbagfx/main.c @@ -25,6 +25,9 @@ void ConvertGbaToPng(char *inputPath, char *outputPath, struct GbaToPngOptions * { struct Image image; + image.bitDepth = options->bitDepth; + image.tilemap.data.affine = NULL; + if (options->paletteFilePath != NULL) { char *paletteFileExtension = GetFileExtensionAfterDot(options->paletteFilePath); @@ -45,22 +48,25 @@ void ConvertGbaToPng(char *inputPath, char *outputPath, struct GbaToPngOptions * image.hasPalette = false; } - if (options->tilemapFilePath != NULL) + if (options->isTiled) { - int fileSize; - image.tilemap.data.affine = ReadWholeFile(options->tilemapFilePath, &fileSize); - if (options->isAffineMap && options->bitDepth != 8) - FATAL_ERROR("affine maps are necessarily 8bpp\n"); - image.isAffine = options->isAffineMap; - image.tilemap.size = fileSize; + if (options->tilemapFilePath != NULL) + { + int fileSize; + image.tilemap.data.affine = ReadWholeFile(options->tilemapFilePath, &fileSize); + if (options->isAffineMap && options->bitDepth != 8) + FATAL_ERROR("affine maps are necessarily 8bpp\n"); + image.isAffine = options->isAffineMap; + image.tilemap.size = fileSize; + } + ReadTileImage(inputPath, options->width, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette); } else { - image.tilemap.data.affine = NULL; + image.width = options->width; + ReadPlainImage(inputPath, options->dataWidth, &image, !image.hasPalette); } - ReadImage(inputPath, options->width, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette); - image.hasTransparency = options->hasTransparency; WritePng(outputPath, &image); @@ -77,7 +83,10 @@ void ConvertPngToGba(char *inputPath, char *outputPath, struct PngToGbaOptions * ReadPng(inputPath, &image); - WriteImage(outputPath, options->numTilesMode, options->numTiles, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette); + if (options->isTiled) + WriteTileImage(outputPath, options->numTilesMode, options->numTiles, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette); + else + WritePlainImage(outputPath, options->dataWidth, &image, !image.hasPalette); FreeImage(&image); } @@ -94,6 +103,8 @@ void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **a options.metatileHeight = 1; options.tilemapFilePath = NULL; options.isAffineMap = false; + options.isTiled = true; + options.dataWidth = 1; for (int i = 3; i < argc; i++) { @@ -162,6 +173,22 @@ void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **a { options.isAffineMap = true; } + else if (strcmp(option, "-plain") == 0) + { + options.isTiled = false; + } + else if (strcmp(option, "-data_width") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No data width value following \"-data_width\".\n"); + i++; + + if (!ParseNumber(argv[i], NULL, 10, &options.dataWidth)) + FATAL_ERROR("Failed to parse data width.\n"); + + if (options.dataWidth < 1) + FATAL_ERROR("Data width must be positive.\n"); + } else { FATAL_ERROR("Unrecognized option \"%s\".\n", option); @@ -177,15 +204,16 @@ void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **a void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **argv) { char *outputFileExtension = GetFileExtensionAfterDot(outputPath); - int bitDepth = outputFileExtension[0] - '0'; struct PngToGbaOptions options; options.numTilesMode = NUM_TILES_IGNORE; options.numTiles = 0; - options.bitDepth = bitDepth; + options.bitDepth = outputFileExtension[0] - '0'; options.metatileWidth = 1; options.metatileHeight = 1; options.tilemapFilePath = NULL; options.isAffineMap = false; + options.isTiled = true; + options.dataWidth = 1; for (int i = 3; i < argc; i++) { @@ -236,6 +264,22 @@ void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **a if (options.metatileHeight < 1) FATAL_ERROR("metatile height must be positive.\n"); } + else if (strcmp(option, "-plain") == 0) + { + options.isTiled = false; + } + else if (strcmp(option, "-data_width") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No data width value following \"-data_width\".\n"); + i++; + + if (!ParseNumber(argv[i], NULL, 10, &options.dataWidth)) + FATAL_ERROR("Failed to parse data width.\n"); + + if (options.dataWidth < 1) + FATAL_ERROR("Data width must be positive.\n"); + } else { FATAL_ERROR("Unrecognized option \"%s\".\n", option); @@ -403,7 +447,7 @@ void HandleLZCompressCommand(char *inputPath, char *outputPath, int argc, char * else if (strcmp(option, "-search") == 0) { if (i + 1 >= argc) - FATAL_ERROR("No size following \"-overflow\".\n"); + FATAL_ERROR("No size following \"-search\".\n"); i++; diff --git a/tools/gbagfx/options.h b/tools/gbagfx/options.h index 250b723450aa..830158b52e90 100644 --- a/tools/gbagfx/options.h +++ b/tools/gbagfx/options.h @@ -15,6 +15,8 @@ struct GbaToPngOptions { int metatileHeight; char *tilemapFilePath; bool isAffineMap; + bool isTiled; + int dataWidth; }; struct PngToGbaOptions { @@ -25,6 +27,8 @@ struct PngToGbaOptions { int metatileHeight; char *tilemapFilePath; bool isAffineMap; + bool isTiled; + int dataWidth; }; #endif // OPTIONS_H diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp index dc8b9080a5c9..4f59dc7575c0 100644 --- a/tools/mapjson/mapjson.cpp +++ b/tools/mapjson/mapjson.cpp @@ -29,6 +29,7 @@ using json11::Json; #include "mapjson.h" +string version; string read_text_file(string filepath) { ifstream in_file(filepath); @@ -61,7 +62,7 @@ void write_text_file(string filepath, string text) { } -string json_to_string(const Json &data, const string &field = "") { +string json_to_string(const Json &data, const string &field = "", bool silent = false) { const Json value = !field.empty() ? data[field] : data; string output = ""; switch (value.type()) { @@ -74,13 +75,18 @@ string json_to_string(const Json &data, const string &field = "") { case Json::Type::BOOL: output = value.bool_value() ? "TRUE" : "FALSE"; break; + case Json::Type::NUL: + output = ""; + break; default:{ - string s = !field.empty() ? ("Value for '" + field + "'") : "JSON field"; - FATAL_ERROR("%s is unexpected type; expected string, number, or bool.\n", s.c_str()); + if (!silent) { + string s = !field.empty() ? ("Value for '" + field + "'") : "JSON field"; + FATAL_ERROR("%s is unexpected type; expected string, number, or bool.\n", s.c_str()); + } } } - if (output.empty()){ + if (!silent && output.empty()) { string s = !field.empty() ? ("Value for '" + field + "'") : "JSON field"; FATAL_ERROR("%s cannot be empty.\n", s.c_str()); } @@ -88,14 +94,14 @@ string json_to_string(const Json &data, const string &field = "") { return output; } -string generate_map_header_text(Json map_data, Json layouts_data, string version) { +string generate_map_header_text(Json map_data, Json layouts_data) { string map_layout_id = json_to_string(map_data, "layout"); vector matched; - for (auto &field : layouts_data["layouts"].array_items()) { - if (map_layout_id == json_to_string(field, "id")) - matched.push_back(field); + for (auto &layout : layouts_data["layouts"].array_items()) { + if (map_layout_id == json_to_string(layout, "id", true)) + matched.push_back(layout); } if (matched.size() != 1) @@ -123,28 +129,33 @@ string generate_map_header_text(Json map_data, Json layouts_data, string version text << "\t.4byte " << mapName << "_MapScripts\n"; if (map_data.object_items().find("connections") != map_data.object_items().end() - && map_data["connections"].array_items().size() > 0) + && map_data["connections"].array_items().size() > 0 && json_to_string(map_data, "connections_no_include", true) != "TRUE") text << "\t.4byte " << mapName << "_MapConnections\n"; else - text << "\t.4byte 0x0\n"; + text << "\t.4byte NULL\n"; text << "\t.2byte " << json_to_string(map_data, "music") << "\n" << "\t.2byte " << json_to_string(layout, "id") << "\n" << "\t.byte " << json_to_string(map_data, "region_map_section") << "\n" << "\t.byte " << json_to_string(map_data, "requires_flash") << "\n" << "\t.byte " << json_to_string(map_data, "weather") << "\n" - << "\t.byte " << json_to_string(map_data, "map_type") << "\n" - << "\t.2byte 0\n"; + << "\t.byte " << json_to_string(map_data, "map_type") << "\n"; + + if (version != "firered") + text << "\t.2byte 0\n"; if (version == "ruby") text << "\t.byte " << json_to_string(map_data, "show_map_name") << "\n"; - else if (version == "emerald") + else if (version == "emerald" || version == "firered") text << "\tmap_header_flags " << "allow_cycling=" << json_to_string(map_data, "allow_cycling") << ", " << "allow_escaping=" << json_to_string(map_data, "allow_escaping") << ", " << "allow_running=" << json_to_string(map_data, "allow_running") << ", " << "show_map_name=" << json_to_string(map_data, "show_map_name") << "\n"; + if (version == "firered") + text << "\t.byte " << json_to_string(map_data, "floor_number") << "\n"; + text << "\t.byte " << json_to_string(map_data, "battle_scene") << "\n\n"; return text.str(); @@ -193,22 +204,36 @@ string generate_map_events_text(Json map_data) { text << objects_label << ":\n"; for (unsigned int i = 0; i < map_data["object_events"].array_items().size(); i++) { auto obj_event = map_data["object_events"].array_items()[i]; - text << "\tobject_event " << i + 1 << ", " - << json_to_string(obj_event, "graphics_id") << ", 0, " - << json_to_string(obj_event, "x") << ", " - << json_to_string(obj_event, "y") << ", " - << json_to_string(obj_event, "elevation") << ", " - << json_to_string(obj_event, "movement_type") << ", " - << json_to_string(obj_event, "movement_range_x") << ", " - << json_to_string(obj_event, "movement_range_y") << ", " - << json_to_string(obj_event, "trainer_type") << ", " - << json_to_string(obj_event, "trainer_sight_or_berry_tree_id") << ", " - << json_to_string(obj_event, "script") << ", " - << json_to_string(obj_event, "flag") << "\n"; + string type = json_to_string(obj_event, "type", true); + + // If no type field is present, assume it's a regular object event. + if (type == "" || type == "object") { + text << "\tobject_event " << i + 1 << ", " + << json_to_string(obj_event, "graphics_id") << ", " + << json_to_string(obj_event, "x") << ", " + << json_to_string(obj_event, "y") << ", " + << json_to_string(obj_event, "elevation") << ", " + << json_to_string(obj_event, "movement_type") << ", " + << json_to_string(obj_event, "movement_range_x") << ", " + << json_to_string(obj_event, "movement_range_y") << ", " + << json_to_string(obj_event, "trainer_type") << ", " + << json_to_string(obj_event, "trainer_sight_or_berry_tree_id") << ", " + << json_to_string(obj_event, "script") << ", " + << json_to_string(obj_event, "flag") << "\n"; + } else if (type == "clone") { + text << "\tclone_event " << i + 1 << ", " + << json_to_string(obj_event, "graphics_id") << ", " + << json_to_string(obj_event, "x") << ", " + << json_to_string(obj_event, "y") << ", " + << json_to_string(obj_event, "target_local_id") << ", " + << json_to_string(obj_event, "target_map") << "\n"; + } else { + FATAL_ERROR("Unknown object event type '%s'. Expected 'object' or 'clone'.\n", type.c_str()); + } } text << "\n"; } else { - objects_label = "0x0"; + objects_label = "NULL"; } if (map_data["warp_events"].array_items().size() > 0) { @@ -224,14 +249,15 @@ string generate_map_events_text(Json map_data) { } text << "\n"; } else { - warps_label = "0x0"; + warps_label = "NULL"; } if (map_data["coord_events"].array_items().size() > 0) { coords_label = mapName + "_MapCoordEvents"; text << coords_label << ":\n"; for (auto &coord_event : map_data["coord_events"].array_items()) { - if (json_to_string(coord_event, "type") == "trigger") { + string type = json_to_string(coord_event, "type"); + if (type == "trigger") { text << "\tcoord_event " << json_to_string(coord_event, "x") << ", " << json_to_string(coord_event, "y") << ", " @@ -240,24 +266,27 @@ string generate_map_events_text(Json map_data) { << json_to_string(coord_event, "var_value") << ", " << json_to_string(coord_event, "script") << "\n"; } - else if (coord_event["type"] == "weather") { + else if (type == "weather") { text << "\tcoord_weather_event " << json_to_string(coord_event, "x") << ", " << json_to_string(coord_event, "y") << ", " << json_to_string(coord_event, "elevation") << ", " << json_to_string(coord_event, "weather") << "\n"; + } else { + FATAL_ERROR("Unknown coord event type '%s'. Expected 'trigger' or 'weather'.\n", type.c_str()); } } text << "\n"; } else { - coords_label = "0x0"; + coords_label = "NULL"; } if (map_data["bg_events"].array_items().size() > 0) { bgs_label = mapName + "_MapBGEvents"; text << bgs_label << ":\n"; for (auto &bg_event : map_data["bg_events"].array_items()) { - if (bg_event["type"] == "sign") { + string type = json_to_string(bg_event, "type"); + if (type == "sign") { text << "\tbg_sign_event " << json_to_string(bg_event, "x") << ", " << json_to_string(bg_event, "y") << ", " @@ -265,25 +294,33 @@ string generate_map_events_text(Json map_data) { << json_to_string(bg_event, "player_facing_dir") << ", " << json_to_string(bg_event, "script") << "\n"; } - else if (bg_event["type"] == "hidden_item") { + else if (type == "hidden_item") { text << "\tbg_hidden_item_event " << json_to_string(bg_event, "x") << ", " << json_to_string(bg_event, "y") << ", " << json_to_string(bg_event, "elevation") << ", " << json_to_string(bg_event, "item") << ", " - << json_to_string(bg_event, "flag") << "\n"; + << json_to_string(bg_event, "flag"); + if (version == "firered") { + text << ", " + << json_to_string(bg_event, "quantity") << ", " + << json_to_string(bg_event, "underfoot"); + } + text << "\n"; } - else if (bg_event["type"] == "secret_base") { + else if (type == "secret_base") { text << "\tbg_secret_base_event " << json_to_string(bg_event, "x") << ", " << json_to_string(bg_event, "y") << ", " << json_to_string(bg_event, "elevation") << ", " << json_to_string(bg_event, "secret_base_id") << "\n"; + } else { + FATAL_ERROR("Unknown bg event type '%s'. Expected 'sign', 'hidden_item', or 'secret_base'.\n", type.c_str()); } } text << "\n"; } else { - bgs_label = "0x0"; + bgs_label = "NULL"; } text << mapName << "_MapEvents::\n" @@ -299,7 +336,7 @@ string get_directory_name(string filename) { return filename.substr(0, dir_pos + 1); } -void process_map(string map_filepath, string layouts_filepath, string version) { +void process_map(string map_filepath, string layouts_filepath) { string mapdata_err, layouts_err; string mapdata_json_text = read_text_file(map_filepath); @@ -313,7 +350,7 @@ void process_map(string map_filepath, string layouts_filepath, string version) { if (layouts_data == Json()) FATAL_ERROR("%s\n", layouts_err.c_str()); - string header_text = generate_map_header_text(map_data, layouts_data, version); + string header_text = generate_map_header_text(map_data, layouts_data); string events_text = generate_map_events_text(map_data); string connections_text = generate_map_connections_text(map_data); @@ -427,26 +464,27 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { for (auto &group : groups_data["group_order"].array_items()) { string groupName = json_to_string(group); text << "// " << groupName << "\n"; - vector map_ids; + vector map_ids; size_t max_length = 0; int map_count = 0; //DEBUG for (auto &map_name : groups_data[groupName].array_items()) { - string header_filepath = file_dir + json_to_string(map_name) + dir_separator + "map.json"; + string map_filepath = file_dir + json_to_string(map_name) + dir_separator + "map.json"; string err_str; - Json map_data = Json::parse(read_text_file(header_filepath), err_str); - map_ids.push_back(map_data["id"]); - string id = json_to_string(map_data, "id"); + Json map_data = Json::parse(read_text_file(map_filepath), err_str); + if (map_data == Json()) + FATAL_ERROR("%s: %s\n", map_filepath.c_str(), err_str.c_str()); + string id = json_to_string(map_data, "id", true); + map_ids.push_back(id); if (id.length() > max_length) max_length = id.length(); map_count++; //DEBUG } int map_id_num = 0; - for (Json map_id : map_ids) { - string id = json_to_string(map_id); - text << "#define " << id << string((max_length - id.length() + 1), ' ') + for (string map_id : map_ids) { + text << "#define " << map_id << string((max_length - map_id.length() + 1), ' ') << "(" << map_id_num++ << " | (" << group_num << " << 8))\n"; } text << "\n"; @@ -498,6 +536,7 @@ string generate_layout_headers_text(Json layouts_data) { text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n@\n\n"; for (auto &layout : layouts_data["layouts"].array_items()) { + if (layout == Json::object()) continue; string layoutName = json_to_string(layout, "name"); string border_label = layoutName + "_Border"; string blockdata_label = layoutName + "_Blockdata"; @@ -512,7 +551,13 @@ string generate_layout_headers_text(Json layouts_data) { << "\t.4byte " << border_label << "\n" << "\t.4byte " << blockdata_label << "\n" << "\t.4byte " << json_to_string(layout, "primary_tileset") << "\n" - << "\t.4byte " << json_to_string(layout, "secondary_tileset") << "\n\n"; + << "\t.4byte " << json_to_string(layout, "secondary_tileset") << "\n"; + if (version == "firered") { + text << "\t.byte " << json_to_string(layout, "border_width") << "\n" + << "\t.byte " << json_to_string(layout, "border_height") << "\n" + << "\t.2byte 0\n"; + } + text << "\n"; } return text.str(); @@ -526,8 +571,11 @@ string generate_layouts_table_text(Json layouts_data) { text << "\t.align 2\n" << json_to_string(layouts_data, "layouts_table_label") << "::\n"; - for (auto &layout : layouts_data["layouts"].array_items()) - text << "\t.4byte " << json_to_string(layout, "name") << "\n"; + for (auto &layout : layouts_data["layouts"].array_items()) { + string layout_name = json_to_string(layout, "name", true); + if (layout_name.empty()) layout_name = "NULL"; + text << "\t.4byte " << layout_name << "\n"; + } return text.str(); } @@ -540,9 +588,12 @@ string generate_layouts_constants_text(Json layouts_data) { text << "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n//\n\n"; - int i = 0; - for (auto &layout : layouts_data["layouts"].array_items()) - text << "#define " << json_to_string(layout, "id") << " " << ++i << "\n"; + int i = 1; + for (auto &layout : layouts_data["layouts"].array_items()) { + if (layout != Json::object()) + text << "#define " << json_to_string(layout, "id") << " " << i << "\n"; + i++; + } text << "\n#endif // GUARD_CONSTANTS_LAYOUTS_H\n"; @@ -573,9 +624,9 @@ int main(int argc, char *argv[]) { FATAL_ERROR("USAGE: mapjson [options]\n"); char *version_arg = argv[2]; - string version(version_arg); - if (version != "emerald" && version != "ruby") - FATAL_ERROR("ERROR: must be 'emerald' or 'ruby'.\n"); + version = string(version_arg); + if (version != "emerald" && version != "ruby" && version != "firered") + FATAL_ERROR("ERROR: must be 'emerald', 'firered', or 'ruby'.\n"); char *mode_arg = argv[1]; string mode(mode_arg); @@ -589,7 +640,7 @@ int main(int argc, char *argv[]) { string filepath(argv[3]); string layouts_filepath(argv[4]); - process_map(filepath, layouts_filepath, version); + process_map(filepath, layouts_filepath); } else if (mode == "groups") { if (argc != 4) diff --git a/tools/mgba-rom-test-hydra/main.c b/tools/mgba-rom-test-hydra/main.c index 5dfc995176ca..2e2fe7ce854d 100644 --- a/tools/mgba-rom-test-hydra/main.c +++ b/tools/mgba-rom-test-hydra/main.c @@ -9,7 +9,11 @@ * COMMANDS * N: Sets the test name to the remainder of the line. * R: Sets the result to the remainder of the line, and flushes any - * output buffered since the previous R. */ + * output buffered since the previous R. + * P/K/F/A: Sets the result to the remaining of the line, flushes any + * output since the previous P/K/F/A and increment the number of + * passes/known fails/assumption fails/fails. + */ #include #include #include @@ -19,7 +23,9 @@ #include #include #include +#ifndef __APPLE__ #include +#endif #include #include #include @@ -38,6 +44,12 @@ struct Runner size_t output_buffer_size; size_t output_buffer_capacity; char *output_buffer; + int passes; + int knownFails; + int todos; + int assumptionFails; + int fails; + int results; }; static unsigned nrunners = 0; @@ -72,7 +84,22 @@ static void handle_read(struct Runner *runner) runner->test_name[eol - soc - 1] = '\0'; break; - case 'R': + case 'P': + runner->passes++; + goto add_to_results; + case 'K': + runner->knownFails++; + goto add_to_results; + case 'T': + runner->todos++; + goto add_to_results; + case 'A': + runner->assumptionFails++; + goto add_to_results; + case 'F': + runner->fails++; +add_to_results: + runner->results++; soc += 2; fprintf(stdout, "%s: ", runner->test_name); fwrite(soc, 1, eol - soc, stdout); @@ -151,9 +178,9 @@ static void exit2(int _) int main(int argc, char *argv[]) { - if (argc < 3) + if (argc < 4) { - fprintf(stderr, "usage %s mgba-rom-test rom\n", argv[0]); + fprintf(stderr, "usage %s mgba-rom-test objcopy rom\n", argv[0]); exit(2); } @@ -180,7 +207,7 @@ int main(int argc, char *argv[]) } int elffd; - if ((elffd = open(argv[2], O_RDONLY)) == -1) + if ((elffd = open(argv[3], O_RDONLY)) == -1) { perror("open elffd failed"); exit(2); @@ -239,11 +266,13 @@ int main(int argc, char *argv[]) perror("fork mgba-rom-test failed"); exit(2); } else if (pid == 0) { + #ifndef __APPLE__ if (prctl(PR_SET_PDEATHSIG, SIGTERM) == -1) { perror("prctl failed"); _exit(2); } + #endif if (getppid() != parent_pid) // Parent died. { _exit(2); @@ -307,6 +336,36 @@ int main(int argc, char *argv[]) _exit(2); } } +#ifdef __APPLE__ + pid_t objcopypid = fork(); + if (objcopypid == -1) + { + perror("fork objcopy failed"); + _exit(2); + } + else if (objcopypid == 0) + { + if (execlp(argv[2], argv[2], "-O", "binary", rom_path, rom_path, NULL) == -1) + { + perror("execlp objcopy failed"); + _exit(2); + } + } + else + { + int wstatus; + if (waitpid(objcopypid, &wstatus, 0) == -1) + { + perror("waitpid objcopy failed"); + _exit(2); + } + if (!WIFEXITED(wstatus) || WEXITSTATUS(wstatus) != 0) + { + fprintf(stderr, "objcopy exited with an error\n"); + _exit(2); + } + } +#endif // stdbuf is required because otherwise mgba never flushes // stdout. if (execlp("stdbuf", "stdbuf", "-oL", argv[1], "-l15", "-ClogLevel.gba.dma=16", "-Rr0", rom_path, NULL) == -1) @@ -404,6 +463,12 @@ int main(int argc, char *argv[]) // Reap test runners and collate exit codes. int exit_code = 0; + int passes = 0; + int knownFails = 0; + int todos = 0; + int assumptionFails = 0; + int fails = 0; + int results = 0; for (int i = 0; i < nrunners; i++) { int wstatus; @@ -412,8 +477,37 @@ int main(int argc, char *argv[]) perror("waitpid runners[i] failed"); exit(2); } + if (runners[i].output_buffer_size > 0) + fwrite(runners[i].output_buffer, 1, runners[i].output_buffer_size, stdout); if (WIFEXITED(wstatus) && WEXITSTATUS(wstatus) > exit_code) exit_code = WEXITSTATUS(wstatus); + passes += runners[i].passes; + knownFails += runners[i].knownFails; + todos += runners[i].todos; + assumptionFails += runners[i].assumptionFails; + fails += runners[i].fails; + results += runners[i].results; } + + if (results == 0) + { + fprintf(stdout, "\nNo tests found.\n"); + } + else + { + fprintf(stdout, "\n- Tests TOTAL: %d\n", results); + fprintf(stdout, "- Tests \e[32mPASSED\e[0m: %d\n", passes); + if (knownFails > 0) + fprintf(stdout, "- Tests \e[33mKNOWN_FAILING\e[0m: %d\n", knownFails); + if (todos > 0) + fprintf(stdout, "- Tests \e[33mTO_DO\e[0m: %d\n", todos); + if (fails > 0) + fprintf(stdout, "- Tests \e[31mFAILED\e[0m : %d\n", fails); + if (assumptionFails > 0) + fprintf(stdout, "- \e[33mASSUMPTIONS_FAILED\e[0m: %d\n", assumptionFails); + } + fprintf(stdout, "\n"); + + fflush(stdout); return exit_code; } diff --git a/tools/patchelf/elf.h b/tools/patchelf/elf.h new file mode 100644 index 000000000000..79d3b974bd51 --- /dev/null +++ b/tools/patchelf/elf.h @@ -0,0 +1,3147 @@ +/* +From musl include/elf.h + +Copyright © 2005-2014 Rich Felker, et al. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef _ELF_H +#define _ELF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef uint16_t Elf32_Half; +typedef uint16_t Elf64_Half; + +typedef uint32_t Elf32_Word; +typedef int32_t Elf32_Sword; +typedef uint32_t Elf64_Word; +typedef int32_t Elf64_Sword; + +typedef uint64_t Elf32_Xword; +typedef int64_t Elf32_Sxword; +typedef uint64_t Elf64_Xword; +typedef int64_t Elf64_Sxword; + +typedef uint32_t Elf32_Addr; +typedef uint64_t Elf64_Addr; + +typedef uint32_t Elf32_Off; +typedef uint64_t Elf64_Off; + +typedef uint16_t Elf32_Section; +typedef uint16_t Elf64_Section; + +typedef Elf32_Half Elf32_Versym; +typedef Elf64_Half Elf64_Versym; + +#define EI_NIDENT (16) + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} Elf32_Ehdr; + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; + +#define EI_MAG0 0 +#define ELFMAG0 0x7f + +#define EI_MAG1 1 +#define ELFMAG1 'E' + +#define EI_MAG2 2 +#define ELFMAG2 'L' + +#define EI_MAG3 3 +#define ELFMAG3 'F' + + +#define ELFMAG "\177ELF" +#define SELFMAG 4 + +#define EI_CLASS 4 +#define ELFCLASSNONE 0 +#define ELFCLASS32 1 +#define ELFCLASS64 2 +#define ELFCLASSNUM 3 + +#define EI_DATA 5 +#define ELFDATANONE 0 +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 +#define ELFDATANUM 3 + +#define EI_VERSION 6 + + +#define EI_OSABI 7 +#define ELFOSABI_NONE 0 +#define ELFOSABI_SYSV 0 +#define ELFOSABI_HPUX 1 +#define ELFOSABI_NETBSD 2 +#define ELFOSABI_LINUX 3 +#define ELFOSABI_GNU 3 +#define ELFOSABI_SOLARIS 6 +#define ELFOSABI_AIX 7 +#define ELFOSABI_IRIX 8 +#define ELFOSABI_FREEBSD 9 +#define ELFOSABI_TRU64 10 +#define ELFOSABI_MODESTO 11 +#define ELFOSABI_OPENBSD 12 +#define ELFOSABI_ARM 97 +#define ELFOSABI_STANDALONE 255 + +#define EI_ABIVERSION 8 + +#define EI_PAD 9 + + + +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 +#define ET_CORE 4 +#define ET_NUM 5 +#define ET_LOOS 0xfe00 +#define ET_HIOS 0xfeff +#define ET_LOPROC 0xff00 +#define ET_HIPROC 0xffff + + + +#define EM_NONE 0 +#define EM_M32 1 +#define EM_SPARC 2 +#define EM_386 3 +#define EM_68K 4 +#define EM_88K 5 +#define EM_860 7 +#define EM_MIPS 8 +#define EM_S370 9 +#define EM_MIPS_RS3_LE 10 + +#define EM_PARISC 15 +#define EM_VPP500 17 +#define EM_SPARC32PLUS 18 +#define EM_960 19 +#define EM_PPC 20 +#define EM_PPC64 21 +#define EM_S390 22 + +#define EM_V800 36 +#define EM_FR20 37 +#define EM_RH32 38 +#define EM_RCE 39 +#define EM_ARM 40 +#define EM_FAKE_ALPHA 41 +#define EM_SH 42 +#define EM_SPARCV9 43 +#define EM_TRICORE 44 +#define EM_ARC 45 +#define EM_H8_300 46 +#define EM_H8_300H 47 +#define EM_H8S 48 +#define EM_H8_500 49 +#define EM_IA_64 50 +#define EM_MIPS_X 51 +#define EM_COLDFIRE 52 +#define EM_68HC12 53 +#define EM_MMA 54 +#define EM_PCP 55 +#define EM_NCPU 56 +#define EM_NDR1 57 +#define EM_STARCORE 58 +#define EM_ME16 59 +#define EM_ST100 60 +#define EM_TINYJ 61 +#define EM_X86_64 62 +#define EM_PDSP 63 + +#define EM_FX66 66 +#define EM_ST9PLUS 67 +#define EM_ST7 68 +#define EM_68HC16 69 +#define EM_68HC11 70 +#define EM_68HC08 71 +#define EM_68HC05 72 +#define EM_SVX 73 +#define EM_ST19 74 +#define EM_VAX 75 +#define EM_CRIS 76 +#define EM_JAVELIN 77 +#define EM_FIREPATH 78 +#define EM_ZSP 79 +#define EM_MMIX 80 +#define EM_HUANY 81 +#define EM_PRISM 82 +#define EM_AVR 83 +#define EM_FR30 84 +#define EM_D10V 85 +#define EM_D30V 86 +#define EM_V850 87 +#define EM_M32R 88 +#define EM_MN10300 89 +#define EM_MN10200 90 +#define EM_PJ 91 +#define EM_OR1K 92 +#define EM_OPENRISC 92 +#define EM_ARC_A5 93 +#define EM_ARC_COMPACT 93 +#define EM_XTENSA 94 +#define EM_VIDEOCORE 95 +#define EM_TMM_GPP 96 +#define EM_NS32K 97 +#define EM_TPC 98 +#define EM_SNP1K 99 +#define EM_ST200 100 +#define EM_IP2K 101 +#define EM_MAX 102 +#define EM_CR 103 +#define EM_F2MC16 104 +#define EM_MSP430 105 +#define EM_BLACKFIN 106 +#define EM_SE_C33 107 +#define EM_SEP 108 +#define EM_ARCA 109 +#define EM_UNICORE 110 +#define EM_EXCESS 111 +#define EM_DXP 112 +#define EM_ALTERA_NIOS2 113 +#define EM_CRX 114 +#define EM_XGATE 115 +#define EM_C166 116 +#define EM_M16C 117 +#define EM_DSPIC30F 118 +#define EM_CE 119 +#define EM_M32C 120 +#define EM_TSK3000 131 +#define EM_RS08 132 +#define EM_SHARC 133 +#define EM_ECOG2 134 +#define EM_SCORE7 135 +#define EM_DSP24 136 +#define EM_VIDEOCORE3 137 +#define EM_LATTICEMICO32 138 +#define EM_SE_C17 139 +#define EM_TI_C6000 140 +#define EM_TI_C2000 141 +#define EM_TI_C5500 142 +#define EM_TI_ARP32 143 +#define EM_TI_PRU 144 +#define EM_MMDSP_PLUS 160 +#define EM_CYPRESS_M8C 161 +#define EM_R32C 162 +#define EM_TRIMEDIA 163 +#define EM_QDSP6 164 +#define EM_8051 165 +#define EM_STXP7X 166 +#define EM_NDS32 167 +#define EM_ECOG1X 168 +#define EM_MAXQ30 169 +#define EM_XIMO16 170 +#define EM_MANIK 171 +#define EM_CRAYNV2 172 +#define EM_RX 173 +#define EM_METAG 174 +#define EM_MCST_ELBRUS 175 +#define EM_ECOG16 176 +#define EM_CR16 177 +#define EM_ETPU 178 +#define EM_SLE9X 179 +#define EM_L10M 180 +#define EM_K10M 181 +#define EM_AARCH64 183 +#define EM_AVR32 185 +#define EM_STM8 186 +#define EM_TILE64 187 +#define EM_TILEPRO 188 +#define EM_MICROBLAZE 189 +#define EM_CUDA 190 +#define EM_TILEGX 191 +#define EM_CLOUDSHIELD 192 +#define EM_COREA_1ST 193 +#define EM_COREA_2ND 194 +#define EM_ARC_COMPACT2 195 +#define EM_OPEN8 196 +#define EM_RL78 197 +#define EM_VIDEOCORE5 198 +#define EM_78KOR 199 +#define EM_56800EX 200 +#define EM_BA1 201 +#define EM_BA2 202 +#define EM_XCORE 203 +#define EM_MCHP_PIC 204 +#define EM_KM32 210 +#define EM_KMX32 211 +#define EM_EMX16 212 +#define EM_EMX8 213 +#define EM_KVARC 214 +#define EM_CDP 215 +#define EM_COGE 216 +#define EM_COOL 217 +#define EM_NORC 218 +#define EM_CSR_KALIMBA 219 +#define EM_Z80 220 +#define EM_VISIUM 221 +#define EM_FT32 222 +#define EM_MOXIE 223 +#define EM_AMDGPU 224 +#define EM_RISCV 243 +#define EM_BPF 247 +#define EM_NUM 248 + +#define EM_ALPHA 0x9026 + +#define EV_NONE 0 +#define EV_CURRENT 1 +#define EV_NUM 2 + +typedef struct { + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} Elf32_Shdr; + +typedef struct { + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Xword sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Xword sh_addralign; + Elf64_Xword sh_entsize; +} Elf64_Shdr; + + + +#define SHN_UNDEF 0 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_BEFORE 0xff00 + +#define SHN_AFTER 0xff01 + +#define SHN_HIPROC 0xff1f +#define SHN_LOOS 0xff20 +#define SHN_HIOS 0xff3f +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_XINDEX 0xffff +#define SHN_HIRESERVE 0xffff + + + +#define SHT_NULL 0 +#define SHT_PROGBITS 1 +#define SHT_SYMTAB 2 +#define SHT_STRTAB 3 +#define SHT_RELA 4 +#define SHT_HASH 5 +#define SHT_DYNAMIC 6 +#define SHT_NOTE 7 +#define SHT_NOBITS 8 +#define SHT_REL 9 +#define SHT_SHLIB 10 +#define SHT_DYNSYM 11 +#define SHT_INIT_ARRAY 14 +#define SHT_FINI_ARRAY 15 +#define SHT_PREINIT_ARRAY 16 +#define SHT_GROUP 17 +#define SHT_SYMTAB_SHNDX 18 +#define SHT_NUM 19 +#define SHT_LOOS 0x60000000 +#define SHT_GNU_ATTRIBUTES 0x6ffffff5 +#define SHT_GNU_HASH 0x6ffffff6 +#define SHT_GNU_LIBLIST 0x6ffffff7 +#define SHT_CHECKSUM 0x6ffffff8 +#define SHT_LOSUNW 0x6ffffffa +#define SHT_SUNW_move 0x6ffffffa +#define SHT_SUNW_COMDAT 0x6ffffffb +#define SHT_SUNW_syminfo 0x6ffffffc +#define SHT_GNU_verdef 0x6ffffffd +#define SHT_GNU_verneed 0x6ffffffe +#define SHT_GNU_versym 0x6fffffff +#define SHT_HISUNW 0x6fffffff +#define SHT_HIOS 0x6fffffff +#define SHT_LOPROC 0x70000000 +#define SHT_HIPROC 0x7fffffff +#define SHT_LOUSER 0x80000000 +#define SHT_HIUSER 0x8fffffff + +#define SHF_WRITE (1 << 0) +#define SHF_ALLOC (1 << 1) +#define SHF_EXECINSTR (1 << 2) +#define SHF_MERGE (1 << 4) +#define SHF_STRINGS (1 << 5) +#define SHF_INFO_LINK (1 << 6) +#define SHF_LINK_ORDER (1 << 7) +#define SHF_OS_NONCONFORMING (1 << 8) + +#define SHF_GROUP (1 << 9) +#define SHF_TLS (1 << 10) +#define SHF_COMPRESSED (1 << 11) +#define SHF_MASKOS 0x0ff00000 +#define SHF_MASKPROC 0xf0000000 +#define SHF_ORDERED (1 << 30) +#define SHF_EXCLUDE (1U << 31) + +typedef struct { + Elf32_Word ch_type; + Elf32_Word ch_size; + Elf32_Word ch_addralign; +} Elf32_Chdr; + +typedef struct { + Elf64_Word ch_type; + Elf64_Word ch_reserved; + Elf64_Xword ch_size; + Elf64_Xword ch_addralign; +} Elf64_Chdr; + +#define ELFCOMPRESS_ZLIB 1 +#define ELFCOMPRESS_LOOS 0x60000000 +#define ELFCOMPRESS_HIOS 0x6fffffff +#define ELFCOMPRESS_LOPROC 0x70000000 +#define ELFCOMPRESS_HIPROC 0x7fffffff + + +#define GRP_COMDAT 0x1 + +typedef struct { + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf32_Section st_shndx; +} Elf32_Sym; + +typedef struct { + Elf64_Word st_name; + unsigned char st_info; + unsigned char st_other; + Elf64_Section st_shndx; + Elf64_Addr st_value; + Elf64_Xword st_size; +} Elf64_Sym; + +typedef struct { + Elf32_Half si_boundto; + Elf32_Half si_flags; +} Elf32_Syminfo; + +typedef struct { + Elf64_Half si_boundto; + Elf64_Half si_flags; +} Elf64_Syminfo; + +#define SYMINFO_BT_SELF 0xffff +#define SYMINFO_BT_PARENT 0xfffe +#define SYMINFO_BT_LOWRESERVE 0xff00 + +#define SYMINFO_FLG_DIRECT 0x0001 +#define SYMINFO_FLG_PASSTHRU 0x0002 +#define SYMINFO_FLG_COPY 0x0004 +#define SYMINFO_FLG_LAZYLOAD 0x0008 + +#define SYMINFO_NONE 0 +#define SYMINFO_CURRENT 1 +#define SYMINFO_NUM 2 + +#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) +#define ELF32_ST_TYPE(val) ((val) & 0xf) +#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) + +#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) +#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) +#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) + +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 +#define STB_NUM 3 +#define STB_LOOS 10 +#define STB_GNU_UNIQUE 10 +#define STB_HIOS 12 +#define STB_LOPROC 13 +#define STB_HIPROC 15 + +#define STT_NOTYPE 0 +#define STT_OBJECT 1 +#define STT_FUNC 2 +#define STT_SECTION 3 +#define STT_FILE 4 +#define STT_COMMON 5 +#define STT_TLS 6 +#define STT_NUM 7 +#define STT_LOOS 10 +#define STT_GNU_IFUNC 10 +#define STT_HIOS 12 +#define STT_LOPROC 13 +#define STT_HIPROC 15 + +#define STN_UNDEF 0 + +#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) +#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) + +#define STV_DEFAULT 0 +#define STV_INTERNAL 1 +#define STV_HIDDEN 2 +#define STV_PROTECTED 3 + + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; +} Elf32_Rel; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; +} Elf64_Rel; + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} Elf32_Rela; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +} Elf64_Rela; + + + +#define ELF32_R_SYM(val) ((val) >> 8) +#define ELF32_R_TYPE(val) ((val) & 0xff) +#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) + +#define ELF64_R_SYM(i) ((i) >> 32) +#define ELF64_R_TYPE(i) ((i) & 0xffffffff) +#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) + + + +typedef struct { + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +typedef struct { + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; +} Elf64_Phdr; + + + +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 +#define PT_NUM 8 +#define PT_LOOS 0x60000000 +#define PT_GNU_EH_FRAME 0x6474e550 +#define PT_GNU_STACK 0x6474e551 +#define PT_GNU_RELRO 0x6474e552 +#define PT_LOSUNW 0x6ffffffa +#define PT_SUNWBSS 0x6ffffffa +#define PT_SUNWSTACK 0x6ffffffb +#define PT_HISUNW 0x6fffffff +#define PT_HIOS 0x6fffffff +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7fffffff + + +#define PN_XNUM 0xffff + + +#define PF_X (1 << 0) +#define PF_W (1 << 1) +#define PF_R (1 << 2) +#define PF_MASKOS 0x0ff00000 +#define PF_MASKPROC 0xf0000000 + + + +#define NT_PRSTATUS 1 +#define NT_FPREGSET 2 +#define NT_PRPSINFO 3 +#define NT_PRXREG 4 +#define NT_TASKSTRUCT 4 +#define NT_PLATFORM 5 +#define NT_AUXV 6 +#define NT_GWINDOWS 7 +#define NT_ASRS 8 +#define NT_PSTATUS 10 +#define NT_PSINFO 13 +#define NT_PRCRED 14 +#define NT_UTSNAME 15 +#define NT_LWPSTATUS 16 +#define NT_LWPSINFO 17 +#define NT_PRFPXREG 20 +#define NT_SIGINFO 0x53494749 +#define NT_FILE 0x46494c45 +#define NT_PRXFPREG 0x46e62b7f +#define NT_PPC_VMX 0x100 +#define NT_PPC_SPE 0x101 +#define NT_PPC_VSX 0x102 +#define NT_386_TLS 0x200 +#define NT_386_IOPERM 0x201 +#define NT_X86_XSTATE 0x202 +#define NT_S390_HIGH_GPRS 0x300 +#define NT_S390_TIMER 0x301 +#define NT_S390_TODCMP 0x302 +#define NT_S390_TODPREG 0x303 +#define NT_S390_CTRS 0x304 +#define NT_S390_PREFIX 0x305 +#define NT_S390_LAST_BREAK 0x306 +#define NT_S390_SYSTEM_CALL 0x307 +#define NT_S390_TDB 0x308 +#define NT_ARM_VFP 0x400 +#define NT_ARM_TLS 0x401 +#define NT_ARM_HW_BREAK 0x402 +#define NT_ARM_HW_WATCH 0x403 +#define NT_ARM_SYSTEM_CALL 0x404 +#define NT_ARM_SVE 0x405 +#define NT_METAG_CBUF 0x500 +#define NT_METAG_RPIPE 0x501 +#define NT_METAG_TLS 0x502 +#define NT_VERSION 1 + + + + +typedef struct { + Elf32_Sword d_tag; + union { + Elf32_Word d_val; + Elf32_Addr d_ptr; + } d_un; +} Elf32_Dyn; + +typedef struct { + Elf64_Sxword d_tag; + union { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; + + + +#define DT_NULL 0 +#define DT_NEEDED 1 +#define DT_PLTRELSZ 2 +#define DT_PLTGOT 3 +#define DT_HASH 4 +#define DT_STRTAB 5 +#define DT_SYMTAB 6 +#define DT_RELA 7 +#define DT_RELASZ 8 +#define DT_RELAENT 9 +#define DT_STRSZ 10 +#define DT_SYMENT 11 +#define DT_INIT 12 +#define DT_FINI 13 +#define DT_SONAME 14 +#define DT_RPATH 15 +#define DT_SYMBOLIC 16 +#define DT_REL 17 +#define DT_RELSZ 18 +#define DT_RELENT 19 +#define DT_PLTREL 20 +#define DT_DEBUG 21 +#define DT_TEXTREL 22 +#define DT_JMPREL 23 +#define DT_BIND_NOW 24 +#define DT_INIT_ARRAY 25 +#define DT_FINI_ARRAY 26 +#define DT_INIT_ARRAYSZ 27 +#define DT_FINI_ARRAYSZ 28 +#define DT_RUNPATH 29 +#define DT_FLAGS 30 +#define DT_ENCODING 32 +#define DT_PREINIT_ARRAY 32 +#define DT_PREINIT_ARRAYSZ 33 +#define DT_NUM 34 +#define DT_LOOS 0x6000000d +#define DT_HIOS 0x6ffff000 +#define DT_LOPROC 0x70000000 +#define DT_HIPROC 0x7fffffff +#define DT_PROCNUM DT_MIPS_NUM + +#define DT_VALRNGLO 0x6ffffd00 +#define DT_GNU_PRELINKED 0x6ffffdf5 +#define DT_GNU_CONFLICTSZ 0x6ffffdf6 +#define DT_GNU_LIBLISTSZ 0x6ffffdf7 +#define DT_CHECKSUM 0x6ffffdf8 +#define DT_PLTPADSZ 0x6ffffdf9 +#define DT_MOVEENT 0x6ffffdfa +#define DT_MOVESZ 0x6ffffdfb +#define DT_FEATURE_1 0x6ffffdfc +#define DT_POSFLAG_1 0x6ffffdfd + +#define DT_SYMINSZ 0x6ffffdfe +#define DT_SYMINENT 0x6ffffdff +#define DT_VALRNGHI 0x6ffffdff +#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) +#define DT_VALNUM 12 + +#define DT_ADDRRNGLO 0x6ffffe00 +#define DT_GNU_HASH 0x6ffffef5 +#define DT_TLSDESC_PLT 0x6ffffef6 +#define DT_TLSDESC_GOT 0x6ffffef7 +#define DT_GNU_CONFLICT 0x6ffffef8 +#define DT_GNU_LIBLIST 0x6ffffef9 +#define DT_CONFIG 0x6ffffefa +#define DT_DEPAUDIT 0x6ffffefb +#define DT_AUDIT 0x6ffffefc +#define DT_PLTPAD 0x6ffffefd +#define DT_MOVETAB 0x6ffffefe +#define DT_SYMINFO 0x6ffffeff +#define DT_ADDRRNGHI 0x6ffffeff +#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) +#define DT_ADDRNUM 11 + + + +#define DT_VERSYM 0x6ffffff0 + +#define DT_RELACOUNT 0x6ffffff9 +#define DT_RELCOUNT 0x6ffffffa + + +#define DT_FLAGS_1 0x6ffffffb +#define DT_VERDEF 0x6ffffffc + +#define DT_VERDEFNUM 0x6ffffffd +#define DT_VERNEED 0x6ffffffe + +#define DT_VERNEEDNUM 0x6fffffff +#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) +#define DT_VERSIONTAGNUM 16 + + + +#define DT_AUXILIARY 0x7ffffffd +#define DT_FILTER 0x7fffffff +#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) +#define DT_EXTRANUM 3 + + +#define DF_ORIGIN 0x00000001 +#define DF_SYMBOLIC 0x00000002 +#define DF_TEXTREL 0x00000004 +#define DF_BIND_NOW 0x00000008 +#define DF_STATIC_TLS 0x00000010 + + + +#define DF_1_NOW 0x00000001 +#define DF_1_GLOBAL 0x00000002 +#define DF_1_GROUP 0x00000004 +#define DF_1_NODELETE 0x00000008 +#define DF_1_LOADFLTR 0x00000010 +#define DF_1_INITFIRST 0x00000020 +#define DF_1_NOOPEN 0x00000040 +#define DF_1_ORIGIN 0x00000080 +#define DF_1_DIRECT 0x00000100 +#define DF_1_TRANS 0x00000200 +#define DF_1_INTERPOSE 0x00000400 +#define DF_1_NODEFLIB 0x00000800 +#define DF_1_NODUMP 0x00001000 +#define DF_1_CONFALT 0x00002000 +#define DF_1_ENDFILTEE 0x00004000 +#define DF_1_DISPRELDNE 0x00008000 +#define DF_1_DISPRELPND 0x00010000 +#define DF_1_NODIRECT 0x00020000 +#define DF_1_IGNMULDEF 0x00040000 +#define DF_1_NOKSYMS 0x00080000 +#define DF_1_NOHDR 0x00100000 +#define DF_1_EDITED 0x00200000 +#define DF_1_NORELOC 0x00400000 +#define DF_1_SYMINTPOSE 0x00800000 +#define DF_1_GLOBAUDIT 0x01000000 +#define DF_1_SINGLETON 0x02000000 + +#define DTF_1_PARINIT 0x00000001 +#define DTF_1_CONFEXP 0x00000002 + + +#define DF_P1_LAZYLOAD 0x00000001 +#define DF_P1_GROUPPERM 0x00000002 + + + + +typedef struct { + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} Elf32_Verdef; + +typedef struct { + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} Elf64_Verdef; + + + +#define VER_DEF_NONE 0 +#define VER_DEF_CURRENT 1 +#define VER_DEF_NUM 2 + + +#define VER_FLG_BASE 0x1 +#define VER_FLG_WEAK 0x2 + + +#define VER_NDX_LOCAL 0 +#define VER_NDX_GLOBAL 1 +#define VER_NDX_LORESERVE 0xff00 +#define VER_NDX_ELIMINATE 0xff01 + + + +typedef struct { + Elf32_Word vda_name; + Elf32_Word vda_next; +} Elf32_Verdaux; + +typedef struct { + Elf64_Word vda_name; + Elf64_Word vda_next; +} Elf64_Verdaux; + + + + +typedef struct { + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + Elf32_Word vn_aux; + Elf32_Word vn_next; +} Elf32_Verneed; + +typedef struct { + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + Elf64_Word vn_aux; + Elf64_Word vn_next; +} Elf64_Verneed; + + + +#define VER_NEED_NONE 0 +#define VER_NEED_CURRENT 1 +#define VER_NEED_NUM 2 + + + +typedef struct { + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; +} Elf32_Vernaux; + +typedef struct { + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; +} Elf64_Vernaux; + + + +#define VER_FLG_WEAK 0x2 + + + +typedef struct { + uint32_t a_type; + union { + uint32_t a_val; + } a_un; +} Elf32_auxv_t; + +typedef struct { + uint64_t a_type; + union { + uint64_t a_val; + } a_un; +} Elf64_auxv_t; + + + +#define AT_NULL 0 +#define AT_IGNORE 1 +#define AT_EXECFD 2 +#define AT_PHDR 3 +#define AT_PHENT 4 +#define AT_PHNUM 5 +#define AT_PAGESZ 6 +#define AT_BASE 7 +#define AT_FLAGS 8 +#define AT_ENTRY 9 +#define AT_NOTELF 10 +#define AT_UID 11 +#define AT_EUID 12 +#define AT_GID 13 +#define AT_EGID 14 +#define AT_CLKTCK 17 + + +#define AT_PLATFORM 15 +#define AT_HWCAP 16 + + + + +#define AT_FPUCW 18 + + +#define AT_DCACHEBSIZE 19 +#define AT_ICACHEBSIZE 20 +#define AT_UCACHEBSIZE 21 + + + +#define AT_IGNOREPPC 22 + +#define AT_SECURE 23 + +#define AT_BASE_PLATFORM 24 + +#define AT_RANDOM 25 + +#define AT_HWCAP2 26 + +#define AT_EXECFN 31 + + + +#define AT_SYSINFO 32 +#define AT_SYSINFO_EHDR 33 + + + +#define AT_L1I_CACHESHAPE 34 +#define AT_L1D_CACHESHAPE 35 +#define AT_L2_CACHESHAPE 36 +#define AT_L3_CACHESHAPE 37 + + + + +typedef struct { + Elf32_Word n_namesz; + Elf32_Word n_descsz; + Elf32_Word n_type; +} Elf32_Nhdr; + +typedef struct { + Elf64_Word n_namesz; + Elf64_Word n_descsz; + Elf64_Word n_type; +} Elf64_Nhdr; + + + + +#define ELF_NOTE_SOLARIS "SUNW Solaris" + + +#define ELF_NOTE_GNU "GNU" + + + + + +#define ELF_NOTE_PAGESIZE_HINT 1 + + +#define NT_GNU_ABI_TAG 1 +#define ELF_NOTE_ABI NT_GNU_ABI_TAG + + + +#define ELF_NOTE_OS_LINUX 0 +#define ELF_NOTE_OS_GNU 1 +#define ELF_NOTE_OS_SOLARIS2 2 +#define ELF_NOTE_OS_FREEBSD 3 + +#define NT_GNU_BUILD_ID 3 +#define NT_GNU_GOLD_VERSION 4 + + + +typedef struct { + Elf32_Xword m_value; + Elf32_Word m_info; + Elf32_Word m_poffset; + Elf32_Half m_repeat; + Elf32_Half m_stride; +} Elf32_Move; + +typedef struct { + Elf64_Xword m_value; + Elf64_Xword m_info; + Elf64_Xword m_poffset; + Elf64_Half m_repeat; + Elf64_Half m_stride; +} Elf64_Move; + + +#define ELF32_M_SYM(info) ((info) >> 8) +#define ELF32_M_SIZE(info) ((unsigned char) (info)) +#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) + +#define ELF64_M_SYM(info) ELF32_M_SYM (info) +#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) +#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) + +#define EF_CPU32 0x00810000 + +#define R_68K_NONE 0 +#define R_68K_32 1 +#define R_68K_16 2 +#define R_68K_8 3 +#define R_68K_PC32 4 +#define R_68K_PC16 5 +#define R_68K_PC8 6 +#define R_68K_GOT32 7 +#define R_68K_GOT16 8 +#define R_68K_GOT8 9 +#define R_68K_GOT32O 10 +#define R_68K_GOT16O 11 +#define R_68K_GOT8O 12 +#define R_68K_PLT32 13 +#define R_68K_PLT16 14 +#define R_68K_PLT8 15 +#define R_68K_PLT32O 16 +#define R_68K_PLT16O 17 +#define R_68K_PLT8O 18 +#define R_68K_COPY 19 +#define R_68K_GLOB_DAT 20 +#define R_68K_JMP_SLOT 21 +#define R_68K_RELATIVE 22 +#define R_68K_NUM 23 + +#define R_386_NONE 0 +#define R_386_32 1 +#define R_386_PC32 2 +#define R_386_GOT32 3 +#define R_386_PLT32 4 +#define R_386_COPY 5 +#define R_386_GLOB_DAT 6 +#define R_386_JMP_SLOT 7 +#define R_386_RELATIVE 8 +#define R_386_GOTOFF 9 +#define R_386_GOTPC 10 +#define R_386_32PLT 11 +#define R_386_TLS_TPOFF 14 +#define R_386_TLS_IE 15 +#define R_386_TLS_GOTIE 16 +#define R_386_TLS_LE 17 +#define R_386_TLS_GD 18 +#define R_386_TLS_LDM 19 +#define R_386_16 20 +#define R_386_PC16 21 +#define R_386_8 22 +#define R_386_PC8 23 +#define R_386_TLS_GD_32 24 +#define R_386_TLS_GD_PUSH 25 +#define R_386_TLS_GD_CALL 26 +#define R_386_TLS_GD_POP 27 +#define R_386_TLS_LDM_32 28 +#define R_386_TLS_LDM_PUSH 29 +#define R_386_TLS_LDM_CALL 30 +#define R_386_TLS_LDM_POP 31 +#define R_386_TLS_LDO_32 32 +#define R_386_TLS_IE_32 33 +#define R_386_TLS_LE_32 34 +#define R_386_TLS_DTPMOD32 35 +#define R_386_TLS_DTPOFF32 36 +#define R_386_TLS_TPOFF32 37 +#define R_386_SIZE32 38 +#define R_386_TLS_GOTDESC 39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC 41 +#define R_386_IRELATIVE 42 +#define R_386_GOT32X 43 +#define R_386_NUM 44 + + + + + +#define STT_SPARC_REGISTER 13 + + + +#define EF_SPARCV9_MM 3 +#define EF_SPARCV9_TSO 0 +#define EF_SPARCV9_PSO 1 +#define EF_SPARCV9_RMO 2 +#define EF_SPARC_LEDATA 0x800000 +#define EF_SPARC_EXT_MASK 0xFFFF00 +#define EF_SPARC_32PLUS 0x000100 +#define EF_SPARC_SUN_US1 0x000200 +#define EF_SPARC_HAL_R1 0x000400 +#define EF_SPARC_SUN_US3 0x000800 + + + +#define R_SPARC_NONE 0 +#define R_SPARC_8 1 +#define R_SPARC_16 2 +#define R_SPARC_32 3 +#define R_SPARC_DISP8 4 +#define R_SPARC_DISP16 5 +#define R_SPARC_DISP32 6 +#define R_SPARC_WDISP30 7 +#define R_SPARC_WDISP22 8 +#define R_SPARC_HI22 9 +#define R_SPARC_22 10 +#define R_SPARC_13 11 +#define R_SPARC_LO10 12 +#define R_SPARC_GOT10 13 +#define R_SPARC_GOT13 14 +#define R_SPARC_GOT22 15 +#define R_SPARC_PC10 16 +#define R_SPARC_PC22 17 +#define R_SPARC_WPLT30 18 +#define R_SPARC_COPY 19 +#define R_SPARC_GLOB_DAT 20 +#define R_SPARC_JMP_SLOT 21 +#define R_SPARC_RELATIVE 22 +#define R_SPARC_UA32 23 + + + +#define R_SPARC_PLT32 24 +#define R_SPARC_HIPLT22 25 +#define R_SPARC_LOPLT10 26 +#define R_SPARC_PCPLT32 27 +#define R_SPARC_PCPLT22 28 +#define R_SPARC_PCPLT10 29 +#define R_SPARC_10 30 +#define R_SPARC_11 31 +#define R_SPARC_64 32 +#define R_SPARC_OLO10 33 +#define R_SPARC_HH22 34 +#define R_SPARC_HM10 35 +#define R_SPARC_LM22 36 +#define R_SPARC_PC_HH22 37 +#define R_SPARC_PC_HM10 38 +#define R_SPARC_PC_LM22 39 +#define R_SPARC_WDISP16 40 +#define R_SPARC_WDISP19 41 +#define R_SPARC_GLOB_JMP 42 +#define R_SPARC_7 43 +#define R_SPARC_5 44 +#define R_SPARC_6 45 +#define R_SPARC_DISP64 46 +#define R_SPARC_PLT64 47 +#define R_SPARC_HIX22 48 +#define R_SPARC_LOX10 49 +#define R_SPARC_H44 50 +#define R_SPARC_M44 51 +#define R_SPARC_L44 52 +#define R_SPARC_REGISTER 53 +#define R_SPARC_UA64 54 +#define R_SPARC_UA16 55 +#define R_SPARC_TLS_GD_HI22 56 +#define R_SPARC_TLS_GD_LO10 57 +#define R_SPARC_TLS_GD_ADD 58 +#define R_SPARC_TLS_GD_CALL 59 +#define R_SPARC_TLS_LDM_HI22 60 +#define R_SPARC_TLS_LDM_LO10 61 +#define R_SPARC_TLS_LDM_ADD 62 +#define R_SPARC_TLS_LDM_CALL 63 +#define R_SPARC_TLS_LDO_HIX22 64 +#define R_SPARC_TLS_LDO_LOX10 65 +#define R_SPARC_TLS_LDO_ADD 66 +#define R_SPARC_TLS_IE_HI22 67 +#define R_SPARC_TLS_IE_LO10 68 +#define R_SPARC_TLS_IE_LD 69 +#define R_SPARC_TLS_IE_LDX 70 +#define R_SPARC_TLS_IE_ADD 71 +#define R_SPARC_TLS_LE_HIX22 72 +#define R_SPARC_TLS_LE_LOX10 73 +#define R_SPARC_TLS_DTPMOD32 74 +#define R_SPARC_TLS_DTPMOD64 75 +#define R_SPARC_TLS_DTPOFF32 76 +#define R_SPARC_TLS_DTPOFF64 77 +#define R_SPARC_TLS_TPOFF32 78 +#define R_SPARC_TLS_TPOFF64 79 +#define R_SPARC_GOTDATA_HIX22 80 +#define R_SPARC_GOTDATA_LOX10 81 +#define R_SPARC_GOTDATA_OP_HIX22 82 +#define R_SPARC_GOTDATA_OP_LOX10 83 +#define R_SPARC_GOTDATA_OP 84 +#define R_SPARC_H34 85 +#define R_SPARC_SIZE32 86 +#define R_SPARC_SIZE64 87 +#define R_SPARC_GNU_VTINHERIT 250 +#define R_SPARC_GNU_VTENTRY 251 +#define R_SPARC_REV32 252 + +#define R_SPARC_NUM 253 + + + +#define DT_SPARC_REGISTER 0x70000001 +#define DT_SPARC_NUM 2 + + +#define EF_MIPS_NOREORDER 1 +#define EF_MIPS_PIC 2 +#define EF_MIPS_CPIC 4 +#define EF_MIPS_XGOT 8 +#define EF_MIPS_64BIT_WHIRL 16 +#define EF_MIPS_ABI2 32 +#define EF_MIPS_ABI_ON32 64 +#define EF_MIPS_FP64 512 +#define EF_MIPS_NAN2008 1024 +#define EF_MIPS_ARCH 0xf0000000 + + + +#define EF_MIPS_ARCH_1 0x00000000 +#define EF_MIPS_ARCH_2 0x10000000 +#define EF_MIPS_ARCH_3 0x20000000 +#define EF_MIPS_ARCH_4 0x30000000 +#define EF_MIPS_ARCH_5 0x40000000 +#define EF_MIPS_ARCH_32 0x50000000 +#define EF_MIPS_ARCH_64 0x60000000 +#define EF_MIPS_ARCH_32R2 0x70000000 +#define EF_MIPS_ARCH_64R2 0x80000000 + + +#define E_MIPS_ARCH_1 0x00000000 +#define E_MIPS_ARCH_2 0x10000000 +#define E_MIPS_ARCH_3 0x20000000 +#define E_MIPS_ARCH_4 0x30000000 +#define E_MIPS_ARCH_5 0x40000000 +#define E_MIPS_ARCH_32 0x50000000 +#define E_MIPS_ARCH_64 0x60000000 + + + +#define SHN_MIPS_ACOMMON 0xff00 +#define SHN_MIPS_TEXT 0xff01 +#define SHN_MIPS_DATA 0xff02 +#define SHN_MIPS_SCOMMON 0xff03 +#define SHN_MIPS_SUNDEFINED 0xff04 + + + +#define SHT_MIPS_LIBLIST 0x70000000 +#define SHT_MIPS_MSYM 0x70000001 +#define SHT_MIPS_CONFLICT 0x70000002 +#define SHT_MIPS_GPTAB 0x70000003 +#define SHT_MIPS_UCODE 0x70000004 +#define SHT_MIPS_DEBUG 0x70000005 +#define SHT_MIPS_REGINFO 0x70000006 +#define SHT_MIPS_PACKAGE 0x70000007 +#define SHT_MIPS_PACKSYM 0x70000008 +#define SHT_MIPS_RELD 0x70000009 +#define SHT_MIPS_IFACE 0x7000000b +#define SHT_MIPS_CONTENT 0x7000000c +#define SHT_MIPS_OPTIONS 0x7000000d +#define SHT_MIPS_SHDR 0x70000010 +#define SHT_MIPS_FDESC 0x70000011 +#define SHT_MIPS_EXTSYM 0x70000012 +#define SHT_MIPS_DENSE 0x70000013 +#define SHT_MIPS_PDESC 0x70000014 +#define SHT_MIPS_LOCSYM 0x70000015 +#define SHT_MIPS_AUXSYM 0x70000016 +#define SHT_MIPS_OPTSYM 0x70000017 +#define SHT_MIPS_LOCSTR 0x70000018 +#define SHT_MIPS_LINE 0x70000019 +#define SHT_MIPS_RFDESC 0x7000001a +#define SHT_MIPS_DELTASYM 0x7000001b +#define SHT_MIPS_DELTAINST 0x7000001c +#define SHT_MIPS_DELTACLASS 0x7000001d +#define SHT_MIPS_DWARF 0x7000001e +#define SHT_MIPS_DELTADECL 0x7000001f +#define SHT_MIPS_SYMBOL_LIB 0x70000020 +#define SHT_MIPS_EVENTS 0x70000021 +#define SHT_MIPS_TRANSLATE 0x70000022 +#define SHT_MIPS_PIXIE 0x70000023 +#define SHT_MIPS_XLATE 0x70000024 +#define SHT_MIPS_XLATE_DEBUG 0x70000025 +#define SHT_MIPS_WHIRL 0x70000026 +#define SHT_MIPS_EH_REGION 0x70000027 +#define SHT_MIPS_XLATE_OLD 0x70000028 +#define SHT_MIPS_PDR_EXCEPTION 0x70000029 + + + +#define SHF_MIPS_GPREL 0x10000000 +#define SHF_MIPS_MERGE 0x20000000 +#define SHF_MIPS_ADDR 0x40000000 +#define SHF_MIPS_STRINGS 0x80000000 +#define SHF_MIPS_NOSTRIP 0x08000000 +#define SHF_MIPS_LOCAL 0x04000000 +#define SHF_MIPS_NAMES 0x02000000 +#define SHF_MIPS_NODUPE 0x01000000 + + + + + +#define STO_MIPS_DEFAULT 0x0 +#define STO_MIPS_INTERNAL 0x1 +#define STO_MIPS_HIDDEN 0x2 +#define STO_MIPS_PROTECTED 0x3 +#define STO_MIPS_PLT 0x8 +#define STO_MIPS_SC_ALIGN_UNUSED 0xff + + +#define STB_MIPS_SPLIT_COMMON 13 + + + +typedef union { + struct { + Elf32_Word gt_current_g_value; + Elf32_Word gt_unused; + } gt_header; + struct { + Elf32_Word gt_g_value; + Elf32_Word gt_bytes; + } gt_entry; +} Elf32_gptab; + + + +typedef struct { + Elf32_Word ri_gprmask; + Elf32_Word ri_cprmask[4]; + Elf32_Sword ri_gp_value; +} Elf32_RegInfo; + + + +typedef struct { + unsigned char kind; + + unsigned char size; + Elf32_Section section; + + Elf32_Word info; +} Elf_Options; + + + +#define ODK_NULL 0 +#define ODK_REGINFO 1 +#define ODK_EXCEPTIONS 2 +#define ODK_PAD 3 +#define ODK_HWPATCH 4 +#define ODK_FILL 5 +#define ODK_TAGS 6 +#define ODK_HWAND 7 +#define ODK_HWOR 8 + + + +#define OEX_FPU_MIN 0x1f +#define OEX_FPU_MAX 0x1f00 +#define OEX_PAGE0 0x10000 +#define OEX_SMM 0x20000 +#define OEX_FPDBUG 0x40000 +#define OEX_PRECISEFP OEX_FPDBUG +#define OEX_DISMISS 0x80000 + +#define OEX_FPU_INVAL 0x10 +#define OEX_FPU_DIV0 0x08 +#define OEX_FPU_OFLO 0x04 +#define OEX_FPU_UFLO 0x02 +#define OEX_FPU_INEX 0x01 + + + +#define OHW_R4KEOP 0x1 +#define OHW_R8KPFETCH 0x2 +#define OHW_R5KEOP 0x4 +#define OHW_R5KCVTL 0x8 + +#define OPAD_PREFIX 0x1 +#define OPAD_POSTFIX 0x2 +#define OPAD_SYMBOL 0x4 + + + +typedef struct { + Elf32_Word hwp_flags1; + Elf32_Word hwp_flags2; +} Elf_Options_Hw; + + + +#define OHWA0_R4KEOP_CHECKED 0x00000001 +#define OHWA1_R4KEOP_CLEAN 0x00000002 + + + +#define R_MIPS_NONE 0 +#define R_MIPS_16 1 +#define R_MIPS_32 2 +#define R_MIPS_REL32 3 +#define R_MIPS_26 4 +#define R_MIPS_HI16 5 +#define R_MIPS_LO16 6 +#define R_MIPS_GPREL16 7 +#define R_MIPS_LITERAL 8 +#define R_MIPS_GOT16 9 +#define R_MIPS_PC16 10 +#define R_MIPS_CALL16 11 +#define R_MIPS_GPREL32 12 + +#define R_MIPS_SHIFT5 16 +#define R_MIPS_SHIFT6 17 +#define R_MIPS_64 18 +#define R_MIPS_GOT_DISP 19 +#define R_MIPS_GOT_PAGE 20 +#define R_MIPS_GOT_OFST 21 +#define R_MIPS_GOT_HI16 22 +#define R_MIPS_GOT_LO16 23 +#define R_MIPS_SUB 24 +#define R_MIPS_INSERT_A 25 +#define R_MIPS_INSERT_B 26 +#define R_MIPS_DELETE 27 +#define R_MIPS_HIGHER 28 +#define R_MIPS_HIGHEST 29 +#define R_MIPS_CALL_HI16 30 +#define R_MIPS_CALL_LO16 31 +#define R_MIPS_SCN_DISP 32 +#define R_MIPS_REL16 33 +#define R_MIPS_ADD_IMMEDIATE 34 +#define R_MIPS_PJUMP 35 +#define R_MIPS_RELGOT 36 +#define R_MIPS_JALR 37 +#define R_MIPS_TLS_DTPMOD32 38 +#define R_MIPS_TLS_DTPREL32 39 +#define R_MIPS_TLS_DTPMOD64 40 +#define R_MIPS_TLS_DTPREL64 41 +#define R_MIPS_TLS_GD 42 +#define R_MIPS_TLS_LDM 43 +#define R_MIPS_TLS_DTPREL_HI16 44 +#define R_MIPS_TLS_DTPREL_LO16 45 +#define R_MIPS_TLS_GOTTPREL 46 +#define R_MIPS_TLS_TPREL32 47 +#define R_MIPS_TLS_TPREL64 48 +#define R_MIPS_TLS_TPREL_HI16 49 +#define R_MIPS_TLS_TPREL_LO16 50 +#define R_MIPS_GLOB_DAT 51 +#define R_MIPS_COPY 126 +#define R_MIPS_JUMP_SLOT 127 + +#define R_MIPS_NUM 128 + + + +#define PT_MIPS_REGINFO 0x70000000 +#define PT_MIPS_RTPROC 0x70000001 +#define PT_MIPS_OPTIONS 0x70000002 +#define PT_MIPS_ABIFLAGS 0x70000003 + + + +#define PF_MIPS_LOCAL 0x10000000 + + + +#define DT_MIPS_RLD_VERSION 0x70000001 +#define DT_MIPS_TIME_STAMP 0x70000002 +#define DT_MIPS_ICHECKSUM 0x70000003 +#define DT_MIPS_IVERSION 0x70000004 +#define DT_MIPS_FLAGS 0x70000005 +#define DT_MIPS_BASE_ADDRESS 0x70000006 +#define DT_MIPS_MSYM 0x70000007 +#define DT_MIPS_CONFLICT 0x70000008 +#define DT_MIPS_LIBLIST 0x70000009 +#define DT_MIPS_LOCAL_GOTNO 0x7000000a +#define DT_MIPS_CONFLICTNO 0x7000000b +#define DT_MIPS_LIBLISTNO 0x70000010 +#define DT_MIPS_SYMTABNO 0x70000011 +#define DT_MIPS_UNREFEXTNO 0x70000012 +#define DT_MIPS_GOTSYM 0x70000013 +#define DT_MIPS_HIPAGENO 0x70000014 +#define DT_MIPS_RLD_MAP 0x70000016 +#define DT_MIPS_DELTA_CLASS 0x70000017 +#define DT_MIPS_DELTA_CLASS_NO 0x70000018 + +#define DT_MIPS_DELTA_INSTANCE 0x70000019 +#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a + +#define DT_MIPS_DELTA_RELOC 0x7000001b +#define DT_MIPS_DELTA_RELOC_NO 0x7000001c + +#define DT_MIPS_DELTA_SYM 0x7000001d + +#define DT_MIPS_DELTA_SYM_NO 0x7000001e + +#define DT_MIPS_DELTA_CLASSSYM 0x70000020 + +#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 + +#define DT_MIPS_CXX_FLAGS 0x70000022 +#define DT_MIPS_PIXIE_INIT 0x70000023 +#define DT_MIPS_SYMBOL_LIB 0x70000024 +#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 +#define DT_MIPS_LOCAL_GOTIDX 0x70000026 +#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 +#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 +#define DT_MIPS_OPTIONS 0x70000029 +#define DT_MIPS_INTERFACE 0x7000002a +#define DT_MIPS_DYNSTR_ALIGN 0x7000002b +#define DT_MIPS_INTERFACE_SIZE 0x7000002c +#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d + +#define DT_MIPS_PERF_SUFFIX 0x7000002e + +#define DT_MIPS_COMPACT_SIZE 0x7000002f +#define DT_MIPS_GP_VALUE 0x70000030 +#define DT_MIPS_AUX_DYNAMIC 0x70000031 + +#define DT_MIPS_PLTGOT 0x70000032 + +#define DT_MIPS_RWPLT 0x70000034 +#define DT_MIPS_RLD_MAP_REL 0x70000035 +#define DT_MIPS_NUM 0x36 + + + +#define RHF_NONE 0 +#define RHF_QUICKSTART (1 << 0) +#define RHF_NOTPOT (1 << 1) +#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) +#define RHF_NO_MOVE (1 << 3) +#define RHF_SGI_ONLY (1 << 4) +#define RHF_GUARANTEE_INIT (1 << 5) +#define RHF_DELTA_C_PLUS_PLUS (1 << 6) +#define RHF_GUARANTEE_START_INIT (1 << 7) +#define RHF_PIXIE (1 << 8) +#define RHF_DEFAULT_DELAY_LOAD (1 << 9) +#define RHF_REQUICKSTART (1 << 10) +#define RHF_REQUICKSTARTED (1 << 11) +#define RHF_CORD (1 << 12) +#define RHF_NO_UNRES_UNDEF (1 << 13) +#define RHF_RLD_ORDER_SAFE (1 << 14) + + + +typedef struct { + Elf32_Word l_name; + Elf32_Word l_time_stamp; + Elf32_Word l_checksum; + Elf32_Word l_version; + Elf32_Word l_flags; +} Elf32_Lib; + +typedef struct { + Elf64_Word l_name; + Elf64_Word l_time_stamp; + Elf64_Word l_checksum; + Elf64_Word l_version; + Elf64_Word l_flags; +} Elf64_Lib; + + + + +#define LL_NONE 0 +#define LL_EXACT_MATCH (1 << 0) +#define LL_IGNORE_INT_VER (1 << 1) +#define LL_REQUIRE_MINOR (1 << 2) +#define LL_EXPORTS (1 << 3) +#define LL_DELAY_LOAD (1 << 4) +#define LL_DELTA (1 << 5) + + + +typedef Elf32_Addr Elf32_Conflict; + +typedef struct { + Elf32_Half version; + unsigned char isa_level; + unsigned char isa_rev; + unsigned char gpr_size; + unsigned char cpr1_size; + unsigned char cpr2_size; + unsigned char fp_abi; + Elf32_Word isa_ext; + Elf32_Word ases; + Elf32_Word flags1; + Elf32_Word flags2; +} Elf_MIPS_ABIFlags_v0; + +#define MIPS_AFL_REG_NONE 0x00 +#define MIPS_AFL_REG_32 0x01 +#define MIPS_AFL_REG_64 0x02 +#define MIPS_AFL_REG_128 0x03 + +#define MIPS_AFL_ASE_DSP 0x00000001 +#define MIPS_AFL_ASE_DSPR2 0x00000002 +#define MIPS_AFL_ASE_EVA 0x00000004 +#define MIPS_AFL_ASE_MCU 0x00000008 +#define MIPS_AFL_ASE_MDMX 0x00000010 +#define MIPS_AFL_ASE_MIPS3D 0x00000020 +#define MIPS_AFL_ASE_MT 0x00000040 +#define MIPS_AFL_ASE_SMARTMIPS 0x00000080 +#define MIPS_AFL_ASE_VIRT 0x00000100 +#define MIPS_AFL_ASE_MSA 0x00000200 +#define MIPS_AFL_ASE_MIPS16 0x00000400 +#define MIPS_AFL_ASE_MICROMIPS 0x00000800 +#define MIPS_AFL_ASE_XPA 0x00001000 +#define MIPS_AFL_ASE_MASK 0x00001fff + +#define MIPS_AFL_EXT_XLR 1 +#define MIPS_AFL_EXT_OCTEON2 2 +#define MIPS_AFL_EXT_OCTEONP 3 +#define MIPS_AFL_EXT_LOONGSON_3A 4 +#define MIPS_AFL_EXT_OCTEON 5 +#define MIPS_AFL_EXT_5900 6 +#define MIPS_AFL_EXT_4650 7 +#define MIPS_AFL_EXT_4010 8 +#define MIPS_AFL_EXT_4100 9 +#define MIPS_AFL_EXT_3900 10 +#define MIPS_AFL_EXT_10000 11 +#define MIPS_AFL_EXT_SB1 12 +#define MIPS_AFL_EXT_4111 13 +#define MIPS_AFL_EXT_4120 14 +#define MIPS_AFL_EXT_5400 15 +#define MIPS_AFL_EXT_5500 16 +#define MIPS_AFL_EXT_LOONGSON_2E 17 +#define MIPS_AFL_EXT_LOONGSON_2F 18 + +#define MIPS_AFL_FLAGS1_ODDSPREG 1 + +enum +{ + Val_GNU_MIPS_ABI_FP_ANY = 0, + Val_GNU_MIPS_ABI_FP_DOUBLE = 1, + Val_GNU_MIPS_ABI_FP_SINGLE = 2, + Val_GNU_MIPS_ABI_FP_SOFT = 3, + Val_GNU_MIPS_ABI_FP_OLD_64 = 4, + Val_GNU_MIPS_ABI_FP_XX = 5, + Val_GNU_MIPS_ABI_FP_64 = 6, + Val_GNU_MIPS_ABI_FP_64A = 7, + Val_GNU_MIPS_ABI_FP_MAX = 7 +}; + + + + +#define EF_PARISC_TRAPNIL 0x00010000 +#define EF_PARISC_EXT 0x00020000 +#define EF_PARISC_LSB 0x00040000 +#define EF_PARISC_WIDE 0x00080000 +#define EF_PARISC_NO_KABP 0x00100000 + +#define EF_PARISC_LAZYSWAP 0x00400000 +#define EF_PARISC_ARCH 0x0000ffff + + + +#define EFA_PARISC_1_0 0x020b +#define EFA_PARISC_1_1 0x0210 +#define EFA_PARISC_2_0 0x0214 + + + +#define SHN_PARISC_ANSI_COMMON 0xff00 + +#define SHN_PARISC_HUGE_COMMON 0xff01 + + + +#define SHT_PARISC_EXT 0x70000000 +#define SHT_PARISC_UNWIND 0x70000001 +#define SHT_PARISC_DOC 0x70000002 + + + +#define SHF_PARISC_SHORT 0x20000000 +#define SHF_PARISC_HUGE 0x40000000 +#define SHF_PARISC_SBP 0x80000000 + + + +#define STT_PARISC_MILLICODE 13 + +#define STT_HP_OPAQUE (STT_LOOS + 0x1) +#define STT_HP_STUB (STT_LOOS + 0x2) + + + +#define R_PARISC_NONE 0 +#define R_PARISC_DIR32 1 +#define R_PARISC_DIR21L 2 +#define R_PARISC_DIR17R 3 +#define R_PARISC_DIR17F 4 +#define R_PARISC_DIR14R 6 +#define R_PARISC_PCREL32 9 +#define R_PARISC_PCREL21L 10 +#define R_PARISC_PCREL17R 11 +#define R_PARISC_PCREL17F 12 +#define R_PARISC_PCREL14R 14 +#define R_PARISC_DPREL21L 18 +#define R_PARISC_DPREL14R 22 +#define R_PARISC_GPREL21L 26 +#define R_PARISC_GPREL14R 30 +#define R_PARISC_LTOFF21L 34 +#define R_PARISC_LTOFF14R 38 +#define R_PARISC_SECREL32 41 +#define R_PARISC_SEGBASE 48 +#define R_PARISC_SEGREL32 49 +#define R_PARISC_PLTOFF21L 50 +#define R_PARISC_PLTOFF14R 54 +#define R_PARISC_LTOFF_FPTR32 57 +#define R_PARISC_LTOFF_FPTR21L 58 +#define R_PARISC_LTOFF_FPTR14R 62 +#define R_PARISC_FPTR64 64 +#define R_PARISC_PLABEL32 65 +#define R_PARISC_PLABEL21L 66 +#define R_PARISC_PLABEL14R 70 +#define R_PARISC_PCREL64 72 +#define R_PARISC_PCREL22F 74 +#define R_PARISC_PCREL14WR 75 +#define R_PARISC_PCREL14DR 76 +#define R_PARISC_PCREL16F 77 +#define R_PARISC_PCREL16WF 78 +#define R_PARISC_PCREL16DF 79 +#define R_PARISC_DIR64 80 +#define R_PARISC_DIR14WR 83 +#define R_PARISC_DIR14DR 84 +#define R_PARISC_DIR16F 85 +#define R_PARISC_DIR16WF 86 +#define R_PARISC_DIR16DF 87 +#define R_PARISC_GPREL64 88 +#define R_PARISC_GPREL14WR 91 +#define R_PARISC_GPREL14DR 92 +#define R_PARISC_GPREL16F 93 +#define R_PARISC_GPREL16WF 94 +#define R_PARISC_GPREL16DF 95 +#define R_PARISC_LTOFF64 96 +#define R_PARISC_LTOFF14WR 99 +#define R_PARISC_LTOFF14DR 100 +#define R_PARISC_LTOFF16F 101 +#define R_PARISC_LTOFF16WF 102 +#define R_PARISC_LTOFF16DF 103 +#define R_PARISC_SECREL64 104 +#define R_PARISC_SEGREL64 112 +#define R_PARISC_PLTOFF14WR 115 +#define R_PARISC_PLTOFF14DR 116 +#define R_PARISC_PLTOFF16F 117 +#define R_PARISC_PLTOFF16WF 118 +#define R_PARISC_PLTOFF16DF 119 +#define R_PARISC_LTOFF_FPTR64 120 +#define R_PARISC_LTOFF_FPTR14WR 123 +#define R_PARISC_LTOFF_FPTR14DR 124 +#define R_PARISC_LTOFF_FPTR16F 125 +#define R_PARISC_LTOFF_FPTR16WF 126 +#define R_PARISC_LTOFF_FPTR16DF 127 +#define R_PARISC_LORESERVE 128 +#define R_PARISC_COPY 128 +#define R_PARISC_IPLT 129 +#define R_PARISC_EPLT 130 +#define R_PARISC_TPREL32 153 +#define R_PARISC_TPREL21L 154 +#define R_PARISC_TPREL14R 158 +#define R_PARISC_LTOFF_TP21L 162 +#define R_PARISC_LTOFF_TP14R 166 +#define R_PARISC_LTOFF_TP14F 167 +#define R_PARISC_TPREL64 216 +#define R_PARISC_TPREL14WR 219 +#define R_PARISC_TPREL14DR 220 +#define R_PARISC_TPREL16F 221 +#define R_PARISC_TPREL16WF 222 +#define R_PARISC_TPREL16DF 223 +#define R_PARISC_LTOFF_TP64 224 +#define R_PARISC_LTOFF_TP14WR 227 +#define R_PARISC_LTOFF_TP14DR 228 +#define R_PARISC_LTOFF_TP16F 229 +#define R_PARISC_LTOFF_TP16WF 230 +#define R_PARISC_LTOFF_TP16DF 231 +#define R_PARISC_GNU_VTENTRY 232 +#define R_PARISC_GNU_VTINHERIT 233 +#define R_PARISC_TLS_GD21L 234 +#define R_PARISC_TLS_GD14R 235 +#define R_PARISC_TLS_GDCALL 236 +#define R_PARISC_TLS_LDM21L 237 +#define R_PARISC_TLS_LDM14R 238 +#define R_PARISC_TLS_LDMCALL 239 +#define R_PARISC_TLS_LDO21L 240 +#define R_PARISC_TLS_LDO14R 241 +#define R_PARISC_TLS_DTPMOD32 242 +#define R_PARISC_TLS_DTPMOD64 243 +#define R_PARISC_TLS_DTPOFF32 244 +#define R_PARISC_TLS_DTPOFF64 245 +#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L +#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R +#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L +#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R +#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 +#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 +#define R_PARISC_HIRESERVE 255 + + + +#define PT_HP_TLS (PT_LOOS + 0x0) +#define PT_HP_CORE_NONE (PT_LOOS + 0x1) +#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) +#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) +#define PT_HP_CORE_COMM (PT_LOOS + 0x4) +#define PT_HP_CORE_PROC (PT_LOOS + 0x5) +#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) +#define PT_HP_CORE_STACK (PT_LOOS + 0x7) +#define PT_HP_CORE_SHM (PT_LOOS + 0x8) +#define PT_HP_CORE_MMF (PT_LOOS + 0x9) +#define PT_HP_PARALLEL (PT_LOOS + 0x10) +#define PT_HP_FASTBIND (PT_LOOS + 0x11) +#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) +#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) +#define PT_HP_STACK (PT_LOOS + 0x14) + +#define PT_PARISC_ARCHEXT 0x70000000 +#define PT_PARISC_UNWIND 0x70000001 + + + +#define PF_PARISC_SBP 0x08000000 + +#define PF_HP_PAGE_SIZE 0x00100000 +#define PF_HP_FAR_SHARED 0x00200000 +#define PF_HP_NEAR_SHARED 0x00400000 +#define PF_HP_CODE 0x01000000 +#define PF_HP_MODIFY 0x02000000 +#define PF_HP_LAZYSWAP 0x04000000 +#define PF_HP_SBP 0x08000000 + + + + + + +#define EF_ALPHA_32BIT 1 +#define EF_ALPHA_CANRELAX 2 + + + + +#define SHT_ALPHA_DEBUG 0x70000001 +#define SHT_ALPHA_REGINFO 0x70000002 + + + +#define SHF_ALPHA_GPREL 0x10000000 + + +#define STO_ALPHA_NOPV 0x80 +#define STO_ALPHA_STD_GPLOAD 0x88 + + + +#define R_ALPHA_NONE 0 +#define R_ALPHA_REFLONG 1 +#define R_ALPHA_REFQUAD 2 +#define R_ALPHA_GPREL32 3 +#define R_ALPHA_LITERAL 4 +#define R_ALPHA_LITUSE 5 +#define R_ALPHA_GPDISP 6 +#define R_ALPHA_BRADDR 7 +#define R_ALPHA_HINT 8 +#define R_ALPHA_SREL16 9 +#define R_ALPHA_SREL32 10 +#define R_ALPHA_SREL64 11 +#define R_ALPHA_GPRELHIGH 17 +#define R_ALPHA_GPRELLOW 18 +#define R_ALPHA_GPREL16 19 +#define R_ALPHA_COPY 24 +#define R_ALPHA_GLOB_DAT 25 +#define R_ALPHA_JMP_SLOT 26 +#define R_ALPHA_RELATIVE 27 +#define R_ALPHA_TLS_GD_HI 28 +#define R_ALPHA_TLSGD 29 +#define R_ALPHA_TLS_LDM 30 +#define R_ALPHA_DTPMOD64 31 +#define R_ALPHA_GOTDTPREL 32 +#define R_ALPHA_DTPREL64 33 +#define R_ALPHA_DTPRELHI 34 +#define R_ALPHA_DTPRELLO 35 +#define R_ALPHA_DTPREL16 36 +#define R_ALPHA_GOTTPREL 37 +#define R_ALPHA_TPREL64 38 +#define R_ALPHA_TPRELHI 39 +#define R_ALPHA_TPRELLO 40 +#define R_ALPHA_TPREL16 41 + +#define R_ALPHA_NUM 46 + + +#define LITUSE_ALPHA_ADDR 0 +#define LITUSE_ALPHA_BASE 1 +#define LITUSE_ALPHA_BYTOFF 2 +#define LITUSE_ALPHA_JSR 3 +#define LITUSE_ALPHA_TLS_GD 4 +#define LITUSE_ALPHA_TLS_LDM 5 + + +#define DT_ALPHA_PLTRO (DT_LOPROC + 0) +#define DT_ALPHA_NUM 1 + + + + +#define EF_PPC_EMB 0x80000000 + + +#define EF_PPC_RELOCATABLE 0x00010000 +#define EF_PPC_RELOCATABLE_LIB 0x00008000 + + + +#define R_PPC_NONE 0 +#define R_PPC_ADDR32 1 +#define R_PPC_ADDR24 2 +#define R_PPC_ADDR16 3 +#define R_PPC_ADDR16_LO 4 +#define R_PPC_ADDR16_HI 5 +#define R_PPC_ADDR16_HA 6 +#define R_PPC_ADDR14 7 +#define R_PPC_ADDR14_BRTAKEN 8 +#define R_PPC_ADDR14_BRNTAKEN 9 +#define R_PPC_REL24 10 +#define R_PPC_REL14 11 +#define R_PPC_REL14_BRTAKEN 12 +#define R_PPC_REL14_BRNTAKEN 13 +#define R_PPC_GOT16 14 +#define R_PPC_GOT16_LO 15 +#define R_PPC_GOT16_HI 16 +#define R_PPC_GOT16_HA 17 +#define R_PPC_PLTREL24 18 +#define R_PPC_COPY 19 +#define R_PPC_GLOB_DAT 20 +#define R_PPC_JMP_SLOT 21 +#define R_PPC_RELATIVE 22 +#define R_PPC_LOCAL24PC 23 +#define R_PPC_UADDR32 24 +#define R_PPC_UADDR16 25 +#define R_PPC_REL32 26 +#define R_PPC_PLT32 27 +#define R_PPC_PLTREL32 28 +#define R_PPC_PLT16_LO 29 +#define R_PPC_PLT16_HI 30 +#define R_PPC_PLT16_HA 31 +#define R_PPC_SDAREL16 32 +#define R_PPC_SECTOFF 33 +#define R_PPC_SECTOFF_LO 34 +#define R_PPC_SECTOFF_HI 35 +#define R_PPC_SECTOFF_HA 36 + + +#define R_PPC_TLS 67 +#define R_PPC_DTPMOD32 68 +#define R_PPC_TPREL16 69 +#define R_PPC_TPREL16_LO 70 +#define R_PPC_TPREL16_HI 71 +#define R_PPC_TPREL16_HA 72 +#define R_PPC_TPREL32 73 +#define R_PPC_DTPREL16 74 +#define R_PPC_DTPREL16_LO 75 +#define R_PPC_DTPREL16_HI 76 +#define R_PPC_DTPREL16_HA 77 +#define R_PPC_DTPREL32 78 +#define R_PPC_GOT_TLSGD16 79 +#define R_PPC_GOT_TLSGD16_LO 80 +#define R_PPC_GOT_TLSGD16_HI 81 +#define R_PPC_GOT_TLSGD16_HA 82 +#define R_PPC_GOT_TLSLD16 83 +#define R_PPC_GOT_TLSLD16_LO 84 +#define R_PPC_GOT_TLSLD16_HI 85 +#define R_PPC_GOT_TLSLD16_HA 86 +#define R_PPC_GOT_TPREL16 87 +#define R_PPC_GOT_TPREL16_LO 88 +#define R_PPC_GOT_TPREL16_HI 89 +#define R_PPC_GOT_TPREL16_HA 90 +#define R_PPC_GOT_DTPREL16 91 +#define R_PPC_GOT_DTPREL16_LO 92 +#define R_PPC_GOT_DTPREL16_HI 93 +#define R_PPC_GOT_DTPREL16_HA 94 +#define R_PPC_TLSGD 95 +#define R_PPC_TLSLD 96 + + +#define R_PPC_EMB_NADDR32 101 +#define R_PPC_EMB_NADDR16 102 +#define R_PPC_EMB_NADDR16_LO 103 +#define R_PPC_EMB_NADDR16_HI 104 +#define R_PPC_EMB_NADDR16_HA 105 +#define R_PPC_EMB_SDAI16 106 +#define R_PPC_EMB_SDA2I16 107 +#define R_PPC_EMB_SDA2REL 108 +#define R_PPC_EMB_SDA21 109 +#define R_PPC_EMB_MRKREF 110 +#define R_PPC_EMB_RELSEC16 111 +#define R_PPC_EMB_RELST_LO 112 +#define R_PPC_EMB_RELST_HI 113 +#define R_PPC_EMB_RELST_HA 114 +#define R_PPC_EMB_BIT_FLD 115 +#define R_PPC_EMB_RELSDA 116 + + +#define R_PPC_DIAB_SDA21_LO 180 +#define R_PPC_DIAB_SDA21_HI 181 +#define R_PPC_DIAB_SDA21_HA 182 +#define R_PPC_DIAB_RELSDA_LO 183 +#define R_PPC_DIAB_RELSDA_HI 184 +#define R_PPC_DIAB_RELSDA_HA 185 + + +#define R_PPC_IRELATIVE 248 + + +#define R_PPC_REL16 249 +#define R_PPC_REL16_LO 250 +#define R_PPC_REL16_HI 251 +#define R_PPC_REL16_HA 252 + + + +#define R_PPC_TOC16 255 + + +#define DT_PPC_GOT (DT_LOPROC + 0) +#define DT_PPC_OPT (DT_LOPROC + 1) +#define DT_PPC_NUM 2 + +#define PPC_OPT_TLS 1 + + +#define R_PPC64_NONE R_PPC_NONE +#define R_PPC64_ADDR32 R_PPC_ADDR32 +#define R_PPC64_ADDR24 R_PPC_ADDR24 +#define R_PPC64_ADDR16 R_PPC_ADDR16 +#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO +#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI +#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA +#define R_PPC64_ADDR14 R_PPC_ADDR14 +#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN +#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN +#define R_PPC64_REL24 R_PPC_REL24 +#define R_PPC64_REL14 R_PPC_REL14 +#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN +#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN +#define R_PPC64_GOT16 R_PPC_GOT16 +#define R_PPC64_GOT16_LO R_PPC_GOT16_LO +#define R_PPC64_GOT16_HI R_PPC_GOT16_HI +#define R_PPC64_GOT16_HA R_PPC_GOT16_HA + +#define R_PPC64_COPY R_PPC_COPY +#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT +#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT +#define R_PPC64_RELATIVE R_PPC_RELATIVE + +#define R_PPC64_UADDR32 R_PPC_UADDR32 +#define R_PPC64_UADDR16 R_PPC_UADDR16 +#define R_PPC64_REL32 R_PPC_REL32 +#define R_PPC64_PLT32 R_PPC_PLT32 +#define R_PPC64_PLTREL32 R_PPC_PLTREL32 +#define R_PPC64_PLT16_LO R_PPC_PLT16_LO +#define R_PPC64_PLT16_HI R_PPC_PLT16_HI +#define R_PPC64_PLT16_HA R_PPC_PLT16_HA + +#define R_PPC64_SECTOFF R_PPC_SECTOFF +#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO +#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI +#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA +#define R_PPC64_ADDR30 37 +#define R_PPC64_ADDR64 38 +#define R_PPC64_ADDR16_HIGHER 39 +#define R_PPC64_ADDR16_HIGHERA 40 +#define R_PPC64_ADDR16_HIGHEST 41 +#define R_PPC64_ADDR16_HIGHESTA 42 +#define R_PPC64_UADDR64 43 +#define R_PPC64_REL64 44 +#define R_PPC64_PLT64 45 +#define R_PPC64_PLTREL64 46 +#define R_PPC64_TOC16 47 +#define R_PPC64_TOC16_LO 48 +#define R_PPC64_TOC16_HI 49 +#define R_PPC64_TOC16_HA 50 +#define R_PPC64_TOC 51 +#define R_PPC64_PLTGOT16 52 +#define R_PPC64_PLTGOT16_LO 53 +#define R_PPC64_PLTGOT16_HI 54 +#define R_PPC64_PLTGOT16_HA 55 + +#define R_PPC64_ADDR16_DS 56 +#define R_PPC64_ADDR16_LO_DS 57 +#define R_PPC64_GOT16_DS 58 +#define R_PPC64_GOT16_LO_DS 59 +#define R_PPC64_PLT16_LO_DS 60 +#define R_PPC64_SECTOFF_DS 61 +#define R_PPC64_SECTOFF_LO_DS 62 +#define R_PPC64_TOC16_DS 63 +#define R_PPC64_TOC16_LO_DS 64 +#define R_PPC64_PLTGOT16_DS 65 +#define R_PPC64_PLTGOT16_LO_DS 66 + + +#define R_PPC64_TLS 67 +#define R_PPC64_DTPMOD64 68 +#define R_PPC64_TPREL16 69 +#define R_PPC64_TPREL16_LO 70 +#define R_PPC64_TPREL16_HI 71 +#define R_PPC64_TPREL16_HA 72 +#define R_PPC64_TPREL64 73 +#define R_PPC64_DTPREL16 74 +#define R_PPC64_DTPREL16_LO 75 +#define R_PPC64_DTPREL16_HI 76 +#define R_PPC64_DTPREL16_HA 77 +#define R_PPC64_DTPREL64 78 +#define R_PPC64_GOT_TLSGD16 79 +#define R_PPC64_GOT_TLSGD16_LO 80 +#define R_PPC64_GOT_TLSGD16_HI 81 +#define R_PPC64_GOT_TLSGD16_HA 82 +#define R_PPC64_GOT_TLSLD16 83 +#define R_PPC64_GOT_TLSLD16_LO 84 +#define R_PPC64_GOT_TLSLD16_HI 85 +#define R_PPC64_GOT_TLSLD16_HA 86 +#define R_PPC64_GOT_TPREL16_DS 87 +#define R_PPC64_GOT_TPREL16_LO_DS 88 +#define R_PPC64_GOT_TPREL16_HI 89 +#define R_PPC64_GOT_TPREL16_HA 90 +#define R_PPC64_GOT_DTPREL16_DS 91 +#define R_PPC64_GOT_DTPREL16_LO_DS 92 +#define R_PPC64_GOT_DTPREL16_HI 93 +#define R_PPC64_GOT_DTPREL16_HA 94 +#define R_PPC64_TPREL16_DS 95 +#define R_PPC64_TPREL16_LO_DS 96 +#define R_PPC64_TPREL16_HIGHER 97 +#define R_PPC64_TPREL16_HIGHERA 98 +#define R_PPC64_TPREL16_HIGHEST 99 +#define R_PPC64_TPREL16_HIGHESTA 100 +#define R_PPC64_DTPREL16_DS 101 +#define R_PPC64_DTPREL16_LO_DS 102 +#define R_PPC64_DTPREL16_HIGHER 103 +#define R_PPC64_DTPREL16_HIGHERA 104 +#define R_PPC64_DTPREL16_HIGHEST 105 +#define R_PPC64_DTPREL16_HIGHESTA 106 +#define R_PPC64_TLSGD 107 +#define R_PPC64_TLSLD 108 +#define R_PPC64_TOCSAVE 109 +#define R_PPC64_ADDR16_HIGH 110 +#define R_PPC64_ADDR16_HIGHA 111 +#define R_PPC64_TPREL16_HIGH 112 +#define R_PPC64_TPREL16_HIGHA 113 +#define R_PPC64_DTPREL16_HIGH 114 +#define R_PPC64_DTPREL16_HIGHA 115 + + +#define R_PPC64_JMP_IREL 247 +#define R_PPC64_IRELATIVE 248 +#define R_PPC64_REL16 249 +#define R_PPC64_REL16_LO 250 +#define R_PPC64_REL16_HI 251 +#define R_PPC64_REL16_HA 252 + +#define EF_PPC64_ABI 3 + +#define DT_PPC64_GLINK (DT_LOPROC + 0) +#define DT_PPC64_OPD (DT_LOPROC + 1) +#define DT_PPC64_OPDSZ (DT_LOPROC + 2) +#define DT_PPC64_OPT (DT_LOPROC + 3) +#define DT_PPC64_NUM 4 + +#define PPC64_OPT_TLS 1 +#define PPC64_OPT_MULTI_TOC 2 + +#define STO_PPC64_LOCAL_BIT 5 +#define STO_PPC64_LOCAL_MASK 0xe0 +#define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc) + + +#define EF_ARM_RELEXEC 0x01 +#define EF_ARM_HASENTRY 0x02 +#define EF_ARM_INTERWORK 0x04 +#define EF_ARM_APCS_26 0x08 +#define EF_ARM_APCS_FLOAT 0x10 +#define EF_ARM_PIC 0x20 +#define EF_ARM_ALIGN8 0x40 +#define EF_ARM_NEW_ABI 0x80 +#define EF_ARM_OLD_ABI 0x100 +#define EF_ARM_SOFT_FLOAT 0x200 +#define EF_ARM_VFP_FLOAT 0x400 +#define EF_ARM_MAVERICK_FLOAT 0x800 + +#define EF_ARM_ABI_FLOAT_SOFT 0x200 +#define EF_ARM_ABI_FLOAT_HARD 0x400 + + +#define EF_ARM_SYMSARESORTED 0x04 +#define EF_ARM_DYNSYMSUSESEGIDX 0x08 +#define EF_ARM_MAPSYMSFIRST 0x10 +#define EF_ARM_EABIMASK 0XFF000000 + + +#define EF_ARM_BE8 0x00800000 +#define EF_ARM_LE8 0x00400000 + +#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) +#define EF_ARM_EABI_UNKNOWN 0x00000000 +#define EF_ARM_EABI_VER1 0x01000000 +#define EF_ARM_EABI_VER2 0x02000000 +#define EF_ARM_EABI_VER3 0x03000000 +#define EF_ARM_EABI_VER4 0x04000000 +#define EF_ARM_EABI_VER5 0x05000000 + + +#define STT_ARM_TFUNC STT_LOPROC +#define STT_ARM_16BIT STT_HIPROC + + +#define SHF_ARM_ENTRYSECT 0x10000000 +#define SHF_ARM_COMDEF 0x80000000 + + + +#define PF_ARM_SB 0x10000000 + +#define PF_ARM_PI 0x20000000 +#define PF_ARM_ABS 0x40000000 + + +#define PT_ARM_EXIDX (PT_LOPROC + 1) + + +#define SHT_ARM_EXIDX (SHT_LOPROC + 1) +#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) +#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) + +#define R_AARCH64_NONE 0 +#define R_AARCH64_P32_ABS32 1 +#define R_AARCH64_P32_COPY 180 +#define R_AARCH64_P32_GLOB_DAT 181 +#define R_AARCH64_P32_JUMP_SLOT 182 +#define R_AARCH64_P32_RELATIVE 183 +#define R_AARCH64_P32_TLS_DTPMOD 184 +#define R_AARCH64_P32_TLS_DTPREL 185 +#define R_AARCH64_P32_TLS_TPREL 186 +#define R_AARCH64_P32_TLSDESC 187 +#define R_AARCH64_P32_IRELATIVE 188 +#define R_AARCH64_ABS64 257 +#define R_AARCH64_ABS32 258 +#define R_AARCH64_ABS16 259 +#define R_AARCH64_PREL64 260 +#define R_AARCH64_PREL32 261 +#define R_AARCH64_PREL16 262 +#define R_AARCH64_MOVW_UABS_G0 263 +#define R_AARCH64_MOVW_UABS_G0_NC 264 +#define R_AARCH64_MOVW_UABS_G1 265 +#define R_AARCH64_MOVW_UABS_G1_NC 266 +#define R_AARCH64_MOVW_UABS_G2 267 +#define R_AARCH64_MOVW_UABS_G2_NC 268 +#define R_AARCH64_MOVW_UABS_G3 269 +#define R_AARCH64_MOVW_SABS_G0 270 +#define R_AARCH64_MOVW_SABS_G1 271 +#define R_AARCH64_MOVW_SABS_G2 272 +#define R_AARCH64_LD_PREL_LO19 273 +#define R_AARCH64_ADR_PREL_LO21 274 +#define R_AARCH64_ADR_PREL_PG_HI21 275 +#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 +#define R_AARCH64_ADD_ABS_LO12_NC 277 +#define R_AARCH64_LDST8_ABS_LO12_NC 278 +#define R_AARCH64_TSTBR14 279 +#define R_AARCH64_CONDBR19 280 +#define R_AARCH64_JUMP26 282 +#define R_AARCH64_CALL26 283 +#define R_AARCH64_LDST16_ABS_LO12_NC 284 +#define R_AARCH64_LDST32_ABS_LO12_NC 285 +#define R_AARCH64_LDST64_ABS_LO12_NC 286 +#define R_AARCH64_MOVW_PREL_G0 287 +#define R_AARCH64_MOVW_PREL_G0_NC 288 +#define R_AARCH64_MOVW_PREL_G1 289 +#define R_AARCH64_MOVW_PREL_G1_NC 290 +#define R_AARCH64_MOVW_PREL_G2 291 +#define R_AARCH64_MOVW_PREL_G2_NC 292 +#define R_AARCH64_MOVW_PREL_G3 293 +#define R_AARCH64_LDST128_ABS_LO12_NC 299 +#define R_AARCH64_MOVW_GOTOFF_G0 300 +#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 +#define R_AARCH64_MOVW_GOTOFF_G1 302 +#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 +#define R_AARCH64_MOVW_GOTOFF_G2 304 +#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 +#define R_AARCH64_MOVW_GOTOFF_G3 306 +#define R_AARCH64_GOTREL64 307 +#define R_AARCH64_GOTREL32 308 +#define R_AARCH64_GOT_LD_PREL19 309 +#define R_AARCH64_LD64_GOTOFF_LO15 310 +#define R_AARCH64_ADR_GOT_PAGE 311 +#define R_AARCH64_LD64_GOT_LO12_NC 312 +#define R_AARCH64_LD64_GOTPAGE_LO15 313 +#define R_AARCH64_TLSGD_ADR_PREL21 512 +#define R_AARCH64_TLSGD_ADR_PAGE21 513 +#define R_AARCH64_TLSGD_ADD_LO12_NC 514 +#define R_AARCH64_TLSGD_MOVW_G1 515 +#define R_AARCH64_TLSGD_MOVW_G0_NC 516 +#define R_AARCH64_TLSLD_ADR_PREL21 517 +#define R_AARCH64_TLSLD_ADR_PAGE21 518 +#define R_AARCH64_TLSLD_ADD_LO12_NC 519 +#define R_AARCH64_TLSLD_MOVW_G1 520 +#define R_AARCH64_TLSLD_MOVW_G0_NC 521 +#define R_AARCH64_TLSLD_LD_PREL19 522 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 +#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 +#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 +#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 +#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 +#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 +#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 +#define R_AARCH64_TLSDESC_LD_PREL19 560 +#define R_AARCH64_TLSDESC_ADR_PREL21 561 +#define R_AARCH64_TLSDESC_ADR_PAGE21 562 +#define R_AARCH64_TLSDESC_LD64_LO12 563 +#define R_AARCH64_TLSDESC_ADD_LO12 564 +#define R_AARCH64_TLSDESC_OFF_G1 565 +#define R_AARCH64_TLSDESC_OFF_G0_NC 566 +#define R_AARCH64_TLSDESC_LDR 567 +#define R_AARCH64_TLSDESC_ADD 568 +#define R_AARCH64_TLSDESC_CALL 569 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 +#define R_AARCH64_COPY 1024 +#define R_AARCH64_GLOB_DAT 1025 +#define R_AARCH64_JUMP_SLOT 1026 +#define R_AARCH64_RELATIVE 1027 +#define R_AARCH64_TLS_DTPMOD 1028 +#define R_AARCH64_TLS_DTPMOD64 1028 +#define R_AARCH64_TLS_DTPREL 1029 +#define R_AARCH64_TLS_DTPREL64 1029 +#define R_AARCH64_TLS_TPREL 1030 +#define R_AARCH64_TLS_TPREL64 1030 +#define R_AARCH64_TLSDESC 1031 + + +#define R_ARM_NONE 0 +#define R_ARM_PC24 1 +#define R_ARM_ABS32 2 +#define R_ARM_REL32 3 +#define R_ARM_PC13 4 +#define R_ARM_ABS16 5 +#define R_ARM_ABS12 6 +#define R_ARM_THM_ABS5 7 +#define R_ARM_ABS8 8 +#define R_ARM_SBREL32 9 +#define R_ARM_THM_PC22 10 +#define R_ARM_THM_PC8 11 +#define R_ARM_AMP_VCALL9 12 +#define R_ARM_TLS_DESC 13 +#define R_ARM_THM_SWI8 14 +#define R_ARM_XPC25 15 +#define R_ARM_THM_XPC22 16 +#define R_ARM_TLS_DTPMOD32 17 +#define R_ARM_TLS_DTPOFF32 18 +#define R_ARM_TLS_TPOFF32 19 +#define R_ARM_COPY 20 +#define R_ARM_GLOB_DAT 21 +#define R_ARM_JUMP_SLOT 22 +#define R_ARM_RELATIVE 23 +#define R_ARM_GOTOFF 24 +#define R_ARM_GOTPC 25 +#define R_ARM_GOT32 26 +#define R_ARM_PLT32 27 +#define R_ARM_CALL 28 +#define R_ARM_JUMP24 29 +#define R_ARM_THM_JUMP24 30 +#define R_ARM_BASE_ABS 31 +#define R_ARM_ALU_PCREL_7_0 32 +#define R_ARM_ALU_PCREL_15_8 33 +#define R_ARM_ALU_PCREL_23_15 34 +#define R_ARM_LDR_SBREL_11_0 35 +#define R_ARM_ALU_SBREL_19_12 36 +#define R_ARM_ALU_SBREL_27_20 37 +#define R_ARM_TARGET1 38 +#define R_ARM_SBREL31 39 +#define R_ARM_V4BX 40 +#define R_ARM_TARGET2 41 +#define R_ARM_PREL31 42 +#define R_ARM_MOVW_ABS_NC 43 +#define R_ARM_MOVT_ABS 44 +#define R_ARM_MOVW_PREL_NC 45 +#define R_ARM_MOVT_PREL 46 +#define R_ARM_THM_MOVW_ABS_NC 47 +#define R_ARM_THM_MOVT_ABS 48 +#define R_ARM_THM_MOVW_PREL_NC 49 +#define R_ARM_THM_MOVT_PREL 50 +#define R_ARM_THM_JUMP19 51 +#define R_ARM_THM_JUMP6 52 +#define R_ARM_THM_ALU_PREL_11_0 53 +#define R_ARM_THM_PC12 54 +#define R_ARM_ABS32_NOI 55 +#define R_ARM_REL32_NOI 56 +#define R_ARM_ALU_PC_G0_NC 57 +#define R_ARM_ALU_PC_G0 58 +#define R_ARM_ALU_PC_G1_NC 59 +#define R_ARM_ALU_PC_G1 60 +#define R_ARM_ALU_PC_G2 61 +#define R_ARM_LDR_PC_G1 62 +#define R_ARM_LDR_PC_G2 63 +#define R_ARM_LDRS_PC_G0 64 +#define R_ARM_LDRS_PC_G1 65 +#define R_ARM_LDRS_PC_G2 66 +#define R_ARM_LDC_PC_G0 67 +#define R_ARM_LDC_PC_G1 68 +#define R_ARM_LDC_PC_G2 69 +#define R_ARM_ALU_SB_G0_NC 70 +#define R_ARM_ALU_SB_G0 71 +#define R_ARM_ALU_SB_G1_NC 72 +#define R_ARM_ALU_SB_G1 73 +#define R_ARM_ALU_SB_G2 74 +#define R_ARM_LDR_SB_G0 75 +#define R_ARM_LDR_SB_G1 76 +#define R_ARM_LDR_SB_G2 77 +#define R_ARM_LDRS_SB_G0 78 +#define R_ARM_LDRS_SB_G1 79 +#define R_ARM_LDRS_SB_G2 80 +#define R_ARM_LDC_SB_G0 81 +#define R_ARM_LDC_SB_G1 82 +#define R_ARM_LDC_SB_G2 83 +#define R_ARM_MOVW_BREL_NC 84 +#define R_ARM_MOVT_BREL 85 +#define R_ARM_MOVW_BREL 86 +#define R_ARM_THM_MOVW_BREL_NC 87 +#define R_ARM_THM_MOVT_BREL 88 +#define R_ARM_THM_MOVW_BREL 89 +#define R_ARM_TLS_GOTDESC 90 +#define R_ARM_TLS_CALL 91 +#define R_ARM_TLS_DESCSEQ 92 +#define R_ARM_THM_TLS_CALL 93 +#define R_ARM_PLT32_ABS 94 +#define R_ARM_GOT_ABS 95 +#define R_ARM_GOT_PREL 96 +#define R_ARM_GOT_BREL12 97 +#define R_ARM_GOTOFF12 98 +#define R_ARM_GOTRELAX 99 +#define R_ARM_GNU_VTENTRY 100 +#define R_ARM_GNU_VTINHERIT 101 +#define R_ARM_THM_PC11 102 +#define R_ARM_THM_PC9 103 +#define R_ARM_TLS_GD32 104 + +#define R_ARM_TLS_LDM32 105 + +#define R_ARM_TLS_LDO32 106 + +#define R_ARM_TLS_IE32 107 + +#define R_ARM_TLS_LE32 108 +#define R_ARM_TLS_LDO12 109 +#define R_ARM_TLS_LE12 110 +#define R_ARM_TLS_IE12GP 111 +#define R_ARM_ME_TOO 128 +#define R_ARM_THM_TLS_DESCSEQ 129 +#define R_ARM_THM_TLS_DESCSEQ16 129 +#define R_ARM_THM_TLS_DESCSEQ32 130 +#define R_ARM_THM_GOT_BREL12 131 +#define R_ARM_IRELATIVE 160 +#define R_ARM_RXPC25 249 +#define R_ARM_RSBREL32 250 +#define R_ARM_THM_RPC22 251 +#define R_ARM_RREL32 252 +#define R_ARM_RABS22 253 +#define R_ARM_RPC24 254 +#define R_ARM_RBASE 255 + +#define R_ARM_NUM 256 + + + + +#define EF_IA_64_MASKOS 0x0000000f +#define EF_IA_64_ABI64 0x00000010 +#define EF_IA_64_ARCH 0xff000000 + + +#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) +#define PT_IA_64_UNWIND (PT_LOPROC + 1) +#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) +#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) +#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) + + +#define PF_IA_64_NORECOV 0x80000000 + + +#define SHT_IA_64_EXT (SHT_LOPROC + 0) +#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) + + +#define SHF_IA_64_SHORT 0x10000000 +#define SHF_IA_64_NORECOV 0x20000000 + + +#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) +#define DT_IA_64_NUM 1 + + +#define R_IA64_NONE 0x00 +#define R_IA64_IMM14 0x21 +#define R_IA64_IMM22 0x22 +#define R_IA64_IMM64 0x23 +#define R_IA64_DIR32MSB 0x24 +#define R_IA64_DIR32LSB 0x25 +#define R_IA64_DIR64MSB 0x26 +#define R_IA64_DIR64LSB 0x27 +#define R_IA64_GPREL22 0x2a +#define R_IA64_GPREL64I 0x2b +#define R_IA64_GPREL32MSB 0x2c +#define R_IA64_GPREL32LSB 0x2d +#define R_IA64_GPREL64MSB 0x2e +#define R_IA64_GPREL64LSB 0x2f +#define R_IA64_LTOFF22 0x32 +#define R_IA64_LTOFF64I 0x33 +#define R_IA64_PLTOFF22 0x3a +#define R_IA64_PLTOFF64I 0x3b +#define R_IA64_PLTOFF64MSB 0x3e +#define R_IA64_PLTOFF64LSB 0x3f +#define R_IA64_FPTR64I 0x43 +#define R_IA64_FPTR32MSB 0x44 +#define R_IA64_FPTR32LSB 0x45 +#define R_IA64_FPTR64MSB 0x46 +#define R_IA64_FPTR64LSB 0x47 +#define R_IA64_PCREL60B 0x48 +#define R_IA64_PCREL21B 0x49 +#define R_IA64_PCREL21M 0x4a +#define R_IA64_PCREL21F 0x4b +#define R_IA64_PCREL32MSB 0x4c +#define R_IA64_PCREL32LSB 0x4d +#define R_IA64_PCREL64MSB 0x4e +#define R_IA64_PCREL64LSB 0x4f +#define R_IA64_LTOFF_FPTR22 0x52 +#define R_IA64_LTOFF_FPTR64I 0x53 +#define R_IA64_LTOFF_FPTR32MSB 0x54 +#define R_IA64_LTOFF_FPTR32LSB 0x55 +#define R_IA64_LTOFF_FPTR64MSB 0x56 +#define R_IA64_LTOFF_FPTR64LSB 0x57 +#define R_IA64_SEGREL32MSB 0x5c +#define R_IA64_SEGREL32LSB 0x5d +#define R_IA64_SEGREL64MSB 0x5e +#define R_IA64_SEGREL64LSB 0x5f +#define R_IA64_SECREL32MSB 0x64 +#define R_IA64_SECREL32LSB 0x65 +#define R_IA64_SECREL64MSB 0x66 +#define R_IA64_SECREL64LSB 0x67 +#define R_IA64_REL32MSB 0x6c +#define R_IA64_REL32LSB 0x6d +#define R_IA64_REL64MSB 0x6e +#define R_IA64_REL64LSB 0x6f +#define R_IA64_LTV32MSB 0x74 +#define R_IA64_LTV32LSB 0x75 +#define R_IA64_LTV64MSB 0x76 +#define R_IA64_LTV64LSB 0x77 +#define R_IA64_PCREL21BI 0x79 +#define R_IA64_PCREL22 0x7a +#define R_IA64_PCREL64I 0x7b +#define R_IA64_IPLTMSB 0x80 +#define R_IA64_IPLTLSB 0x81 +#define R_IA64_COPY 0x84 +#define R_IA64_SUB 0x85 +#define R_IA64_LTOFF22X 0x86 +#define R_IA64_LDXMOV 0x87 +#define R_IA64_TPREL14 0x91 +#define R_IA64_TPREL22 0x92 +#define R_IA64_TPREL64I 0x93 +#define R_IA64_TPREL64MSB 0x96 +#define R_IA64_TPREL64LSB 0x97 +#define R_IA64_LTOFF_TPREL22 0x9a +#define R_IA64_DTPMOD64MSB 0xa6 +#define R_IA64_DTPMOD64LSB 0xa7 +#define R_IA64_LTOFF_DTPMOD22 0xaa +#define R_IA64_DTPREL14 0xb1 +#define R_IA64_DTPREL22 0xb2 +#define R_IA64_DTPREL64I 0xb3 +#define R_IA64_DTPREL32MSB 0xb4 +#define R_IA64_DTPREL32LSB 0xb5 +#define R_IA64_DTPREL64MSB 0xb6 +#define R_IA64_DTPREL64LSB 0xb7 +#define R_IA64_LTOFF_DTPREL22 0xba + + +#define EF_SH_MACH_MASK 0x1f +#define EF_SH_UNKNOWN 0x0 +#define EF_SH1 0x1 +#define EF_SH2 0x2 +#define EF_SH3 0x3 +#define EF_SH_DSP 0x4 +#define EF_SH3_DSP 0x5 +#define EF_SH4AL_DSP 0x6 +#define EF_SH3E 0x8 +#define EF_SH4 0x9 +#define EF_SH2E 0xb +#define EF_SH4A 0xc +#define EF_SH2A 0xd +#define EF_SH4_NOFPU 0x10 +#define EF_SH4A_NOFPU 0x11 +#define EF_SH4_NOMMU_NOFPU 0x12 +#define EF_SH2A_NOFPU 0x13 +#define EF_SH3_NOMMU 0x14 +#define EF_SH2A_SH4_NOFPU 0x15 +#define EF_SH2A_SH3_NOFPU 0x16 +#define EF_SH2A_SH4 0x17 +#define EF_SH2A_SH3E 0x18 + +#define R_SH_NONE 0 +#define R_SH_DIR32 1 +#define R_SH_REL32 2 +#define R_SH_DIR8WPN 3 +#define R_SH_IND12W 4 +#define R_SH_DIR8WPL 5 +#define R_SH_DIR8WPZ 6 +#define R_SH_DIR8BP 7 +#define R_SH_DIR8W 8 +#define R_SH_DIR8L 9 +#define R_SH_SWITCH16 25 +#define R_SH_SWITCH32 26 +#define R_SH_USES 27 +#define R_SH_COUNT 28 +#define R_SH_ALIGN 29 +#define R_SH_CODE 30 +#define R_SH_DATA 31 +#define R_SH_LABEL 32 +#define R_SH_SWITCH8 33 +#define R_SH_GNU_VTINHERIT 34 +#define R_SH_GNU_VTENTRY 35 +#define R_SH_TLS_GD_32 144 +#define R_SH_TLS_LD_32 145 +#define R_SH_TLS_LDO_32 146 +#define R_SH_TLS_IE_32 147 +#define R_SH_TLS_LE_32 148 +#define R_SH_TLS_DTPMOD32 149 +#define R_SH_TLS_DTPOFF32 150 +#define R_SH_TLS_TPOFF32 151 +#define R_SH_GOT32 160 +#define R_SH_PLT32 161 +#define R_SH_COPY 162 +#define R_SH_GLOB_DAT 163 +#define R_SH_JMP_SLOT 164 +#define R_SH_RELATIVE 165 +#define R_SH_GOTOFF 166 +#define R_SH_GOTPC 167 +#define R_SH_GOT20 201 +#define R_SH_GOTOFF20 202 +#define R_SH_GOTFUNCDESC 203 +#define R_SH_GOTFUNCDEST20 204 +#define R_SH_GOTOFFFUNCDESC 205 +#define R_SH_GOTOFFFUNCDEST20 206 +#define R_SH_FUNCDESC 207 +#define R_SH_FUNCDESC_VALUE 208 + +#define R_SH_NUM 256 + + + +#define R_390_NONE 0 +#define R_390_8 1 +#define R_390_12 2 +#define R_390_16 3 +#define R_390_32 4 +#define R_390_PC32 5 +#define R_390_GOT12 6 +#define R_390_GOT32 7 +#define R_390_PLT32 8 +#define R_390_COPY 9 +#define R_390_GLOB_DAT 10 +#define R_390_JMP_SLOT 11 +#define R_390_RELATIVE 12 +#define R_390_GOTOFF32 13 +#define R_390_GOTPC 14 +#define R_390_GOT16 15 +#define R_390_PC16 16 +#define R_390_PC16DBL 17 +#define R_390_PLT16DBL 18 +#define R_390_PC32DBL 19 +#define R_390_PLT32DBL 20 +#define R_390_GOTPCDBL 21 +#define R_390_64 22 +#define R_390_PC64 23 +#define R_390_GOT64 24 +#define R_390_PLT64 25 +#define R_390_GOTENT 26 +#define R_390_GOTOFF16 27 +#define R_390_GOTOFF64 28 +#define R_390_GOTPLT12 29 +#define R_390_GOTPLT16 30 +#define R_390_GOTPLT32 31 +#define R_390_GOTPLT64 32 +#define R_390_GOTPLTENT 33 +#define R_390_PLTOFF16 34 +#define R_390_PLTOFF32 35 +#define R_390_PLTOFF64 36 +#define R_390_TLS_LOAD 37 +#define R_390_TLS_GDCALL 38 + +#define R_390_TLS_LDCALL 39 + +#define R_390_TLS_GD32 40 + +#define R_390_TLS_GD64 41 + +#define R_390_TLS_GOTIE12 42 + +#define R_390_TLS_GOTIE32 43 + +#define R_390_TLS_GOTIE64 44 + +#define R_390_TLS_LDM32 45 + +#define R_390_TLS_LDM64 46 + +#define R_390_TLS_IE32 47 + +#define R_390_TLS_IE64 48 + +#define R_390_TLS_IEENT 49 + +#define R_390_TLS_LE32 50 + +#define R_390_TLS_LE64 51 + +#define R_390_TLS_LDO32 52 + +#define R_390_TLS_LDO64 53 + +#define R_390_TLS_DTPMOD 54 +#define R_390_TLS_DTPOFF 55 +#define R_390_TLS_TPOFF 56 + +#define R_390_20 57 +#define R_390_GOT20 58 +#define R_390_GOTPLT20 59 +#define R_390_TLS_GOTIE20 60 + + +#define R_390_NUM 61 + + + +#define R_CRIS_NONE 0 +#define R_CRIS_8 1 +#define R_CRIS_16 2 +#define R_CRIS_32 3 +#define R_CRIS_8_PCREL 4 +#define R_CRIS_16_PCREL 5 +#define R_CRIS_32_PCREL 6 +#define R_CRIS_GNU_VTINHERIT 7 +#define R_CRIS_GNU_VTENTRY 8 +#define R_CRIS_COPY 9 +#define R_CRIS_GLOB_DAT 10 +#define R_CRIS_JUMP_SLOT 11 +#define R_CRIS_RELATIVE 12 +#define R_CRIS_16_GOT 13 +#define R_CRIS_32_GOT 14 +#define R_CRIS_16_GOTPLT 15 +#define R_CRIS_32_GOTPLT 16 +#define R_CRIS_32_GOTREL 17 +#define R_CRIS_32_PLT_GOTREL 18 +#define R_CRIS_32_PLT_PCREL 19 + +#define R_CRIS_NUM 20 + + + +#define R_X86_64_NONE 0 +#define R_X86_64_64 1 +#define R_X86_64_PC32 2 +#define R_X86_64_GOT32 3 +#define R_X86_64_PLT32 4 +#define R_X86_64_COPY 5 +#define R_X86_64_GLOB_DAT 6 +#define R_X86_64_JUMP_SLOT 7 +#define R_X86_64_RELATIVE 8 +#define R_X86_64_GOTPCREL 9 + +#define R_X86_64_32 10 +#define R_X86_64_32S 11 +#define R_X86_64_16 12 +#define R_X86_64_PC16 13 +#define R_X86_64_8 14 +#define R_X86_64_PC8 15 +#define R_X86_64_DTPMOD64 16 +#define R_X86_64_DTPOFF64 17 +#define R_X86_64_TPOFF64 18 +#define R_X86_64_TLSGD 19 + +#define R_X86_64_TLSLD 20 + +#define R_X86_64_DTPOFF32 21 +#define R_X86_64_GOTTPOFF 22 + +#define R_X86_64_TPOFF32 23 +#define R_X86_64_PC64 24 +#define R_X86_64_GOTOFF64 25 +#define R_X86_64_GOTPC32 26 +#define R_X86_64_GOT64 27 +#define R_X86_64_GOTPCREL64 28 +#define R_X86_64_GOTPC64 29 +#define R_X86_64_GOTPLT64 30 +#define R_X86_64_PLTOFF64 31 +#define R_X86_64_SIZE32 32 +#define R_X86_64_SIZE64 33 + +#define R_X86_64_GOTPC32_TLSDESC 34 +#define R_X86_64_TLSDESC_CALL 35 + +#define R_X86_64_TLSDESC 36 +#define R_X86_64_IRELATIVE 37 +#define R_X86_64_RELATIVE64 38 +#define R_X86_64_GOTPCRELX 41 +#define R_X86_64_REX_GOTPCRELX 42 +#define R_X86_64_NUM 43 + + + +#define R_MN10300_NONE 0 +#define R_MN10300_32 1 +#define R_MN10300_16 2 +#define R_MN10300_8 3 +#define R_MN10300_PCREL32 4 +#define R_MN10300_PCREL16 5 +#define R_MN10300_PCREL8 6 +#define R_MN10300_GNU_VTINHERIT 7 +#define R_MN10300_GNU_VTENTRY 8 +#define R_MN10300_24 9 +#define R_MN10300_GOTPC32 10 +#define R_MN10300_GOTPC16 11 +#define R_MN10300_GOTOFF32 12 +#define R_MN10300_GOTOFF24 13 +#define R_MN10300_GOTOFF16 14 +#define R_MN10300_PLT32 15 +#define R_MN10300_PLT16 16 +#define R_MN10300_GOT32 17 +#define R_MN10300_GOT24 18 +#define R_MN10300_GOT16 19 +#define R_MN10300_COPY 20 +#define R_MN10300_GLOB_DAT 21 +#define R_MN10300_JMP_SLOT 22 +#define R_MN10300_RELATIVE 23 + +#define R_MN10300_NUM 24 + + + +#define R_M32R_NONE 0 +#define R_M32R_16 1 +#define R_M32R_32 2 +#define R_M32R_24 3 +#define R_M32R_10_PCREL 4 +#define R_M32R_18_PCREL 5 +#define R_M32R_26_PCREL 6 +#define R_M32R_HI16_ULO 7 +#define R_M32R_HI16_SLO 8 +#define R_M32R_LO16 9 +#define R_M32R_SDA16 10 +#define R_M32R_GNU_VTINHERIT 11 +#define R_M32R_GNU_VTENTRY 12 + +#define R_M32R_16_RELA 33 +#define R_M32R_32_RELA 34 +#define R_M32R_24_RELA 35 +#define R_M32R_10_PCREL_RELA 36 +#define R_M32R_18_PCREL_RELA 37 +#define R_M32R_26_PCREL_RELA 38 +#define R_M32R_HI16_ULO_RELA 39 +#define R_M32R_HI16_SLO_RELA 40 +#define R_M32R_LO16_RELA 41 +#define R_M32R_SDA16_RELA 42 +#define R_M32R_RELA_GNU_VTINHERIT 43 +#define R_M32R_RELA_GNU_VTENTRY 44 +#define R_M32R_REL32 45 + +#define R_M32R_GOT24 48 +#define R_M32R_26_PLTREL 49 +#define R_M32R_COPY 50 +#define R_M32R_GLOB_DAT 51 +#define R_M32R_JMP_SLOT 52 +#define R_M32R_RELATIVE 53 +#define R_M32R_GOTOFF 54 +#define R_M32R_GOTPC24 55 +#define R_M32R_GOT16_HI_ULO 56 + +#define R_M32R_GOT16_HI_SLO 57 + +#define R_M32R_GOT16_LO 58 +#define R_M32R_GOTPC_HI_ULO 59 + +#define R_M32R_GOTPC_HI_SLO 60 + +#define R_M32R_GOTPC_LO 61 + +#define R_M32R_GOTOFF_HI_ULO 62 + +#define R_M32R_GOTOFF_HI_SLO 63 + +#define R_M32R_GOTOFF_LO 64 +#define R_M32R_NUM 256 + +#define R_MICROBLAZE_NONE 0 +#define R_MICROBLAZE_32 1 +#define R_MICROBLAZE_32_PCREL 2 +#define R_MICROBLAZE_64_PCREL 3 +#define R_MICROBLAZE_32_PCREL_LO 4 +#define R_MICROBLAZE_64 5 +#define R_MICROBLAZE_32_LO 6 +#define R_MICROBLAZE_SRO32 7 +#define R_MICROBLAZE_SRW32 8 +#define R_MICROBLAZE_64_NONE 9 +#define R_MICROBLAZE_32_SYM_OP_SYM 10 +#define R_MICROBLAZE_GNU_VTINHERIT 11 +#define R_MICROBLAZE_GNU_VTENTRY 12 +#define R_MICROBLAZE_GOTPC_64 13 +#define R_MICROBLAZE_GOT_64 14 +#define R_MICROBLAZE_PLT_64 15 +#define R_MICROBLAZE_REL 16 +#define R_MICROBLAZE_JUMP_SLOT 17 +#define R_MICROBLAZE_GLOB_DAT 18 +#define R_MICROBLAZE_GOTOFF_64 19 +#define R_MICROBLAZE_GOTOFF_32 20 +#define R_MICROBLAZE_COPY 21 +#define R_MICROBLAZE_TLS 22 +#define R_MICROBLAZE_TLSGD 23 +#define R_MICROBLAZE_TLSLD 24 +#define R_MICROBLAZE_TLSDTPMOD32 25 +#define R_MICROBLAZE_TLSDTPREL32 26 +#define R_MICROBLAZE_TLSDTPREL64 27 +#define R_MICROBLAZE_TLSGOTTPREL32 28 +#define R_MICROBLAZE_TLSTPREL32 29 + +#define DT_NIOS2_GP 0x70000002 + +#define R_NIOS2_NONE 0 +#define R_NIOS2_S16 1 +#define R_NIOS2_U16 2 +#define R_NIOS2_PCREL16 3 +#define R_NIOS2_CALL26 4 +#define R_NIOS2_IMM5 5 +#define R_NIOS2_CACHE_OPX 6 +#define R_NIOS2_IMM6 7 +#define R_NIOS2_IMM8 8 +#define R_NIOS2_HI16 9 +#define R_NIOS2_LO16 10 +#define R_NIOS2_HIADJ16 11 +#define R_NIOS2_BFD_RELOC_32 12 +#define R_NIOS2_BFD_RELOC_16 13 +#define R_NIOS2_BFD_RELOC_8 14 +#define R_NIOS2_GPREL 15 +#define R_NIOS2_GNU_VTINHERIT 16 +#define R_NIOS2_GNU_VTENTRY 17 +#define R_NIOS2_UJMP 18 +#define R_NIOS2_CJMP 19 +#define R_NIOS2_CALLR 20 +#define R_NIOS2_ALIGN 21 +#define R_NIOS2_GOT16 22 +#define R_NIOS2_CALL16 23 +#define R_NIOS2_GOTOFF_LO 24 +#define R_NIOS2_GOTOFF_HA 25 +#define R_NIOS2_PCREL_LO 26 +#define R_NIOS2_PCREL_HA 27 +#define R_NIOS2_TLS_GD16 28 +#define R_NIOS2_TLS_LDM16 29 +#define R_NIOS2_TLS_LDO16 30 +#define R_NIOS2_TLS_IE16 31 +#define R_NIOS2_TLS_LE16 32 +#define R_NIOS2_TLS_DTPMOD 33 +#define R_NIOS2_TLS_DTPREL 34 +#define R_NIOS2_TLS_TPREL 35 +#define R_NIOS2_COPY 36 +#define R_NIOS2_GLOB_DAT 37 +#define R_NIOS2_JUMP_SLOT 38 +#define R_NIOS2_RELATIVE 39 +#define R_NIOS2_GOTOFF 40 +#define R_NIOS2_CALL26_NOAT 41 +#define R_NIOS2_GOT_LO 42 +#define R_NIOS2_GOT_HA 43 +#define R_NIOS2_CALL_LO 44 +#define R_NIOS2_CALL_HA 45 + +#define R_OR1K_NONE 0 +#define R_OR1K_32 1 +#define R_OR1K_16 2 +#define R_OR1K_8 3 +#define R_OR1K_LO_16_IN_INSN 4 +#define R_OR1K_HI_16_IN_INSN 5 +#define R_OR1K_INSN_REL_26 6 +#define R_OR1K_GNU_VTENTRY 7 +#define R_OR1K_GNU_VTINHERIT 8 +#define R_OR1K_32_PCREL 9 +#define R_OR1K_16_PCREL 10 +#define R_OR1K_8_PCREL 11 +#define R_OR1K_GOTPC_HI16 12 +#define R_OR1K_GOTPC_LO16 13 +#define R_OR1K_GOT16 14 +#define R_OR1K_PLT26 15 +#define R_OR1K_GOTOFF_HI16 16 +#define R_OR1K_GOTOFF_LO16 17 +#define R_OR1K_COPY 18 +#define R_OR1K_GLOB_DAT 19 +#define R_OR1K_JMP_SLOT 20 +#define R_OR1K_RELATIVE 21 +#define R_OR1K_TLS_GD_HI16 22 +#define R_OR1K_TLS_GD_LO16 23 +#define R_OR1K_TLS_LDM_HI16 24 +#define R_OR1K_TLS_LDM_LO16 25 +#define R_OR1K_TLS_LDO_HI16 26 +#define R_OR1K_TLS_LDO_LO16 27 +#define R_OR1K_TLS_IE_HI16 28 +#define R_OR1K_TLS_IE_LO16 29 +#define R_OR1K_TLS_LE_HI16 30 +#define R_OR1K_TLS_LE_LO16 31 +#define R_OR1K_TLS_TPOFF 32 +#define R_OR1K_TLS_DTPOFF 33 +#define R_OR1K_TLS_DTPMOD 34 + +#define R_BPF_NONE 0 +#define R_BPF_MAP_FD 1 + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/tools/patchelf/patchelf.c b/tools/patchelf/patchelf.c index 19363c55f08a..573b5808aa31 100644 --- a/tools/patchelf/patchelf.c +++ b/tools/patchelf/patchelf.c @@ -1,5 +1,5 @@ #include -#include +#include "elf.h" #include #include #include diff --git a/tools/preproc/asm_file.cpp b/tools/preproc/asm_file.cpp index af16e232d319..04a7410e00bf 100644 --- a/tools/preproc/asm_file.cpp +++ b/tools/preproc/asm_file.cpp @@ -41,6 +41,8 @@ AsmFile::AsmFile(std::string filename) : m_filename(filename) if (m_size < 0) FATAL_ERROR("File size of \"%s\" is less than zero.\n", filename.c_str()); + else if (m_size == 0) + return; // Empty file m_buffer = new char[m_size + 1]; @@ -73,7 +75,7 @@ AsmFile::AsmFile(AsmFile&& other) : m_filename(std::move(other.m_filename)) AsmFile::~AsmFile() { - delete[] m_buffer; + if (m_size > 0) delete[] m_buffer; } // Removes comments to simplify further processing. diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp index 109e604a224d..d2cc624ee592 100644 --- a/tools/scaninc/asm_file.cpp +++ b/tools/scaninc/asm_file.cpp @@ -36,6 +36,11 @@ AsmFile::AsmFile(std::string path) m_size = std::ftell(fp); + if (m_size < 0) + FATAL_ERROR("File size of \"%s\" is less than zero.\n", path.c_str()); + else if (m_size == 0) + return; // Empty file + m_buffer = new char[m_size]; std::rewind(fp); @@ -51,7 +56,7 @@ AsmFile::AsmFile(std::string path) AsmFile::~AsmFile() { - delete[] m_buffer; + if (m_size > 0) delete[] m_buffer; } IncDirectiveType AsmFile::ReadUntilIncDirective(std::string &path)