merge w upcoming
5
.github/pull_request_template.md
vendored
|
@ -20,6 +20,11 @@
|
|||
<!-- If your PR contains any unfinished features that are not considered merge-blocking, please list them here for clarity so no one can forget. -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
|
||||
## Things to note in the release changelog:
|
||||
<!-- We use an automated system to generate our changelogs, so if there's something of note that our end users should know in regards to this change besides the title of this PR, they should be added here. -->
|
||||
<!-- *MUST* be structured as bullet points. -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
|
||||
## **Discord contact info**
|
||||
<!--- Formatted as username (e.g. Lunos) or username#numbers (e.g. Lunos#4026) -->
|
||||
<!--- Contributors must join https://discord.gg/6CzjAG6GZk -->
|
||||
|
|
19
Makefile
|
@ -372,6 +372,17 @@ ifneq ($(NODEP),1)
|
|||
-include $(addprefix $(OBJ_DIR)/,$(C_SRCS:.c=.d))
|
||||
endif
|
||||
|
||||
$(TEST_BUILDDIR)/%.o: $(TEST_SUBDIR)/%.c
|
||||
@echo "$(CC1) <flags> -o $@ $<"
|
||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
||||
|
||||
$(TEST_BUILDDIR)/%.d: $(TEST_SUBDIR)/%.c
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
-include $(addprefix $(OBJ_DIR)/,$(TEST_SRCS:.c=.d))
|
||||
endif
|
||||
|
||||
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
|
@ -415,14 +426,6 @@ $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
|
|||
$(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(DATA_ASM_BUILDDIR)/event_scripts.o
|
||||
python3 $(TOOLS_DIR)/learnset_helpers/teachable.py
|
||||
|
||||
# NOTE: Based on C_DEP above, but without NODEP and KEEP_TEMPS handling.
|
||||
define TEST_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I $(TOOLS_DIR)/agbcc/include $2)
|
||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) -i $$< charmap.txt | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
||||
endef
|
||||
$(foreach src, $(TEST_SRCS), $(eval $(call TEST_DEP,$(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(src)),$(src),$(patsubst $(TEST_SUBDIR)/%.c,%,$(src)))))
|
||||
|
||||
# Linker script
|
||||
LD_SCRIPT := ld_script_modern.ld
|
||||
LD_SCRIPT_DEPS :=
|
||||
|
|
|
@ -119,11 +119,6 @@ Based off RHH's pokeemerald-expansion 1.9.3 https://github.com/rh-hideout/pokeem
|
|||
- ***Gen 6+ Exp. Share*** (configurable)
|
||||
- Berserk Gene
|
||||
- Most battle items from Gen 4+
|
||||
- Existing item data but missing effects:
|
||||
- Gimmighoul Coin
|
||||
- Booster Energy
|
||||
- Tera Shards
|
||||
- Tera Orb
|
||||
- ***Feature branches incorporated (with permission):***
|
||||
- [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by @Xhyzi.
|
||||
- A small signature from all of us to show the collective effort in the project :)
|
||||
|
|
|
@ -413,6 +413,10 @@ B_DEF_TEAM1 = FD 3A
|
|||
B_DEF_TEAM2 = FD 3B
|
||||
@ FD 3C - preiously gActiveBattler
|
||||
@ FD 3D - preiously gActiveBattler without Illusion Check
|
||||
B_ATK_NAME_WITH_PREFIX2 = FD 3E
|
||||
B_DEF_NAME_WITH_PREFIX2 = FD 3F
|
||||
B_EFF_NAME_WITH_PREFIX2 = FD 40
|
||||
B_SCR_ACTIVE_NAME_WITH_PREFIX2 = FD 41
|
||||
|
||||
@ indicates the end of a town/city name (before " TOWN" or " CITY")
|
||||
NAME_END = FC 00
|
||||
|
|
|
@ -9280,8 +9280,8 @@ gBattleAnimMove_ThousandArrows::
|
|||
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
|
||||
waitforvisualfinish
|
||||
delay 0x30
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
|
||||
call ThousandArrowsDown
|
||||
call ThousandArrowsDown
|
||||
call ThousandArrowsDown
|
||||
|
@ -9481,8 +9481,8 @@ gBattleAnimMove_LandsWrath::
|
|||
fadetobg BG_FISSURE
|
||||
waitbgfadeout
|
||||
playsewithpan SE_M_EARTHQUAKE, 0x0
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
|
||||
createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1
|
||||
waitbgfadein
|
||||
waitforvisualfinish
|
||||
|
@ -9649,8 +9649,8 @@ gBattleAnimMove_PrecipiceBlades::
|
|||
fadetobg 0x15
|
||||
waitbgfadeout
|
||||
createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x5
|
||||
playsewithpan SE_M_EARTHQUAKE, 0x0
|
||||
createvisualtask AnimTask_IsTargetPlayerSide, 0x2
|
||||
jumpargeq 0x7, ANIM_TARGET, PrecipiceBladesOpponent
|
||||
|
@ -11761,8 +11761,8 @@ gBattleAnimMove_StompingTantrum::
|
|||
monbg ANIM_TARGET
|
||||
createvisualtask AnimTask_Splash, 2, ANIM_ATTACKER, 3
|
||||
delay 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x5
|
||||
createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
|
||||
createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x1
|
||||
createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x2
|
||||
|
@ -11897,8 +11897,8 @@ gBattleAnimMove_PrismaticLaser::
|
|||
unloadspritegfx ANIM_TAG_ICE_CHUNK
|
||||
unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
|
||||
delay 0x1E
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
|
||||
playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER
|
||||
call PrismaticLaserRain
|
||||
call PrismaticLaserRain
|
||||
|
@ -16170,11 +16170,11 @@ SandsearStormFireSpin:
|
|||
|
||||
@Credits to Skeli
|
||||
gBattleAnimMove_LunarBlessing::
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
loadspritegfx ANIM_TAG_MOON
|
||||
loadspritegfx ANIM_TAG_SPARKLE_2
|
||||
loadspritegfx ANIM_TAG_GUARD_RING
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER @Yellow colour for ring
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
monbg ANIM_ATK_PARTNER
|
||||
setalpha 16, 0
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0
|
||||
|
@ -16579,8 +16579,8 @@ gBattleAnimMove_GigatonHammer::
|
|||
delay 18
|
||||
createvisualtask AnimTask_SquishTarget, 0x2
|
||||
delay 6
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
|
||||
call GigatonHammerImpact
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
@ -18074,10 +18074,12 @@ PopulationBombContinue:
|
|||
waitforvisualfinish
|
||||
end
|
||||
|
||||
gBattleAnimMove_RevivalBlessing::
|
||||
goto gBattleAnimMove_LunarBlessing
|
||||
|
||||
gBattleAnimMove_TeraBlast::
|
||||
gBattleAnimMove_OrderUp::
|
||||
gBattleAnimMove_GlaiveRush::
|
||||
gBattleAnimMove_RevivalBlessing::
|
||||
gBattleAnimMove_SaltCure::
|
||||
gBattleAnimMove_TripleDive::
|
||||
gBattleAnimMove_Doodle::
|
||||
|
@ -20280,8 +20282,8 @@ gBattleAnimMove_LowKick::
|
|||
end
|
||||
|
||||
gBattleAnimMove_Earthquake::
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
|
||||
playsewithpan SE_M_EARTHQUAKE, 0
|
||||
delay 10
|
||||
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14
|
||||
|
@ -20291,8 +20293,8 @@ gBattleAnimMove_Earthquake::
|
|||
|
||||
gBattleAnimMove_Fissure::
|
||||
loadspritegfx ANIM_TAG_MUD_SAND
|
||||
createvisualtask AnimTask_HorizontalShake, 3, ANIM_PLAYER_RIGHT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 3, ANIM_TARGET, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
|
||||
playsewithpan SE_M_EARTHQUAKE, SOUND_PAN_TARGET
|
||||
delay 8
|
||||
call FissureDirtPlumeFar
|
||||
|
@ -21018,13 +21020,13 @@ gBattleAnimMove_Magnitude::
|
|||
MagnitudeEnd:
|
||||
end
|
||||
MagnitudeRegular:
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50
|
||||
loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10
|
||||
goto MagnitudeEnd
|
||||
MagnitudeIntense:
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50
|
||||
loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10
|
||||
delay 10
|
||||
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14
|
||||
|
@ -21497,8 +21499,8 @@ gBattleAnimMove_Eruption::
|
|||
createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 110, -32, 64, 50, 0
|
||||
createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 60, -32, 80, 70, 1
|
||||
delay 22
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 8, 60
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 8, 60
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 8, 60
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 8, 60
|
||||
loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12
|
||||
delay 80
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, F_PAL_BG | F_PAL_BATTLERS, 4, 4, 0, RGB_RED
|
||||
|
@ -21528,7 +21530,7 @@ gBattleAnimMove_Imprison::
|
|||
waitforvisualfinish
|
||||
delay 4
|
||||
createsprite gRedXSpriteTemplate, ANIM_ATTACKER, 5, ANIM_ATTACKER, 40
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 1, 10
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 1, 10
|
||||
playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
call UnsetPsychicBg
|
||||
|
@ -29002,8 +29004,8 @@ gBattleAnimMove_BreakneckBlitz::
|
|||
loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
|
||||
loadspritegfx ANIM_TAG_METEOR
|
||||
loadspritegfx ANIM_TAG_FLAT_ROCK
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 5, 32 @ shake screen
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 5, 32 @ shake banks
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 5, 32 @ shake screen
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 5, 32 @ shake banks
|
||||
playsewithpan SE_M_EARTHQUAKE, 0x0
|
||||
monbg ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
|
|
|
@ -466,6 +466,9 @@ BattleScript_EffectRevivalBlessing::
|
|||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectRevivalBlessingSendOut:
|
||||
getswitchedmondata BS_SCRIPTING
|
||||
switchindataupdate BS_SCRIPTING
|
||||
hpthresholds BS_SCRIPTING
|
||||
switchinanim BS_SCRIPTING, FALSE
|
||||
waitstate
|
||||
switchineffects BS_SCRIPTING
|
||||
|
@ -3091,7 +3094,7 @@ BattleScript_DreamEaterWorked:
|
|||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
jumpifmovehadnoeffect BattleScript_DreamEaterTryFaintEnd
|
||||
printstring STRINGID_PKMNDREAMEATEN
|
||||
printstring STRINGID_PKMNENERGYDRAINED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_DreamEaterTryFaintEnd:
|
||||
tryfaintmon BS_TARGET
|
||||
|
@ -4959,7 +4962,7 @@ BattleScript_EffectFollowMe::
|
|||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
.if B_UPDATED_MOVE_DATA >= GEN_6
|
||||
.if B_UPDATED_MOVE_DATA >= GEN_8
|
||||
jumpifnotbattletype BATTLE_TYPE_DOUBLE, BattleScript_ButItFailed
|
||||
.endif
|
||||
setforcedtarget
|
||||
|
@ -5959,7 +5962,7 @@ BattleScript_OverworldWeatherStarts::
|
|||
end3
|
||||
|
||||
BattleScript_OverworldTerrain::
|
||||
printfromtable gTerrainStringIds
|
||||
printfromtable gTerrainStartsStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
playanimation BS_BATTLER_0, B_ANIM_RESTORE_BG
|
||||
call BattleScript_ActivateTerrainEffects
|
||||
|
@ -9080,8 +9083,6 @@ BattleScript_BerryConfuseHealEnd2_Anim:
|
|||
orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
|
||||
healthbarupdate BS_SCRIPTING
|
||||
datahpupdate BS_SCRIPTING
|
||||
printstring STRINGID_FORXCOMMAYZ
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectprimary MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER
|
||||
removeitem BS_SCRIPTING
|
||||
end2
|
||||
|
@ -9098,8 +9099,6 @@ BattleScript_BerryConfuseHealRet_Anim:
|
|||
orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
|
||||
healthbarupdate BS_SCRIPTING
|
||||
datahpupdate BS_SCRIPTING
|
||||
printstring STRINGID_FORXCOMMAYZ
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectprimary MOVE_EFFECT_CONFUSION | MOVE_EFFECT_CERTAIN
|
||||
removeitem BS_TARGET
|
||||
return
|
||||
|
|
21
dev_scripts/competitive_defines/rename_subfolders.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
import glob
|
||||
import re
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
def rename_subdirs(rootDir, old, new):
|
||||
for root, dirs, files in os.walk(rootDir):
|
||||
for name in files:
|
||||
originalName = os.path.join(root, name)
|
||||
if root.endswith(old) and os.path.isfile(originalName):
|
||||
newName = originalName.replace(old + '/', new + '/')
|
||||
print(originalName + " -> " + newName)
|
||||
if (not os.path.isdir(root.replace(old, '') + new)):
|
||||
os.mkdir(root.replace(old, '') + new)
|
||||
os.rename(originalName, newName)
|
||||
|
||||
rename_subdirs("graphics/pokemon", '/alolan', "/alola")
|
||||
rename_subdirs("graphics/pokemon", '/galarian', "/galar")
|
||||
rename_subdirs("graphics/pokemon", '/hisuian', "/hisui")
|
||||
rename_subdirs("graphics/pokemon", '/gigantamax', "/gmax")
|
|
@ -134,7 +134,10 @@ Affects when the AI chooses to switch. AI will make smarter decisions about when
|
|||
* The current mon loses the 1v1 quickly and has at least ½ HP, or ¼ and Regenerator
|
||||
|
||||
## `AI_FLAG_ACE_POKEMON`
|
||||
Marks the last Pokemon in the party as the Ace Pokemon. It will not be used unless it is the last one remaining, or is forced to be switched in (Roar, U-Turn with 1 mon remaining, etc.)
|
||||
Marks the last Pokemon in the party as the Ace Pokemon. It will not be used unless it is the last one remaining, or is forced to be switched in (Roar, U-Turn with 1 mon remaining, etc.). If you are challenged by two different trainers at the same time, only the ones with this flag will have Ace Pokémon. For example vs one trainer with `AI_FLAG_ACE_POKEMON`and the other without, there will be a total of 1 Ace Pokémon.
|
||||
|
||||
## `AI_FLAG_DOUBLE_ACE_POKEMON`
|
||||
Marks the last two Pokémon in the party as Ace Pokémon, with the same behaviour as `AI_FLAG_ACE_POKEMON`. Intented for double battles where you battle one trainer id that represents two trainers, ie Twins, Couples. If you apply this flag to trainers outside of double battles or in cases where two trainers can challenge you at the same time, it has the same behaviour. For example vs two trainers with `AI_FLAG_DOUBLE_ACE_POKEMON` there will be a total of 4 Ace Pokémon.
|
||||
|
||||
## `AI_FLAG_OMNISCIENT`
|
||||
AI has full knowledge of player moves, abilities, and hold items, and can use this knowledge when making decisions.
|
||||
|
|
|
@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Stun Spore inflicts paralysis")
|
|||
TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player);
|
||||
MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); // 4
|
||||
MESSAGE("The opposing Wobbuffet is paralyzed, so it may be unable to move!"); // 4
|
||||
STATUS_ICON(opponent, paralysis: TRUE); // 4.
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ SINGLE_BATTLE_TEST("Stun Spore does not affect Grass-types")
|
|||
TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
|
||||
} SCENE {
|
||||
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player); // 4.
|
||||
MESSAGE("It doesn't affect Foe Oddish…"); // 5.
|
||||
MESSAGE("It doesn't affect the opposing Oddish…"); // 5.
|
||||
}
|
||||
}
|
||||
```
|
||||
|
@ -226,7 +226,7 @@ SINGLE_BATTLE_TEST("Paralysis has a 25% chance of skipping the turn")
|
|||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet is paralyzed! It can't move!");
|
||||
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
@ -428,7 +428,7 @@ Spaces in pattern match newlines (\n, \l, and \p) in the message.
|
|||
Often used to check that a battler took its turn but it failed, e.g.:
|
||||
```
|
||||
MESSAGE("Wobbuffet used Dream Eater!");
|
||||
MESSAGE("Foe Wobbuffet wasn't affected!");
|
||||
MESSAGE("The opposing Wobbuffet wasn't affected!");
|
||||
```
|
||||
|
||||
### `STATUS_ICON`
|
||||
|
@ -452,7 +452,7 @@ Causes the test to fail if the `SCENE` command succeeds before the following com
|
|||
```
|
||||
// Our Wobbuffet does not Celebrate before the foe's.
|
||||
NOT MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Foe Wobbuffet used Celebrate!");
|
||||
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
||||
```
|
||||
**NOTE**: If this condition fails, the viewable ROM freezes at the NOT command.
|
||||
**WARNING: `NOT` is an alias of `NONE_OF`, so it behaves surprisingly when applied to multiple commands wrapped in braces.**
|
||||
|
@ -467,7 +467,7 @@ Causes the test to fail unless one of the `SCENE` commands succeeds.
|
|||
```
|
||||
ONE_OF {
|
||||
MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Wobbuffet is paralyzed! It can't move!");
|
||||
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -482,9 +482,9 @@ Causes the test to fail if one of the `SCENE` commands succeeds before the comma
|
|||
// Our Wobbuffet does not move before the foe's.
|
||||
NONE_OF {
|
||||
MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Wobbuffet is paralyzed! It can't move!");
|
||||
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
|
||||
}
|
||||
MESSAGE("Foe Wobbuffet used Celebrate!");
|
||||
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
||||
```
|
||||
|
||||
### `PLAYER_PARTY`
|
||||
|
|
BIN
graphics/balls/strange.png
Normal file
After Width: | Height: | Size: 358 B |
19
graphics/items/icon_palettes/strange_ball.pal
Normal file
|
@ -0,0 +1,19 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
180 180 180
|
||||
164 226 197
|
||||
238 242 230
|
||||
139 170 180
|
||||
8 113 115
|
||||
0 157 156
|
||||
106 222 172
|
||||
41 182 189
|
||||
90 206 172
|
||||
90 182 180
|
||||
8 0 0
|
||||
65 190 189
|
||||
115 194 189
|
||||
0 117 131
|
||||
0 129 131
|
||||
0 12 0
|
BIN
graphics/items/icons/strange_ball.png
Normal file
After Width: | Height: | Size: 304 B |
Before Width: | Height: | Size: 514 B After Width: | Height: | Size: 514 B |
Before Width: | Height: | Size: 815 B After Width: | Height: | Size: 815 B |
Before Width: | Height: | Size: 484 B After Width: | Height: | Size: 484 B |
Before Width: | Height: | Size: 581 B After Width: | Height: | Size: 581 B |
Before Width: | Height: | Size: 713 B After Width: | Height: | Size: 713 B |
Before Width: | Height: | Size: 418 B After Width: | Height: | Size: 418 B |
Before Width: | Height: | Size: 856 B After Width: | Height: | Size: 856 B |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 433 B After Width: | Height: | Size: 433 B |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 645 B After Width: | Height: | Size: 645 B |
Before Width: | Height: | Size: 865 B After Width: | Height: | Size: 865 B |
Before Width: | Height: | Size: 413 B After Width: | Height: | Size: 413 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 614 B After Width: | Height: | Size: 614 B |
Before Width: | Height: | Size: 885 B After Width: | Height: | Size: 885 B |
Before Width: | Height: | Size: 442 B After Width: | Height: | Size: 442 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 565 B After Width: | Height: | Size: 565 B |
Before Width: | Height: | Size: 978 B After Width: | Height: | Size: 978 B |
Before Width: | Height: | Size: 455 B After Width: | Height: | Size: 455 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 543 B |
Before Width: | Height: | Size: 871 B After Width: | Height: | Size: 871 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 510 B |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 428 B After Width: | Height: | Size: 428 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 87 B After Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 766 B |
Before Width: | Height: | Size: 539 B After Width: | Height: | Size: 539 B |
Before Width: | Height: | Size: 275 B After Width: | Height: | Size: 275 B |
Before Width: | Height: | Size: 399 B After Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 828 B After Width: | Height: | Size: 828 B |
Before Width: | Height: | Size: 550 B After Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 275 B After Width: | Height: | Size: 275 B |
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 406 B |
Before Width: | Height: | Size: 947 B After Width: | Height: | Size: 947 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 670 B After Width: | Height: | Size: 670 B |
Before Width: | Height: | Size: 935 B After Width: | Height: | Size: 935 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 496 B After Width: | Height: | Size: 496 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 962 B After Width: | Height: | Size: 962 B |