diff options
Diffstat (limited to 'src/com')
18 files changed, 1684 insertions, 1169 deletions
diff --git a/src/com/dabomstew/pkrandom/Randomizer.java b/src/com/dabomstew/pkrandom/Randomizer.java index 524c215..079960a 100644 --- a/src/com/dabomstew/pkrandom/Randomizer.java +++ b/src/com/dabomstew/pkrandom/Randomizer.java @@ -930,35 +930,41 @@ public class Randomizer { if (settings.getStaticPokemonMod() == Settings.StaticPokemonMod.RANDOM_MATCHING) { // Legendary for L
romHandler.randomizeStaticPokemon(true, false,settings.isLimitMusketeers(),
settings.isLimit600(), settings.isAllowStaticAltFormes(), settings.isSwapStaticMegaEvos(),
- settings.getAbilitiesMod() == Settings.AbilitiesMod.RANDOMIZE);
+ settings.getAbilitiesMod() == Settings.AbilitiesMod.RANDOMIZE,
+ settings.isStaticLevelModified() ? settings.getStaticLevelModifier() : 0);
} else if (settings.getStaticPokemonMod() == Settings.StaticPokemonMod.COMPLETELY_RANDOM) {
romHandler.randomizeStaticPokemon(false, false,settings.isLimitMusketeers(),
settings.isLimit600(), settings.isAllowStaticAltFormes(), settings.isSwapStaticMegaEvos(),
- settings.getAbilitiesMod() == Settings.AbilitiesMod.RANDOMIZE);
+ settings.getAbilitiesMod() == Settings.AbilitiesMod.RANDOMIZE,
+ settings.isStaticLevelModified() ? settings.getStaticLevelModifier() : 0);
} else if (settings.getStaticPokemonMod() == Settings.StaticPokemonMod.SIMILAR_STRENGTH) {
romHandler.randomizeStaticPokemon(false, true,settings.isLimitMusketeers(),
settings.isLimit600(), settings.isAllowStaticAltFormes(), settings.isSwapStaticMegaEvos(),
- settings.getAbilitiesMod() == Settings.AbilitiesMod.RANDOMIZE);
+ settings.getAbilitiesMod() == Settings.AbilitiesMod.RANDOMIZE,
+ settings.isStaticLevelModified() ? settings.getStaticLevelModifier() : 0);
+ } else if (settings.isStaticLevelModified()) {
+ romHandler.onlyChangeStaticLevels(settings.getStaticLevelModifier());
}
List<StaticEncounter> newStatics = romHandler.getStaticPokemon();
- if (settings.getStaticPokemonMod() == Settings.StaticPokemonMod.UNCHANGED) {
+ if (settings.getStaticPokemonMod() == Settings.StaticPokemonMod.UNCHANGED && !settings.isStaticLevelModified()) {
log.println("Static Pokemon: Unchanged." + NEWLINE);
} else {
log.println("--Static Pokemon--");
- Map<Pokemon, Integer> seenPokemon = new TreeMap<>();
+ Map<String, Integer> seenPokemon = new TreeMap<>();
for (int i = 0; i < oldStatics.size(); i++) {
StaticEncounter oldP = oldStatics.get(i);
StaticEncounter newP = newStatics.get(i);
checkValue = addToCV(checkValue, newP.pkmn.number);
- log.print(oldP.toString());
- if (seenPokemon.containsKey(oldP.pkmn)) {
- int amount = seenPokemon.get(oldP.pkmn);
+ String oldStaticString = oldP.toString(settings.isStaticLevelModified());
+ log.print(oldStaticString);
+ if (seenPokemon.containsKey(oldStaticString)) {
+ int amount = seenPokemon.get(oldStaticString);
log.print("(" + (++amount) + ")");
- seenPokemon.put(oldP.pkmn, amount);
+ seenPokemon.put(oldStaticString, amount);
} else {
- seenPokemon.put(oldP.pkmn, 1);
+ seenPokemon.put(oldStaticString, 1);
}
- log.println(" => " + newP.toString());
+ log.println(" => " + newP.toString(settings.isStaticLevelModified()));
}
log.println();
}
diff --git a/src/com/dabomstew/pkrandom/Settings.java b/src/com/dabomstew/pkrandom/Settings.java index 29c2075..60528bb 100644 --- a/src/com/dabomstew/pkrandom/Settings.java +++ b/src/com/dabomstew/pkrandom/Settings.java @@ -49,7 +49,7 @@ public class Settings { public static final int VERSION = Version.VERSION;
- public static final int LENGTH_OF_SETTINGS_DATA = 47;
+ public static final int LENGTH_OF_SETTINGS_DATA = 48;
private CustomNamesSet customNames;
@@ -208,6 +208,8 @@ public class Settings { private boolean allowStaticAltFormes;
private boolean swapStaticMegaEvos;
+ private boolean staticLevelModified;
+ private int staticLevelModifier = 0; // -50 ~ 50
public enum TotemPokemonMod {
UNCHANGED, RANDOM, SIMILAR_STRENGTH
@@ -539,6 +541,8 @@ public class Settings { out.write(selectedEXPCurve.toByte());
+ out.write((staticLevelModified ? 0x80 : 0) | (staticLevelModifier+50));
+
try {
byte[] romName = this.romName.getBytes("US-ASCII");
out.write(romName.length);
@@ -803,6 +807,9 @@ public class Settings { settings.setSelectedEXPCurve(ExpCurve.fromByte(data[46]));
+ settings.setStaticLevelModified(restoreState(data[47],7));
+ settings.setStaticLevelModifier((data[47] & 0x7F) - 50);
+
int romNameLength = data[LENGTH_OF_SETTINGS_DATA] & 0xFF;
String romName = new String(data, LENGTH_OF_SETTINGS_DATA + 1, romNameLength, "US-ASCII");
settings.setRomName(romName);
@@ -1745,6 +1752,22 @@ public class Settings { this.swapStaticMegaEvos = swapStaticMegaEvos;
}
+ public boolean isStaticLevelModified() {
+ return staticLevelModified;
+ }
+
+ public void setStaticLevelModified(boolean staticLevelModified) {
+ this.staticLevelModified = staticLevelModified;
+ }
+
+ public int getStaticLevelModifier() {
+ return staticLevelModifier;
+ }
+
+ public void setStaticLevelModifier(int staticLevelModifier) {
+ this.staticLevelModifier = staticLevelModifier;
+ }
+
public TotemPokemonMod getTotemPokemonMod() {
return totemPokemonMod;
}
diff --git a/src/com/dabomstew/pkrandom/config/gen3_offsets.ini b/src/com/dabomstew/pkrandom/config/gen3_offsets.ini index d0199de..b6a3182 100755 --- a/src/com/dabomstew/pkrandom/config/gen3_offsets.ini +++ b/src/com/dabomstew/pkrandom/config/gen3_offsets.ini @@ -47,24 +47,25 @@ CatchingTutorialPlayerMonOffset=0x10F62E PCPotionOffset=0x4062F0 InstantTextTweak=ruby_10_instant_text StaticPokemonSupport=1 -StaticPokemon[]=[0x157663, 0x157691] // Lileep -StaticPokemon[]=[0x1576B6, 0x1576E4] // Anorith -StaticPokemon[]=[0x1A04A3, 0x15DE26, 0x15DE2D] // Groudon -StaticPokemon[]=[0x15CB89, 0x15CB92] // Regirock -StaticPokemon[]=[0x15EFA1, 0x15EFAA] // Regice -StaticPokemon[]=[0x15F054, 0x15F05D] // Registeel -StaticPokemon[]=[0x160BCE, 0x160BF4] // Latias (Southern Island) -StaticPokemon[]=[0x15F319, 0x15F320] // Rayquaza -StaticPokemon[]=[0x1A05E2, 0x1A05EB] // Kecleons on OW (7) -StaticPokemon[]=[0x1518E8, 0x1518F1] // Kecleon w/ Steven -StaticPokemon[]=[0x15E903, 0x15E90A] // Voltorb 1 -StaticPokemon[]=[0x15E921, 0x15E928] // Voltorb 2 -StaticPokemon[]=[0x15E93F, 0x15E946] // Voltorb 3 -StaticPokemon[]=[0x1A0500, 0x1A0507] // Electrode 1 -StaticPokemon[]=[0x1A051E, 0x1A0525] // Electrode 2 -StaticPokemon[]=[0x14E79A] // Wynaut Egg -StaticPokemon[]=[0x15AAAF, 0x15AABF] // Beldum -StaticPokemon[]=[0x163D99] // Castform +StaticPokemon{}={Species=[0x157663, 0x157691], Level=[0x157693]} // Lileep +StaticPokemon{}={Species=[0x1576B6, 0x1576E4], Level=[0x1576E6]} // Anorith +StaticPokemon{}={Species=[0x1A04A3, 0x15DE26, 0x15DE2D], Level=[0x15DE28]} // Groudon +StaticPokemon{}={Species=[0x15CB89, 0x15CB92], Level=[0x15CB94]} // Regirock +StaticPokemon{}={Species=[0x15EFA1, 0x15EFAA], Level=[0x15EFAC]} // Regice +StaticPokemon{}={Species=[0x15F054, 0x15F05D], Level=[0x15F05F]} // Registeel +StaticPokemon{}={Species=[0x160BCE, 0x160BF4], Level=[0x160BF6]} // Latias (Southern Island) +StaticPokemon{}={Species=[0x15F319, 0x15F320], Level=[0x15F31B]} // Rayquaza +StaticPokemon{}={Species=[0x1A05E2, 0x1A05EB], Level=[0x1A05ED]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x1518E8, 0x1518F1], Level=[0x1518F3]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15E903, 0x15E90A], Level=[0x15E905]} // Voltorb 1 +StaticPokemon{}={Species=[0x15E921, 0x15E928], Level=[0x15E923]} // Voltorb 2 +StaticPokemon{}={Species=[0x15E93F, 0x15E946], Level=[0x15E941]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A0500, 0x1A0507], Level=[0x1A0502]} // Electrode 1 +StaticPokemon{}={Species=[0x1A051E, 0x1A0525], Level=[0x1A0520]} // Electrode 2 +StaticPokemon{}={Species=[0x14E79A]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AAAF, 0x15AABF], Level=[0x15AAB1]} // Beldum +StaticPokemon{}={Species=[0x163D99], Level=[0x163D9B]} // Castform +StaticEggPokemonOffsets=[15] TMText[]=[3,15,0,1,0x70,The TM I handed you contains [move].] TMText[]=[4,14,0,1,0x74,TATE: That TM04 contains... LIZA: [move]!\pTATE: It’s a move that’s perfect... LIZA: For any POKéMON!] TMText[]=[5,0,29,12,0x0D,All my POKéMON does is [move]... No one dares to come near me...\pSigh... If you would, please take this TM away...] @@ -109,24 +110,24 @@ CatchingTutorialPlayerMonOffset=0x10F64E PCPotionOffset=0x40630C InstantTextTweak=ruby_11_instant_text StaticPokemonSupport=1 -StaticPokemon[]=[0x157683, 0x1576B1] -StaticPokemon[]=[0x1576D6, 0x157704] -StaticPokemon[]=[0x1A04C3, 0x15DE46, 0x15DE4D] -StaticPokemon[]=[0x15CBA9, 0x15CBB2] -StaticPokemon[]=[0x15EFC1, 0x15EFCA] -StaticPokemon[]=[0x15F074, 0x15F07D] -StaticPokemon[]=[0x160BEE, 0x160C14] -StaticPokemon[]=[0x15F339, 0x15F340] -StaticPokemon[]=[0x1A0602, 0x1A060B] -StaticPokemon[]=[0x151908, 0x151911] -StaticPokemon[]=[0x15E923, 0x15E92A] -StaticPokemon[]=[0x15E941, 0x15E948] -StaticPokemon[]=[0x15E95F, 0x15E966] -StaticPokemon[]=[0x1A0520, 0x1A0527] -StaticPokemon[]=[0x1A053E, 0x1A0545] -StaticPokemon[]=[0x14E7BA] -StaticPokemon[]=[0x15AACF, 0x15AADF] -StaticPokemon[]=[0x163DB9] +StaticPokemon{}={Species=[0x157683, 0x1576B1], Level=[0x1576B3]} // Lileep +StaticPokemon{}={Species=[0x1576D6, 0x157704], Level=[0x157706]} // Anorith +StaticPokemon{}={Species=[0x1A04C3, 0x15DE46, 0x15DE4D], Level=[0x15DE48]} // Groudon +StaticPokemon{}={Species=[0x15CBA9, 0x15CBB2], Level=[0x15CBB4]} // Regirock +StaticPokemon{}={Species=[0x15EFC1, 0x15EFCA], Level=[0x15EFCC]} // Regice +StaticPokemon{}={Species=[0x15F074, 0x15F07D], Level=[0x15F07F]} // Registeel +StaticPokemon{}={Species=[0x160BEE, 0x160C14], Level=[0x160C16]} // Latias (Southern Island) +StaticPokemon{}={Species=[0x15F339, 0x15F340], Level=[0x15F33B]} // Rayquaza +StaticPokemon{}={Species=[0x1A0602, 0x1A060B], Level=[0x1A060D]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151908, 0x151911], Level=[0x151913]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15E923, 0x15E92A], Level=[0x15E925]} // Voltorb 1 +StaticPokemon{}={Species=[0x15E941, 0x15E948], Level=[0x15E943]} // Voltorb 2 +StaticPokemon{}={Species=[0x15E95F, 0x15E966], Level=[0x15E961]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A0520, 0x1A0527], Level=[0x1A0522]} // Electrode 1 +StaticPokemon{}={Species=[0x1A053E, 0x1A0545], Level=[0x1A0540]} // Electrode 2 +StaticPokemon{}={Species=[0x14E7BA]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AACF, 0x15AADF], Level=[0x15AAD1]} // Beldum +StaticPokemon{}={Species=[0x163DB9], Level=[0x163DBB]} // Castform [Ruby (U/E) 1.2] Game=AXVE @@ -161,24 +162,24 @@ RunIndoorsTweakOffset=0xE5E00 PCPotionOffset=0x406348 InstantTextTweak=sapphire_10_instant_text StaticPokemonSupport=1 -StaticPokemon[]=[0x1575F3, 0x157621] // Lileep -StaticPokemon[]=[0x157646, 0x157674] // Anorith -StaticPokemon[]=[0x1A0433, 0x15DDB6, 0x15DDBD] // Kyogre -StaticPokemon[]=[0x15CB19, 0x15CB22] // Regirock -StaticPokemon[]=[0x15EF31, 0x15EF3A] // Regice -StaticPokemon[]=[0x15EFE4, 0x15EFED] // Registeel -StaticPokemon[]=[0x160B5E, 0x160B84] // Latios (Southern Island) -StaticPokemon[]=[0x15F2A9, 0x15F2B0] // Rayquaza -StaticPokemon[]=[0x1A0572, 0x1A057B] // Kecleons on OW (7) -StaticPokemon[]=[0x15187C, 0x151885] // Kecleon w/ Steven -StaticPokemon[]=[0x15E893, 0x15E89A] // Voltorb 1 -StaticPokemon[]=[0x15E8B1, 0x15E8B8] // Voltorb 2 -StaticPokemon[]=[0x15E8CF, 0x15E8D6] // Voltorb 3 -StaticPokemon[]=[0x1A0490, 0x1A0497] // Electrode 1 -StaticPokemon[]=[0x1A04AE, 0x1A04B5] // Electrode 2 -StaticPokemon[]=[0x14E72E] // Wynaut Egg -StaticPokemon[]=[0x15AA3F, 0x15AA4F] // Beldum -StaticPokemon[]=[0x163D29] // Castform +StaticPokemon{}={Species=[0x1575F3, 0x157621], Level=[0x157623]} // Lileep +StaticPokemon{}={Species=[0x157646, 0x157674], Level=[0x157676]} // Anorith +StaticPokemon{}={Species=[0x1A0433, 0x15DDB6, 0x15DDBD], Level=[0x15DDB8]} // Kyogre +StaticPokemon{}={Species=[0x15CB19, 0x15CB22], Level=[0x15CB24]} // Regirock +StaticPokemon{}={Species=[0x15EF31, 0x15EF3A], Level=[0x15EF3C]} // Regice +StaticPokemon{}={Species=[0x15EFE4, 0x15EFED], Level=[0x15EFEF]} // Registeel +StaticPokemon{}={Species=[0x160B5E, 0x160B84], Level=[0x160B86]} // Latios (Southern Island) +StaticPokemon{}={Species=[0x15F2A9, 0x15F2B0], Level=[0x15F2AB]} // Rayquaza +StaticPokemon{}={Species=[0x1A0572, 0x1A057B], Level=[0x1A057D]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x15187C, 0x151885], Level=[0x151887]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15E893, 0x15E89A], Level=[0x15E895]} // Voltorb 1 +StaticPokemon{}={Species=[0x15E8B1, 0x15E8B8], Level=[0x15E8B3]} // Voltorb 2 +StaticPokemon{}={Species=[0x15E8CF, 0x15E8D6], Level=[0x15E8D1]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A0490, 0x1A0497], Level=[0x1A0492]} // Electrode 1 +StaticPokemon{}={Species=[0x1A04AE, 0x1A04B5], Level=[0x1A04B0]} // Electrode 2 +StaticPokemon{}={Species=[0x14E72E]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AA3F, 0x15AA4F], Level=[0x15AA41]} // Beldum +StaticPokemon{}={Species=[0x163D29], Level=[0x163D2B]} // Castform [Sapphire (E)] Game=AXPE @@ -208,24 +209,24 @@ CatchingTutorialPlayerMonOffset=0x10F64E PCPotionOffset=0x406368 InstantTextTweak=sapphire_11_instant_text StaticPokemonSupport=1 -StaticPokemon[]=[0x157613, 0x157641] -StaticPokemon[]=[0x157666, 0x157694] -StaticPokemon[]=[0x1A0453, 0x15DDD6, 0x15DDDD] -StaticPokemon[]=[0x15CB39, 0x15CB42] -StaticPokemon[]=[0x15EF51, 0x15EF5A] -StaticPokemon[]=[0x15F004, 0x15F00D] -StaticPokemon[]=[0x160B7E, 0x160BA4] -StaticPokemon[]=[0x15F2C9, 0x15F2D0] -StaticPokemon[]=[0x1A0592, 0x1A059B] -StaticPokemon[]=[0x15189C, 0x1518A5] -StaticPokemon[]=[0x15E8B3, 0x15E8BA] -StaticPokemon[]=[0x15E8D1, 0x15E8D8] -StaticPokemon[]=[0x15E8EF, 0x15E8F6] -StaticPokemon[]=[0x1A04B0, 0x1A04B7] -StaticPokemon[]=[0x1A04CE, 0x1A04D5] -StaticPokemon[]=[0x14E74E] -StaticPokemon[]=[0x15AA5F, 0x15AA6F] -StaticPokemon[]=[0x163D49] +StaticPokemon{}={Species=[0x157613, 0x157641], Level=[0x157643]} // Lileep +StaticPokemon{}={Species=[0x157666, 0x157694], Level=[0x157696]} // Anorith +StaticPokemon{}={Species=[0x1A0453, 0x15DDD6, 0x15DDDD], Level=[0x15DDD8]} // Kyogre +StaticPokemon{}={Species=[0x15CB39, 0x15CB42], Level=[0x15CB44]} // Regirock +StaticPokemon{}={Species=[0x15EF51, 0x15EF5A], Level=[0x15EF5C]} // Regice +StaticPokemon{}={Species=[0x15F004, 0x15F00D], Level=[0x15F00F]} // Registeel +StaticPokemon{}={Species=[0x160B7E, 0x160BA4], Level=[0x160BA6]} // Latios (Southern Island) +StaticPokemon{}={Species=[0x15F2C9, 0x15F2D0], Level=[0x15F2CB]} // Rayquaza +StaticPokemon{}={Species=[0x1A0592, 0x1A059B], Level=[0x1A059D]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x15189C, 0x1518A5], Level=[0x1518A7]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15E8B3, 0x15E8BA], Level=[0x15E8B5]} // Voltorb 1 +StaticPokemon{}={Species=[0x15E8D1, 0x15E8D8], Level=[0x15E8D3]} // Voltorb 2 +StaticPokemon{}={Species=[0x15E8EF, 0x15E8F6], Level=[0x15E8F1]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A04B0, 0x1A04B7], Level=[0x1A04B2]} // Electrode 1 +StaticPokemon{}={Species=[0x1A04CE, 0x1A04D5], Level=[0x1A04D0]} // Electrode 2 +StaticPokemon{}={Species=[0x14E74E]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AA5F, 0x15AA6F], Level=[0x15AA61]} // Beldum +StaticPokemon{}={Species=[0x163D49], Level=[0x163D4B]} // Castform [Sapphire (U/E) 1.2] Game=AXPE @@ -280,31 +281,32 @@ CatchingTutorialOpponentMonOffset=0xB0870 CatchingTutorialPlayerMonOffset=0x139472 PCPotionOffset=0x5DFEFC StaticPokemonSupport=1 -StaticPokemon[]=[0x211A1C, 0x211A41, 0x211A44, 0x211AC6, 0x211AD4] // Lileep -StaticPokemon[]=[0x211A2E, 0x211AE4, 0x211AE7, 0x211B69, 0x211B77] // Anorith -StaticPokemon[]=[0x23B032, 0x23B040, 0x23B095] // Kyogre -StaticPokemon[]=[0x23B103, 0x23B111, 0x23B166] // Groudon -StaticPokemon[]=[0x22DA06, 0x22DA0F, 0x22DA55] // Regirock -StaticPokemon[]=[0x238F5C, 0x238F65, 0x238FAB] // Regice -StaticPokemon[]=[0x23905E, 0x239067, 0x2390AD] // Registeel -StaticPokemon[]=[0x239725, 0x23972E, 0x239774] // Rayquaza -StaticPokemon[]=[0x272384, 0x27238D] // Kecleons on OW (7) -StaticPokemon[]=[0x1F56D6, 0x1F56DF] // Kecleon w/ Steven -StaticPokemon[]=[0x2377B2, 0x2377B9] // Voltorb 1 -StaticPokemon[]=[0x2377FF, 0x237806] // Voltorb 2 -StaticPokemon[]=[0x23784C, 0x237853] // Voltorb 3 -StaticPokemon[]=[0x2339EE, 0x2339F5] // Electrode 1 -StaticPokemon[]=[0x233A3B, 0x233A42] // Electrode 2 -StaticPokemon[]=[0x242D1B, 0x242D29] // Sudowoodo in Battle Frontier -StaticPokemon[]=[0x242BA7] -StaticPokemon[]=[0x242BBA] // Latias/Latios on Southern Island -StaticPokemon[]=[0x267FE7, 0x267FF7, 0x268041, 0x26804C] // Deoxys on Birth Island -StaticPokemon[]=[0x267E0D, 0x267E47, 0x267E9C, 0x267EA7] // Mew on Faraway Island -StaticPokemon[]=[0x26919F, 0x2691CE, 0x26921D, 0x269228] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x2692E7, 0x2692F2, 0x26933C, 0x269347] // Lugia on Navel Rock -StaticPokemon[]=[0x1EA783] // Wynaut Egg -StaticPokemon[]=[0x222868, 0x22286B, 0x2228ED, 0x2228FE] // Beldum -StaticPokemon[]=[0x270058, 0x27005B] // Castform +StaticPokemon{}={Species=[0x211A1C, 0x211A41, 0x211A44, 0x211AC6, 0x211AD4], Level=[0x211A46]} // Lileep +StaticPokemon{}={Species=[0x211A2E, 0x211AE4, 0x211AE7, 0x211B69, 0x211B77], Level=[0x211AE9]} // Anorith +StaticPokemon{}={Species=[0x23B032, 0x23B040, 0x23B095, 0x1E5982, 0x1E5A02, 0x1E5ABE, 0x1E5B3E], Level=[0x23B042]} // Kyogre +StaticPokemon{}={Species=[0x23B103, 0x23B111, 0x23B166, 0x1E59C2, 0x1E5AFE], Level=[0x23B113]} // Groudon +StaticPokemon{}={Species=[0x22DA06, 0x22DA0F, 0x22DA55], Level=[0x22DA11]} // Regirock +StaticPokemon{}={Species=[0x238F5C, 0x238F65, 0x238FAB], Level=[0x238F67]} // Regice +StaticPokemon{}={Species=[0x23905E, 0x239067, 0x2390AD], Level=[0x239069]} // Registeel +StaticPokemon{}={Species=[0x239725, 0x23972E, 0x239774, 0x2397C3, 0x2397E1, 0x1E5C60, 0x1E5C7E, 0x1E5D14, 0x1E5D32], Level=[0x239730]} // Rayquaza +StaticPokemon{}={Species=[0x272384, 0x27238D], Level=[0x27238F]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x1F56D6, 0x1F56DF], Level=[0x1F56E1]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x2377B2, 0x2377B9], Level=[0x2377B4]} // Voltorb 1 +StaticPokemon{}={Species=[0x2377FF, 0x237806], Level=[0x237801]} // Voltorb 2 +StaticPokemon{}={Species=[0x23784C, 0x237853], Level=[0x23784E]} // Voltorb 3 +StaticPokemon{}={Species=[0x2339EE, 0x2339F5], Level=[0x2339F0]} // Electrode 1 +StaticPokemon{}={Species=[0x233A3B, 0x233A42], Level=[0x233A3D]} // Electrode 2 +StaticPokemon{}={Species=[0x242D1B, 0x242D29], Level=[0x242D2B]} // Sudowoodo in Battle Frontier +StaticPokemon{}={Species=[0x242A92, 0x242BA7], Level=[0x242BAC]} // Latios on Southern Island +StaticPokemon{}={Species=[0x242A9D, 0x242BBA], Level=[0x242BBF]} // Latias on Southern Island +StaticPokemon{}={Species=[0x267FE7, 0x267FF7, 0x268041, 0x26804C], Level=[0x267FFC]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x267E0D, 0x267E47, 0x267E9C, 0x267EA7], Level=[0x267E4C]} // Mew on Faraway Island +StaticPokemon{}={Species=[0x26919F, 0x2691CE, 0x26921D, 0x269228], Level=[0x2691D3]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x2692E7, 0x2692F2, 0x26933C, 0x269347], Level=[0x2692F7]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x1EA783]} // Wynaut Egg +StaticPokemon{}={Species=[0x222868, 0x22286B, 0x2228ED, 0x2228FE], Level=[0x22286D]} // Beldum +StaticPokemon{}={Species=[0x270058, 0x27005B, 0x2700E7], Level=[0x27005D]} // Castform +StaticEggPokemonOffsets=[22] TMText[]=[3,15,0,1,0xA9,The TECHNICAL MACHINE I handed you contains [move].\p… … … … … …] TMText[]=[4,14,0,1,0xB8,TATE: That TM04 contains... LIZA: [move]!\pTATE: It’s a move that’s perfect... LIZA: For any POKéMON!\p… … … … … …] TMText[]=[5,0,29,12,0x0D,All my POKéMON does is [move]... No one dares to come near me...\pSigh... If you would, please take this TM away...] @@ -343,7 +345,6 @@ MoveTutorText[]=[25,9,6,9,0x0D,Heh! My POKéMON totally rules! It’s cooler tha MoveTutorText[]=[25,9,6,9,0x30,All right, which POKéMON wants to learn how to [move]?] MoveTutorText[]=[25,9,6,9,0x60,I’ll just praise my POKéMON from now on without the [move].] - [Fire Red (U) 1.0] Game=BPRE Version=0 @@ -389,31 +390,31 @@ InstantTextTweak=fr_instant_text CatchingTutorialOpponentMonOffset=0x7F88C PCPotionOffset=0x402220 StaticPokemonSupport=1 -StaticPokemon[]=[0x16C472, 0x16C475, 0x16C4B5, 0x16C4E9] // Eevee in Celadon Mansion -StaticPokemon[]=[0x16EC0C, 0x16EC13] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x16EC52, 0x16EC59] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x163840, 0x163847] // Electrode in The Power Plant -StaticPokemon[]=[0x16389E, 0x1638A5] // Electrode in The Power Plant -StaticPokemon[]=[0x1637CC, 0x1637D3, 0x163827] // Zapdos in the Power Plant -StaticPokemon[]=[0x1631C0, 0x1631C7, 0x16321B] // Articuno in the Seafoams -StaticPokemon[]=[0x163B47, 0x163B4E, 0x163BA2] // Moltres in Mt.Ember -StaticPokemon[]=[0x16250A, 0x16251E, 0x162564] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x168049, 0x168050] // Sleeping Snorlax (12) -StaticPokemon[]=[0x168156, 0x16815D] // Sleeping Snorlax (16) -StaticPokemon[]=[0x163CBC, 0x163CC2] // Hypno in Berry Forest -StaticPokemon[]=[0x1652E6, 0x1652F6, 0x165340, 0x16534B] // Deoxys on Birth Island -StaticPokemon[]=[0x16503C, 0x16506B, 0x1650BA, 0x1650C5] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x16518A, 0x165195, 0x1651DF, 0x1651EA] // Lugia on Navel Rock -StaticPokemon[]=[0x16E7E5, 0x16E7E9, 0x16E7F4, 0x16E6E6] // Old Amber -StaticPokemon[]=[0x16E75B, 0x16E75F, 0x16E76A, 0x16E66A] // Helix Fossil -StaticPokemon[]=[0x16E7A0, 0x16E7A4, 0x16E7AF, 0x16E6A8] // Dome Fossil -StaticPokemon[]=[0x161AE1, 0x161B20, 0x161B53] // Lapras in Silph. Co -StaticPokemon[]=[0x16F7C6, 0x16F885] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x16CC18, 0x16CC94] // Abra -StaticPokemon[]=[0x16CC28, 0x16CC9F] // Clefairy -StaticPokemon[]=[0x16CC48, 0x16CCB5] // Scyther -StaticPokemon[]=[0x16CC38, 0x16CCAA] // Dratini -StaticPokemon[]=[0x16CC58, 0x16CCC0] // Porygon +StaticPokemon{}={Species=[0x16C472, 0x16C475, 0x16C4B5, 0x16C4E9], Level=[0x16C477]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EC0C, 0x16EC13], Level=[0x16EC86]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16EC52, 0x16EC59], Level=[0x16EC86]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x163840, 0x163847], Level=[0x163842]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16389E, 0x1638A5], Level=[0x1638A0]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x1637CC, 0x1637D3, 0x163827], Level=[0x1637CE]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x1631C0, 0x1631C7, 0x16321B, 0x17009D, 0x1700A9], Level=[0x1631C2]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163B47, 0x163B4E, 0x163BA2], Level=[0x163B49]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x16250A, 0x16251E, 0x162564], Level=[0x162520]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x168049, 0x168050, 0x160CA2, 0x160CA8], Level=[0x16804B]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x168156, 0x16815D], Level=[0x168158]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163CBC, 0x163CC2], Level=[0x163CC4]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x1652E6, 0x1652F6, 0x165340, 0x16534B], Level=[0x1652FB]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x16503C, 0x16506B, 0x1650BA, 0x1650C5], Level=[0x165070]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x16518A, 0x165195, 0x1651DF, 0x1651EA], Level=[0x16519A]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E7E5, 0x16E7E9, 0x16E7F4, 0x16E6E6], Level=[0x16E7F6]} // Old Amber +StaticPokemon{}={Species=[0x16E75B, 0x16E75F, 0x16E76A, 0x16E66A], Level=[0x16E76C]} // Helix Fossil +StaticPokemon{}={Species=[0x16E7A0, 0x16E7A4, 0x16E7AF, 0x16E6A8], Level=[0x16E7B1]} // Dome Fossil +StaticPokemon{}={Species=[0x161ADE, 0x161AE1, 0x161B20, 0x161B53], Level=[0x161AE3]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F7C3, 0x16F7C6, 0x16F885], Level=[0x16F7C8]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CC18, 0x16CC94], Level=[0x16CCD7]} // Abra +StaticPokemon{}={Species=[0x16CC28, 0x16CC9F], Level=[0x16CCEC]} // Clefairy +StaticPokemon{}={Species=[0x16CC48, 0x16CCB5], Level=[0x16CD16]} // Scyther +StaticPokemon{}={Species=[0x16CC38, 0x16CCAA], Level=[0x16CD01]} // Dratini +StaticPokemon{}={Species=[0x16CC58, 0x16CCC0], Level=[0x16CD2B]} // Porygon TMText[]=[3,7,5,3,0x2A,TM03 teaches [move].\pUse it on a worthy POKéMON!] TMText[]=[4,14,3,7,0x2A,TM04 is [move].] TMText[]=[6,11,3,7,0x91,Sealed within that TM06 lies [move]!\pIt is a secret technique dating back some four hundred years.] @@ -494,31 +495,31 @@ InstantTextTweak=lg_instant_text CatchingTutorialOpponentMonOffset=0x7F860 PCPotionOffset=0x40205C StaticPokemonSupport=1 -StaticPokemon[]=[0x16C44E, 0x16C451, 0x16C491, 0x16C4C5] // Eevee in Celadon Mansion -StaticPokemon[]=[0x16EBE8, 0x16EBEF] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x16EC2E, 0x16EC35] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x16381C, 0x163823] // Electrode in The Power Plant -StaticPokemon[]=[0x16387A, 0x163881] // Electrode in The Power Plant -StaticPokemon[]=[0x1637A8, 0x1637AF, 0x163803] // Zapdos in the Power Plant -StaticPokemon[]=[0x16319C, 0x1631A3, 0x1631F7] // Articuno in the Seafoams -StaticPokemon[]=[0x163B23, 0x163B2A, 0x163B7E] // Moltres in Mt.Ember -StaticPokemon[]=[0x1624E6, 0x1624FA, 0x162540] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x168025, 0x16802C] // Sleeping Snorlax (12) -StaticPokemon[]=[0x168132, 0x168139] // Sleeping Snorlax (16) -StaticPokemon[]=[0x163C98, 0x163C9E] // Hypno in Berry Forest -StaticPokemon[]=[0x1652C2, 0x1652D2, 0x16531C, 0x165327] // Deoxys on Birth Island -StaticPokemon[]=[0x165018, 0x165047, 0x165096, 0x1650A1] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x165166, 0x165171, 0x1651BB, 0x1651C6] // Lugia on Navel Rock -StaticPokemon[]=[0x16E7C1, 0x16E7C5, 0x16E7D0, 0x16E6C2] // Old Amber -StaticPokemon[]=[0x16E737, 0x16E73B, 0x16E746, 0x16E646] // Helix Fossil -StaticPokemon[]=[0x16E77C, 0x16E780, 0x16E78B, 0x16E684] // Dome Fossil -StaticPokemon[]=[0x161ABD, 0x161AFC, 0x161B2F] // Lapras in Silph. Co -StaticPokemon[]=[0x16F7A2, 0x16F861] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x16CBF4, 0x16CC70] // Abra -StaticPokemon[]=[0x16CC04, 0x16CC7B] // Clefairy -StaticPokemon[]=[0x16CC14, 0x16CCA7] // Pinsir -StaticPokemon[]=[0x16CC24, 0x16CC86] // Dratini -StaticPokemon[]=[0x16CC34, 0x16CC9C] // Porygon +StaticPokemon{}={Species=[0x16C44E, 0x16C451, 0x16C491, 0x16C4C5], Level=[0x16C453]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EBE8, 0x16EBEF], Level=[0x16EC62]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16EC2E, 0x16EC35], Level=[0x16EC62]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x16381C, 0x163823], Level=[0x16381E]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16387A, 0x163881], Level=[0x16387C]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x1637A8, 0x1637AF, 0x163803], Level=[0x1637AA]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x16319C, 0x1631A3, 0x1631F7, 0x170079, 0x170085], Level=[0x16319E]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163B23, 0x163B2A, 0x163B7E], Level=[0x163B25]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x1624E6, 0x1624FA, 0x162540], Level=[0x1624FC]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x168025, 0x16802C, 0x160C7E, 0x160C84], Level=[0x168027]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x168132, 0x168139], Level=[0x168134]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163C98, 0x163C9E], Level=[0x163CA0]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x1652C2, 0x1652D2, 0x16531C, 0x165327], Level=[0x1652D7]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x165018, 0x165047, 0x165096, 0x1650A1], Level=[0x16504C]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x165166, 0x165171, 0x1651BB, 0x1651C6], Level=[0x165176]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E7C1, 0x16E7C5, 0x16E7D0, 0x16E6C2], Level=[0x16E7D2]} // Old Amber +StaticPokemon{}={Species=[0x16E737, 0x16E73B, 0x16E746, 0x16E646], Level=[0x16E748]} // Helix Fossil +StaticPokemon{}={Species=[0x16E77C, 0x16E780, 0x16E78B, 0x16E684], Level=[0x16E78D]} // Dome Fossil +StaticPokemon{}={Species=[0x161ABA, 0x161ABD, 0x161AFC, 0x161B2F], Level=[0x161ABF]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F79F, 0x16F7A2, 0x16F861], Level=[0x16F7A4]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CBF4, 0x16CC70], Level=[0x16CCB3]} // Abra +StaticPokemon{}={Species=[0x16CC04, 0x16CC7B], Level=[0x16CCC8]} // Clefairy +StaticPokemon{}={Species=[0x16CC14, 0x16CCA7], Level=[0x16CD1C]} // Pinsir +StaticPokemon{}={Species=[0x16CC24, 0x16CC86], Level=[0x16CCDD]} // Dratini +StaticPokemon{}={Species=[0x16CC34, 0x16CC9C], Level=[0x16CD07]} // Porygon [Fire Red (U) 1.1] Game=BPRE @@ -546,31 +547,31 @@ TextSpeedValuesOffset=0x41F498 CatchingTutorialOpponentMonOffset=0x7F8A0 PCPotionOffset=0x402290 StaticPokemonSupport=1 -StaticPokemon[]=[0x16C4EA, 0x16C4ED, 0x16C52D, 0x16C561] -StaticPokemon[]=[0x16EC84, 0x16EC8B] -StaticPokemon[]=[0x16ECCA, 0x16ECD1] -StaticPokemon[]=[0x1638B8, 0x1638BF] -StaticPokemon[]=[0x163916, 0x16391D] -StaticPokemon[]=[0x163844, 0x16384B, 0x16389F] -StaticPokemon[]=[0x163238, 0x16323F, 0x163293] -StaticPokemon[]=[0x163BBF, 0x163BC6, 0x163C1A] -StaticPokemon[]=[0x162582, 0x162596, 0x1625DC] -StaticPokemon[]=[0x1680C1, 0x1680C8] -StaticPokemon[]=[0x1681CE, 0x1681D5] -StaticPokemon[]=[0x163D34, 0x163D3A] -StaticPokemon[]=[0x16535E, 0x16536E, 0x1653B8, 0x1653C3] -StaticPokemon[]=[0x1650B4, 0x1650E3, 0x165132, 0x16513D] -StaticPokemon[]=[0x165202, 0x16520D, 0x165257, 0x165262] -StaticPokemon[]=[0x16E85D, 0x16E861, 0x16E86C, 0x16E75E] -StaticPokemon[]=[0x16E7D3, 0x16E7D7, 0x16E7E2, 0x16E6E2] -StaticPokemon[]=[0x16E818, 0x16E81C, 0x16E827, 0x16E720] -StaticPokemon[]=[0x161B59, 0x161B98, 0x161BCB] -StaticPokemon[]=[0x16F83E, 0x16F8FD] -StaticPokemon[]=[0x16CC90, 0x16CD0C] -StaticPokemon[]=[0x16CCA0, 0x16CD17] -StaticPokemon[]=[0x16CCC0, 0x16CD2D] -StaticPokemon[]=[0x16CCB0, 0x16CD22] -StaticPokemon[]=[0x16CCD0, 0x16CD38] +StaticPokemon{}={Species=[0x16C4EA, 0x16C4ED, 0x16C52D, 0x16C561], Level=[0x16C4EF]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EC84, 0x16EC8B], Level=[0x16ECFE]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16ECCA, 0x16ECD1], Level=[0x16ECFE]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x1638B8, 0x1638BF], Level=[0x1638BA]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163916, 0x16391D], Level=[0x163918]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163844, 0x16384B, 0x16389F], Level=[0x163846]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x163238, 0x16323F, 0x163293, 0x170115, 0x170121], Level=[0x16323A]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163BBF, 0x163BC6, 0x163C1A], Level=[0x163BC1]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x162582, 0x162596, 0x1625DC], Level=[0x162598]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x1680C1, 0x1680C8, 0x160D1A, 0x160D20], Level=[0x1680C3]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x1681CE, 0x1681D5], Level=[0x1681D0]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163D34, 0x163D3A], Level=[0x163D3C]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16535E, 0x16536E, 0x1653B8, 0x1653C3], Level=[0x165373]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x1650B4, 0x1650E3, 0x165132, 0x16513D], Level=[0x1650E8]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x165202, 0x16520D, 0x165257, 0x165262], Level=[0x165212]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E85D, 0x16E861, 0x16E86C, 0x16E75E], Level=[0x16E86E]} // Old Amber +StaticPokemon{}={Species=[0x16E7D3, 0x16E7D7, 0x16E7E2, 0x16E6E2], Level=[0x16E7E4]} // Helix Fossil +StaticPokemon{}={Species=[0x16E818, 0x16E81C, 0x16E827, 0x16E720], Level=[0x16E829]} // Dome Fossil +StaticPokemon{}={Species=[0x161B56, 0x161B59, 0x161B98, 0x161BCB], Level=[0x161B5B]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F83B, 0x16F83E, 0x16F8FD], Level=[0x16F840]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CC90, 0x16CD0C], Level=[0x16CD4F]} // Abra +StaticPokemon{}={Species=[0x16CCA0, 0x16CD17], Level=[0x16CD64]} // Clefairy +StaticPokemon{}={Species=[0x16CCC0, 0x16CD2D], Level=[0x16CD8E]} // Scyther +StaticPokemon{}={Species=[0x16CCB0, 0x16CD22], Level=[0x16CD79]} // Dratini +StaticPokemon{}={Species=[0x16CCD0, 0x16CD38], Level=[0x16CDA3]} // Porygon [Leaf Green (U) 1.1] Game=BPGE @@ -598,31 +599,31 @@ TextSpeedValuesOffset=0x41F2D4 CatchingTutorialOpponentMonOffset=0x7F874 PCPotionOffset=0x4020CC StaticPokemonSupport=1 -StaticPokemon[]=[0x16C4C6, 0x16C4C9, 0x16C509, 0x16C53D] -StaticPokemon[]=[0x16EC60, 0x16EC67] -StaticPokemon[]=[0x16ECA6, 0x16ECAD] -StaticPokemon[]=[0x163894, 0x16389B] -StaticPokemon[]=[0x1638F2, 0x1638F9] -StaticPokemon[]=[0x163820, 0x163827, 0x16387B] -StaticPokemon[]=[0x163214, 0x16321B, 0x16326F] -StaticPokemon[]=[0x163B9B, 0x163BA2, 0x163BF6] -StaticPokemon[]=[0x16255E, 0x162572, 0x1625B8] -StaticPokemon[]=[0x16809D, 0x1680A4] -StaticPokemon[]=[0x1681AA, 0x1681B1] -StaticPokemon[]=[0x163D10, 0x163D16] -StaticPokemon[]=[0x16533A, 0x16534A, 0x165394, 0x16539F] -StaticPokemon[]=[0x165090, 0x1650BF, 0x16510E, 0x165119] -StaticPokemon[]=[0x1651DE, 0x1651E9, 0x165233, 0x16523E] -StaticPokemon[]=[0x16E839, 0x16E83D, 0x16E848, 0x16E73A] -StaticPokemon[]=[0x16E7AF, 0x16E7B3, 0x16E7BE, 0x16E6BE] -StaticPokemon[]=[0x16E7F4, 0x16E7F8, 0x16E803, 0x16E6FC] -StaticPokemon[]=[0x161B35, 0x161B74, 0x161BA7] -StaticPokemon[]=[0x16F81A, 0x16F8D9] -StaticPokemon[]=[0x16CC6C, 0x16CCE8] -StaticPokemon[]=[0x16CC7C, 0x16CCF3] -StaticPokemon[]=[0x16CC8C, 0x16CD1F] -StaticPokemon[]=[0x16CC9C, 0x16CCFE] -StaticPokemon[]=[0x16CCAC, 0x16CD14] +StaticPokemon{}={Species=[0x16C4C6, 0x16C4C9, 0x16C509, 0x16C53D], Level=[0x16C4CB]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EC60, 0x16EC67], Level=[0x16ECDA]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16ECA6, 0x16ECAD], Level=[0x16ECDA]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x163894, 0x16389B], Level=[0x163896]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x1638F2, 0x1638F9], Level=[0x1638F4]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163820, 0x163827, 0x16387B], Level=[0x163822]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x163214, 0x16321B, 0x16326F, 0x1700F1, 0x1700FD], Level=[0x163216]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163B9B, 0x163BA2, 0x163BF6], Level=[0x163B9D]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x16255E, 0x162572, 0x1625B8], Level=[0x162574]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x16809D, 0x1680A4, 0x160CF6, 0x160CFC], Level=[0x16809F]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x1681AA, 0x1681B1], Level=[0x1681AC]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163D10, 0x163D16], Level=[0x163D18]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16533A, 0x16534A, 0x165394, 0x16539F], Level=[0x16534F]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x165090, 0x1650BF, 0x16510E, 0x165119], Level=[0x1650C4]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x1651DE, 0x1651E9, 0x165233, 0x16523E], Level=[0x1651EE]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E839, 0x16E83D, 0x16E848, 0x16E73A], Level=[0x16E84A]} // Old Amber +StaticPokemon{}={Species=[0x16E7AF, 0x16E7B3, 0x16E7BE, 0x16E6BE], Level=[0x16E7C0]} // Helix Fossil +StaticPokemon{}={Species=[0x16E7F4, 0x16E7F8, 0x16E803, 0x16E6FC], Level=[0x16E805]} // Dome Fossil +StaticPokemon{}={Species=[0x161B32, 0x161B35, 0x161B74, 0x161BA7], Level=[0x161B37]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F817, 0x16F81A, 0x16F8D9], Level=[0x16F81C]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CC6C, 0x16CCE8], Level=[0x16CD2B]} // Abra +StaticPokemon{}={Species=[0x16CC7C, 0x16CCF3], Level=[0x16CD40]} // Clefairy +StaticPokemon{}={Species=[0x16CC8C, 0x16CD1F], Level=[0x16CD94]} // Pinsir +StaticPokemon{}={Species=[0x16CC9C, 0x16CCFE], Level=[0x16CD55]} // Dratini +StaticPokemon{}={Species=[0x16CCAC, 0x16CD14], Level=[0x16CD7F]} // Porygon [Ruby (F)] Game=AXVF @@ -655,24 +656,24 @@ CatchingTutorialOpponentMonOffset=0x8201C CatchingTutorialPlayerMonOffset=0x10FB2A PCPotionOffset=0x40DC10 StaticPokemonSupport=1 -StaticPokemon[]=[0x157B23, 0x157B51] -StaticPokemon[]=[0x157B76, 0x157BA4] -StaticPokemon[]=[0x1A58A8, 0x15E2E6, 0x15E2ED] -StaticPokemon[]=[0x15D049, 0x15D052] -StaticPokemon[]=[0x15F461, 0x15F46A] -StaticPokemon[]=[0x15F514, 0x15F51D] -StaticPokemon[]=[0x16108E, 0x1610B4] -StaticPokemon[]=[0x15F7D9, 0x15F7E0] -StaticPokemon[]=[0x1A59E7, 0x1A59F0] -StaticPokemon[]=[0x151DA8, 0x151DB1] -StaticPokemon[]=[0x15EDC3, 0x15EDCA] -StaticPokemon[]=[0x15EDE1, 0x15EDE8] -StaticPokemon[]=[0x15EDFF, 0x15EE06] -StaticPokemon[]=[0x1A5905, 0x1A590C] -StaticPokemon[]=[0x1A5923, 0x1A592A] -StaticPokemon[]=[0x14EC5A] -StaticPokemon[]=[0x15AF6F, 0x15AF7F] -StaticPokemon[]=[0x164259] +StaticPokemon{}={Species=[0x157B23, 0x157B51], Level=[0x157B53]} // Lileep +StaticPokemon{}={Species=[0x157B76, 0x157BA4], Level=[0x157BA6]} // Anorith +StaticPokemon{}={Species=[0x1A58A8, 0x15E2E6, 0x15E2ED], Level=[0x15E2E8]} // Groudon +StaticPokemon{}={Species=[0x15D049, 0x15D052], Level=[0x15D054]} // Regirock +StaticPokemon{}={Species=[0x15F461, 0x15F46A], Level=[0x15F46C]} // Regice +StaticPokemon{}={Species=[0x15F514, 0x15F51D], Level=[0x15F51F]} // Registeel +StaticPokemon{}={Species=[0x16108E, 0x1610B4], Level=[0x1610B6]} // Latias (Southern Island) +StaticPokemon{}={Species=[0x15F7D9, 0x15F7E0], Level=[0x15F7DB]} // Rayquaza +StaticPokemon{}={Species=[0x1A59E7, 0x1A59F0], Level=[0x1A59F2]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151DA8, 0x151DB1], Level=[0x151DB3]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15EDC3, 0x15EDCA], Level=[0x15EDC5]} // Voltorb 1 +StaticPokemon{}={Species=[0x15EDE1, 0x15EDE8], Level=[0x15EDE3]} // Voltorb 2 +StaticPokemon{}={Species=[0x15EDFF, 0x15EE06], Level=[0x15EE01]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A5905, 0x1A590C], Level=[0x1A5907]} // Electrode 1 +StaticPokemon{}={Species=[0x1A5923, 0x1A592A], Level=[0x1A5925]} // Electrode 2 +StaticPokemon{}={Species=[0x14EC5A]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AF6F, 0x15AF7F], Level=[0x15AF71]} // Beldum +StaticPokemon{}={Species=[0x164259], Level=[0x16425B]} // Castform [Ruby (F) 1.1] Game=AXVF @@ -705,24 +706,24 @@ TradeTableOffset=0x21DEA0 RunIndoorsTweakOffset=0xE6220 PCPotionOffset=0x40D740 StaticPokemonSupport=1 -StaticPokemon[]=[0x157AB3, 0x157AE1] -StaticPokemon[]=[0x157B06, 0x157B34] -StaticPokemon[]=[0x1A5838, 0x15E276, 0x15E27D] -StaticPokemon[]=[0x15CFD9, 0x15CFE2] -StaticPokemon[]=[0x15F3F1, 0x15F3FA] -StaticPokemon[]=[0x15F4A4, 0x15F4AD] -StaticPokemon[]=[0x16101E, 0x161044] -StaticPokemon[]=[0x15F769, 0x15F770] -StaticPokemon[]=[0x1A5977, 0x1A5980] -StaticPokemon[]=[0x151D3C, 0x151D45] -StaticPokemon[]=[0x15ED53, 0x15ED5A] -StaticPokemon[]=[0x15ED71, 0x15ED78] -StaticPokemon[]=[0x15ED8F, 0x15ED96] -StaticPokemon[]=[0x1A5895, 0x1A589C] -StaticPokemon[]=[0x1A58B3, 0x1A58BA] -StaticPokemon[]=[0x14EBEE] -StaticPokemon[]=[0x15AEFF, 0x15AF0F] -StaticPokemon[]=[0x1641E9] +StaticPokemon{}={Species=[0x157AB3, 0x157AE1], Level=[0x157AE3]} // Lileep +StaticPokemon{}={Species=[0x157B06, 0x157B34], Level=[0x157B36]} // Anorith +StaticPokemon{}={Species=[0x1A5838, 0x15E276, 0x15E27D], Level=[0x15E278]} // Kyogre +StaticPokemon{}={Species=[0x15CFD9, 0x15CFE2], Level=[0x15CFE4]} // Regirock +StaticPokemon{}={Species=[0x15F3F1, 0x15F3FA], Level=[0x15F3FC]} // Regice +StaticPokemon{}={Species=[0x15F4A4, 0x15F4AD], Level=[0x15F4AF]} // Registeel +StaticPokemon{}={Species=[0x16101E, 0x161044], Level=[0x161046]} // Latios (Southern Island) +StaticPokemon{}={Species=[0x15F769, 0x15F770], Level=[0x15F76B]} // Rayquaza +StaticPokemon{}={Species=[0x1A5977, 0x1A5980], Level=[0x1A5982]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151D3C, 0x151D45], Level=[0x151D47]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15ED53, 0x15ED5A], Level=[0x15ED55]} // Voltorb 1 +StaticPokemon{}={Species=[0x15ED71, 0x15ED78], Level=[0x15ED73]} // Voltorb 2 +StaticPokemon{}={Species=[0x15ED8F, 0x15ED96], Level=[0x15ED91]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A5895, 0x1A589C], Level=[0x1A5897]} // Electrode 1 +StaticPokemon{}={Species=[0x1A58B3, 0x1A58BA], Level=[0x1A58B5]} // Electrode 2 +StaticPokemon{}={Species=[0x14EBEE]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AEFF, 0x15AF0F], Level=[0x15AF01]} // Beldum +StaticPokemon{}={Species=[0x1641E9], Level=[0x1641EB]} // Castform [Sapphire (F) 1.1] Game=AXPF @@ -758,31 +759,31 @@ CatchingTutorialOpponentMonOffset=0xB0884 CatchingTutorialPlayerMonOffset=0x1390B6 PCPotionOffset=0x5E43FC StaticPokemonSupport=1 -StaticPokemon[]=[0x2142C0, 0x2142E5, 0x2142E8, 0x21436A, 0x214378] -StaticPokemon[]=[0x2142D2, 0x214388, 0x21438B, 0x21440D, 0x21441B] -StaticPokemon[]=[0x23FEE1, 0x23FEEF, 0x23FF44] -StaticPokemon[]=[0x23FFB2, 0x23FFC0, 0x240015] -StaticPokemon[]=[0x231B1F, 0x231B28, 0x231B6E] -StaticPokemon[]=[0x23DC62, 0x23DC6B, 0x23DCB1] -StaticPokemon[]=[0x23DD64, 0x23DD6D, 0x23DDB3] -StaticPokemon[]=[0x23E449, 0x23E452, 0x23E498] -StaticPokemon[]=[0x277645, 0x27764E] -StaticPokemon[]=[0x1F68F4, 0x1F68FD] -StaticPokemon[]=[0x23C389, 0x23C390] -StaticPokemon[]=[0x23C3D6, 0x23C3DD] -StaticPokemon[]=[0x23C423, 0x23C42A] -StaticPokemon[]=[0x23827E, 0x238285] -StaticPokemon[]=[0x2382CB, 0x2382D2] -StaticPokemon[]=[0x247FC7, 0x247FD5] -StaticPokemon[]=[0x247E53] -StaticPokemon[]=[0x247E66] -StaticPokemon[]=[0x26CE61, 0x26CE71, 0x26CEBB, 0x26CEC6] -StaticPokemon[]=[0x26CC78, 0x26CCB2, 0x26CD07, 0x26CD12] -StaticPokemon[]=[0x26E00D, 0x26E03C, 0x26E08B, 0x26E096] -StaticPokemon[]=[0x26E155, 0x26E160, 0x26E1AA, 0x26E1B5] -StaticPokemon[]=[0x1EB1A5] -StaticPokemon[]=[0x22607E, 0x226081, 0x226103, 0x226114] -StaticPokemon[]=[0x275296, 0x275299] +StaticPokemon{}={Species=[0x2142C0, 0x2142E5, 0x2142E8, 0x21436A, 0x214378], Level=[0x2142EA]} // Lileep +StaticPokemon{}={Species=[0x2142D2, 0x214388, 0x21438B, 0x21440D, 0x21441B], Level=[0x21438D]} // Anorith +StaticPokemon{}={Species=[0x23FEE1, 0x23FEEF, 0x23FF44, 0x1E5FD2, 0x1E6052, 0x1E610E, 0x1E618E], Level=[0x23FEF1]} // Kyogre +StaticPokemon{}={Species=[0x23FFB2, 0x23FFC0, 0x240015, 0x1E6012, 0x1E614E], Level=[0x23FFC2]} // Groudon +StaticPokemon{}={Species=[0x231B1F, 0x231B28, 0x231B6E], Level=[0x231B2A]} // Regirock +StaticPokemon{}={Species=[0x23DC62, 0x23DC6B, 0x23DCB1], Level=[0x23DC6D]} // Regice +StaticPokemon{}={Species=[0x23DD64, 0x23DD6D, 0x23DDB3], Level=[0x23DD6F]} // Registeel +StaticPokemon{}={Species=[0x23E449, 0x23E452, 0x23E498, 0x23E4E7, 0x23E505, 0x1E62B0, 0x1E62CE, 0x1E6364, 0x1E6382], Level=[0x23E454]} // Rayquaza +StaticPokemon{}={Species=[0x277645, 0x27764E], Level=[0x277650]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x1F68F4, 0x1F68FD], Level=[0x1F68FF]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x23C389, 0x23C390], Level=[0x23C38B]} // Voltorb 1 +StaticPokemon{}={Species=[0x23C3D6, 0x23C3DD], Level=[0x23C3D8]} // Voltorb 2 +StaticPokemon{}={Species=[0x23C423, 0x23C42A], Level=[0x23C425]} // Voltorb 3 +StaticPokemon{}={Species=[0x23827E, 0x238285], Level=[0x238280]} // Electrode 1 +StaticPokemon{}={Species=[0x2382CB, 0x2382D2], Level=[0x2382CD]} // Electrode 2 +StaticPokemon{}={Species=[0x247FC7, 0x247FD5], Level=[0x247FD7]} // Sudowoodo in Battle Frontier +StaticPokemon{}={Species=[0x247D3E, 0x247E53], Level=[0x247E58]} // Latios on Southern Island +StaticPokemon{}={Species=[0x247D49, 0x247E66], Level=[0x247E6B]} // Latias on Southern Island +StaticPokemon{}={Species=[0x26CE61, 0x26CE71, 0x26CEBB, 0x26CEC6], Level=[0x26CE76]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x26CC78, 0x26CCB2, 0x26CD07, 0x26CD12], Level=[0x26CCB7]} // Mew on Faraway Island +StaticPokemon{}={Species=[0x26E00D, 0x26E03C, 0x26E08B, 0x26E096], Level=[0x26E041]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x26E155, 0x26E160, 0x26E1AA, 0x26E1B5], Level=[0x26E165]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x1EB1A5]} // Wynaut Egg +StaticPokemon{}={Species=[0x22607E, 0x226081, 0x226103, 0x226114], Level=[0x226083]} // Beldum +StaticPokemon{}={Species=[0x275296, 0x275299, 0x275325], Level=[0x27529B]} // Castform [Ruby (G)] Game=AXVD @@ -815,24 +816,24 @@ CatchingTutorialOpponentMonOffset=0x81F34 CatchingTutorialPlayerMonOffset=0x10FA22 PCPotionOffset=0x412770 StaticPokemonSupport=1 -StaticPokemon[]=[0x157A3B, 0x157A69] -StaticPokemon[]=[0x157A8E, 0x157ABC] -StaticPokemon[]=[0x1A8695, 0x15E1FE, 0x15E205] -StaticPokemon[]=[0x15CF61, 0x15CF6A] -StaticPokemon[]=[0x15F379, 0x15F382] -StaticPokemon[]=[0x15F42C, 0x15F435] -StaticPokemon[]=[0x160FA6, 0x160FCC] -StaticPokemon[]=[0x15F6F1, 0x15F6F8] -StaticPokemon[]=[0x1A87D4, 0x1A87DD] -StaticPokemon[]=[0x151CC0, 0x151CC9] -StaticPokemon[]=[0x15ECDB, 0x15ECE2] -StaticPokemon[]=[0x15ECF9, 0x15ED00] -StaticPokemon[]=[0x15ED17, 0x15ED1E] -StaticPokemon[]=[0x1A86F2, 0x1A86F9] -StaticPokemon[]=[0x1A8710, 0x1A8717] -StaticPokemon[]=[0x14EB72] -StaticPokemon[]=[0x15AE87, 0x15AE97] -StaticPokemon[]=[0x164171] +StaticPokemon{}={Species=[0x157A3B, 0x157A69], Level=[0x157A6B]} // Lileep +StaticPokemon{}={Species=[0x157A8E, 0x157ABC], Level=[0x157ABE]} // Anorith +StaticPokemon{}={Species=[0x1A8695, 0x15E1FE, 0x15E205], Level=[0x15E200]} // Groudon +StaticPokemon{}={Species=[0x15CF61, 0x15CF6A], Level=[0x15CF6C]} // Regirock +StaticPokemon{}={Species=[0x15F379, 0x15F382], Level=[0x15F384]} // Regice +StaticPokemon{}={Species=[0x15F42C, 0x15F435], Level=[0x15F437]} // Registeel +StaticPokemon{}={Species=[0x160FA6, 0x160FCC], Level=[0x160FCE]} // Latias (Southern Island) +StaticPokemon{}={Species=[0x15F6F1, 0x15F6F8], Level=[0x15F6F3]} // Rayquaza +StaticPokemon{}={Species=[0x1A87D4, 0x1A87DD], Level=[0x1A87DF]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151CC0, 0x151CC9], Level=[0x151CCB]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15ECDB, 0x15ECE2], Level=[0x15ECDD]} // Voltorb 1 +StaticPokemon{}={Species=[0x15ECF9, 0x15ED00], Level=[0x15ECFB]} // Voltorb 2 +StaticPokemon{}={Species=[0x15ED17, 0x15ED1E], Level=[0x15ED19]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A86F2, 0x1A86F9], Level=[0x1A86F4]} // Electrode 1 +StaticPokemon{}={Species=[0x1A8710, 0x1A8717], Level=[0x1A8712]} // Electrode 2 +StaticPokemon{}={Species=[0x14EB72]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AE87, 0x15AE97], Level=[0x15AE89]} // Beldum +StaticPokemon{}={Species=[0x164171], Level=[0x164173]} // Castform [Ruby (G) 1.1] Game=AXVD @@ -865,24 +866,24 @@ TradeTableOffset=0x222A28 RunIndoorsTweakOffset=0xE613C PCPotionOffset=0x4126DC StaticPokemonSupport=1 -StaticPokemon[]=[0x1579CF, 0x1579FD] -StaticPokemon[]=[0x157A22, 0x157A50] -StaticPokemon[]=[0x1A8629, 0x15E192, 0x15E199] -StaticPokemon[]=[0x15CEF5, 0x15CEFE] -StaticPokemon[]=[0x15F30D, 0x15F316] -StaticPokemon[]=[0x15F3C0, 0x15F3C9] -StaticPokemon[]=[0x160F3A, 0x160F60] -StaticPokemon[]=[0x15F685, 0x15F68C] -StaticPokemon[]=[0x1A8768, 0x1A8771] -StaticPokemon[]=[0x151C58, 0x151C61] -StaticPokemon[]=[0x15EC6F, 0x15EC76] -StaticPokemon[]=[0x15EC8D, 0x15EC94] -StaticPokemon[]=[0x15ECAB, 0x15ECB2] -StaticPokemon[]=[0x1A8686, 0x1A868D] -StaticPokemon[]=[0x1A86A4, 0x1A86AB] -StaticPokemon[]=[0x14EB0A] -StaticPokemon[]=[0x15AE1B, 0x15AE2B] -StaticPokemon[]=[0x164105] +StaticPokemon{}={Species=[0x1579CF, 0x1579FD], Level=[0x1579FF]} // Lileep +StaticPokemon{}={Species=[0x157A22, 0x157A50], Level=[0x157A52]} // Anorith +StaticPokemon{}={Species=[0x1A8629, 0x15E192, 0x15E199], Level=[0x15E194]} // Kyogre +StaticPokemon{}={Species=[0x15CEF5, 0x15CEFE], Level=[0x15CF00]} // Regirock +StaticPokemon{}={Species=[0x15F30D, 0x15F316], Level=[0x15F318]} // Regice +StaticPokemon{}={Species=[0x15F3C0, 0x15F3C9], Level=[0x15F3CB]} // Registeel +StaticPokemon{}={Species=[0x160F3A, 0x160F60], Level=[0x160F62]} // Latios (Southern Island) +StaticPokemon{}={Species=[0x15F685, 0x15F68C], Level=[0x15F687]} // Rayquaza +StaticPokemon{}={Species=[0x1A8768, 0x1A8771], Level=[0x1A8773]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151C58, 0x151C61], Level=[0x151C63]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15EC6F, 0x15EC76], Level=[0x15EC71]} // Voltorb 1 +StaticPokemon{}={Species=[0x15EC8D, 0x15EC94], Level=[0x15EC8F]} // Voltorb 2 +StaticPokemon{}={Species=[0x15ECAB, 0x15ECB2], Level=[0x15ECAD]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A8686, 0x1A868D], Level=[0x1A8688]} // Electrode 1 +StaticPokemon{}={Species=[0x1A86A4, 0x1A86AB], Level=[0x1A86A6]} // Electrode 2 +StaticPokemon{}={Species=[0x14EB0A]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AE1B, 0x15AE2B], Level=[0x15AE1D]} // Beldum +StaticPokemon{}={Species=[0x164105], Level=[0x164107]} // Castform [Sapphire (G) 1.1] Game=AXPD @@ -918,31 +919,31 @@ CatchingTutorialOpponentMonOffset=0xB088C CatchingTutorialPlayerMonOffset=0x139096 PCPotionOffset=0x5F12C8 StaticPokemonSupport=1 -StaticPokemon[]=[0x215CD3, 0x215CF8, 0x215CFB, 0x215D7D, 0x215D8B] -StaticPokemon[]=[0x215CE5, 0x215D9B, 0x215D9E, 0x215E20, 0x215E2E] -StaticPokemon[]=[0x24354E, 0x24355C, 0x2435B1] -StaticPokemon[]=[0x24361F, 0x24362D, 0x243682] -StaticPokemon[]=[0x234815, 0x23481E, 0x234864] -StaticPokemon[]=[0x2411BD, 0x2411C6, 0x24120C] -StaticPokemon[]=[0x2412BF, 0x2412C8, 0x24130E] -StaticPokemon[]=[0x2419BC, 0x2419C5, 0x241A0B] -StaticPokemon[]=[0x27DA85, 0x27DA8E] -StaticPokemon[]=[0x1F7227, 0x1F7230] -StaticPokemon[]=[0x23F82B, 0x23F832] -StaticPokemon[]=[0x23F878, 0x23F87F] -StaticPokemon[]=[0x23F8C5, 0x23F8CC] -StaticPokemon[]=[0x23B4C0, 0x23B4C7] -StaticPokemon[]=[0x23B50D, 0x23B514] -StaticPokemon[]=[0x24B918, 0x24B926] -StaticPokemon[]=[0x24B7A4] -StaticPokemon[]=[0x24B7B7] -StaticPokemon[]=[0x272CA4, 0x272CB4, 0x272CFE, 0x272D09] -StaticPokemon[]=[0x272AB8, 0x272AF2, 0x272B47, 0x272B52] -StaticPokemon[]=[0x273F63, 0x273F92, 0x273FE1, 0x273FEC] -StaticPokemon[]=[0x2740AB, 0x2740B6, 0x274100, 0x27410B] -StaticPokemon[]=[0x1EB5E8] -StaticPokemon[]=[0x228813, 0x228816, 0x228898, 0x2288A9] -StaticPokemon[]=[0x27B588, 0x27B58B] +StaticPokemon{}={Species=[0x215CD3, 0x215CF8, 0x215CFB, 0x215D7D, 0x215D8B], Level=[0x215CFD]} // Lileep +StaticPokemon{}={Species=[0x215CE5, 0x215D9B, 0x215D9E, 0x215E20, 0x215E2E], Level=[0x215DA0]} // Anorith +StaticPokemon{}={Species=[0x24354E, 0x24355C, 0x2435B1, 0x1E6397, 0x1E6417, 0x1E64D3, 0x1E6553], Level=[0x24355E]} // Kyogre +StaticPokemon{}={Species=[0x24361F, 0x24362D, 0x243682, 0x1E63D7, 0x1E6513], Level=[0x24362F]} // Groudon +StaticPokemon{}={Species=[0x234815, 0x23481E, 0x234864], Level=[0x234820]} // Regirock +StaticPokemon{}={Species=[0x2411BD, 0x2411C6, 0x24120C], Level=[0x2411C8]} // Regice +StaticPokemon{}={Species=[0x2412BF, 0x2412C8, 0x24130E], Level=[0x2412CA]} // Registeel +StaticPokemon{}={Species=[0x2419BC, 0x2419C5, 0x241A0B, 0x241A5A, 0x241A78, 0x1E6675, 0x1E6693, 0x1E6729, 0x1E6747], Level=[0x2419C7]} // Rayquaza +StaticPokemon{}={Species=[0x27DA85, 0x27DA8E], Level=[0x27DA90]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x1F7227, 0x1F7230], Level=[0x1F7232]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x23F82B, 0x23F832], Level=[0x23F82D]} // Voltorb 1 +StaticPokemon{}={Species=[0x23F878, 0x23F87F], Level=[0x23F87A]} // Voltorb 2 +StaticPokemon{}={Species=[0x23F8C5, 0x23F8CC], Level=[0x23F8C7]} // Voltorb 3 +StaticPokemon{}={Species=[0x23B4C0, 0x23B4C7], Level=[0x23B4C2]} // Electrode 1 +StaticPokemon{}={Species=[0x23B50D, 0x23B514], Level=[0x23B50F]} // Electrode 2 +StaticPokemon{}={Species=[0x24B918, 0x24B926], Level=[0x24B928]} // Sudowoodo in Battle Frontier +StaticPokemon{}={Species=[0x24B68F, 0x24B7A4], Level=[0x24B7A9]} // Latios on Southern Island +StaticPokemon{}={Species=[0x24B69A, 0x24B7B7], Level=[0x24B7BC]} // Latias on Southern Island +StaticPokemon{}={Species=[0x272CA4, 0x272CB4, 0x272CFE, 0x272D09], Level=[0x272CB9]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x272AB8, 0x272AF2, 0x272B47, 0x272B52], Level=[0x272AF7]} // Mew on Faraway Island +StaticPokemon{}={Species=[0x273F63, 0x273F92, 0x273FE1, 0x273FEC], Level=[0x273F97]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x2740AB, 0x2740B6, 0x274100, 0x27410B], Level=[0x2740BB]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x1EB5E8]} // Wynaut Egg +StaticPokemon{}={Species=[0x228813, 0x228816, 0x228898, 0x2288A9], Level=[0x228818]} // Beldum +StaticPokemon{}={Species=[0x27B588, 0x27B58B, 0x27B617], Level=[0x27B58D]} // Castform [Ruby (S)] Game=AXVS @@ -975,24 +976,24 @@ CatchingTutorialOpponentMonOffset=0x81FBC CatchingTutorialPlayerMonOffset=0x10FB26 PCPotionOffset=0x409FE0 StaticPokemonSupport=1 -StaticPokemon[]=[0x157B5F, 0x157B8D] -StaticPokemon[]=[0x157BB2, 0x157BE0] -StaticPokemon[]=[0x1A376D, 0x15E322, 0x15E329] -StaticPokemon[]=[0x15D085, 0x15D08E] -StaticPokemon[]=[0x15F49D, 0x15F4A6] -StaticPokemon[]=[0x15F550, 0x15F559] -StaticPokemon[]=[0x1610CA, 0x1610F0] -StaticPokemon[]=[0x15F815, 0x15F81C] -StaticPokemon[]=[0x1A38AC, 0x1A38B5] -StaticPokemon[]=[0x151DE4, 0x151DED] -StaticPokemon[]=[0x15EDFF, 0x15EE06] -StaticPokemon[]=[0x15EE1D, 0x15EE24] -StaticPokemon[]=[0x15EE3B, 0x15EE42] -StaticPokemon[]=[0x1A37CA, 0x1A37D1] -StaticPokemon[]=[0x1A37E8, 0x1A37EF] -StaticPokemon[]=[0x14EC96] -StaticPokemon[]=[0x15AFAB, 0x15AFBB] -StaticPokemon[]=[0x164295] +StaticPokemon{}={Species=[0x157B5F, 0x157B8D], Level=[0x157B8F]} // Lileep +StaticPokemon{}={Species=[0x157BB2, 0x157BE0], Level=[0x157BE2]} // Anorith +StaticPokemon{}={Species=[0x1A376D, 0x15E322, 0x15E329], Level=[0x15E324]} // Groudon +StaticPokemon{}={Species=[0x15D085, 0x15D08E], Level=[0x15D090]} // Regirock +StaticPokemon{}={Species=[0x15F49D, 0x15F4A6], Level=[0x15F4A8]} // Regice +StaticPokemon{}={Species=[0x15F550, 0x15F559], Level=[0x15F55B]} // Registeel +StaticPokemon{}={Species=[0x1610CA, 0x1610F0], Level=[0x1610F2]} // Latias (Southern Island) +StaticPokemon{}={Species=[0x15F815, 0x15F81C], Level=[0x15F817]} // Rayquaza +StaticPokemon{}={Species=[0x1A38AC, 0x1A38B5], Level=[0x1A38B7]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151DE4, 0x151DED], Level=[0x151DEF]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15EDFF, 0x15EE06], Level=[0x15EE01]} // Voltorb 1 +StaticPokemon{}={Species=[0x15EE1D, 0x15EE24], Level=[0x15EE1F]} // Voltorb 2 +StaticPokemon{}={Species=[0x15EE3B, 0x15EE42], Level=[0x15EE3D]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A37CA, 0x1A37D1], Level=[0x1A37CC]} // Electrode 1 +StaticPokemon{}={Species=[0x1A37E8, 0x1A37EF], Level=[0x1A37EA]} // Electrode 2 +StaticPokemon{}={Species=[0x14EC96]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AFAB, 0x15AFBB], Level=[0x15AFAD]} // Beldum +StaticPokemon{}={Species=[0x164295], Level=[0x164297]} // Castform [Ruby (S) 1.1] Game=AXVS @@ -1025,24 +1026,24 @@ TradeTableOffset=0x21A7D0 RunIndoorsTweakOffset=0xE620C PCPotionOffset=0x409D1C StaticPokemonSupport=1 -StaticPokemon[]=[0x157AEF, 0x157B1D] -StaticPokemon[]=[0x157B42, 0x157B70] -StaticPokemon[]=[0x1A36FD, 0x15E2B2, 0x15E2B9] -StaticPokemon[]=[0x15D015, 0x15D01E] -StaticPokemon[]=[0x15F42D, 0x15F436] -StaticPokemon[]=[0x15F4E0, 0x15F4E9] -StaticPokemon[]=[0x16105A, 0x161080] -StaticPokemon[]=[0x15F7A5, 0x15F7AC] -StaticPokemon[]=[0x1A383C, 0x1A3845] -StaticPokemon[]=[0x151D78, 0x151D81] -StaticPokemon[]=[0x15ED8F, 0x15ED96] -StaticPokemon[]=[0x15EDAD, 0x15EDB4] -StaticPokemon[]=[0x15EDCB, 0x15EDD2] -StaticPokemon[]=[0x1A375A, 0x1A3761] -StaticPokemon[]=[0x1A3778, 0x1A377F] -StaticPokemon[]=[0x14EC2A] -StaticPokemon[]=[0x15AF3B, 0x15AF4B] -StaticPokemon[]=[0x164225] +StaticPokemon{}={Species=[0x157AEF, 0x157B1D], Level=[0x157B1F]} // Lileep +StaticPokemon{}={Species=[0x157B42, 0x157B70], Level=[0x157B72]} // Anorith +StaticPokemon{}={Species=[0x1A36FD, 0x15E2B2, 0x15E2B9], Level=[0x15E2B4]} // Kyogre +StaticPokemon{}={Species=[0x15D015, 0x15D01E], Level=[0x15D020]} // Regirock +StaticPokemon{}={Species=[0x15F42D, 0x15F436], Level=[0x15F438]} // Regice +StaticPokemon{}={Species=[0x15F4E0, 0x15F4E9], Level=[0x15F4EB]} // Registeel +StaticPokemon{}={Species=[0x16105A, 0x161080], Level=[0x161082]} // Latios (Southern Island) +StaticPokemon{}={Species=[0x15F7A5, 0x15F7AC], Level=[0x15F7A7]} // Rayquaza +StaticPokemon{}={Species=[0x1A383C, 0x1A3845], Level=[0x1A3847]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151D78, 0x151D81], Level=[0x151D83]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15ED8F, 0x15ED96], Level=[0x15ED91]} // Voltorb 1 +StaticPokemon{}={Species=[0x15EDAD, 0x15EDB4], Level=[0x15EDAF]} // Voltorb 2 +StaticPokemon{}={Species=[0x15EDCB, 0x15EDD2], Level=[0x15EDCD]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A375A, 0x1A3761], Level=[0x1A375C]} // Electrode 1 +StaticPokemon{}={Species=[0x1A3778, 0x1A377F], Level=[0x1A377A]} // Electrode 2 +StaticPokemon{}={Species=[0x14EC2A]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AF3B, 0x15AF4B], Level=[0x15AF3D]} // Beldum +StaticPokemon{}={Species=[0x164225], Level=[0x164227]} // Castform [Sapphire (S) 1.1] Game=AXPS @@ -1078,31 +1079,31 @@ CatchingTutorialOpponentMonOffset=0xB0884 CatchingTutorialPlayerMonOffset=0x13908A PCPotionOffset=0x5E2CD4 StaticPokemonSupport=1 -StaticPokemon[]=[0x21307F, 0x2130A4, 0x2130A7, 0x213129, 0x213137] -StaticPokemon[]=[0x213091, 0x213147, 0x21314A, 0x2131CC, 0x2131DA] -StaticPokemon[]=[0x23DCC5, 0x23DCD3, 0x23DD28] -StaticPokemon[]=[0x23DD96, 0x23DDA4, 0x23DDF9] -StaticPokemon[]=[0x22FD3F, 0x22FD48, 0x22FD8E] -StaticPokemon[]=[0x23BB32, 0x23BB3B, 0x23BB81] -StaticPokemon[]=[0x23BC34, 0x23BC3D, 0x23BC83] -StaticPokemon[]=[0x23C305, 0x23C30E, 0x23C354] -StaticPokemon[]=[0x276188, 0x276191] -StaticPokemon[]=[0x1F5CDA, 0x1F5CE3] -StaticPokemon[]=[0x23A38F, 0x23A396] -StaticPokemon[]=[0x23A3DC, 0x23A3E3] -StaticPokemon[]=[0x23A429, 0x23A430] -StaticPokemon[]=[0x236418, 0x23641F] -StaticPokemon[]=[0x236465, 0x23646C] -StaticPokemon[]=[0x245C8C, 0x245C9A] -StaticPokemon[]=[0x245B18] -StaticPokemon[]=[0x245B2B] -StaticPokemon[]=[0x26B948, 0x26B958, 0x26B9A2, 0x26B9AD] -StaticPokemon[]=[0x26B75A, 0x26B794, 0x26B7E9, 0x26B7F4] -StaticPokemon[]=[0x26CBEA, 0x26CC19, 0x26CC68, 0x26CC73] -StaticPokemon[]=[0x26CD32, 0x26CD3D, 0x26CD87, 0x26CD92] -StaticPokemon[]=[0x1EA97A] -StaticPokemon[]=[0x22477B, 0x22477E, 0x224800, 0x224811] -StaticPokemon[]=[0x273D60, 0x273D63] +StaticPokemon{}={Species=[0x21307F, 0x2130A4, 0x2130A7, 0x213129, 0x213137], Level=[0x2130A9]} // Lileep +StaticPokemon{}={Species=[0x213091, 0x213147, 0x21314A, 0x2131CC, 0x2131DA], Level=[0x21314C]} // Anorith +StaticPokemon{}={Species=[0x23DCC5, 0x23DCD3, 0x23DD28, 0x1E5B08, 0x1E5B88, 0x1E5C44, 0x1E5CC4], Level=[0x23DCD5]} // Kyogre +StaticPokemon{}={Species=[0x23DD96, 0x23DDA4, 0x23DDF9, 0x1E5B48, 0x1E5C84], Level=[0x23DDA6]} // Groudon +StaticPokemon{}={Species=[0x22FD3F, 0x22FD48, 0x22FD8E], Level=[0x22FD4A]} // Regirock +StaticPokemon{}={Species=[0x23BB32, 0x23BB3B, 0x23BB81], Level=[0x23BB3D]} // Regice +StaticPokemon{}={Species=[0x23BC34, 0x23BC3D, 0x23BC83], Level=[0x23BC3F]} // Registeel +StaticPokemon{}={Species=[0x23C305, 0x23C30E, 0x23C354, 0x23C3A3, 0x23C3C1, 0x1E5DE6, 0x1E5E04, 0x1E5E9A, 0x1E5EB8], Level=[0x23C310]} // Rayquaza +StaticPokemon{}={Species=[0x276188, 0x276191], Level=[0x276193]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x1F5CDA, 0x1F5CE3], Level=[0x1F5CE5]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x23A38F, 0x23A396], Level=[0x23A391]} // Voltorb 1 +StaticPokemon{}={Species=[0x23A3DC, 0x23A3E3], Level=[0x23A3DE]} // Voltorb 2 +StaticPokemon{}={Species=[0x23A429, 0x23A430], Level=[0x23A42B]} // Voltorb 3 +StaticPokemon{}={Species=[0x236418, 0x23641F], Level=[0x23641A]} // Electrode 1 +StaticPokemon{}={Species=[0x236465, 0x23646C], Level=[0x236467]} // Electrode 2 +StaticPokemon{}={Species=[0x245C8C, 0x245C9A], Level=[0x245C9C]} // Sudowoodo in Battle Frontier +StaticPokemon{}={Species=[0x245A03, 0x245B18], Level=[0x245B1D]} // Latios on Southern Island +StaticPokemon{}={Species=[0x245A0E, 0x245B2B], Level=[0x245B30]} // Latias on Southern Island +StaticPokemon{}={Species=[0x26B948, 0x26B958, 0x26B9A2, 0x26B9AD], Level=[0x26B95D]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x26B75A, 0x26B794, 0x26B7E9, 0x26B7F4], Level=[0x26B799]} // Mew on Faraway Island +StaticPokemon{}={Species=[0x26CBEA, 0x26CC19, 0x26CC68, 0x26CC73], Level=[0x26CC1E]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x26CD32, 0x26CD3D, 0x26CD87, 0x26CD92], Level=[0x26CD42]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x1EA97A]} // Wynaut Egg +StaticPokemon{}={Species=[0x22477B, 0x22477E, 0x224800, 0x224811], Level=[0x224780]} // Beldum +StaticPokemon{}={Species=[0x273D60, 0x273D63, 0x273DEF], Level=[0x273D65]} // Castform [Ruby (I)] Game=AXVI @@ -1135,24 +1136,24 @@ CatchingTutorialOpponentMonOffset=0x81ED4 CatchingTutorialPlayerMonOffset=0x10FA22 PCPotionOffset=0x406FE0 StaticPokemonSupport=1 -StaticPokemon[]=[0x157A87, 0x157AB5] -StaticPokemon[]=[0x157ADA, 0x157B08] -StaticPokemon[]=[0x1A0E4D, 0x15E24A, 0x15E251] -StaticPokemon[]=[0x15CFAD, 0x15CFB6] -StaticPokemon[]=[0x15F3C5, 0x15F3CE] -StaticPokemon[]=[0x15F478, 0x15F481] -StaticPokemon[]=[0x160FF2, 0x161018] -StaticPokemon[]=[0x15F73D, 0x15F744] -StaticPokemon[]=[0x1A0F8C, 0x1A0F95] -StaticPokemon[]=[0x151D0C, 0x151D15] -StaticPokemon[]=[0x15ED27, 0x15ED2E] -StaticPokemon[]=[0x15ED45, 0x15ED4C] -StaticPokemon[]=[0x15ED63, 0x15ED6A] -StaticPokemon[]=[0x1A0EAA, 0x1A0EB1] -StaticPokemon[]=[0x1A0EC8, 0x1A0ECF] -StaticPokemon[]=[0x14EBBE] -StaticPokemon[]=[0x15AED3, 0x15AEE3] -StaticPokemon[]=[0x1641BD] +StaticPokemon{}={Species=[0x157A87, 0x157AB5], Level=[0x157AB7]} // Lileep +StaticPokemon{}={Species=[0x157ADA, 0x157B08], Level=[0x157B0A]} // Anorith +StaticPokemon{}={Species=[0x1A0E4D, 0x15E24A, 0x15E251], Level=[0x15E24C]} // Groudon +StaticPokemon{}={Species=[0x15CFAD, 0x15CFB6], Level=[0x15CFB8]} // Regirock +StaticPokemon{}={Species=[0x15F3C5, 0x15F3CE], Level=[0x15F3D0]} // Regice +StaticPokemon{}={Species=[0x15F478, 0x15F481], Level=[0x15F483]} // Registeel +StaticPokemon{}={Species=[0x160FF2, 0x161018], Level=[0x16101A]} // Latias (Southern Island) +StaticPokemon{}={Species=[0x15F73D, 0x15F744], Level=[0x15F73F]} // Rayquaza +StaticPokemon{}={Species=[0x1A0F8C, 0x1A0F95], Level=[0x1A0F97]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151D0C, 0x151D15], Level=[0x151D17]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15ED27, 0x15ED2E], Level=[0x15ED29]} // Voltorb 1 +StaticPokemon{}={Species=[0x15ED45, 0x15ED4C], Level=[0x15ED47]} // Voltorb 2 +StaticPokemon{}={Species=[0x15ED63, 0x15ED6A], Level=[0x15ED65]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A0EAA, 0x1A0EB1], Level=[0x1A0EAC]} // Electrode 1 +StaticPokemon{}={Species=[0x1A0EC8, 0x1A0ECF], Level=[0x1A0ECA]} // Electrode 2 +StaticPokemon{}={Species=[0x14EBBE]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AED3, 0x15AEE3], Level=[0x15AED5]} // Beldum +StaticPokemon{}={Species=[0x1641BD], Level=[0x1641BF]} // Castform [Ruby (I) 1.1] Game=AXVI @@ -1185,24 +1186,24 @@ TradeTableOffset=0x21772C RunIndoorsTweakOffset=0xE6118 PCPotionOffset=0x406C84 StaticPokemonSupport=1 -StaticPokemon[]=[0x157A17, 0x157A45] -StaticPokemon[]=[0x157A6A, 0x157A98] -StaticPokemon[]=[0x1A0DDD, 0x15E1DA, 0x15E1E1] -StaticPokemon[]=[0x15CF3D, 0x15CF46] -StaticPokemon[]=[0x15F355, 0x15F35E] -StaticPokemon[]=[0x15F408, 0x15F411] -StaticPokemon[]=[0x160F82, 0x160FA8] -StaticPokemon[]=[0x15F6CD, 0x15F6D4] -StaticPokemon[]=[0x1A0F1C, 0x1A0F25] -StaticPokemon[]=[0x151CA0, 0x151CA9] -StaticPokemon[]=[0x15ECB7, 0x15ECBE] -StaticPokemon[]=[0x15ECD5, 0x15ECDC] -StaticPokemon[]=[0x15ECF3, 0x15ECFA] -StaticPokemon[]=[0x1A0E3A, 0x1A0E41] -StaticPokemon[]=[0x1A0E58, 0x1A0E5F] -StaticPokemon[]=[0x14EB52] -StaticPokemon[]=[0x15AE63, 0x15AE73] -StaticPokemon[]=[0x16414D] +StaticPokemon{}={Species=[0x157A17, 0x157A45], Level=[0x157A47]} // Lileep +StaticPokemon{}={Species=[0x157A6A, 0x157A98], Level=[0x157A9A]} // Anorith +StaticPokemon{}={Species=[0x1A0DDD, 0x15E1DA, 0x15E1E1], Level=[0x15E1DC]} // Kyogre +StaticPokemon{}={Species=[0x15CF3D, 0x15CF46], Level=[0x15CF48]} // Regirock +StaticPokemon{}={Species=[0x15F355, 0x15F35E], Level=[0x15F360]} // Regice +StaticPokemon{}={Species=[0x15F408, 0x15F411], Level=[0x15F413]} // Registeel +StaticPokemon{}={Species=[0x160F82, 0x160FA8], Level=[0x160FAA]} // Latios (Southern Island) +StaticPokemon{}={Species=[0x15F6CD, 0x15F6D4], Level=[0x15F6CF]} // Rayquaza +StaticPokemon{}={Species=[0x1A0F1C, 0x1A0F25], Level=[0x1A0F27]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x151CA0, 0x151CA9], Level=[0x151CAB]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x15ECB7, 0x15ECBE], Level=[0x15ECB9]} // Voltorb 1 +StaticPokemon{}={Species=[0x15ECD5, 0x15ECDC], Level=[0x15ECD7]} // Voltorb 2 +StaticPokemon{}={Species=[0x15ECF3, 0x15ECFA], Level=[0x15ECF5]} // Voltorb 3 +StaticPokemon{}={Species=[0x1A0E3A, 0x1A0E41], Level=[0x1A0E3C]} // Electrode 1 +StaticPokemon{}={Species=[0x1A0E58, 0x1A0E5F], Level=[0x1A0E5A]} // Electrode 2 +StaticPokemon{}={Species=[0x14EB52]} // Wynaut Egg +StaticPokemon{}={Species=[0x15AE63, 0x15AE73], Level=[0x15AE65]} // Beldum +StaticPokemon{}={Species=[0x16414D], Level=[0x16414F]} // Castform [Sapphire (I) 1.1] Game=AXPI @@ -1238,31 +1239,31 @@ CatchingTutorialOpponentMonOffset=0xB0884 CatchingTutorialPlayerMonOffset=0x139082 PCPotionOffset=0x5DCA48 StaticPokemonSupport=1 -StaticPokemon[]=[0x211669, 0x21168E, 0x211691, 0x211713, 0x211721] -StaticPokemon[]=[0x21167B, 0x211731, 0x211734, 0x2117B6, 0x2117C4] -StaticPokemon[]=[0x23B0B6, 0x23B0C4, 0x23B119] -StaticPokemon[]=[0x23B187, 0x23B195, 0x23B1EA] -StaticPokemon[]=[0x22D8D2, 0x22D8DB, 0x22D921] -StaticPokemon[]=[0x239092, 0x23909B, 0x2390E1] -StaticPokemon[]=[0x239194, 0x23919D, 0x2391E3] -StaticPokemon[]=[0x23983F, 0x239848, 0x23988E] -StaticPokemon[]=[0x271FDB, 0x271FE4] -StaticPokemon[]=[0x1F51E3, 0x1F51EC] -StaticPokemon[]=[0x23794B, 0x237952] -StaticPokemon[]=[0x237998, 0x23799F] -StaticPokemon[]=[0x2379E5, 0x2379EC] -StaticPokemon[]=[0x233AB2, 0x233AB9] -StaticPokemon[]=[0x233AFF, 0x233B06] -StaticPokemon[]=[0x242D25, 0x242D33] -StaticPokemon[]=[0x242BB1] -StaticPokemon[]=[0x242BC4] -StaticPokemon[]=[0x267A89, 0x267A99, 0x267AE3, 0x267AEE] -StaticPokemon[]=[0x2678A1, 0x2678DB, 0x267930, 0x26793B] -StaticPokemon[]=[0x268C5D, 0x268C8C, 0x268CDB, 0x268CE6] -StaticPokemon[]=[0x268DA5, 0x268DB0, 0x268DFA, 0x268E05] -StaticPokemon[]=[0x1EA261] -StaticPokemon[]=[0x222657, 0x22265A, 0x2226DC, 0x2226ED] -StaticPokemon[]=[0x26FC1D, 0x26FC20] +StaticPokemon{}={Species=[0x211669, 0x21168E, 0x211691, 0x211713, 0x211721], Level=[0x211693]} // Lileep +StaticPokemon{}={Species=[0x21167B, 0x211731, 0x211734, 0x2117B6, 0x2117C4], Level=[0x211736]} // Anorith +StaticPokemon{}={Species=[0x23B0B6, 0x23B0C4, 0x23B119, 0x1E54AB, 0x1E552B, 0x1E55E7, 0x1E5667], Level=[0x23B0C6]} // Kyogre +StaticPokemon{}={Species=[0x23B187, 0x23B195, 0x23B1EA, 0x1E54EB, 0x1E5627], Level=[0x23B197]} // Groudon +StaticPokemon{}={Species=[0x22D8D2, 0x22D8DB, 0x22D921], Level=[0x22D8DD]} // Regirock +StaticPokemon{}={Species=[0x239092, 0x23909B, 0x2390E1], Level=[0x23909D]} // Regice +StaticPokemon{}={Species=[0x239194, 0x23919D, 0x2391E3], Level=[0x23919F]} // Registeel +StaticPokemon{}={Species=[0x23983F, 0x239848, 0x23988E, 0x2398DD, 0x2398FB, 0x1E5789, 0x1E57A7, 0x1E583D, 0x1E585B], Level=[0x23984A]} // Rayquaza +StaticPokemon{}={Species=[0x271FDB, 0x271FE4], Level=[0x271FE6]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x1F51E3, 0x1F51EC], Level=[0x1F51EE]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x23794B, 0x237952], Level=[0x23794D]} // Voltorb 1 +StaticPokemon{}={Species=[0x237998, 0x23799F], Level=[0x23799A]} // Voltorb 2 +StaticPokemon{}={Species=[0x2379E5, 0x2379EC], Level=[0x2379E7]} // Voltorb 3 +StaticPokemon{}={Species=[0x233AB2, 0x233AB9], Level=[0x233AB4]} // Electrode 1 +StaticPokemon{}={Species=[0x233AFF, 0x233B06], Level=[0x233B01]} // Electrode 2 +StaticPokemon{}={Species=[0x242D25, 0x242D33], Level=[0x242D35]} // Sudowoodo in Battle Frontier +StaticPokemon{}={Species=[0x242A9C, 0x242BB1], Level=[0x242BB6]} // Latios on Southern Island +StaticPokemon{}={Species=[0x242AA7, 0x242BC4], Level=[0x242BC9]} // Latias on Southern Island +StaticPokemon{}={Species=[0x267A89, 0x267A99, 0x267AE3, 0x267AEE], Level=[0x267A9E]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x2678A1, 0x2678DB, 0x267930, 0x26793B], Level=[0x2678E0]} // Mew on Faraway Island +StaticPokemon{}={Species=[0x268C5D, 0x268C8C, 0x268CDB, 0x268CE6], Level=[0x268C91]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x268DA5, 0x268DB0, 0x268DFA, 0x268E05], Level=[0x268DB5]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x1EA261]} // Wynaut Egg +StaticPokemon{}={Species=[0x222657, 0x22265A, 0x2226DC, 0x2226ED], Level=[0x22265C]} // Beldum +StaticPokemon{}={Species=[0x26FC1D, 0x26FC20, 0x26FCAC], Level=[0x26FC22]} // Castform [Fire Red (F)] Game=BPRF @@ -1290,31 +1291,31 @@ TextSpeedValuesOffset=0x4178FC CatchingTutorialOpponentMonOffset=0x7F8B0 PCPotionOffset=0x3FAC28 StaticPokemonSupport=1 -StaticPokemon[]=[0x16C49A, 0x16C49D, 0x16C4DD, 0x16C511] -StaticPokemon[]=[0x16EC34, 0x16EC3B] -StaticPokemon[]=[0x16EC7A, 0x16EC81] -StaticPokemon[]=[0x163862, 0x163869] -StaticPokemon[]=[0x1638C0, 0x1638C7] -StaticPokemon[]=[0x1637EE, 0x1637F5, 0x163849] -StaticPokemon[]=[0x1631E2, 0x1631E9, 0x16323D] -StaticPokemon[]=[0x163B69, 0x163B70, 0x163BC4] -StaticPokemon[]=[0x16252C, 0x162540, 0x162586] -StaticPokemon[]=[0x16806D, 0x168073] -StaticPokemon[]=[0x168179, 0x16817F] -StaticPokemon[]=[0x163CDE, 0x163CE4] -StaticPokemon[]=[0x16530A, 0x16531A, 0x165364, 0x16536F] -StaticPokemon[]=[0x165060, 0x16508F, 0x1650DE, 0x1650E9] -StaticPokemon[]=[0x1651AE, 0x1651B9, 0x165203, 0x16520E] -StaticPokemon[]=[0x16E80D, 0x16E811, 0x16E81C, 0x16E70E] -StaticPokemon[]=[0x16E783, 0x16E787, 0x16E792, 0x16E692] -StaticPokemon[]=[0x16E7C8, 0x16E7CC, 0x16E7D7, 0x16E6D0] -StaticPokemon[]=[0x161AFD, 0x161B3F, 0x161B75] -StaticPokemon[]=[0x16F7EE, 0x16F8B0] -StaticPokemon[]=[0x16CC40, 0x16CCBC] -StaticPokemon[]=[0x16CC50, 0x16CCC7] -StaticPokemon[]=[0x16CC70, 0x16CCDD] -StaticPokemon[]=[0x16CC60, 0x16CCD2] -StaticPokemon[]=[0x16CC80, 0x16CCE8] +StaticPokemon{}={Species=[0x16C49A, 0x16C49D, 0x16C4DD, 0x16C511], Level=[0x16C49F]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EC34, 0x16EC3B], Level=[0x16ECAE]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16EC7A, 0x16EC81], Level=[0x16ECAE]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x163862, 0x163869], Level=[0x163864]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x1638C0, 0x1638C7], Level=[0x1638C2]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x1637EE, 0x1637F5, 0x163849], Level=[0x1637F0]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x1631E2, 0x1631E9, 0x16323D, 0x1700C8, 0x1700D4], Level=[0x1631E4]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163B69, 0x163B70, 0x163BC4], Level=[0x163B6B]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x16252C, 0x162540, 0x162586], Level=[0x162542]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x16806D, 0x168073, 0x160CBE, 0x160CC4], Level=[0x16806F]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x168179, 0x16817F], Level=[0x16817B]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163CDE, 0x163CE4], Level=[0x163CE6]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16530A, 0x16531A, 0x165364, 0x16536F], Level=[0x16531F]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x165060, 0x16508F, 0x1650DE, 0x1650E9], Level=[0x165094]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x1651AE, 0x1651B9, 0x165203, 0x16520E], Level=[0x1651BE]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E80D, 0x16E811, 0x16E81C, 0x16E70E], Level=[0x16E81E]} // Old Amber +StaticPokemon{}={Species=[0x16E783, 0x16E787, 0x16E792, 0x16E692], Level=[0x16E794]} // Helix Fossil +StaticPokemon{}={Species=[0x16E7C8, 0x16E7CC, 0x16E7D7, 0x16E6D0], Level=[0x16E7D9]} // Dome Fossil +StaticPokemon{}={Species=[0x161AFA, 0x161AFD, 0x161B3F, 0x161B75], Level=[0x161AFF]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F7EB, 0x16F7EE, 0x16F8B0], Level=[0x16F7F0]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CC40, 0x16CCBC], Level=[0x16CCFF]} // Abra +StaticPokemon{}={Species=[0x16CC50, 0x16CCC7], Level=[0x16CD14]} // Clefairy +StaticPokemon{}={Species=[0x16CC70, 0x16CCDD], Level=[0x16CD3E]} // Scyther +StaticPokemon{}={Species=[0x16CC60, 0x16CCD2], Level=[0x16CD29]} // Dratini +StaticPokemon{}={Species=[0x16CC80, 0x16CCE8], Level=[0x16CD53]} // Porygon [Leaf Green (F)] Game=BPGF @@ -1342,31 +1343,31 @@ TextSpeedValuesOffset=0x417738 CatchingTutorialOpponentMonOffset=0x7F884 PCPotionOffset=0x3FAA64 StaticPokemonSupport=1 -StaticPokemon[]=[0x16C476, 0x16C479, 0x16C4B9, 0x16C4ED] // Eevee in Celadon Mansion -StaticPokemon[]=[0x16EC10, 0x16EC17] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x16EC56, 0x16EC5D] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x16383E, 0x163845] // Electrode in The Power Plant -StaticPokemon[]=[0x16389C, 0x1638A3] // Electrode in The Power Plant -StaticPokemon[]=[0x1637CA, 0x1637D1, 0x163825] // Zapdos in the Power Plant -StaticPokemon[]=[0x1631BE, 0x1631C5, 0x163219] // Articuno in the Seafoams -StaticPokemon[]=[0x163B45, 0x163B4C, 0x163BA0] // Moltres in Mt.Ember -StaticPokemon[]=[0x162508, 0x16251C, 0x162562] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x168049, 0x16804F] // Sleeping Snorlax (12) -StaticPokemon[]=[0x168155, 0x16815B] // Sleeping Snorlax (16) -StaticPokemon[]=[0x163CBA, 0x163CC0] // Hypno in Berry Forest -StaticPokemon[]=[0x1652E6, 0x1652F6, 0x165340, 0x16534B] // Deoxys on Birth Island -StaticPokemon[]=[0x16503C, 0x16506B, 0x1650BA, 0x1650C5] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x16518A, 0x165195, 0x1651DF, 0x1651EA] // Lugia on Navel Rock -StaticPokemon[]=[0x16E7E9, 0x16E7ED, 0x16E7F8, 0x16E6EA] // Old Amber -StaticPokemon[]=[0x16E75F, 0x16E763, 0x16E76E, 0x16E66E] // Helix Fossil -StaticPokemon[]=[0x16E7A4, 0x16E7A8, 0x16E7B3, 0x16E6AC] // Dome Fossil -StaticPokemon[]=[0x161AD9, 0x161B1B, 0x161B51] // Lapras in Silph. Co -StaticPokemon[]=[0x16F7CA, 0x16F88C] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x16CC1C, 0x16CC98] // Abra -StaticPokemon[]=[0x16CC2C, 0x16CCA3] // Clefairy -StaticPokemon[]=[0x16CC3C, 0x16CCCF] // Pinsir -StaticPokemon[]=[0x16CC4C, 0x16CCAE] // Dratini -StaticPokemon[]=[0x16CC5C, 0x16CCC4] // Porygon +StaticPokemon{}={Species=[0x16C476, 0x16C479, 0x16C4B9, 0x16C4ED], Level=[0x16C47B]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EC10, 0x16EC17], Level=[0x16EC8A]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16EC56, 0x16EC5D], Level=[0x16EC8A]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x16383E, 0x163845], Level=[0x163840]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16389C, 0x1638A3], Level=[0x16389E]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x1637CA, 0x1637D1, 0x163825], Level=[0x1637CC]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x1631BE, 0x1631C5, 0x163219, 0x1700A4, 0x1700B0], Level=[0x1631C0]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163B45, 0x163B4C, 0x163BA0], Level=[0x163B47]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x162508, 0x16251C, 0x162562], Level=[0x16251E]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x168049, 0x16804F, 0x160C9A, 0x160CA0], Level=[0x16804B]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x168155, 0x16815B], Level=[0x168157]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163CBA, 0x163CC0], Level=[0x163CC2]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x1652E6, 0x1652F6, 0x165340, 0x16534B], Level=[0x1652FB]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x16503C, 0x16506B, 0x1650BA, 0x1650C5], Level=[0x165070]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x16518A, 0x165195, 0x1651DF, 0x1651EA], Level=[0x16519A]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E7E9, 0x16E7ED, 0x16E7F8, 0x16E6EA], Level=[0x16E7FA]} // Old Amber +StaticPokemon{}={Species=[0x16E75F, 0x16E763, 0x16E76E, 0x16E66E], Level=[0x16E770]} // Helix Fossil +StaticPokemon{}={Species=[0x16E7A4, 0x16E7A8, 0x16E7B3, 0x16E6AC], Level=[0x16E7B5]} // Dome Fossil +StaticPokemon{}={Species=[0x161AD6, 0x161AD9, 0x161B1B, 0x161B51], Level=[0x161ADB]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F7C7, 0x16F7CA, 0x16F88C], Level=[0x16F7CC]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CC1C, 0x16CC98], Level=[0x16CCDB]} // Abra +StaticPokemon{}={Species=[0x16CC2C, 0x16CCA3], Level=[0x16CCF0]} // Clefairy +StaticPokemon{}={Species=[0x16CC3C, 0x16CCCF], Level=[0x16CD44]} // Pinsir +StaticPokemon{}={Species=[0x16CC4C, 0x16CCAE], Level=[0x16CD05]} // Dratini +StaticPokemon{}={Species=[0x16CC5C, 0x16CCC4], Level=[0x16CD2F]} // Porygon [Fire Red (G)] Game=BPRD @@ -1394,31 +1395,31 @@ TextSpeedValuesOffset=0x41F764 CatchingTutorialOpponentMonOffset=0x7F7F0 PCPotionOffset=0x402224 StaticPokemonSupport=1 -StaticPokemon[]=[0x16C3DE, 0x16C3E1, 0x16C421, 0x16C455] -StaticPokemon[]=[0x16EB78, 0x16EB7F] -StaticPokemon[]=[0x16EBBE, 0x16EBC5] -StaticPokemon[]=[0x1637A6, 0x1637AD] -StaticPokemon[]=[0x163804, 0x16380B] -StaticPokemon[]=[0x163732, 0x163739, 0x16378D] -StaticPokemon[]=[0x163126, 0x16312D, 0x163181] -StaticPokemon[]=[0x163AAD, 0x163AB4, 0x163B08] -StaticPokemon[]=[0x162470, 0x162484, 0x1624CA] -StaticPokemon[]=[0x167FB1, 0x167FB7] -StaticPokemon[]=[0x1680BD, 0x1680C3] -StaticPokemon[]=[0x163C22, 0x163C28] -StaticPokemon[]=[0x16524E, 0x16525E, 0x1652A8, 0x1652B3] -StaticPokemon[]=[0x164FA4, 0x164FD3, 0x165022, 0x16502D] -StaticPokemon[]=[0x1650F2, 0x1650FD, 0x165147, 0x165152] -StaticPokemon[]=[0x16E751, 0x16E755, 0x16E760, 0x16E652] -StaticPokemon[]=[0x16E6C7, 0x16E6CB, 0x16E6D6, 0x16E5D6] -StaticPokemon[]=[0x16E70C, 0x16E710, 0x16E71B, 0x16E614] -StaticPokemon[]=[0x161A41, 0x161A83, 0x161AB9] -StaticPokemon[]=[0x16F732, 0x16F7F4] -StaticPokemon[]=[0x16CB84, 0x16CC00] -StaticPokemon[]=[0x16CB94, 0x16CC0B] -StaticPokemon[]=[0x16CBB4, 0x16CC21] -StaticPokemon[]=[0x16CBA4, 0x16CC16] -StaticPokemon[]=[0x16CBC4, 0x16CC2C] +StaticPokemon{}={Species=[0x16C3DE, 0x16C3E1, 0x16C421, 0x16C455], Level=[0x16C3E3]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EB78, 0x16EB7F], Level=[0x16EBF2]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16EBBE, 0x16EBC5], Level=[0x16EBF2]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x1637A6, 0x1637AD], Level=[0x1637A8]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163804, 0x16380B], Level=[0x163806]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163732, 0x163739, 0x16378D], Level=[0x163734]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x163126, 0x16312D, 0x163181, 0x17000C, 0x170018], Level=[0x163128]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163AAD, 0x163AB4, 0x163B08], Level=[0x163AAF]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x162470, 0x162484, 0x1624CA], Level=[0x162486]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x167FB1, 0x167FB7, 0x160C02, 0x160C08], Level=[0x167FB3]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x1680BD, 0x1680C3], Level=[0x1680BF]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163C22, 0x163C28], Level=[0x163C2A]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16524E, 0x16525E, 0x1652A8, 0x1652B3], Level=[0x165263]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x164FA4, 0x164FD3, 0x165022, 0x16502D], Level=[0x164FD8]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x1650F2, 0x1650FD, 0x165147, 0x165152], Level=[0x165102]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E751, 0x16E755, 0x16E760, 0x16E652], Level=[0x16E762]} // Old Amber +StaticPokemon{}={Species=[0x16E6C7, 0x16E6CB, 0x16E6D6, 0x16E5D6], Level=[0x16E6D8]} // Helix Fossil +StaticPokemon{}={Species=[0x16E70C, 0x16E710, 0x16E71B, 0x16E614], Level=[0x16E71D]} // Dome Fossil +StaticPokemon{}={Species=[0x161A3E, 0x161A41, 0x161A83, 0x161AB9], Level=[0x161A43]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F72F, 0x16F732, 0x16F7F4], Level=[0x16F734]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CB84, 0x16CC00], Level=[0x16CC43]} // Abra +StaticPokemon{}={Species=[0x16CB94, 0x16CC0B], Level=[0x16CC58]} // Clefairy +StaticPokemon{}={Species=[0x16CBB4, 0x16CC21], Level=[0x16CC82]} // Scyther +StaticPokemon{}={Species=[0x16CBA4, 0x16CC16], Level=[0x16CC6D]} // Dratini +StaticPokemon{}={Species=[0x16CBC4, 0x16CC2C], Level=[0x16CC97]} // Porygon [Leaf Green (G)] Game=BPGD @@ -1446,31 +1447,31 @@ TextSpeedValuesOffset=0x41F5A0 CatchingTutorialOpponentMonOffset=0x7F7C4 PCPotionOffset=0x402060 StaticPokemonSupport=1 -StaticPokemon[]=[0x16C3BA, 0x16C3BD, 0x16C3FD, 0x16C431] // Eevee in Celadon Mansion -StaticPokemon[]=[0x16EB54, 0x16EB5B] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x16EB9A, 0x16EBA1] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x163782, 0x163789] // Electrode in The Power Plant -StaticPokemon[]=[0x1637E0, 0x1637E7] // Electrode in The Power Plant -StaticPokemon[]=[0x16370E, 0x163715, 0x163769] // Zapdos in the Power Plant -StaticPokemon[]=[0x163102, 0x163109, 0x16315D] // Articuno in the Seafoams -StaticPokemon[]=[0x163A89, 0x163A90, 0x163AE4] // Moltres in Mt.Ember -StaticPokemon[]=[0x16244C, 0x162460, 0x1624A6] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x167F8D, 0x167F93] // Sleeping Snorlax (12) -StaticPokemon[]=[0x168099, 0x16809F] // Sleeping Snorlax (16) -StaticPokemon[]=[0x163BFE, 0x163C04] // Hypno in Berry Forest -StaticPokemon[]=[0x16522A, 0x16523A, 0x165284, 0x16528F] // Deoxys on Birth Island -StaticPokemon[]=[0x164F80, 0x164FAF, 0x164FFE, 0x165009] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x1650CE, 0x1650D9, 0x165123, 0x16512E] // Lugia on Navel Rock -StaticPokemon[]=[0x16E72D, 0x16E731, 0x16E73C, 0x16E62E] // Old Amber -StaticPokemon[]=[0x16E6A3, 0x16E6A7, 0x16E6B2, 0x16E5B2] // Helix Fossil -StaticPokemon[]=[0x16E6E8, 0x16E6EC, 0x16E6F7, 0x16E5F0] // Dome Fossil -StaticPokemon[]=[0x161A1D, 0x161A5F, 0x161A95] // Lapras in Silph. Co -StaticPokemon[]=[0x16F70E, 0x16F7D0] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x16CB60, 0x16CBDC] // Abra -StaticPokemon[]=[0x16CB70, 0x16CBE7] // Clefairy -StaticPokemon[]=[0x16CB80, 0x16CC13] // Pinsir -StaticPokemon[]=[0x16CB90, 0x16CBF2] // Dratini -StaticPokemon[]=[0x16CBA0, 0x16CC08] // Porygon +StaticPokemon{}={Species=[0x16C3BA, 0x16C3BD, 0x16C3FD, 0x16C431], Level=[0x16C3BF]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EB54, 0x16EB5B], Level=[0x16EBCE]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16EB9A, 0x16EBA1], Level=[0x16EBCE]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x163782, 0x163789], Level=[0x163784]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x1637E0, 0x1637E7], Level=[0x1637E2]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16370E, 0x163715, 0x163769], Level=[0x163710]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x163102, 0x163109, 0x16315D, 0x16FFE8, 0x16FFF4], Level=[0x163104]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163A89, 0x163A90, 0x163AE4], Level=[0x163A8B]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x16244C, 0x162460, 0x1624A6], Level=[0x162462]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x167F8D, 0x167F93, 0x160BDE, 0x160BE4], Level=[0x167F8F]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x168099, 0x16809F], Level=[0x16809B]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163BFE, 0x163C04], Level=[0x163C06]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16522A, 0x16523A, 0x165284, 0x16528F], Level=[0x16523F]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x164F80, 0x164FAF, 0x164FFE, 0x165009], Level=[0x164FB4]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x1650CE, 0x1650D9, 0x165123, 0x16512E], Level=[0x1650DE]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E72D, 0x16E731, 0x16E73C, 0x16E62E], Level=[0x16E73E]} // Old Amber +StaticPokemon{}={Species=[0x16E6A3, 0x16E6A7, 0x16E6B2, 0x16E5B2], Level=[0x16E6B4]} // Helix Fossil +StaticPokemon{}={Species=[0x16E6E8, 0x16E6EC, 0x16E6F7, 0x16E5F0], Level=[0x16E6F9]} // Dome Fossil +StaticPokemon{}={Species=[0x161A1A, 0x161A1D, 0x161A5F, 0x161A95], Level=[0x161A1F]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F70B, 0x16F70E, 0x16F7D0], Level=[0x16F710]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CB60, 0x16CBDC], Level=[0x16CC1F]} // Abra +StaticPokemon{}={Species=[0x16CB70, 0x16CBE7], Level=[0x16CC34]} // Clefairy +StaticPokemon{}={Species=[0x16CB80, 0x16CC13], Level=[0x16CC88]} // Pinsir +StaticPokemon{}={Species=[0x16CB90, 0x16CBF2], Level=[0x16CC49]} // Dratini +StaticPokemon{}={Species=[0x16CBA0, 0x16CC08], Level=[0x16CC73]} // Porygon [Fire Red (S)] Game=BPRS @@ -1498,31 +1499,31 @@ TextSpeedValuesOffset=0x41A090 CatchingTutorialOpponentMonOffset=0x7F8C4 PCPotionOffset=0x3FCB9C StaticPokemonSupport=1 -StaticPokemon[]=[0x16C50A, 0x16C50D, 0x16C54D, 0x16C581] -StaticPokemon[]=[0x16ECA4, 0x16ECAB] -StaticPokemon[]=[0x16ECEA, 0x16ECF1] -StaticPokemon[]=[0x1638D2, 0x1638D9] -StaticPokemon[]=[0x163930, 0x163937] -StaticPokemon[]=[0x16385E, 0x163865, 0x1638B9] -StaticPokemon[]=[0x163252, 0x163259, 0x1632AD] -StaticPokemon[]=[0x163BD9, 0x163BE0, 0x163C34] -StaticPokemon[]=[0x16259C, 0x1625B0, 0x1625F6] -StaticPokemon[]=[0x1680DD, 0x1680E3] -StaticPokemon[]=[0x1681E9, 0x1681EF] -StaticPokemon[]=[0x163D4E, 0x163D54] -StaticPokemon[]=[0x16537A, 0x16538A, 0x1653D4, 0x1653DF] -StaticPokemon[]=[0x1650D0, 0x1650FF, 0x16514E, 0x165159] -StaticPokemon[]=[0x16521E, 0x165229, 0x165273, 0x16527E] -StaticPokemon[]=[0x16E87D, 0x16E881, 0x16E88C, 0x16E77E] -StaticPokemon[]=[0x16E7F3, 0x16E7F7, 0x16E802, 0x16E702] -StaticPokemon[]=[0x16E838, 0x16E83C, 0x16E847, 0x16E740] -StaticPokemon[]=[0x161B6D, 0x161BAF, 0x161BE5] -StaticPokemon[]=[0x16F85E, 0x16F920] -StaticPokemon[]=[0x16CCB0, 0x16CD2C] -StaticPokemon[]=[0x16CCC0, 0x16CD37] -StaticPokemon[]=[0x16CCE0, 0x16CD4D] -StaticPokemon[]=[0x16CCD0, 0x16CD42] -StaticPokemon[]=[0x16CCF0, 0x16CD58] +StaticPokemon{}={Species=[0x16C50A, 0x16C50D, 0x16C54D, 0x16C581], Level=[0x16C50F]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16ECA4, 0x16ECAB], Level=[0x16ED1E]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16ECEA, 0x16ECF1], Level=[0x16ED1E]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x1638D2, 0x1638D9], Level=[0x1638D4]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163930, 0x163937], Level=[0x163932]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16385E, 0x163865, 0x1638B9], Level=[0x163860]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x163252, 0x163259, 0x1632AD, 0x170138, 0x170144], Level=[0x163254]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163BD9, 0x163BE0, 0x163C34], Level=[0x163BDB]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x16259C, 0x1625B0, 0x1625F6], Level=[0x1625B2]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x1680DD, 0x1680E3, 0x160D2E, 0x160D34], Level=[0x1680DF]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x1681E9, 0x1681EF], Level=[0x1681EB]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163D4E, 0x163D54], Level=[0x163D56]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16537A, 0x16538A, 0x1653D4, 0x1653DF], Level=[0x16538F]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x1650D0, 0x1650FF, 0x16514E, 0x165159], Level=[0x165104]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x16521E, 0x165229, 0x165273, 0x16527E], Level=[0x16522E]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E87D, 0x16E881, 0x16E88C, 0x16E77E], Level=[0x16E88E]} // Old Amber +StaticPokemon{}={Species=[0x16E7F3, 0x16E7F7, 0x16E802, 0x16E702], Level=[0x16E804]} // Helix Fossil +StaticPokemon{}={Species=[0x16E838, 0x16E83C, 0x16E847, 0x16E740], Level=[0x16E849]} // Dome Fossil +StaticPokemon{}={Species=[0x161B6A, 0x161B6D, 0x161BAF, 0x161BE5], Level=[0x161B6F]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F85B, 0x16F85E, 0x16F920], Level=[0x16F860]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CCB0, 0x16CD2C], Level=[0x16CD6F]} // Abra +StaticPokemon{}={Species=[0x16CCC0, 0x16CD37], Level=[0x16CD84]} // Clefairy +StaticPokemon{}={Species=[0x16CCE0, 0x16CD4D], Level=[0x16CDAE]} // Scyther +StaticPokemon{}={Species=[0x16CCD0, 0x16CD42], Level=[0x16CD99]} // Dratini +StaticPokemon{}={Species=[0x16CCF0, 0x16CD58], Level=[0x16CDC3]} // Porygon [Leaf Green (S)] Game=BPGS @@ -1550,31 +1551,31 @@ TextSpeedValuesOffset=0x419ECC CatchingTutorialOpponentMonOffset=0x7F898 PCPotionOffset=0x3FC9D8 StaticPokemonSupport=1 -StaticPokemon[]=[0x16C4E6, 0x16C4E9, 0x16C529, 0x16C55D] // Eevee in Celadon Mansion -StaticPokemon[]=[0x16EC80, 0x16EC87] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x16ECC6, 0x16ECCD] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x1638AE, 0x1638B5] // Electrode in The Power Plant -StaticPokemon[]=[0x16390C, 0x163913] // Electrode in The Power Plant -StaticPokemon[]=[0x16383A, 0x163841, 0x163895] // Zapdos in the Power Plant -StaticPokemon[]=[0x16322E, 0x163235, 0x163289] // Articuno in the Seafoams -StaticPokemon[]=[0x163BB5, 0x163BBC, 0x163C10] // Moltres in Mt.Ember -StaticPokemon[]=[0x162578, 0x16258C, 0x1625D2] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x1680B9, 0x1680BF] // Sleeping Snorlax (12) -StaticPokemon[]=[0x1681C5, 0x1681CB] // Sleeping Snorlax (16) -StaticPokemon[]=[0x163D2A, 0x163D30] // Hypno in Berry Forest -StaticPokemon[]=[0x165356, 0x165366, 0x1653B0, 0x1653BB] // Deoxys on Birth Island -StaticPokemon[]=[0x1650AC, 0x1650DB, 0x16512A, 0x165135] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x1651FA, 0x165205, 0x16524F, 0x16525A] // Lugia on Navel Rock -StaticPokemon[]=[0x16E859, 0x16E85D, 0x16E868, 0x16E75A] // Old Amber -StaticPokemon[]=[0x16E7CF, 0x16E7D3, 0x16E7DE, 0x16E6DE] // Helix Fossil -StaticPokemon[]=[0x16E814, 0x16E818, 0x16E823, 0x16E71C] // Dome Fossil -StaticPokemon[]=[0x161B49, 0x161B8B, 0x161BC1] // Lapras in Silph. Co -StaticPokemon[]=[0x16F83A, 0x16F8FC] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x16CC8C, 0x16CD08] // Abra -StaticPokemon[]=[0x16CC9C, 0x16CD13] // Clefairy -StaticPokemon[]=[0x16CCAC, 0x16CD3F] // Pinsir -StaticPokemon[]=[0x16CCBC, 0x16CD1E] // Dratini -StaticPokemon[]=[0x16CCCC, 0x16CD34] // Porygon +StaticPokemon{}={Species=[0x16C4E6, 0x16C4E9, 0x16C529, 0x16C55D], Level=[0x16C4EB]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EC80, 0x16EC87], Level=[0x16ECFA]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16ECC6, 0x16ECCD], Level=[0x16ECFA]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x1638AE, 0x1638B5], Level=[0x1638B0]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16390C, 0x163913], Level=[0x16390E]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16383A, 0x163841, 0x163895], Level=[0x16383C]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x16322E, 0x163235, 0x163289, 0x170114, 0x170120], Level=[0x163230]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163BB5, 0x163BBC, 0x163C10], Level=[0x163BB7]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x162578, 0x16258C, 0x1625D2], Level=[0x16258E]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x1680B9, 0x1680BF, 0x160D0A, 0x160D10], Level=[0x1680BB]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x1681C5, 0x1681CB], Level=[0x1681C7]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163D2A, 0x163D30], Level=[0x163D32]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x165356, 0x165366, 0x1653B0, 0x1653BB], Level=[0x16536B]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x1650AC, 0x1650DB, 0x16512A, 0x165135], Level=[0x1650E0]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x1651FA, 0x165205, 0x16524F, 0x16525A], Level=[0x16520A]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E859, 0x16E85D, 0x16E868, 0x16E75A], Level=[0x16E86A]} // Old Amber +StaticPokemon{}={Species=[0x16E7CF, 0x16E7D3, 0x16E7DE, 0x16E6DE], Level=[0x16E7E0]} // Helix Fossil +StaticPokemon{}={Species=[0x16E814, 0x16E818, 0x16E823, 0x16E71C], Level=[0x16E825]} // Dome Fossil +StaticPokemon{}={Species=[0x161B46, 0x161B49, 0x161B8B, 0x161BC1], Level=[0x161B4B]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F837, 0x16F83A, 0x16F8FC], Level=[0x16F83C]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CC8C, 0x16CD08], Level=[0x16CD4B]} // Abra +StaticPokemon{}={Species=[0x16CC9C, 0x16CD13], Level=[0x16CD60]} // Clefairy +StaticPokemon{}={Species=[0x16CCAC, 0x16CD3F], Level=[0x16CDB4]} // Pinsir +StaticPokemon{}={Species=[0x16CCBC, 0x16CD1E], Level=[0x16CD75]} // Dratini +StaticPokemon{}={Species=[0x16CCCC, 0x16CD34], Level=[0x16CD9F]} // Porygon [Fire Red (I)] Game=BPRI @@ -1602,31 +1603,31 @@ TextSpeedValuesOffset=0x4169E8 CatchingTutorialOpponentMonOffset=0x7F7DC PCPotionOffset=0x3F99B0 StaticPokemonSupport=1 -StaticPokemon[]=[0x16C41E, 0x16C421, 0x16C461, 0x16C495] -StaticPokemon[]=[0x16EBB8, 0x16EBBF] -StaticPokemon[]=[0x16EBFE, 0x16EC05] -StaticPokemon[]=[0x1637E6, 0x1637ED] -StaticPokemon[]=[0x163844, 0x16384B] -StaticPokemon[]=[0x163772, 0x163779, 0x1637CD] -StaticPokemon[]=[0x163166, 0x16316D, 0x1631C1] -StaticPokemon[]=[0x163AED, 0x163AF4, 0x163B48] -StaticPokemon[]=[0x1624B0, 0x1624C4, 0x16250A] -StaticPokemon[]=[0x167FF1, 0x167FF7] -StaticPokemon[]=[0x1680FD, 0x168103] -StaticPokemon[]=[0x163C62, 0x163C68] -StaticPokemon[]=[0x16528E, 0x16529E, 0x1652E8, 0x1652F3] -StaticPokemon[]=[0x164FE4, 0x165013, 0x165062, 0x16506D] -StaticPokemon[]=[0x165132, 0x16513D, 0x165187, 0x165192] -StaticPokemon[]=[0x16E791, 0x16E795, 0x16E7A0, 0x16E692] -StaticPokemon[]=[0x16E707, 0x16E70B, 0x16E716, 0x16E616] -StaticPokemon[]=[0x16E74C, 0x16E750, 0x16E75B, 0x16E654] -StaticPokemon[]=[0x161A81, 0x161AC3, 0x161AF9] -StaticPokemon[]=[0x16F772, 0x16F834] -StaticPokemon[]=[0x16CBC4, 0x16CC40] -StaticPokemon[]=[0x16CBD4, 0x16CC4B] -StaticPokemon[]=[0x16CBF4, 0x16CC61] -StaticPokemon[]=[0x16CBE4, 0x16CC56] -StaticPokemon[]=[0x16CC04, 0x16CC6C] +StaticPokemon{}={Species=[0x16C41E, 0x16C421, 0x16C461, 0x16C495], Level=[0x16C423]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EBB8, 0x16EBBF], Level=[0x16EC32]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16EBFE, 0x16EC05], Level=[0x16EC32]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x1637E6, 0x1637ED], Level=[0x1637E8]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163844, 0x16384B], Level=[0x163846]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163772, 0x163779, 0x1637CD], Level=[0x163774]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x163166, 0x16316D, 0x1631C1, 0x17004C, 0x170058], Level=[0x163168]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163AED, 0x163AF4, 0x163B48], Level=[0x163AEF]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x1624B0, 0x1624C4, 0x16250A], Level=[0x1624C6]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x167FF1, 0x167FF7, 0x160C42, 0x160C48], Level=[0x167FF3]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x1680FD, 0x168103], Level=[0x1680FF]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163C62, 0x163C68], Level=[0x163C6A]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16528E, 0x16529E, 0x1652E8, 0x1652F3], Level=[0x1652A3]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x164FE4, 0x165013, 0x165062, 0x16506D], Level=[0x165018]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x165132, 0x16513D, 0x165187, 0x165192], Level=[0x165142]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E791, 0x16E795, 0x16E7A0, 0x16E692], Level=[0x16E7A2]} // Old Amber +StaticPokemon{}={Species=[0x16E707, 0x16E70B, 0x16E716, 0x16E616], Level=[0x16E718]} // Helix Fossil +StaticPokemon{}={Species=[0x16E74C, 0x16E750, 0x16E75B, 0x16E654], Level=[0x16E75D]} // Dome Fossil +StaticPokemon{}={Species=[0x161A7E, 0x161A81, 0x161AC3, 0x161AF9], Level=[0x161A83]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F76F, 0x16F772, 0x16F834], Level=[0x16F774]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CBC4, 0x16CC40], Level=[0x16CC83]} // Abra +StaticPokemon{}={Species=[0x16CBD4, 0x16CC4B], Level=[0x16CC98]} // Clefairy +StaticPokemon{}={Species=[0x16CBF4, 0x16CC61], Level=[0x16CCC2]} // Scyther +StaticPokemon{}={Species=[0x16CBE4, 0x16CC56], Level=[0x16CCAD]} // Dratini +StaticPokemon{}={Species=[0x16CC04, 0x16CC6C], Level=[0x16CCD7]} // Porygon [Leaf Green (I)] Game=BPGI @@ -1654,31 +1655,31 @@ TextSpeedValuesOffset=0x416824 CatchingTutorialOpponentMonOffset=0x7F7B0 PCPotionOffset=0x3F97EC StaticPokemonSupport=1 -StaticPokemon[]=[0x16C3FA, 0x16C3FD, 0x16C43D, 0x16C471] // Eevee in Celadon Mansion -StaticPokemon[]=[0x16EB94, 0x16EB9B] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x16EBDA, 0x16EBE1] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x1637C2, 0x1637C9] // Electrode in The Power Plant -StaticPokemon[]=[0x163820, 0x163827] // Electrode in The Power Plant -StaticPokemon[]=[0x16374E, 0x163755, 0x1637A9] // Zapdos in the Power Plant -StaticPokemon[]=[0x163142, 0x163149, 0x16319D] // Articuno in the Seafoams -StaticPokemon[]=[0x163AC9, 0x163AD0, 0x163B24] // Moltres in Mt.Ember -StaticPokemon[]=[0x16248C, 0x1624A0, 0x1624E6] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x167FCD, 0x167FD3] // Sleeping Snorlax (12) -StaticPokemon[]=[0x1680D9, 0x1680DF] // Sleeping Snorlax (16) -StaticPokemon[]=[0x163C3E, 0x163C44] // Hypno in Berry Forest -StaticPokemon[]=[0x16526A, 0x16527A, 0x1652C4, 0x1652CF] // Deoxys on Birth Island -StaticPokemon[]=[0x164FC0, 0x164FEF, 0x16503E, 0x165049] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x16510E, 0x165119, 0x165163, 0x16516E] // Lugia on Navel Rock -StaticPokemon[]=[0x16E76D, 0x16E771, 0x16E77C, 0x16E66E] // Old Amber -StaticPokemon[]=[0x16E6E3, 0x16E6E7, 0x16E6F2, 0x16E5F2] // Helix Fossil -StaticPokemon[]=[0x16E728, 0x16E72C, 0x16E737, 0x16E630] // Dome Fossil -StaticPokemon[]=[0x161A5D, 0x161A9F, 0x161AD5] // Lapras in Silph. Co -StaticPokemon[]=[0x16F74E, 0x16F810] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x16CBA0, 0x16CC1C] // Abra -StaticPokemon[]=[0x16CBB0, 0x16CC27] // Clefairy -StaticPokemon[]=[0x16CBC0, 0x16CC53] // Pinsir -StaticPokemon[]=[0x16CBD0, 0x16CC32] // Dratini -StaticPokemon[]=[0x16CBE0, 0x16CC48] // Porygon +StaticPokemon{}={Species=[0x16C3FA, 0x16C3FD, 0x16C43D, 0x16C471], Level=[0x16C3FF]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x16EB94, 0x16EB9B], Level=[0x16EC0E]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x16EBDA, 0x16EBE1], Level=[0x16EC0E]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x1637C2, 0x1637C9], Level=[0x1637C4]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x163820, 0x163827], Level=[0x163822]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16374E, 0x163755, 0x1637A9], Level=[0x163750]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x163142, 0x163149, 0x16319D, 0x170028, 0x170034], Level=[0x163144]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x163AC9, 0x163AD0, 0x163B24], Level=[0x163ACB]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x16248C, 0x1624A0, 0x1624E6], Level=[0x1624A2]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x167FCD, 0x167FD3, 0x160C1E, 0x160C24], Level=[0x167FCF]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x1680D9, 0x1680DF], Level=[0x1680DB]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x163C3E, 0x163C44], Level=[0x163C46]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16526A, 0x16527A, 0x1652C4, 0x1652CF], Level=[0x16527F]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x164FC0, 0x164FEF, 0x16503E, 0x165049], Level=[0x164FF4]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x16510E, 0x165119, 0x165163, 0x16516E], Level=[0x16511E]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x16E76D, 0x16E771, 0x16E77C, 0x16E66E], Level=[0x16E77E]} // Old Amber +StaticPokemon{}={Species=[0x16E6E3, 0x16E6E7, 0x16E6F2, 0x16E5F2], Level=[0x16E6F4]} // Helix Fossil +StaticPokemon{}={Species=[0x16E728, 0x16E72C, 0x16E737, 0x16E630], Level=[0x16E739]} // Dome Fossil +StaticPokemon{}={Species=[0x161A5A, 0x161A5D, 0x161A9F, 0x161AD5], Level=[0x161A5F]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x16F74B, 0x16F74E, 0x16F810], Level=[0x16F750]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x16CBA0, 0x16CC1C], Level=[0x16CC5F]} // Abra +StaticPokemon{}={Species=[0x16CBB0, 0x16CC27], Level=[0x16CC74]} // Clefairy +StaticPokemon{}={Species=[0x16CBC0, 0x16CC53], Level=[0x16CCC8]} // Pinsir +StaticPokemon{}={Species=[0x16CBD0, 0x16CC32], Level=[0x16CC89]} // Dratini +StaticPokemon{}={Species=[0x16CBE0, 0x16CC48], Level=[0x16CCB3]} // Porygon [Ruby (J)] Game=AXVJ @@ -1727,24 +1728,25 @@ CatchingTutorialOpponentMonOffset=0x7E9D8 CatchingTutorialPlayerMonOffset=0x10A606 PCPotionOffset=0x3E177C StaticPokemonSupport=1 -StaticPokemon[]=[0x162B23, 0x162B50] // Lileep -StaticPokemon[]=[0x162B75, 0x162BA2] // Anorith -StaticPokemon[]=[0x174A01, 0x1800AD, 0x1749FA] // Groudon -StaticPokemon[]=[0x171D3A, 0x171D43] // Regirock -StaticPokemon[]=[0x1767CC, 0x1767D5] // Regice -StaticPokemon[]=[0x17687F, 0x176888] // Registeel -StaticPokemon[]=[0x179434, 0x17945A] // Latias (Southern Island) -StaticPokemon[]=[0x176B44, 0x176B4B] // Rayquaza -StaticPokemon[]=[0x1801EC, 0x1801F5] // Kecleons on OW (7) -StaticPokemon[]=[0x153337, 0x153340] // Kecleon w/ Steven -StaticPokemon[]=[0x175ADB, 0x175AE2] // Voltorb 1 -StaticPokemon[]=[0x175AF9, 0x175B00] // Voltorb 2 -StaticPokemon[]=[0x175B17, 0x175B1E] // Voltorb 3 -StaticPokemon[]=[0x18010A, 0x180111] // Electrode 1 -StaticPokemon[]=[0x180128, 0x18012F] // Electrode 2 -StaticPokemon[]=[0x14CF1E] // Wynaut Egg -StaticPokemon[]=[0x16C023, 0x16C033] // Beldum -StaticPokemon[]=[0x17E914] // Castform +StaticPokemon{}={Species=[0x162B23, 0x162B50], Level=[0x162B52]} // Lileep +StaticPokemon{}={Species=[0x162B75, 0x162BA2], Level=[0x162BA4]} // Anorith +StaticPokemon{}={Species=[0x174A01, 0x1800AD, 0x1749FA], Level=[0x1749FC]} // Groudon +StaticPokemon{}={Species=[0x171D3A, 0x171D43], Level=[0x171D45]} // Regirock +StaticPokemon{}={Species=[0x1767CC, 0x1767D5], Level=[0x1767D7]} // Regice +StaticPokemon{}={Species=[0x17687F, 0x176888], Level=[0x17688A]} // Registeel +StaticPokemon{}={Species=[0x179434, 0x17945A], Level=[0x17945C]} // Latias (Southern Island) +StaticPokemon{}={Species=[0x176B44, 0x176B4B], Level=[0x176B46]} // Rayquaza +StaticPokemon{}={Species=[0x1801EC, 0x1801F5], Level=[0x1801F7]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x153337, 0x153340], Level=[0x153342]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x175ADB, 0x175AE2], Level=[0x175ADD]} // Voltorb 1 +StaticPokemon{}={Species=[0x175AF9, 0x175B00], Level=[0x175AFB]} // Voltorb 2 +StaticPokemon{}={Species=[0x175B17, 0x175B1E], Level=[0x175B19]} // Voltorb 3 +StaticPokemon{}={Species=[0x18010A, 0x180111], Level=[0x18010C]} // Electrode 1 +StaticPokemon{}={Species=[0x180128, 0x18012F], Level=[0x18012A]} // Electrode 2 +StaticPokemon{}={Species=[0x14CF1E]} // Wynaut Egg +StaticPokemon{}={Species=[0x16C023, 0x16C033], Level=[0x16C025]} // Beldum +StaticPokemon{}={Species=[0x17E914], Level=[0x17E916]} // Castform +StaticEggPokemonOffsets=[15] [Sapphire (J)] Game=AXPJ @@ -1769,24 +1771,24 @@ TradeTableOffset=0x1E9BD8 RunIndoorsTweakOffset=0xE0D88 PCPotionOffset=0x3E1760 StaticPokemonSupport=1 -StaticPokemon[]=[0x162AB3, 0x162AE0] // Lileep -StaticPokemon[]=[0x162B05, 0x162B32] // Anorith -StaticPokemon[]=[0x174991, 0x18003D, 0x17498A] // Groudon -StaticPokemon[]=[0x171CCA, 0x171CD3] // Regirock -StaticPokemon[]=[0x17675C, 0x176765] // Regice -StaticPokemon[]=[0x17680F, 0x176818] // Registeel -StaticPokemon[]=[0x1793C4, 0x1793EA] // Latias (Southern Island) -StaticPokemon[]=[0x176AD4, 0x176ADB] // Rayquaza -StaticPokemon[]=[0x18017C, 0x180185] // Kecleons on OW (7) -StaticPokemon[]=[0x1532CB, 0x1532D4] // Kecleon w/ Steven -StaticPokemon[]=[0x175A6B, 0x175A72] // Voltorb 1 -StaticPokemon[]=[0x175A89, 0x175A90] // Voltorb 2 -StaticPokemon[]=[0x175AA7, 0x175AAE] // Voltorb 3 -StaticPokemon[]=[0x18009A, 0x1800A1] // Electrode 1 -StaticPokemon[]=[0x1800B8, 0x1800BF] // Electrode 2 -StaticPokemon[]=[0x14CEB2] // Wynaut Egg -StaticPokemon[]=[0x16BFB3, 0x16BFC3] // Beldum -StaticPokemon[]=[0x17E8A4] // Castform +StaticPokemon{}={Species=[0x162AB3, 0x162AE0], Level=[0x162AE2]} // Lileep +StaticPokemon{}={Species=[0x162B05, 0x162B32], Level=[0x162B34]} // Anorith +StaticPokemon{}={Species=[0x174991, 0x18003D, 0x17498A], Level=[0x17498C]} // Kyogre +StaticPokemon{}={Species=[0x171CCA, 0x171CD3], Level=[0x171CD5]} // Regirock +StaticPokemon{}={Species=[0x17675C, 0x176765], Level=[0x176767]} // Regice +StaticPokemon{}={Species=[0x17680F, 0x176818], Level=[0x17681A]} // Registeel +StaticPokemon{}={Species=[0x1793C4, 0x1793EA], Level=[0x1793EC]} // Latios (Southern Island) +StaticPokemon{}={Species=[0x176AD4, 0x176ADB], Level=[0x176AD6]} // Rayquaza +StaticPokemon{}={Species=[0x18017C, 0x180185], Level=[0x180187]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x1532CB, 0x1532D4], Level=[0x1532D6]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x175A6B, 0x175A72], Level=[0x175A6D]} // Voltorb 1 +StaticPokemon{}={Species=[0x175A89, 0x175A90], Level=[0x175A8B]} // Voltorb 2 +StaticPokemon{}={Species=[0x175AA7, 0x175AAE], Level=[0x175AA9]} // Voltorb 3 +StaticPokemon{}={Species=[0x18009A, 0x1800A1], Level=[0x18009C]} // Electrode 1 +StaticPokemon{}={Species=[0x1800B8, 0x1800BF], Level=[0x1800BA]} // Electrode 2 +StaticPokemon{}={Species=[0x14CEB2]} // Wynaut Egg +StaticPokemon{}={Species=[0x16BFB3, 0x16BFC3], Level=[0x16BFB5]} // Beldum +StaticPokemon{}={Species=[0x17E8A4], Level=[0x17E8A6]} // Castform [Emerald (J)] Game=BPEJ @@ -1832,31 +1834,32 @@ CatchingTutorialOpponentMonOffset=0xB016C CatchingTutorialPlayerMonOffset=0x1394E2 PCPotionOffset=0x5C0BE0 StaticPokemonSupport=1 -StaticPokemon[]=[0x2015EE, 0x201613, 0x201616, 0x201698, 0x2016A6] // Lileep -StaticPokemon[]=[0x201600, 0x2016B6, 0x2016B9, 0x20173B, 0x201749] // Anorith -StaticPokemon[]=[0x21D057, 0x21D065, 0x21D0BA] // Kyogre -StaticPokemon[]=[0x21D128, 0x21D136, 0x21D18B] // Groudon -StaticPokemon[]=[0x213E8A, 0x213E93, 0x213ED9] // Regirock -StaticPokemon[]=[0x21B8A1, 0x21B8AA, 0x21B8F0] // Regice -StaticPokemon[]=[0x21B9A3, 0x21B9AC, 0x21B9F2] // Registeel -StaticPokemon[]=[0x21BF95, 0x21BF9E, 0x21BFE4] // Rayquaza -StaticPokemon[]=[0x243407, 0x243410] // Kecleons on OW (7) -StaticPokemon[]=[0x1EDB4E, 0x1EDB57] // Kecleon w/ Steven -StaticPokemon[]=[0x21A80D, 0x21A814] // Voltorb 1 -StaticPokemon[]=[0x21A85A, 0x21A861] // Voltorb 2 -StaticPokemon[]=[0x21A8A7, 0x21A8AE] // Voltorb 3 -StaticPokemon[]=[0x217CF7, 0x217CFE] // Electrode 1 -StaticPokemon[]=[0x217D44, 0x217D4B] // Electrode 2 -StaticPokemon[]=[0x222AB7, 0x222AC5] // Sudowoodo in Battle Frontier -StaticPokemon[]=[0x222944] -StaticPokemon[]=[0x222957] // Latias/Latios on Southern Island -StaticPokemon[]=[0x23B6A0, 0x23B6B0, 0x23B6FA, 0x23B705] // Deoxys on Birth Island -StaticPokemon[]=[0x23B4DB, 0x23B515, 0x23B56A, 0x23B575] // Mew on Faraway Island -StaticPokemon[]=[0x23C1AE, 0x23C1DD, 0x23C22C, 0x23C237] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x23C2F6, 0x23C301, 0x23C34B, 0x23C356] // Lugia on Navel Rock -StaticPokemon[]=[0x1E5912] // Wynaut Egg -StaticPokemon[]=[0x20C8FA, 0x20C8FD, 0x20C97F, 0x20C990] // Beldum -StaticPokemon[]=[0x24161F, 0x241622] // Castform +StaticPokemon{}={Species=[0x2015EE, 0x201613, 0x201616, 0x201698, 0x2016A6], Level=[0x201618]} // Lileep +StaticPokemon{}={Species=[0x201600, 0x2016B6, 0x2016B9, 0x20173B, 0x201749], Level=[0x2016BB]} // Anorith +StaticPokemon{}={Species=[0x21D057, 0x21D065, 0x21D0BA, 0x1E201C, 0x1E209C, 0x1E2158, 0x1E21D8], Level=[0x21D067]} // Kyogre +StaticPokemon{}={Species=[0x21D128, 0x21D136, 0x21D18B, 0x1E205C, 0x1E2198], Level=[0x21D138]} // Groudon +StaticPokemon{}={Species=[0x213E8A, 0x213E93, 0x213ED9], Level=[0x213E95]} // Regirock +StaticPokemon{}={Species=[0x21B8A1, 0x21B8AA, 0x21B8F0], Level=[0x21B8AC]} // Regice +StaticPokemon{}={Species=[0x21B9A3, 0x21B9AC, 0x21B9F2], Level=[0x21B9AE]} // Registeel +StaticPokemon{}={Species=[0x21BF95, 0x21BF9E, 0x21BFE4, 0x21C033, 0x21C051, 0x1E22FA, 0x1E2318, 0x1E23AE, 0x1E23CC], Level=[0x21BFA0]} // Rayquaza +StaticPokemon{}={Species=[0x243407, 0x243410], Level=[0x243412]} // Kecleons on OW (7) +StaticPokemon{}={Species=[0x1EDB4E, 0x1EDB57], Level=[0x1EDB59]} // Kecleon w/ Steven +StaticPokemon{}={Species=[0x21A80D, 0x21A814], Level=[0x21A80F]} // Voltorb 1 +StaticPokemon{}={Species=[0x21A85A, 0x21A861], Level=[0x21A85C]} // Voltorb 2 +StaticPokemon{}={Species=[0x21A8A7, 0x21A8AE], Level=[0x21A8A9]} // Voltorb 3 +StaticPokemon{}={Species=[0x217CF7, 0x217CFE], Level=[0x217CF9]} // Electrode 1 +StaticPokemon{}={Species=[0x217D44, 0x217D4B], Level=[0x217D46]} // Electrode 2 +StaticPokemon{}={Species=[0x222AB7, 0x222AC5], Level=[0x222AC7]} // Sudowoodo in Battle Frontier +StaticPokemon{}={Species=[0x22282F, 0x222944], Level=[0x222949]} // Latios on Southern Island +StaticPokemon{}={Species=[0x22283A, 0x222957], Level=[0x22295C]} // Latias on Southern Island +StaticPokemon{}={Species=[0x23B6A0, 0x23B6B0, 0x23B6FA, 0x23B705], Level=[0x23B6B5]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x23B4DB, 0x23B515, 0x23B56A, 0x23B575], Level=[0x23B51A]} // Mew on Faraway Island +StaticPokemon{}={Species=[0x23C1AE, 0x23C1DD, 0x23C22C, 0x23C237], Level=[0x23C1E2]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x23C2F6, 0x23C301, 0x23C34B, 0x23C356], Level=[0x23C306]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x1E5912]} // Wynaut Egg +StaticPokemon{}={Species=[0x20C8FA, 0x20C8FD, 0x20C97F, 0x20C990], Level=[0x20C8FF]} // Beldum +StaticPokemon{}={Species=[0x24161F, 0x241622, 0x2416AE], Level=[0x241624]} // Castform +StaticEggPokemonOffsets=[22] [Emerald (T-Eng)] Game=BPET @@ -1909,31 +1912,31 @@ TextSpeedValuesOffset=0x3E30CC CatchingTutorialOpponentMonOffset=0x7EFB4 PCPotionOffset=0x3C83F8 StaticPokemonSupport=1 -StaticPokemon[]=[0x184BB8, 0x184BBB, 0x184BFB, 0x184C2F] // Eevee in Celadon Mansion -StaticPokemon[]=[0x18A2E0, 0x18A2E7] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x18A326, 0x18A32D] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x16C18B, 0x16C192] // Electrode in The Power Plant -StaticPokemon[]=[0x16C1E9, 0x16C1F0] // Electrode in The Power Plant -StaticPokemon[]=[0x16C117, 0x16C11E, 0x16C172] // Zapdos in the Power Plant -StaticPokemon[]=[0x16B2B8, 0x16B2BF, 0x16B313] // Articuno in the Seafoams -StaticPokemon[]=[0x16C846, 0x16C84D, 0x16C8A1] // Moltres in Mt.Ember -StaticPokemon[]=[0x1693E1, 0x1693F5, 0x16943B] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x1769F0, 0x1769F7] // Sleeping Snorlax (12) -StaticPokemon[]=[0x177A5E, 0x177A65] // Sleeping Snorlax (16) -StaticPokemon[]=[0x16C9CA, 0x16C9D0] // Hypno in Berry Forest -StaticPokemon[]=[0x16F243, 0x16F253, 0x16F29D, 0x16F2A8] // Deoxys on Birth Island -StaticPokemon[]=[0x16EF99, 0x16EFC8, 0x16F017, 0x16F022] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x16F0E7, 0x16F0F2, 0x16F13C, 0x16F147] // Lugia on Navel Rock -StaticPokemon[]=[0x18959C, 0x1895A0, 0x1895AB, 0x18949D] // Old Amber -StaticPokemon[]=[0x189512, 0x189516, 0x189521, 0x189421] // Helix Fossil -StaticPokemon[]=[0x189557, 0x18955B, 0x189566, 0x18945F] // Dome Fossil -StaticPokemon[]=[0x1675D8, 0x167617, 0x16764A] // Lapras in Silph. Co -StaticPokemon[]=[0x18C668, 0x18C727] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x185A8A, 0x185B06] // Abra -StaticPokemon[]=[0x185A9A, 0x185B11] // Clefairy -StaticPokemon[]=[0x185ABA, 0x185B27] // Scyther -StaticPokemon[]=[0x185AAA, 0x185B1C] // Dratini -StaticPokemon[]=[0x185ACA, 0x185B32] // Porygon +StaticPokemon{}={Species=[0x184BB8, 0x184BBB, 0x184BFB, 0x184C2F], Level=[0x184BBD]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x18A2E0, 0x18A2E7], Level=[0x18A35A]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x18A326, 0x18A32D], Level=[0x18A35A]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x16C18B, 0x16C192], Level=[0x16C18D]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16C1E9, 0x16C1F0], Level=[0x16C1EB]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16C117, 0x16C11E, 0x16C172], Level=[0x16C119]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x16B2B8, 0x16B2BF, 0x16B313, 0x18DE82, 0x18DE8E], Level=[0x16B2BA]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x16C846, 0x16C84D, 0x16C8A1], Level=[0x16C848]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x1693E1, 0x1693F5, 0x16943B], Level=[0x1693F7]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x1769F0, 0x1769F7, 0x16505E, 0x165064], Level=[0x1769F2]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x177A5E, 0x177A65], Level=[0x177A60]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x16C9CA, 0x16C9D0], Level=[0x16C9D2]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16F243, 0x16F253, 0x16F29D, 0x16F2A8], Level=[0x16F258]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x16EF99, 0x16EFC8, 0x16F017, 0x16F022], Level=[0x16EFCD]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x16F0E7, 0x16F0F2, 0x16F13C, 0x16F147], Level=[0x16F0F7]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x18959C, 0x1895A0, 0x1895AB, 0x18949D], Level=[0x1895AD]} // Old Amber +StaticPokemon{}={Species=[0x189512, 0x189516, 0x189521, 0x189421], Level=[0x189523]} // Helix Fossil +StaticPokemon{}={Species=[0x189557, 0x18955B, 0x189566, 0x18945F], Level=[0x189568]} // Dome Fossil +StaticPokemon{}={Species=[0x1675D5, 0x1675D8, 0x167617, 0x16764A], Level=[0x1675DA]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x18C665, 0x18C668, 0x18C727], Level=[0x18C66A]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x185A8A, 0x185B06], Level=[0x185B49]} // Abra +StaticPokemon{}={Species=[0x185A9A, 0x185B11], Level=[0x185B5E]} // Clefairy +StaticPokemon{}={Species=[0x185ABA, 0x185B27], Level=[0x185B88]} // Scyther +StaticPokemon{}={Species=[0x185AAA, 0x185B1C], Level=[0x185B73]} // Dratini +StaticPokemon{}={Species=[0x185ACA, 0x185B32], Level=[0x185B9D]} // Porygon [Fire Red (J) 1.1] Game=BPRJ @@ -1959,31 +1962,31 @@ TextSpeedValuesOffset=0x3DEA24 CatchingTutorialOpponentMonOffset=0x7EF44 PCPotionOffset=0x3C3D50 StaticPokemonSupport=1 -StaticPokemon[]=[0x184774, 0x184777, 0x1847B7, 0x1847EB] // Eevee in Celadon Mansion -StaticPokemon[]=[0x189E9C, 0x189EA3] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x189EE2, 0x189EE9] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x16BD20, 0x16BD27] // Electrode in The Power Plant -StaticPokemon[]=[0x16BD7E, 0x16BD85] // Electrode in The Power Plant -StaticPokemon[]=[0x16BCAC, 0x16BCB3, 0x16BD07] // Zapdos in the Power Plant -StaticPokemon[]=[0x16AE48, 0x16AE4F, 0x16AEA3] // Articuno in the Seafoams -StaticPokemon[]=[0x16C3DB, 0x16C3E2, 0x16C436] // Moltres in Mt.Ember -StaticPokemon[]=[0x168F71, 0x168F85, 0x168FCB] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x1765A4, 0x1765AB] // Sleeping Snorlax (12) -StaticPokemon[]=[0x177612, 0x177619] // Sleeping Snorlax (16) -StaticPokemon[]=[0x16C55F, 0x16C565] // Hypno in Berry Forest -StaticPokemon[]=[0x16EDDB, 0x16EDEB, 0x16EE35, 0x16EE40] // Deoxys on Birth Island -StaticPokemon[]=[0x16EB31, 0x16EB60, 0x16EBAF, 0x16EBBA] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x16EC7F, 0x16EC8A, 0x16ECD4, 0x16ECDF] // Lugia on Navel Rock -StaticPokemon[]=[0x189158, 0x18915C, 0x189167, 0x189059] // Old Amber -StaticPokemon[]=[0x1890CE, 0x1890D2, 0x1890DD, 0x188FDD] // Helix Fossil -StaticPokemon[]=[0x189113, 0x189117, 0x189122, 0x18901B] // Dome Fossil -StaticPokemon[]=[0x167163, 0x1671A2, 0x1671D5] // Lapras in Silph. Co -StaticPokemon[]=[0x18C224, 0x18C2E3] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x185646, 0x1856C2] // Abra -StaticPokemon[]=[0x185656, 0x1856CD] // Clefairy -StaticPokemon[]=[0x185676, 0x1856E3] // Scyther -StaticPokemon[]=[0x185666, 0x1856D8] // Dratini -StaticPokemon[]=[0x185686, 0x1856EE] // Porygon +StaticPokemon{}={Species=[0x184774, 0x184777, 0x1847B7, 0x1847EB], Level=[0x184779]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x189E9C, 0x189EA3], Level=[0x189F16]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x189EE2, 0x189EE9], Level=[0x189F16]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x16BD20, 0x16BD27], Level=[0x16BD22]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16BD7E, 0x16BD85], Level=[0x16BD80]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16BCAC, 0x16BCB3, 0x16BD07], Level=[0x16BCAE]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x16AE48, 0x16AE4F, 0x16AEA3, 0x18DA3E, 0x18DA4A], Level=[0x16AE4A]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x16C3DB, 0x16C3E2, 0x16C436], Level=[0x16C3DD]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x168F71, 0x168F85, 0x168FCB], Level=[0x168F87]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x1765A4, 0x1765AB, 0x164BE4, 0x164BEA], Level=[0x1765A6]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x177612, 0x177619], Level=[0x177614]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x16C55F, 0x16C565], Level=[0x16C567]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16EDDB, 0x16EDEB, 0x16EE35, 0x16EE40], Level=[0x16EDF0]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x16EB31, 0x16EB60, 0x16EBAF, 0x16EBBA], Level=[0x16EB65]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x16EC7F, 0x16EC8A, 0x16ECD4, 0x16ECDF], Level=[0x16EC8F]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x189158, 0x18915C, 0x189167, 0x189059], Level=[0x189169]} // Old Amber +StaticPokemon{}={Species=[0x1890CE, 0x1890D2, 0x1890DD, 0x188FDD], Level=[0x1890DF]} // Helix Fossil +StaticPokemon{}={Species=[0x189113, 0x189117, 0x189122, 0x18901B], Level=[0x189124]} // Dome Fossil +StaticPokemon{}={Species=[0x167160, 0x167163, 0x1671A2, 0x1671D5], Level=[0x167165]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x18C221, 0x18C224, 0x18C2E3], Level=[0x18C226]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x185646, 0x1856C2], Level=[0x185705]} // Abra +StaticPokemon{}={Species=[0x185656, 0x1856CD], Level=[0x18571A]} // Clefairy +StaticPokemon{}={Species=[0x185676, 0x1856E3], Level=[0x185744]} // Scyther +StaticPokemon{}={Species=[0x185666, 0x1856D8], Level=[0x18572F]} // Dratini +StaticPokemon{}={Species=[0x185686, 0x1856EE], Level=[0x185759]} // Porygon [Leaf Green (J)] Game=BPGJ @@ -2010,28 +2013,28 @@ TextSpeedValuesOffset=0x3E2F3C CatchingTutorialOpponentMonOffset=0x7EF88 PCPotionOffset=0x3C8268 StaticPokemonSupport=1 -StaticPokemon[]=[0x184B94, 0x184B97, 0x184BD7, 0x184C0B] // Eevee in Celadon Mansion -StaticPokemon[]=[0x18A2BC, 0x18A2C3] // Hitmonlee in Fighting Dojo -StaticPokemon[]=[0x18A302, 0x18A309] // Hitmonchan in Fighting Dojo -StaticPokemon[]=[0x16C167, 0x16C16E] // Electrode in The Power Plant -StaticPokemon[]=[0x16C1C5, 0x16C1CC] // Electrode in The Power Plant -StaticPokemon[]=[0x16C0F3, 0x16C0FA, 0x16C14E] // Zapdos in the Power Plant -StaticPokemon[]=[0x16B294, 0x16B29B, 0x16B2EF] // Articuno in the Seafoams -StaticPokemon[]=[0x16C822, 0x16C829, 0x16C87D] // Moltres in Mt.Ember -StaticPokemon[]=[0x1693BD, 0x1693D1, 0x169417] // Mewtwo in Unk. Dungeon -StaticPokemon[]=[0x1769CC, 0x1769D3] // Sleeping Snorlax (12) -StaticPokemon[]=[0x177A3A, 0x177A41] // Sleeping Snorlax (16) -StaticPokemon[]=[0x16C9A6, 0x16C9AC] // Hypno in Berry Forest -StaticPokemon[]=[0x16F21F, 0x16F22F, 0x16F279, 0x16F284] // Deoxys on Birth Island -StaticPokemon[]=[0x16EF75, 0x16EFA4, 0x16EFF3, 0x16EFFE] // Ho-Oh on Navel Rock -StaticPokemon[]=[0x16F0C3, 0x16F0CE, 0x16F118, 0x16F123] // Lugia on Navel Rock -StaticPokemon[]=[0x189578, 0x18957C, 0x189587, 0x189479] // Old Amber -StaticPokemon[]=[0x1894EE, 0x1894F2, 0x1894FD, 0x1893FD] // Helix Fossil -StaticPokemon[]=[0x189533, 0x189537, 0x189542, 0x18943B] // Dome Fossil -StaticPokemon[]=[0x1675B4, 0x1675F3, 0x167626] // Lapras in Silph. Co -StaticPokemon[]=[0x18C644, 0x18C703] // Magikarp in Mt.Moon Center -StaticPokemon[]=[0x185A66, 0x185AE2] -StaticPokemon[]=[0x185A76, 0x185AED] -StaticPokemon[]=[0x185A86, 0x185B19] -StaticPokemon[]=[0x185A96, 0x185AF8] -StaticPokemon[]=[0x185AA6, 0x185B0E] +StaticPokemon{}={Species=[0x184B94, 0x184B97, 0x184BD7, 0x184C0B], Level=[0x184B99]} // Eevee in Celadon Condominiums +StaticPokemon{}={Species=[0x18A2BC, 0x18A2C3], Level=[0x18A336]} // Hitmonlee in Fighting Dojo +StaticPokemon{}={Species=[0x18A302, 0x18A309], Level=[0x18A336]} // Hitmonchan in Fighting Dojo +StaticPokemon{}={Species=[0x16C167, 0x16C16E], Level=[0x16C169]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16C1C5, 0x16C1CC], Level=[0x16C1C7]} // Electrode in The Power Plant +StaticPokemon{}={Species=[0x16C0F3, 0x16C0FA, 0x16C14E], Level=[0x16C0F5]} // Zapdos in The Power Plant +StaticPokemon{}={Species=[0x16B294, 0x16B29B, 0x16B2EF, 0x18DE5E, 0x18DE6A], Level=[0x16B296]} // Articuno (Seafoam and Route 15 Gatehouse) +StaticPokemon{}={Species=[0x16C822, 0x16C829, 0x16C87D], Level=[0x16C824]} // Moltres in Mt.Ember +StaticPokemon{}={Species=[0x1693BD, 0x1693D1, 0x169417], Level=[0x1693D3]} // Mewtwo in Unk. Dungeon +StaticPokemon{}={Species=[0x1769CC, 0x1769D3, 0x16503A, 0x165040], Level=[0x1769CE]} // Snorlax (Route 12 and S.S. Anne) +StaticPokemon{}={Species=[0x177A3A, 0x177A41], Level=[0x177A3C]} // Snorlax (Route 16) +StaticPokemon{}={Species=[0x16C9A6, 0x16C9AC], Level=[0x16C9AE]} // Hypno in Berry Forest +StaticPokemon{}={Species=[0x16F21F, 0x16F22F, 0x16F279, 0x16F284], Level=[0x16F234]} // Deoxys on Birth Island +StaticPokemon{}={Species=[0x16EF75, 0x16EFA4, 0x16EFF3, 0x16EFFE], Level=[0x16EFA9]} // Ho-Oh on Navel Rock +StaticPokemon{}={Species=[0x16F0C3, 0x16F0CE, 0x16F118, 0x16F123], Level=[0x16F0D3]} // Lugia on Navel Rock +StaticPokemon{}={Species=[0x189578, 0x18957C, 0x189587, 0x189479], Level=[0x189589]} // Old Amber +StaticPokemon{}={Species=[0x1894EE, 0x1894F2, 0x1894FD, 0x1893FD], Level=[0x1894FF]} // Helix Fossil +StaticPokemon{}={Species=[0x189533, 0x189537, 0x189542, 0x18943B], Level=[0x189544]} // Dome Fossil +StaticPokemon{}={Species=[0x1675B1, 0x1675B4, 0x1675F3, 0x167626], Level=[0x1675B6]} // Lapras in Silph. Co +StaticPokemon{}={Species=[0x18C641, 0x18C644, 0x18C703], Level=[0x18C646]} // Magikarp in Mt.Moon Center +StaticPokemon{}={Species=[0x185A66, 0x185AE2], Level=[0x185B25]} // Abra +StaticPokemon{}={Species=[0x185A76, 0x185AED], Level=[0x185B3A]} // Clefairy +StaticPokemon{}={Species=[0x185A86, 0x185B19], Level=[0x185B8E]} // Pinsir +StaticPokemon{}={Species=[0x185A96, 0x185AF8], Level=[0x185B4F]} // Dratini +StaticPokemon{}={Species=[0x185AA6, 0x185B0E], Level=[0x185B79]} // Porygon diff --git a/src/com/dabomstew/pkrandom/config/gen4_offsets.ini b/src/com/dabomstew/pkrandom/config/gen4_offsets.ini index 4d69de4..a0e0a06 100755 --- a/src/com/dabomstew/pkrandom/config/gen4_offsets.ini +++ b/src/com/dabomstew/pkrandom/config/gen4_offsets.ini @@ -48,6 +48,8 @@ PokemonGraphics=poketool/pokegra/pokegra.narc StaticPokemonSupport=1 HoneyTreeOffsets=[2, 3, 4] FossilTableOffset=0xF450C +FossilLevelScriptNumber=63 +FossilLevelOffset=0x41A PokedexAreaData=application/zukanlist/zkn_data/zukan_enc_diamond.narc PokedexAreaDataDungeonIndex=4 PokedexAreaDataDungeonSpecialPreNationalIndex=1489 @@ -55,26 +57,26 @@ PokedexAreaDataDungeonSpecialPostNationalIndex=1984 PokedexAreaDataOverworldIndex=2479 PokedexAreaDataOverworldSpecialPreNationalIndex=3964 PokedexAreaDataOverworldSpecialPostNationalIndex=4459 -StaticPokemon[]=[230:0x4AE, 230:0xE9A, 230:0xECE, 230:0x1201, 230:0x1235] // Dialga -StaticPokemon[]=[230:0x4B4, 230:0xEA0, 230:0xED4, 230:0x1207, 230:0x123B] // Palkia -StaticPokemon[]=[352:0x39, 352:0x48] // Uxie -StaticPokemon[]=[348:0x81, 348:0x90] // Azelf -StaticPokemon[]=[278:0x16F, 278:0x17E] // Heatran -StaticPokemon[]=[309:0x88, 309:0x94] // Regigigas -StaticPokemon[]=[283:0x50, 283:0x5F] // Giratina -StaticPokemon[]=[354:0x40] // Darkrai -StaticPokemon[]=[302:0x39, 302:0x48] // Shaymin -StaticPokemon[]=[232:0x45, 232:0x53, 232:0x62] // Arceus -StaticPokemon[]=[112:0xB5] // Eevee -StaticPokemon[]=[90:0x568] // Happiny -StaticPokemon[]=[321:0x332] // Riolu -StaticPokemon[]=[210:0x1C5, 210:0x1D6] // Drifloon -StaticPokemon[]=[329:0x74, 329:0x80] // Rotom -StaticPokemon[]=[406:0x153, 406:0x160] // Spiritomb +StaticPokemon{}={Species=[230:0x4AE, 230:0xE9A, 230:0xECE, 230:0x1201, 230:0x1235], Level=[230:0xEE4, 230:0x124B]} // Dialga +StaticPokemon{}={Species=[230:0x4B4, 230:0xEA0, 230:0xED4, 230:0x1207, 230:0x123B], Level=[230:0xEE4, 230:0x124B]} // Palkia +StaticPokemon{}={Species=[352:0x39, 352:0x48], Level=[352:0x4A]} // Uxie +StaticPokemon{}={Species=[348:0x81, 348:0x90], Level=[348:0x92]} // Azelf +StaticPokemon{}={Species=[278:0x16F, 278:0x17E], Level=[278:0x180]} // Heatran +StaticPokemon{}={Species=[309:0x88, 309:0x94], Level=[309:0x96]} // Regigigas +StaticPokemon{}={Species=[283:0x50, 283:0x5F], Level=[283:0x61]} // Giratina +StaticPokemon{}={Species=[354:0x40], Level=[354:0x42]} // Darkrai +StaticPokemon{}={Species=[302:0x39, 302:0x48], Level=[302:0x4A]} // Shaymin +StaticPokemon{}={Species=[232:0x45, 232:0x53, 232:0x62], Level=[232:0x64]} // Arceus +StaticPokemon{}={Species=[112:0xB5], Level=[112:0xB7]} // Eevee +StaticPokemon{}={Species=[90:0x568]} // Happiny (egg) +StaticPokemon{}={Species=[321:0x332]} // Riolu (egg) +StaticPokemon{}={Species=[210:0x1C5, 210:0x1D6], Level=[210:0x1D8]} // Drifloon +StaticPokemon{}={Species=[329:0x74, 329:0x80], Level=[329:0x82]} // Rotom +StaticPokemon{}={Species=[406:0x153, 406:0x160], Level=[406:0x162]} // Spiritomb ShopCount=28 SkipShops=[12,13,15,16,17,18,19,20,21,22,23] MainGameShops=[0,1,2,3,4,5,6,7,8,9,10,11,14,24,25,26,27] - +StaticEggPokemonOffsets=[11, 12] [Pearl (U)] Game=APAE @@ -131,35 +133,38 @@ MapNamesTextOffset=433 CatchingTutorialOpponentMonOffset=0x520A0 HoneyTreeOffsets=[2, 3, 4] FossilTableOffset=0xEBFFC +FossilLevelScriptNumber=65 +FossilLevelOffset=0x426 FastestTextTweak=plat_instant_text NationalDexAtStartTweak=plat_national_dex NationalDexScriptOffset=1064 PokemonGraphics=poketool/pokegra/pl_pokegra.narc PokedexAreaData=application/zukanlist/zkn_data/zukan_enc_platinum.narc StaticPokemonSupport=1 -StaticPokemon[]=[291:0x43, 291:0x52, 389:0xCC, 389:0xDD] // Giratina -StaticPokemon[]=[361:0x39, 361:0x48] // Uxie -StaticPokemon[]=[357:0x81, 357:0x90] // Azelf -StaticPokemon[]=[239:0xAB, 239:0xB8] // Dialga -StaticPokemon[]=[240:0xAB, 240:0xB8] // Palkia -StaticPokemon[]=[286:0x103, 286:0x112] // Heatran -StaticPokemon[]=[317:0x88, 317:0x94] // Regigigas -StaticPokemon[]=[392:0xB0, 392:0xBD] // Registeel -StaticPokemon[]=[394:0xB0, 394:0xBD] // Regice -StaticPokemon[]=[396:0xB0, 396:0xBD] // Regirock -StaticPokemon[]=[363:0x8E] // Darkrai -StaticPokemon[]=[310:0x87, 310:0x96] // Shaymin -StaticPokemon[]=[238:0x6C, 238:0x7A, 238:0x89] // Arceus -StaticPokemon[]=[71:0xE5B] // Togepi -StaticPokemon[]=[117:0x79] // Eevee -StaticPokemon[]=[153:0x7D] // Porygon -StaticPokemon[]=[329:0x338] // Riolu -StaticPokemon[]=[216:0x1C9, 216:0x1DA] // Drifloon -StaticPokemon[]=[337:0x51, 337:0x5D] // Rotom -StaticPokemon[]=[441:0x153, 441:0x160] // Spiritomb +StaticPokemon{}={Species=[291:0x43, 291:0x52, 389:0xCC, 389:0xDD], Level=[291:0x54, 389:0xDF]} // Giratina +StaticPokemon{}={Species=[361:0x39, 361:0x48], Level=[361:0x4A]} // Uxie +StaticPokemon{}={Species=[357:0x81, 357:0x90], Level=[357:0x92]} // Azelf +StaticPokemon{}={Species=[239:0xAB, 239:0xB8], Level=[239:0xBA]} // Dialga +StaticPokemon{}={Species=[240:0xAB, 240:0xB8], Level=[240:0xBA]} // Palkia +StaticPokemon{}={Species=[286:0x103, 286:0x112], Level=[286:0x114]} // Heatran +StaticPokemon{}={Species=[317:0x88, 317:0x94], Level=[317:0x96]} // Regigigas +StaticPokemon{}={Species=[392:0xB0, 392:0xBD], Level=[392:0xBF]} // Registeel +StaticPokemon{}={Species=[394:0xB0, 394:0xBD], Level=[394:0xBF]} // Regice +StaticPokemon{}={Species=[396:0xB0, 396:0xBD], Level=[396:0xBF]} // Regirock +StaticPokemon{}={Species=[363:0x8E], Level=[363:0x90]} // Darkrai +StaticPokemon{}={Species=[310:0x87, 310:0x96], Level=[310:0x98]} // Shaymin +StaticPokemon{}={Species=[238:0x6C, 238:0x7A, 238:0x89], Level=[238:0x8B]} // Arceus +StaticPokemon{}={Species=[71:0xE5B]} // Togepi (egg) +StaticPokemon{}={Species=[117:0x79], Level=[117:0x7B]} // Eevee +StaticPokemon{}={Species=[153:0x7D], Level=[153:0x7F]} // Porygon +StaticPokemon{}={Species=[329:0x338]} // Riolu (egg) +StaticPokemon{}={Species=[216:0x1C9, 216:0x1DA], Level=[216:0x1DC]} // Drifloon +StaticPokemon{}={Species=[337:0x51, 337:0x5D], Level=[337:0x5F]} // Rotom +StaticPokemon{}={Species=[441:0x153, 441:0x160], Level=[441:0x162]} // Spiritomb ShopCount=29 SkipShops=[13,15,16,17,18,19,20,21,22,23,24] MainGameShops=[0,1,2,3,4,5,6,7,8,9,10,11,12,14,25,26,27,28] +StaticEggPokemonOffsets=[13, 16] [HeartGold (U)] Game=IPKE @@ -208,6 +213,8 @@ MapTableNameIndexSize=1 MapNamesTextOffset=279 FossilTableOvlNumber=21 FossilTableOffset=0x130 +FossilLevelScriptNumber=755 +FossilLevelOffset=0x58D CatchingTutorialPlayerMonOffset=0x51B78 CatchingTutorialOpponentMonOffset=0x51B9A FastestTextTweak=hgss_instant_text @@ -221,49 +228,52 @@ PokedexAreaDataOverworldIndex=1487 PokedexAreaDataDungeonSpecialIndex=2972 PokedexAreaDataOverworldSpecialIndex=3467 StaticPokemonSupport=1 -StaticPokemon[]=[104:0x108] // Lugia -StaticPokemon[]=[21:0xD1] // Ho-oh -StaticPokemon[]=[216:0x58F, 216:0x6E8, 216:0x708, 24:0x67, 24:0xB4, 24:0x314, 24:0x320, 24:0xD4] // Suicune -StaticPokemon[]=[14:0x2F, 14:0x3B] // Articuno -StaticPokemon[]=[191:0x26B, 191:0x277] // Zapdos -StaticPokemon[]=[106:0x2F, 106:0x3B] // Moltres -StaticPokemon[]=[11:0x2F, 11:0x3B] // Mewtwo -StaticPokemon[]=[134:0xA3, 134:0xB4] // Kyogre -StaticPokemon[]=[133:0xA3, 133:0xB4] // Groudon -StaticPokemon[]=[135:0xDA, 135:0xEB, 135:0x62, 135:0x98] // Rayquaza -StaticPokemon[]=[131:0x43A, 131:0x67C, 131:0x872, 131:0x8E4] // Dialga -StaticPokemon[]=[131:0x4A2, 131:0x695, 131:0x88D, 131:0x8FA] // Palkia -StaticPokemon[]=[131:0x50A] // Giratina -StaticPokemon[]=[750:0x4CC] // Latias -StaticPokemon[]=[750:0x4B7] // Latios -StaticPokemon[]=[243:0x2FD, 243:0x14B] // Sudowoodo -StaticPokemon[]=[58:0x61, 58:0x6D] // Lapras -StaticPokemon[]=[938:0x3CD, 938:0x3DE] // Red Gyarados -StaticPokemon[]=[197:0x6C, 197:0x7D] // Snorlax -StaticPokemon[]=[89:0xF3D, 89:0x1078, 89:0x10A5, 89:0x112C, 89:0x11B1] // Koffing @ Rocket Base -StaticPokemon[]=[89:0xF6A, 89:0xFC4, 89:0x101E, 89:0x104B, 89:0x1159, 89:0x1186] // Voltorb @ Rocket Base -StaticPokemon[]=[89:0xF97, 89:0xFF1, 89:0x10D2, 89:0x10FF, 89:0x11E0] // Geodude @ Rocket Base -StaticPokemon[]=[90:0x784] // Electrode @ Rocket Base (1) -StaticPokemon[]=[90:0x7E8] // Electrode @ Rocket Base (2) -StaticPokemon[]=[90:0x84C] // Electrode @ Rocket Base (3) -StaticPokemon[]=[892:0x61] // Eevee -StaticPokemon[]=[98:0x71] // Tyrogue -StaticPokemon[]=[112:0x4D1] // Dratini -StaticPokemon[]=[740:0x66F, 740:0x675, 740:0x695, 740:0x818, 740:0x8BC] // Bulbasaur -StaticPokemon[]=[740:0x71D, 740:0x723, 740:0x743, 740:0x833, 740:0x8D7] // Squirtle -StaticPokemon[]=[740:0x7CB, 740:0x7D1, 740:0x7F1] // Charmander -StaticPokemon[]=[837:0x28F] // Treecko -StaticPokemon[]=[837:0x2A8] // Torchic -StaticPokemon[]=[837:0x2B4] // Mudkipz -StaticPokemon[]=[860:0x146, 860:0x14D] // Primo's Mareep Egg -StaticPokemon[]=[860:0x180, 860:0x187] // Primo's Wooper Egg -StaticPokemon[]=[860:0x1BA, 860:0x1C1] // Primo's Slugma Egg -StaticPokemon[]=[878:0x90] // Secret Tentacool +StaticPokemon{}={Species=[104:0x108], Level=[104:0x138, 104:0x12C]} // Lugia +StaticPokemon{}={Species=[21:0xD1], Level=[21:0xF5, 21:0x101]} // Ho-oh +StaticPokemon{}={Species=[216:0x58F, 216:0x6E8, 216:0x708, 24:0x67, 24:0xB4, 24:0x314, 24:0x320, 24:0xD4], Level=[216:0x70A, 24:0x322]} // Suicune +StaticPokemon{}={Species=[14:0x2F, 14:0x3B], Level=[14:0x3D]} // Articuno +StaticPokemon{}={Species=[191:0x26B, 191:0x277], Level=[191:0x279]} // Zapdos +StaticPokemon{}={Species=[106:0x2F, 106:0x3B], Level=[106:0x3D]} // Moltres +StaticPokemon{}={Species=[11:0x2F, 11:0x3B], Level=[11:0x3D]} // Mewtwo +StaticPokemon{}={Species=[134:0xA3, 134:0xB4], Level=[134:0xB6]} // Kyogre +StaticPokemon{}={Species=[133:0xA3, 133:0xB4], Level=[133:0xB6]} // Groudon +StaticPokemon{}={Species=[135:0xDA, 135:0xEB, 135:0x62, 135:0x98], Level=[135:0xED]} // Rayquaza +StaticPokemon{}={Species=[131:0x43A, 131:0x67C, 131:0x872, 131:0x8E4, 131:0x958, 131:0x963], Level=[131:0x965]} // Dialga +StaticPokemon{}={Species=[131:0x4A2, 131:0x695, 131:0x88D, 131:0x8FA, 131:0x97F, 131:0x98A], Level=[131:0x98C]} // Palkia +StaticPokemon{}={Species=[131:0x50A, 131:0x9A4], Level=[131:0x9A6], Forme=[131:0x9AA]} // Giratina-O +StaticPokemon{}={Species=[750:0x4CC], Level=[750:0x4E3]} // Latias +StaticPokemon{}={Species=[750:0x4B7], Level=[750:0x4E3]} // Latios +StaticPokemon{}={Species=[243:0x2FD, 243:0x14B], Level=[243:0x2FF, 243:0x14D]} // Sudowoodo +StaticPokemon{}={Species=[58:0x61, 58:0x6D], Level=[58:0x6F]} // Lapras +StaticPokemon{}={Species=[938:0x3CD, 938:0x3DE], Level=[938:0x3E0]} // Red Gyarados +StaticPokemon{}={Species=[197:0x6C, 197:0x7D, 199:0x26A, 199:0x27B], Level=[197:0x7F, 199:0x27D]} // Snorlax +StaticPokemon{}={Species=[89:0xF3D, 89:0x1078, 89:0x10A5, 89:0x112C, 89:0x11B3], Level=[89:0xF3F, 89:0x107A, 89:0x10A7, 89:0x112E, 89:0x11B5]} // Koffing @ Rocket Base +StaticPokemon{}={Species=[89:0xF6A, 89:0xFC4, 89:0x101E, 89:0x104B, 89:0x1159, 89:0x1186], Level=[89:0xF6C, 89:0xFC6, 89:0x1020, 89:0x104D, 89:0x115B, 89:0x1188]} // Voltorb @ Rocket Base +StaticPokemon{}={Species=[89:0xF97, 89:0xFF1, 89:0x10D2, 89:0x10FF, 89:0x11E0], Level=[89:0xF99, 89:0xFF3, 89:0x10D4, 89:0x1101, 89:0x11E2]} // Geodude @ Rocket Base +StaticPokemon{}={Species=[90:0x784], Level=[90:0x786]} // Electrode @ Rocket Base (1) +StaticPokemon{}={Species=[90:0x7E8], Level=[90:0x7EA]} // Electrode @ Rocket Base (2) +StaticPokemon{}={Species=[90:0x84C], Level=[90:0x84E]} // Electrode @ Rocket Base (3) +StaticPokemon{}={Species=[892:0x61], Level=[892:0x63]} // Eevee +StaticPokemon{}={Species=[98:0x71], Level=[98:0x73]} // Tyrogue +StaticPokemon{}={Species=[112:0x4D1], Level=[112:0x4D3]} // Dratini +StaticPokemon{}={Species=[740:0x66F, 740:0x675, 740:0x695, 740:0x818, 740:0x8BC], Level=[740:0x86D]} // Bulbasaur +StaticPokemon{}={Species=[740:0x71D, 740:0x723, 740:0x743, 740:0x833, 740:0x8D7], Level=[740:0x86D]} // Squirtle +StaticPokemon{}={Species=[740:0x7CB, 740:0x7D1, 740:0x7F1], Level=[740:0x86D]} // Charmander +StaticPokemon{}={Species=[837:0x28F], Level=[837:0x2D1]} // Treecko +StaticPokemon{}={Species=[837:0x2A8], Level=[837:0x2D1]} // Torchic +StaticPokemon{}={Species=[837:0x2B4], Level=[837:0x2D1]} // Mudkip +StaticPokemon{}={Species=[860:0x146, 860:0x14D]]} // Primo's Mareep Egg +StaticPokemon{}={Species=[860:0x180, 860:0x187]]} // Primo's Wooper Egg +StaticPokemon{}={Species=[860:0x1BA, 860:0x1C1]]} // Primo's Slugma Egg +StaticPokemon{}={Species=[878:0x90], Level=[878:0x92]} // Secret Tentacool StaticPokemonTrades=[6,7] // Shuckie & Kenya +StaticPokemonTradeScripts=[880,241] +StaticPokemonTradeLevelOffsets=[0x80,0xA7] MysteryEggOffset=0x1C80E // Togepi Mystery Egg ShopCount=40 SkipShops=[17,18,22,23,24,25,26,27,28,29,30,37,39] MainGameShops=[0,2,5,6,7,12,14,16,19,31,33,34,36] +StaticEggPokemonOffsets=[34, 35, 36] [SoulSilver (U)] Game=IPGE @@ -300,7 +310,7 @@ IngameTradePersonTextOffsets=[66,88,170,571] MapTableARM9Offset=0xF0C2C MapNamesTextOffset=374 CatchingTutorialOpponentMonOffset=0x4AB34 -FossilTableOffset=0xF6330 +FossilTableOffset=0xF6334 [Diamond (J)] Game=ADAJ @@ -616,29 +626,58 @@ MapNamesTextOffset=272 CatchingTutorialPlayerMonOffset=0x51610 CatchingTutorialOpponentMonOffset=0x51632 NationalDexAtStartTweak=hgss_national_dex +FossilLevelScriptNumber=753 +StaticPokemonSupport=1 +StaticPokemon{}={Species=[104:0x108], Level=[104:0x138, 104:0x12C]} // Lugia +StaticPokemon{}={Species=[21:0xD1], Level=[21:0xF5, 21:0x101]} // Ho-oh +StaticPokemon{}={Species=[216:0x58F, 216:0x6E8, 216:0x708, 24:0x67, 24:0xB4, 24:0x314, 24:0x320, 24:0xD4], Level=[216:0x70A, 24:0x322]} // Suicune +StaticPokemon{}={Species=[14:0x2F, 14:0x3B], Level=[14:0x3D]} // Articuno +StaticPokemon{}={Species=[191:0x26B, 191:0x277], Level=[191:0x279]} // Zapdos +StaticPokemon{}={Species=[106:0x2F, 106:0x3B], Level=[106:0x3D]} // Moltres +StaticPokemon{}={Species=[11:0x2F, 11:0x3B], Level=[11:0x3D]} // Mewtwo +StaticPokemon{}={Species=[134:0xA3, 134:0xB4], Level=[134:0xB6]} // Kyogre +StaticPokemon{}={Species=[133:0xA3, 133:0xB4], Level=[133:0xB6]} // Groudon +StaticPokemon{}={Species=[135:0xDA, 135:0xEB, 135:0x62, 135:0x98], Level=[135:0xED]} // Rayquaza +StaticPokemon{}={Species=[131:0x43A, 131:0x67C, 131:0x872, 131:0x8E4, 131:0x958, 131:0x963], Level=[131:0x965]} // Dialga +StaticPokemon{}={Species=[131:0x4A2, 131:0x695, 131:0x88D, 131:0x8FA, 131:0x97F, 131:0x98A], Level=[131:0x98C]} // Palkia +StaticPokemon{}={Species=[131:0x50A, 131:0x9A4], Level=[131:0x9A6], Forme=[131:0x9AA]} // Giratina-O +StaticPokemon{}={Species=[748:0x4CC], Level=[748:0x4E3]} // Latias +StaticPokemon{}={Species=[748:0x4B7], Level=[748:0x4E3]} // Latios +StaticPokemon{}={Species=[243:0x310, 243:0x14B], Level=[243:0x312, 243:0x14D]} // Sudowoodo +StaticPokemon{}={Species=[58:0x61, 58:0x6D], Level=[58:0x6F]} // Lapras +StaticPokemon{}={Species=[934:0x3CD, 934:0x3DE], Level=[934:0x3E0]} // Red Gyarados +StaticPokemon{}={Species=[197:0x6C, 197:0x7D, 199:0x26A, 199:0x27B], Level=[197:0x7F, 199:0x27D]} // Snorlax +StaticPokemon{}={Species=[89:0xF3D, 89:0x1078, 89:0x10A5, 89:0x112C, 89:0x11B3], Level=[89:0xF3F, 89:0x107A, 89:0x10A7, 89:0x112E, 89:0x11B5]} // Koffing @ Rocket Base +StaticPokemon{}={Species=[89:0xF6A, 89:0xFC4, 89:0x101E, 89:0x104B, 89:0x1159, 89:0x1186], Level=[89:0xF6C, 89:0xFC6, 89:0x1020, 89:0x104D, 89:0x115B, 89:0x1188]} // Voltorb @ Rocket Base +StaticPokemon{}={Species=[89:0xF97, 89:0xFF1, 89:0x10D2, 89:0x10FF, 89:0x11E0], Level=[89:0xF99, 89:0xFF3, 89:0x10D4, 89:0x1101, 89:0x11E2]} // Geodude @ Rocket Base +StaticPokemon{}={Species=[90:0x770], Level=[90:0x772]} // Electrode @ Rocket Base (1) +StaticPokemon{}={Species=[90:0x7D4], Level=[90:0x7D6]} // Electrode @ Rocket Base (2) +StaticPokemon{}={Species=[90:0x838], Level=[90:0x83A]} // Electrode @ Rocket Base (3) +StaticPokemon{}={Species=[889:0x61], Level=[889:0x63]} // Eevee +StaticPokemon{}={Species=[98:0x71], Level=[98:0x73]} // Tyrogue +StaticPokemon{}={Species=[112:0x4D1], Level=[112:0x4D3]} // Dratini +StaticPokemon{}={Species=[738:0x66F, 738:0x675, 738:0x695, 738:0x818, 738:0x8BC], Level=[738:0x86D]} // Bulbasaur +StaticPokemon{}={Species=[738:0x71D, 738:0x723, 738:0x743, 738:0x833, 738:0x8D7], Level=[738:0x86D]} // Squirtle +StaticPokemon{}={Species=[738:0x7CB, 738:0x7D1, 738:0x7F1], Level=[738:0x86D]} // Charmander +StaticPokemon{}={Species=[834:0x272], Level=[834:0x2B4]} // Treecko +StaticPokemon{}={Species=[834:0x28B], Level=[834:0x2B4]} // Torchic +StaticPokemon{}={Species=[834:0x297], Level=[834:0x2B4]} // Mudkip +StaticPokemon{}={Species=[857:0x146, 857:0x14D]]} // Primo's Mareep Egg +StaticPokemon{}={Species=[857:0x180, 857:0x187]]} // Primo's Wooper Egg +StaticPokemon{}={Species=[857:0x1BA, 857:0x1C1]]} // Primo's Slugma Egg +StaticPokemon{}={Species=[875:0x90], Level=[875:0x92]} // Secret Tentacool +StaticPokemonTrades=[6,7] // Shuckie & Kenya +StaticPokemonTradeScripts=[877,241] +StaticPokemonTradeLevelOffsets=[0x80,0xA7] +MysteryEggOffset=0x1C692 // Togepi Mystery Egg +StaticEggPokemonOffsets=[34, 35, 36] [SoulSilver (J)] Game=IPGJ Type=HGSS -CopyFrom=IPGE -HiddenItemTableOffset=0xF9D08 -MoveTutorMovesOffset=0x23954 -HasExtraPokemonNames=No -PokemonNamesTextOffset=232 -TrainerNamesTextOffset=719 -TrainerClassesTextOffset=720 -MoveDescriptionsTextOffset=738 -MoveNamesTextOffset=739 -AbilityNamesTextOffset=711 -ItemDescriptionsTextOffset=218 -ItemNamesTextOffset=219 -StarterScreenTextOffset=188 -IngameTradesTextOffset=198 -IngameTradePersonTextOffsets=[554,588,599,625,0,0,337,456,527,45,529] -MapTableARM9Offset=0xF6390 -MapNamesTextOffset=272 -CatchingTutorialPlayerMonOffset=0x51610 -CatchingTutorialOpponentMonOffset=0x51632 +CopyStaticPokemon=1 +CopyFrom=IPKJ +WildPokemon=a/1/3/6 NationalDexAtStartTweak=hgss_national_dex [HeartGold (K)] diff --git a/src/com/dabomstew/pkrandom/config/gen5_offsets.ini b/src/com/dabomstew/pkrandom/config/gen5_offsets.ini index 8893539..76f5a4f 100755 --- a/src/com/dabomstew/pkrandom/config/gen5_offsets.ini +++ b/src/com/dabomstew/pkrandom/config/gen5_offsets.ini @@ -53,39 +53,39 @@ FastestTextTweak=b1_instant_text NationalDexAtStartTweak=bw1_national_dex
NationalDexScriptOffset=792
StaticPokemonSupport=1
-StaticPokemon[]=[304:0x121, 304:0x1C9, 304:0x299] // Grass Monkey
-StaticPokemon[]=[304:0x131, 304:0x1DE, 304:0x2B7] // Fire Monkey
-StaticPokemon[]=[304:0xFE, 304:0x1A1, 304:0x268] // Water Monkey
-StaticPokemon[]=[526:0x758] // Magikarp
-StaticPokemon[]=[94:0x810, 94:0x64, 94:0xB4, 94:0x44B, 94:0x7AB, 94:0x7D0, 94:0x7DC] // Zorua
-StaticPokemon[]=[776:0x85, 776:0xB2] // Larvesta
-StaticPokemon[]=[316:0x369] // Darmanitan 1
-StaticPokemon[]=[316:0x437] // Darmanitan 2
-StaticPokemon[]=[316:0x505] // Darmanitan 3
-StaticPokemon[]=[316:0x5D3] // Darmanitan 4
-StaticPokemon[]=[316:0x6A1] // Darmanitan 5
-StaticPokemon[]=[306:0x65, 306:0x8F] // Musharna
-StaticPokemon[]=[770:0x2F8, 770:0x353] // Zoroark
-StaticPokemon[]=[364:0xE, 364:0x1F] // Volcarona
-StaticPokemon[]=[474:0x1CE, 474:0x20A] // Victini
-StaticPokemon[]=[426:0x133, 426:0x15B, 556:0x1841, 556:0xCFC, 556:0x1878, 556:0x18EA] // Reshiram
-StaticPokemon[]=[426:0x127, 426:0x174, 556:0x184D, 556:0x186C, 556:0xD15, 556:0x18DE] // Zekrom
-StaticPokemon[]=[670:0x415, 670:0x426, 692:0x1E2] // Cobalion
-StaticPokemon[]=[458:0x10, 458:0x21, 692:0x203] // Terrakion
-StaticPokemon[]=[312:0x10, 312:0x21, 692:0x224] // Virizion
-StaticPokemon[]=[752:0x66D, 752:0x6CC, 752:0x6DD] // Landorus
-StaticPokemon[]=[464:0x10, 468:0x4F, 468:0x60] // Kyurem
-StaticPokemon[]=[877:0x601] // Cranidos
-StaticPokemon[]=[877:0x620] // Shieldon
-StaticPokemon[]=[877:0x63F] // Omanyte
-StaticPokemon[]=[877:0x65E] // Kabuto
-StaticPokemon[]=[877:0x67D] // Aerodactyl
-StaticPokemon[]=[877:0x69C] // Anorith
-StaticPokemon[]=[877:0x6BB] // Lileep
-StaticPokemon[]=[877:0x6DA] // Tirtouga
-StaticPokemon[]=[877:0x6F9] // Archen
-StaticPokemon[]=[897:0x45] // Foongus
-StaticPokemon[]=[897:0xC1] // Amoonguss
+StaticPokemon{}={Species=[304:0x121, 304:0x1C9, 304:0x299], Level=[304:0x29D]} // Pansage
+StaticPokemon{}={Species=[304:0x131, 304:0x1DE, 304:0x2B7], Level=[304:0x2BB]} // Pansear
+StaticPokemon{}={Species=[304:0xFE, 304:0x1A1, 304:0x268], Level=[304:0x26C]} // Panpour
+StaticPokemon{}={Species=[526:0x758], Level=[526:0x75C]} // Magikarp
+StaticPokemon{}={Species=[94:0x810, 94:0x64, 94:0xB4, 94:0x44B, 94:0x7AB, 94:0x7D0, 94:0x7DC], Level=[94:0x44F]} // Zorua
+StaticPokemon{}={Species=[776:0x85, 776:0xB2]} // Larvesta (egg)
+StaticPokemon{}={Species=[316:0x369], Level=[316:0x36B]} // Darmanitan 1
+StaticPokemon{}={Species=[316:0x437], Level=[316:0x439]} // Darmanitan 2
+StaticPokemon{}={Species=[316:0x505], Level=[316:0x507]} // Darmanitan 3
+StaticPokemon{}={Species=[316:0x5D3], Level=[316:0x5D5]} // Darmanitan 4
+StaticPokemon{}={Species=[316:0x6A1], Level=[316:0x6A3]} // Darmanitan 5
+StaticPokemon{}={Species=[306:0x65, 306:0x8F], Level=[306:0x91]} // Musharna
+StaticPokemon{}={Species=[770:0x2F8, 770:0x353], Level=[770:0x355]} // Zoroark
+StaticPokemon{}={Species=[364:0xE, 364:0x1F], Level=[364:0x21]} // Volcarona
+StaticPokemon{}={Species=[474:0x1CE, 474:0x20A], Level=[474:0x20C]} // Victini
+StaticPokemon{}={Species=[426:0x133, 426:0x15B, 556:0x1841, 556:0xCFC, 556:0x1878, 556:0x18EA], Level=[426:0x15D, 556:0xCFE]} // Reshiram
+StaticPokemon{}={Species=[426:0x127, 426:0x174, 556:0x184D, 556:0x186C, 556:0xD15, 556:0x18DE], Level=[426:0x176, 556:0xD17]} // Zekrom
+StaticPokemon{}={Species=[670:0x415, 670:0x426, 692:0x1E2], Level=[670:0x428]} // Cobalion
+StaticPokemon{}={Species=[458:0x10, 458:0x21, 692:0x203], Level=[458:0x23]} // Terrakion
+StaticPokemon{}={Species=[312:0x10, 312:0x21, 692:0x224], Level=[312:0x23]} // Virizion
+StaticPokemon{}={Species=[752:0x66D, 752:0x6CC, 752:0x6DD], Level=[752:0x6DF]} // Landorus
+StaticPokemon{}={Species=[464:0x10, 468:0x4F, 468:0x60], Level=[468:0x62]} // Kyurem
+StaticPokemon{}={Species=[877:0x601], Level=[877:0x3F7]} // Cranidos
+StaticPokemon{}={Species=[877:0x620], Level=[877:0x3F7]} // Shieldon
+StaticPokemon{}={Species=[877:0x63F], Level=[877:0x3F7]} // Omanyte
+StaticPokemon{}={Species=[877:0x65E], Level=[877:0x3F7]} // Kabuto
+StaticPokemon{}={Species=[877:0x67D], Level=[877:0x3F7]} // Aerodactyl
+StaticPokemon{}={Species=[877:0x69C], Level=[877:0x3F7]} // Anorith
+StaticPokemon{}={Species=[877:0x6BB], Level=[877:0x3F7]} // Lileep
+StaticPokemon{}={Species=[877:0x6DA], Level=[877:0x3F7]} // Tirtouga
+StaticPokemon{}={Species=[877:0x6F9], Level=[877:0x3F7]} // Archen
+StaticPokemon{}={Species=[897:0x45]} // Foongus
+StaticPokemon{}={Species=[897:0xC1]} // Amoonguss
BoxLegendaryOffset=15
BoxLegendaryOvlNumber=21
IsBlack=1
@@ -94,6 +94,7 @@ TradeScript[]=[202:0x224:0x21F] // Minccino/Basculin TradeScript[]=[686:0x76:0x71] // Boldore/Emolga
TradeScript[]=[830:0xB3:0xAE, 830:0xEA:0xE5, 830:0x114:0x10F] // Cinccino/Munchlax
TradeScript[]=[764:0x43:0x3E] // Ditto/Rotom
+StaticEggPokemonOffsets=[5]
[White (U)]
Game=IRAO
@@ -157,49 +158,51 @@ FastestTextTweak=b2_instant_text NationalDexAtStartTweak=bw2_national_dex
NationalDexScriptOffset=854
StaticPokemonSupport=1
-StaticPokemon[]=[662:0x1DE, 662:0x240, 740:0xCD, 740:0xFC, 740:0x12C, 740:0x14C] // Cobalion
-StaticPokemon[]=[730:0x13A, 730:0x15F, 730:0x19B, 730:0x1BB] // Virizion
-StaticPokemon[]=[948:0x45D, 948:0x48D, 948:0x4AD] // Terrakion
-StaticPokemon[]=[426:0x38A, 426:0x39B, 556:0x367, 556:0x568, 556:0x5E6, 556:0x6E1, 1208:0x3A4, 1208:0xA6A, 1208:0x717] // Reshiram
-StaticPokemon[]=[426:0x36B, 426:0x37C, 556:0x350, 556:0x551, 556:0x5C7, 556:0x6C3, 1208:0x38D, 1208:0xA53, 1208:0x706] // Zekrom
-StaticPokemon[]=[1112:0x133, 1122:0x2BA, 1122:0x311, 1128:0x37A, 1128:0x3D1, 1208:0x1B7, 1208:0x1F8, 1208:0xD8B, 1208:0xD97, 1208:0xDB6, 1208:0xDC2, 1208:0x723, 1208:0xF3D, 1208:0xF4E] // Kyurem
-StaticPokemon[]=[304:0xCC, 304:0x14B, 304:0x1BC, 304:0x237, 304:0x327, 304:0x3E6, 304:0x4A1, 304:0x54A, 304:0x5BD, 304:0x5CE] // Latias
-StaticPokemon[]=[304:0xB5, 304:0x134, 304:0x1A5, 304:0x220, 304:0x310, 304:0x3CF, 304:0x48A, 304:0x533, 304:0x59E, 304:0x5AF] // Latios
-StaticPokemon[]=[32:0x247, 32:0x2B0, 32:0x2C1, 1034:0x12A] // Uxie
-StaticPokemon[]=[684:0x136, 684:0x1C2, 684:0x1D3, 1034:0x169] // Mesprit
-StaticPokemon[]=[950:0xA1, 950:0x10A, 950:0x11B, 1034:0x1BE] // Azelf
-StaticPokemon[]=[1222:0x134, 1222:0x145, 1018:0x32] // Regirock
-StaticPokemon[]=[1224:0x134, 1224:0x145, 1018:0x2C] // Regice
-StaticPokemon[]=[1226:0x134, 1226:0x145, 1018:0x38] // Registeel
-StaticPokemon[]=[1018:0x97, 1018:0xA8] // Regigigas
-StaticPokemon[]=[526:0x48D, 526:0x512, 526:0x523] // Cresselia
-StaticPokemon[]=[1068:0x193, 1068:0x1D6, 1068:0x1E7, 1080:0x193, 1080:0x1D6, 1080:0x1E7] // Heatran
-StaticPokemon[]=[652:0x5C6, 652:0x5E9] // Mandibuzz
-StaticPokemon[]=[1102:0x592, 1102:0x5B5] // Braviary
-StaticPokemon[]=[364:0xE, 364:0x32, 364:0x40] // Volcarona
-StaticPokemon[]=[1030:0x290, 1030:0x2A1] // Crustle
-StaticPokemon[]=[480:0xE1, 480:0x10A, 480:0x131, 480:0x15A] // Jellicent
-StaticPokemon[]=[1168:0x2C, 1168:0x4F] // Shiny Haxorus
-StaticPokemon[]=[988:0x382] // Eevee
-StaticPokemon[]=[664:0x3B5, 664:0x3E2, 664:0x40F, 664:0x43C] // Deerling
-StaticPokemon[]=[880:0xAB4, 880:0xAC7] // Shiny Gible
-StaticPokemon[]=[880:0xAD3, 880:0xAE6] // Shiny Dratini
-StaticPokemon[]=[54:0xDD] // Happiny Egg
-StaticPokemon[]=[526:0x27E] // Magikarp
-StaticPokemon[]=[1253:0x5E0] // Cranidos
-StaticPokemon[]=[1253:0x5FF] // Shieldon
-StaticPokemon[]=[1253:0x61E] // Omanyte
-StaticPokemon[]=[1253:0x63D] // Kabuto
-StaticPokemon[]=[1253:0x65C] // Aerodactyl
-StaticPokemon[]=[1253:0x67B] // Anorith
-StaticPokemon[]=[1253:0x69A] // Lileep
-StaticPokemon[]=[1253:0x6B9] // Tirtouga
-StaticPokemon[]=[1253:0x6D8] // Archen
-StaticPokemon[]=[1273:0x45] // Foongus
-StaticPokemon[]=[1273:0xC7] // Amoonguss
-StaticPokemon[]=[208:0x5A6] // Zorua
-StaticPokemonFormValues=[1208:0xD8D, 1208:0xD9B, 1208:0xDB8, 1208:0xDC6, 664:0x3B7, 664:0x3E4, 664:0x411, 664:0x43E] // Kyurem, Deerling
+StaticPokemon{}={Species=[662:0x1DE, 662:0x240, 740:0xCD, 740:0xFC, 740:0x12C, 740:0x14C], Level=[740:0x12E, 740:0x14E]} // Cobalion
+StaticPokemon{}={Species=[730:0x13A, 730:0x15F, 730:0x19B, 730:0x1BB], Level=[730:0x19D, 730:0x1BD]} // Virizion
+StaticPokemon{}={Species=[948:0x45D, 948:0x48D, 948:0x4AD], Level=[948:0x48F, 948:0x4AF]} // Terrakion
+StaticPokemon{}={Species=[426:0x38A, 426:0x39B, 556:0x367, 556:0x568, 556:0x5E6, 556:0x6E1, 1208:0x3A4, 1208:0xA6A, 1208:0x717], Level=[426:0x39D]} // Reshiram
+StaticPokemon{}={Species=[426:0x36B, 426:0x37C, 556:0x350, 556:0x551, 556:0x5C7, 556:0x6C3, 1208:0x38D, 1208:0xA53, 1208:0x706], Level=[426:0x37E]} // Zekrom
+StaticPokemon{}={Species=[1112:0x133, 1122:0x2BA, 1122:0x311, 1128:0x37A, 1128:0x3D1, 1208:0x1B7, 1208:0x1F8, 1208:0x723, 1208:0xF3D, 1208:0xF4E], Level=[1208:0xF50]} // Kyurem
+StaticPokemon{}={Species=[1208:0xD8B, 1208:0xD97], Level=[1208:0xD99], Forme=[1208:0xD8D, 1208:0xD9B]} // Kyurem-Black
+StaticPokemon{}={Species=[1208:0xDB6, 1208:0xDC2], Level=[1208:0xDC4], Forme=[1208:0xDB8, 1208:0xDC6]} // Kyurem-White
+StaticPokemon{}={Species=[304:0xCC, 304:0x14B, 304:0x1BC, 304:0x237, 304:0x327, 304:0x3E6, 304:0x4A1, 304:0x54A, 304:0x5BD, 304:0x5CE], Level=[304:0x5D0]} // Latias
+StaticPokemon{}={Species=[304:0xB5, 304:0x134, 304:0x1A5, 304:0x220, 304:0x310, 304:0x3CF, 304:0x48A, 304:0x533, 304:0x59E, 304:0x5AF], Level=[304:0x5B1]} // Latios
+StaticPokemon{}={Species=[32:0x247, 32:0x2B0, 32:0x2C1, 1034:0x12A], Level=[32:0x2C3]} // Uxie
+StaticPokemon{}={Species=[684:0x136, 684:0x1C2, 684:0x1D3, 1034:0x169], Level=[684:0x1D5]} // Mesprit
+StaticPokemon{}={Species=[950:0xA1, 950:0x10A, 950:0x11B, 1034:0x1BE], Level=[950:0x11D]} // Azelf
+StaticPokemon{}={Species=[1222:0x134, 1222:0x145, 1018:0x32], Level=[1222:0x147]} // Regirock
+StaticPokemon{}={Species=[1224:0x134, 1224:0x145, 1018:0x2C], Level=[1224:0x147]} // Regice
+StaticPokemon{}={Species=[1226:0x134, 1226:0x145, 1018:0x38], Level=[1226:0x147]} // Registeel
+StaticPokemon{}={Species=[1018:0x97, 1018:0xA8], Level=[1018:0xAA]} // Regigigas
+StaticPokemon{}={Species=[526:0x48D, 526:0x512, 526:0x523], Level=[526:0x525]} // Cresselia
+StaticPokemon{}={Species=[1068:0x193, 1068:0x1D6, 1068:0x1E7, 1080:0x193, 1080:0x1D6, 1080:0x1E7], Level=[1068:0x1E9, 1080:0x1E9]} // Heatran
+StaticPokemon{}={Species=[652:0x5C6, 652:0x5E9], Level=[652:0x5EB]} // Mandibuzz
+StaticPokemon{}={Species=[1102:0x592, 1102:0x5B5], Level=[1102:0x5B7]} // Braviary
+StaticPokemon{}={Species=[364:0xE, 364:0x32, 364:0x40], Level=[364:0x34, 364:0x42]} // Volcarona
+StaticPokemon{}={Species=[1030:0x290, 1030:0x2A1], Level=[1030:0x2A3]} // Crustle
+StaticPokemon{}={Species=[480:0xE1, 480:0x10A, 480:0x131, 480:0x15A], Level=[480:0x10C, 480:0x15C]} // Jellicent
+StaticPokemon{}={Species=[1168:0x2C, 1168:0x4F], Level=[1168:0x51]} // Shiny Haxorus
+StaticPokemon{}={Species=[988:0x382], Level=[988:0x386]} // Eevee
+StaticPokemon{}={Species=[664:0x3B5, 664:0x3E2, 664:0x40F, 664:0x43C], Level=[664:0x3B9, 664:0x3E6, 664:0x413, 664:0x440], Forme=[664:0x3B7, 664:0x3E4, 664:0x411, 664:0x43E]} // Deerling
+StaticPokemon{}={Species=[880:0xAB4, 880:0xAC7], Level=[880:0xAB8]} // Shiny Gible
+StaticPokemon{}={Species=[880:0xAD3, 880:0xAE6], Level=[880:0xAD7]} // Shiny Dratini
+StaticPokemon{}={Species=[54:0xDD]} // Happiny (egg)
+StaticPokemon{}={Species=[526:0x27E], Level=[526:0x282]} // Magikarp
+StaticPokemon{}={Species=[1253:0x5E0], Level=[1253:0x3D6]} // Cranidos
+StaticPokemon{}={Species=[1253:0x5FF], Level=[1253:0x3D6]} // Shieldon
+StaticPokemon{}={Species=[1253:0x61E], Level=[1253:0x3D6]} // Omanyte
+StaticPokemon{}={Species=[1253:0x63D], Level=[1253:0x3D6]} // Kabuto
+StaticPokemon{}={Species=[1253:0x65C], Level=[1253:0x3D6]} // Aerodactyl
+StaticPokemon{}={Species=[1253:0x67B], Level=[1253:0x3D6]} // Anorith
+StaticPokemon{}={Species=[1253:0x69A], Level=[1253:0x3D6]} // Lileep
+StaticPokemon{}={Species=[1253:0x6B9], Level=[1253:0x3D6]} // Tirtouga
+StaticPokemon{}={Species=[1253:0x6D8], Level=[1253:0x3D6]} // Archen
+StaticPokemon{}={Species=[1273:0x45]} // Foongus
+StaticPokemon{}={Species=[1273:0xC7]} // Amoonguss
+StaticPokemon{}={Species=[208:0x5A6], Level=[208:0x5A8]} // Zorua
IngameTradePersonTextOffsets=[529, 555, 193, 594, 628, 628]
+StaticEggPokemonOffsets=[29]
[White 2 (U)]
Game=IRDO
@@ -380,45 +383,50 @@ Type=BW2 CopyFrom=IREO
MoveTutorDataOffset=0x512DC
StaticPokemonSupport=1
-StaticPokemon[]=[662:0x1DE, 662:0x240, 740:0xCD, 740:0xFC, 740:0x12C, 740:0x14C] // Cobalion
-StaticPokemon[]=[730:0x13A, 730:0x15F, 730:0x19B, 730:0x1BB] // Virizion
-StaticPokemon[]=[948:0x45D, 948:0x48D, 948:0x4AD] // Terrakion
-StaticPokemon[]=[426:0x38A, 426:0x39B, 556:0x367, 556:0x568, 556:0x5E6, 556:0x6E1, 1208:0x3A4, 1208:0xA6A, 1208:0x717] // Reshiram
-StaticPokemon[]=[426:0x36B, 426:0x37C, 556:0x350, 556:0x551, 556:0x5C7, 556:0x6C3, 1208:0x38D, 1208:0xA53, 1208:0x706] // Zekrom
-StaticPokemon[]=[1112:0x133, 1122:0x2BA, 1122:0x311, 1128:0x37A, 1128:0x3D1, 1208:0x1B7, 1208:0x1F8, 1208:0xD8B, 1208:0xD97, 1208:0xDB6, 1208:0xDC2, 1208:0x723, 1208:0xF3D, 1208:0xF4E] // Kyurem
-StaticPokemon[]=[304:0xCC, 304:0x14B, 304:0x1B8, 304:0x22F, 304:0x31B, 304:0x3D6, 304:0x491, 304:0x536, 304:0x5A9, 304:0x5BA] // Latias
-StaticPokemon[]=[304:0xB5, 304:0x134, 304:0x1A1, 304:0x218, 304:0x304, 304:0x3BF, 304:0x47A, 304:0x51F, 304:0x58A, 304:0x59B] // Latios
-StaticPokemon[]=[32:0x247, 32:0x2B0, 32:0x2C1, 1034:0x12A] // Uxie
-StaticPokemon[]=[684:0x136, 684:0x1C2, 684:0x1D3, 1034:0x169] // Mesprit
-StaticPokemon[]=[950:0xA1, 950:0x10A, 950:0x11B, 1034:0x1BE] // Azelf
-StaticPokemon[]=[1222:0x134, 1222:0x145, 1018:0x32] // Regirock
-StaticPokemon[]=[1224:0x134, 1224:0x145, 1018:0x2C] // Regice
-StaticPokemon[]=[1226:0x134, 1226:0x145, 1018:0x38] // Registeel
-StaticPokemon[]=[1018:0x97, 1018:0xA8] // Regigigas
-StaticPokemon[]=[526:0x48D, 526:0x512, 526:0x523] // Cresselia
-StaticPokemon[]=[1068:0x171, 1068:0x1B4, 1068:0x1C5, 1080:0x171, 1080:0x1B4, 1080:0x1C5] // Heatran
-StaticPokemon[]=[652:0x5C6, 652:0x5E9] // Mandibuzz
-StaticPokemon[]=[1102:0x592, 1102:0x5B5] // Braviary
-StaticPokemon[]=[364:0xE, 364:0x32, 364:0x40] // Volcarona
-StaticPokemon[]=[1030:0x290, 1030:0x2A1] // Crustle
-StaticPokemon[]=[480:0xE1, 480:0x10A, 480:0x131, 480:0x15A] // Jellicent
-StaticPokemon[]=[1168:0x2C, 1168:0x4F] // Shiny Haxorus
-StaticPokemon[]=[988:0x382] // Eevee
-StaticPokemon[]=[664:0x3B5, 664:0x3E2, 664:0x40F, 664:0x43C] // Deerling
-StaticPokemon[]=[880:0xAB4, 880:0xAC7] // Shiny Gible
-StaticPokemon[]=[880:0xAD3, 880:0xAE6] // Shiny Dratini
-StaticPokemon[]=[54:0xDD] // Happiny Egg
-StaticPokemon[]=[526:0x27E] // Magikarp
-StaticPokemon[]=[1253:0x5E0] // Cranidos
-StaticPokemon[]=[1253:0x5FF] // Shieldon
-StaticPokemon[]=[1253:0x61E] // Omanyte
-StaticPokemon[]=[1253:0x63D] // Kabuto
-StaticPokemon[]=[1253:0x65C] // Aerodactyl
-StaticPokemon[]=[1253:0x67B] // Anorith
-StaticPokemon[]=[1253:0x69A] // Lileep
-StaticPokemon[]=[1253:0x6B9] // Tirtouga
-StaticPokemon[]=[1253:0x6D8] // Archen
-StaticPokemonFormValues=[1208:0xD8D, 1208:0xD9B, 1208:0xDB8, 1208:0xDC6, 664:0x3B7, 664:0x3E4, 664:0x411, 664:0x43E] // Kyurem, Deerling
+StaticPokemon{}={Species=[662:0x1DE, 662:0x240, 740:0xCD, 740:0xFC, 740:0x12C, 740:0x14C], Level=[740:0x12E, 740:0x14E]} // Cobalion
+StaticPokemon{}={Species=[730:0x13A, 730:0x15F, 730:0x19B, 730:0x1BB], Level=[730:0x19D, 730:0x1BD]} // Virizion
+StaticPokemon{}={Species=[948:0x45D, 948:0x48D, 948:0x4AD], Level=[948:0x48F, 948:0x4AF]} // Terrakion
+StaticPokemon{}={Species=[426:0x38A, 426:0x39B, 556:0x367, 556:0x568, 556:0x5E6, 556:0x6E1, 1208:0x3A4, 1208:0xA6A, 1208:0x717], Level=[426:0x39D]} // Reshiram
+StaticPokemon{}={Species=[426:0x36B, 426:0x37C, 556:0x350, 556:0x551, 556:0x5C7, 556:0x6C3, 1208:0x38D, 1208:0xA53, 1208:0x706], Level=[426:0x37E]} // Zekrom
+StaticPokemon{}={Species=[1112:0x133, 1122:0x2BA, 1122:0x311, 1128:0x37A, 1128:0x3D1, 1208:0x1B7, 1208:0x1F8, 1208:0x723, 1208:0xF3D, 1208:0xF4E], Level=[1208:0xF50]} // Kyurem
+StaticPokemon{}={Species=[1208:0xD8B, 1208:0xD97], Level=[1208:0xD99], Forme=[1208:0xD8D, 1208:0xD9B]} // Kyurem-Black
+StaticPokemon{}={Species=[1208:0xDB6, 1208:0xDC2], Level=[1208:0xDC4], Forme=[1208:0xDB8, 1208:0xDC6]} // Kyurem-White
+StaticPokemon{}={Species=[304:0xCC, 304:0x14B, 304:0x1B8, 304:0x22F, 304:0x31B, 304:0x3D6, 304:0x491, 304:0x536, 304:0x5A9, 304:0x5BA], Level=[304:0x5BC]} // Latias
+StaticPokemon{}={Species=[304:0xB5, 304:0x134, 304:0x1A1, 304:0x218, 304:0x304, 304:0x3BF, 304:0x47A, 304:0x51F, 304:0x58A, 304:0x59B], Level=[304:0x59D]} // Latios
+StaticPokemon{}={Species=[32:0x247, 32:0x2B0, 32:0x2C1, 1034:0x12A], Level=[32:0x2C3]} // Uxie
+StaticPokemon{}={Species=[684:0x136, 684:0x1C2, 684:0x1D3, 1034:0x169], Level=[684:0x1D5]} // Mesprit
+StaticPokemon{}={Species=[950:0xA1, 950:0x10A, 950:0x11B, 1034:0x1BE], Level=[950:0x11D]} // Azelf
+StaticPokemon{}={Species=[1222:0x134, 1222:0x145, 1018:0x32], Level=[1222:0x147]} // Regirock
+StaticPokemon{}={Species=[1224:0x134, 1224:0x145, 1018:0x2C], Level=[1224:0x147]} // Regice
+StaticPokemon{}={Species=[1226:0x134, 1226:0x145, 1018:0x38], Level=[1226:0x147]} // Registeel
+StaticPokemon{}={Species=[1018:0x97, 1018:0xA8], Level=[1018:0xAA]} // Regigigas
+StaticPokemon{}={Species=[526:0x48D, 526:0x512, 526:0x523], Level=[526:0x525]} // Cresselia
+StaticPokemon{}={Species=[1068:0x171, 1068:0x1B4, 1068:0x1C5, 1080:0x171, 1080:0x1B4, 1080:0x1C5], Level=[1068:0x1C7, 1080:0x1C7]} // Heatran
+StaticPokemon{}={Species=[652:0x5C6, 652:0x5E9], Level=[652:0x5EB]} // Mandibuzz
+StaticPokemon{}={Species=[1102:0x592, 1102:0x5B5], Level=[1102:0x5B7]} // Braviary
+StaticPokemon{}={Species=[364:0xE, 364:0x32, 364:0x40], Level=[364:0x34, 364:0x42]} // Volcarona
+StaticPokemon{}={Species=[1030:0x290, 1030:0x2A1], Level=[1030:0x2A3]} // Crustle
+StaticPokemon{}={Species=[480:0xE1, 480:0x10A, 480:0x131, 480:0x15A], Level=[480:0x10C, 480:0x15C]} // Jellicent
+StaticPokemon{}={Species=[1168:0x2C, 1168:0x4F], Level=[1168:0x51]} // Shiny Haxorus
+StaticPokemon{}={Species=[988:0x382], Level=[988:0x386]} // Eevee
+StaticPokemon{}={Species=[664:0x3B5, 664:0x3E2, 664:0x40F, 664:0x43C], Level=[664:0x3B9, 664:0x3E6, 664:0x413, 664:0x440], Forme=[664:0x3B7, 664:0x3E4, 664:0x411, 664:0x43E]} // Deerling
+StaticPokemon{}={Species=[880:0xAB4, 880:0xAC7], Level=[880:0xAB8]} // Shiny Gible
+StaticPokemon{}={Species=[880:0xAD3, 880:0xAE6], Level=[880:0xAD7]} // Shiny Dratini
+StaticPokemon{}={Species=[54:0xDD]} // Happiny (egg)
+StaticPokemon{}={Species=[526:0x27E], Level=[526:0x282]} // Magikarp
+StaticPokemon{}={Species=[1253:0x5E0], Level=[1253:0x3D6]} // Cranidos
+StaticPokemon{}={Species=[1253:0x5FF], Level=[1253:0x3D6]} // Shieldon
+StaticPokemon{}={Species=[1253:0x61E], Level=[1253:0x3D6]} // Omanyte
+StaticPokemon{}={Species=[1253:0x63D], Level=[1253:0x3D6]} // Kabuto
+StaticPokemon{}={Species=[1253:0x65C], Level=[1253:0x3D6]} // Aerodactyl
+StaticPokemon{}={Species=[1253:0x67B], Level=[1253:0x3D6]} // Anorith
+StaticPokemon{}={Species=[1253:0x69A], Level=[1253:0x3D6]} // Lileep
+StaticPokemon{}={Species=[1253:0x6B9], Level=[1253:0x3D6]} // Tirtouga
+StaticPokemon{}={Species=[1253:0x6D8], Level=[1253:0x3D6]} // Archen
+StaticPokemon{}={Species=[1273:0x45]} // Foongus
+StaticPokemon{}={Species=[1273:0xC7]} // Amoonguss
+StaticPokemon{}={Species=[208:0x5A6], Level=[208:0x5A8]} // Zorua
+StaticEggPokemonOffsets=[29]
[White 2 (J)]
Game=IRDJ
diff --git a/src/com/dabomstew/pkrandom/config/gen6_offsets.ini b/src/com/dabomstew/pkrandom/config/gen6_offsets.ini index 3be127c..9aa4a66 100644 --- a/src/com/dabomstew/pkrandom/config/gen6_offsets.ini +++ b/src/com/dabomstew/pkrandom/config/gen6_offsets.ini @@ -61,6 +61,7 @@ TitleScreenTextOffset=85 UpdateStringOffset=25 BoxLegendaryOffsets=[2, 12] BoxLegendaryScriptOffsets=[4658, 5430, 16798] +LinkedStaticEncounterOffsets=[1:3, 2:12] [Y] Game=CTR-P-EK2A @@ -132,6 +133,7 @@ TitleScreenTextOffset=38 UpdateStringOffset=22 RayquazaEncounterNumber=28 RayquazaEncounterScriptNumber=31 +LinkedStaticEncounterOffsets=[26:49, 27:50, 29:58, 80:56, 81:57, 75:76] [Alpha Sapphire] Game=CTR-P-ECLA diff --git a/src/com/dabomstew/pkrandom/config/gen7_offsets.ini b/src/com/dabomstew/pkrandom/config/gen7_offsets.ini index 2f9712c..4a7cc7d 100644 --- a/src/com/dabomstew/pkrandom/config/gen7_offsets.ini +++ b/src/com/dabomstew/pkrandom/config/gen7_offsets.ini @@ -52,6 +52,7 @@ TMShops=[12,13,16,18,19] RegularShops=[0,1,2,3,4,5,6,7] DoublesTrainerClasses=[172, 173, 174, 174, 175, 176, 177, 178, 179, 181, 182] CosmoemEvolutionNumber=791 +LinkedStaticEncounterOffsets=[112:113, 120:131, 124:130] // UBs probably need to be added to this too [Moon] Game=CTR-P-BNEA @@ -116,6 +117,7 @@ TMShops=[12,13,16,18,19] RegularShops=[0,1,2,3,4,5,6,7] DoublesTrainerClasses=[172, 173, 174, 174, 175, 176, 177, 178, 179, 181, 182, 211, 212, 213, 214, 215] CosmoemEvolutionNumber=791 +LinkedStaticEncounterOffsets=[127:128, 135:146, 139:145] // Unused SM UBs need to be added to this, probably other stuff too [Ultra Moon] Game=CTR-P-A2BA diff --git a/src/com/dabomstew/pkrandom/newgui/Bundle.properties b/src/com/dabomstew/pkrandom/newgui/Bundle.properties index 27ebccf..b463395 100644 --- a/src/com/dabomstew/pkrandom/newgui/Bundle.properties +++ b/src/com/dabomstew/pkrandom/newgui/Bundle.properties @@ -510,6 +510,8 @@ GUI.stpAllowAltFormesCheckBox.text=Allow Alternate Formes GUI.stpAllowAltFormesCheckBox.toolTipText=<html>Allow alternate formes of Pokemon, such as the various formes of Rotom or Deoxys, to appear as Static Pokemon.<br />Note that their traits are randomized/shuffled separately from their base formes. GUI.stpSwapMegaEvosCheckBox.text=Swap Mega Evolvables GUI.stpSwapMegaEvosCheckBox.toolTipText=<html>Swap Statics capable of Mega Evolution with another Pokemon capable of Mega Evolution.<br />This affects Lucario in X/Y and Latios/Latias in OR/AS. +GUI.stpPercentageLevelModifierCheckBox.text=Percentage Level Modifier: +GUI.stpPercentageLevelModifierCheckBox.tooltipText=Checking this will enable a percentage-based level modifier for every Static Pokemon. GUI.tpSwapMegaEvosCheckBox.text=Swap Mega Evolvables GUI.tpSwapMegaEvosCheckBox.toolTipText=<html>Swap Trainer Pokemon capable of Mega Evolution with another Pokemon capable of Mega Evolution.<br />This only affects Trainer Pokemon that actually hold a Mega Stone (so, for example, it will affect Diantha's Gardevoir but not every Gardevoir)<br />If the "Limit Pokemon" general option is used to remove all Mega Evolutions from the game, this setting will be disabled. GUI.wpAllowAltFormesCheckBox.text=Allow Alternate Formes diff --git a/src/com/dabomstew/pkrandom/newgui/NewRandomizerGUI.form b/src/com/dabomstew/pkrandom/newgui/NewRandomizerGUI.form index e35434d..3b88991 100644 --- a/src/com/dabomstew/pkrandom/newgui/NewRandomizerGUI.form +++ b/src/com/dabomstew/pkrandom/newgui/NewRandomizerGUI.form @@ -2,7 +2,7 @@ <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.dabomstew.pkrandom.newgui.NewRandomizerGUI"> <grid id="27dc6" binding="mainPanel" layout-manager="GridBagLayout"> <constraints> - <xy x="7" y="20" width="1042" height="816"/> + <xy x="7" y="20" width="1084" height="816"/> </constraints> <properties/> <border type="none"> @@ -902,13 +902,13 @@ </component> <hspacer id="c4003"> <constraints> - <grid row="1" column="3" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/> - <gridbag weightx="0.0" weighty="0.0"/> + <grid row="1" column="4" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/> + <gridbag weightx="6.0" weighty="0.0"/> </constraints> </hspacer> <vspacer id="ec4fb"> <constraints> - <grid row="5" column="1" row-span="1" col-span="2" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/> + <grid row="5" column="1" row-span="1" col-span="3" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/> <gridbag weightx="0.0" weighty="0.0"/> </constraints> </vspacer> @@ -960,7 +960,7 @@ <component id="cde9e" class="javax.swing.JCheckBox" binding="stpLimitMusketeersCheckBox"> <constraints> <grid row="1" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/> - <gridbag weightx="0.0" weighty="0.0"/> + <gridbag weightx="1.0" weighty="0.0"/> </constraints> <properties> <enabled value="false"/> @@ -1001,6 +1001,34 @@ <toolTipText resource-bundle="com/dabomstew/pkrandom/newgui/Bundle" key="GUI.stpSwapMegaEvosCheckBox.toolTipText"/> </properties> </component> + <component id="84b86" class="javax.swing.JCheckBox" binding="stpPercentageLevelModifierCheckBox"> + <constraints> + <grid row="1" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/> + <gridbag weightx="6.0" weighty="0.0"/> + </constraints> + <properties> + <enabled value="false"/> + <text resource-bundle="com/dabomstew/pkrandom/newgui/Bundle" key="GUI.stpPercentageLevelModifierCheckBox.text"/> + <toolTipText resource-bundle="com/dabomstew/pkrandom/newgui/Bundle" key="GUI.stpPercentageLevelModifierCheckBox.tooltipText"/> + </properties> + </component> + <component id="f3518" class="javax.swing.JSlider" binding="stpPercentageLevelModifierSlider"> + <constraints> + <grid row="2" column="3" row-span="2" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"/> + <gridbag weightx="0.0" weighty="0.0"/> + </constraints> + <properties> + <enabled value="false"/> + <majorTickSpacing value="10"/> + <maximum value="50"/> + <minimum value="-50"/> + <minorTickSpacing value="2"/> + <paintLabels value="true"/> + <paintTicks value="true"/> + <snapToTicks value="true"/> + <value value="0"/> + </properties> + </component> </children> </grid> <grid id="f2cab" layout-manager="GridBagLayout"> diff --git a/src/com/dabomstew/pkrandom/newgui/NewRandomizerGUI.java b/src/com/dabomstew/pkrandom/newgui/NewRandomizerGUI.java index 6a7960e..a7acb02 100644 --- a/src/com/dabomstew/pkrandom/newgui/NewRandomizerGUI.java +++ b/src/com/dabomstew/pkrandom/newgui/NewRandomizerGUI.java @@ -280,6 +280,8 @@ public class NewRandomizerGUI { private JComboBox pbsEXPCurveComboBox; private JCheckBox miscRunWithoutRunningShoesCheckBox; private JCheckBox peRemoveTimeBasedEvolutionsCheckBox; + private JCheckBox stpPercentageLevelModifierCheckBox; + private JSlider stpPercentageLevelModifierSlider; private static JFrame frame; @@ -397,6 +399,7 @@ public class NewRandomizerGUI { stpSwapLegendariesSwapStandardsRadioButton.addActionListener(e -> enableOrDisableSubControls()); stpRandomCompletelyRadioButton.addActionListener(e -> enableOrDisableSubControls()); stpRandomSimilarStrengthRadioButton.addActionListener(e -> enableOrDisableSubControls()); + stpPercentageLevelModifierCheckBox.addActionListener(e -> enableOrDisableSubControls()); igtUnchangedRadioButton.addActionListener(e -> enableOrDisableSubControls()); igtRandomizeGivenPokemonOnlyRadioButton.addActionListener(e -> enableOrDisableSubControls()); igtRandomizeBothRequestedGivenRadioButton.addActionListener(e -> enableOrDisableSubControls()); @@ -1390,6 +1393,8 @@ public class NewRandomizerGUI { stpRandomize600BSTCheckBox.setSelected(settings.isLimit600()); stpAllowAltFormesCheckBox.setSelected(settings.isAllowStaticAltFormes()); stpSwapMegaEvosCheckBox.setSelected(settings.isSwapStaticMegaEvos()); + stpPercentageLevelModifierCheckBox.setSelected(settings.isStaticLevelModified()); + stpPercentageLevelModifierSlider.setValue(settings.getStaticLevelModifier()); thcRandomCompletelyRadioButton .setSelected(settings.getTmsHmsCompatibilityMod() == Settings.TMsHMsCompatibilityMod.COMPLETELY_RANDOM); @@ -1585,6 +1590,8 @@ public class NewRandomizerGUI { settings.setLimit600(stpRandomize600BSTCheckBox.isSelected()); settings.setAllowStaticAltFormes(stpAllowAltFormesCheckBox.isSelected() && stpAllowAltFormesCheckBox.isVisible()); settings.setSwapStaticMegaEvos(stpSwapMegaEvosCheckBox.isSelected() && stpSwapMegaEvosCheckBox.isVisible()); + settings.setStaticLevelModified(stpPercentageLevelModifierCheckBox.isSelected()); + settings.setStaticLevelModifier(stpPercentageLevelModifierSlider.getValue()); settings.setTmsMod(tmUnchangedRadioButton.isSelected(), tmRandomRadioButton.isSelected()); @@ -1912,6 +1919,12 @@ public class NewRandomizerGUI { stpRandomSimilarStrengthRadioButton.setVisible(true); stpRandomSimilarStrengthRadioButton.setEnabled(false); stpRandomSimilarStrengthRadioButton.setSelected(false); + stpPercentageLevelModifierCheckBox.setVisible(true); + stpPercentageLevelModifierCheckBox.setEnabled(false); + stpPercentageLevelModifierCheckBox.setSelected(false); + stpPercentageLevelModifierSlider.setVisible(true); + stpPercentageLevelModifierSlider.setEnabled(false); + stpPercentageLevelModifierSlider.setValue(0); stpLimitMusketeersCheckBox.setVisible(true); stpLimitMusketeersCheckBox.setEnabled(false); stpLimitMusketeersCheckBox.setSelected(false); @@ -2451,12 +2464,18 @@ public class NewRandomizerGUI { stpLimitMusketeersCheckBox.setVisible(pokemonGeneration == 5); stpAllowAltFormesCheckBox.setVisible(romHandler.hasStaticAltFormes()); stpSwapMegaEvosCheckBox.setVisible(pokemonGeneration == 6 && !romHandler.forceSwapStaticMegaEvos()); + stpPercentageLevelModifierCheckBox.setVisible(pokemonGeneration >= 3); + stpPercentageLevelModifierCheckBox.setEnabled(pokemonGeneration >= 3); + stpPercentageLevelModifierSlider.setVisible(pokemonGeneration >= 3); + stpPercentageLevelModifierSlider.setEnabled(false); } else { stpSwapLegendariesSwapStandardsRadioButton.setVisible(false); stpRandomCompletelyRadioButton.setVisible(false); stpRandomSimilarStrengthRadioButton.setVisible(false); stpRandomize600BSTCheckBox.setVisible(false); stpLimitMusketeersCheckBox.setVisible(false); + stpPercentageLevelModifierCheckBox.setVisible(false); + stpPercentageLevelModifierSlider.setVisible(false); } igtUnchangedRadioButton.setEnabled(true); @@ -2808,6 +2827,13 @@ public class NewRandomizerGUI { stpSwapMegaEvosCheckBox.setEnabled(true); } + if (stpPercentageLevelModifierCheckBox.isSelected()) { + stpPercentageLevelModifierSlider.setEnabled(true); + } else { + stpPercentageLevelModifierSlider.setEnabled(false); + stpPercentageLevelModifierSlider.setValue(0); + } + if (igtUnchangedRadioButton.isSelected()) { igtRandomizeItemsCheckBox.setEnabled(false); igtRandomizeItemsCheckBox.setSelected(false); diff --git a/src/com/dabomstew/pkrandom/pokemon/StaticEncounter.java b/src/com/dabomstew/pkrandom/pokemon/StaticEncounter.java index 51bc3a9..566a5e4 100644 --- a/src/com/dabomstew/pkrandom/pokemon/StaticEncounter.java +++ b/src/com/dabomstew/pkrandom/pokemon/StaticEncounter.java @@ -23,25 +23,60 @@ package com.dabomstew.pkrandom.pokemon; /*-- along with this program. If not, see <http://www.gnu.org/licenses/>. --*/ /*----------------------------------------------------------------------------*/ +import java.util.ArrayList; +import java.util.List; + public class StaticEncounter { public Pokemon pkmn; public int forme = 0; - public String formeSuffix = ""; public int level; public int heldItem; + public boolean isEgg = false; public boolean resetMoves = false; - public StaticEncounter() { + // In the games, sometimes what is logically an encounter or set of encounters with one specific Pokemon + // can actually consist of multiple encounters internally. This can happen because: + // - The same Pokemon appears in multiple locations (e.g., Reshiram/Zekrom in BW1, Giratina in Pt) + // - The same Pokemon appears at different levels depending on game progression (e.g., Volcarona in BW2) + // - Rebattling a Pokemon actually is different encounter entirely (e.g., Xerneas/Yveltal in XY) + // This list tracks encounters that should logically have the same species and forme, but *may* have + // differences in other properties like level. + public List<StaticEncounter> linkedEncounters; + public StaticEncounter() { + this.linkedEncounters = new ArrayList<>(); } public StaticEncounter(Pokemon pkmn) { this.pkmn = pkmn; + this.linkedEncounters = new ArrayList<>(); } @Override public String toString() { - return pkmn.fullName(); + return this.toString(true); + } + + public String toString(boolean printLevel) { + if (isEgg) { + return pkmn.fullName() + " (egg)"; + } + else if (!printLevel) { + return pkmn.fullName(); + } + StringBuilder levelStringBuilder = new StringBuilder("Lv" + level); + boolean needToDisplayLinkedLevels = false; + for (int i = 0; i < linkedEncounters.size(); i++) { + if (level != linkedEncounters.get(i).level) { + needToDisplayLinkedLevels = true; + } + } + if (needToDisplayLinkedLevels) { + for (int i = 0; i < linkedEncounters.size(); i++) { + levelStringBuilder.append(" / ").append("Lv").append(linkedEncounters.get(i).level); + } + } + return pkmn.fullName() + ", " + levelStringBuilder.toString(); } public boolean canMegaEvolve() { diff --git a/src/com/dabomstew/pkrandom/romhandlers/AbstractRomHandler.java b/src/com/dabomstew/pkrandom/romhandlers/AbstractRomHandler.java index 57255da..0dde09b 100755 --- a/src/com/dabomstew/pkrandom/romhandlers/AbstractRomHandler.java +++ b/src/com/dabomstew/pkrandom/romhandlers/AbstractRomHandler.java @@ -2900,7 +2900,8 @@ public abstract class AbstractRomHandler implements RomHandler { @Override
public void randomizeStaticPokemon(boolean swapLegendaries, boolean similarStrength, boolean limitMusketeers,
- boolean limit600, boolean allowAltFormes, boolean swapMegaEvos, boolean abilitiesAreRandomized) {
+ boolean limit600, boolean allowAltFormes, boolean swapMegaEvos,
+ boolean abilitiesAreRandomized, int levelModifier) {
// Load
checkPokemonRestrictions();
List<StaticEncounter> currentStaticPokemon = this.getStaticPokemon();
@@ -2936,12 +2937,11 @@ public abstract class AbstractRomHandler implements RomHandler { nonlegsLeft.removeAll(banned);
ultraBeastsLeft.removeAll(banned);
for (StaticEncounter old : currentStaticPokemon) {
- StaticEncounter newStatic = new StaticEncounter();
- newStatic.heldItem = old.heldItem;
+ StaticEncounter newStatic = cloneStaticEncounter(old);
Pokemon newPK;
if (old.pkmn.number == 487 && ptGiratina) {
newPK = giratinaPicks.remove(this.random.nextInt(giratinaPicks.size()));
- newStatic.pkmn = newPK;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
legendariesLeft.remove(newPK);
if (legendariesLeft.size() == 0) {
legendariesLeft.addAll(onlyLegendaryList);
@@ -2957,10 +2957,7 @@ public abstract class AbstractRomHandler implements RomHandler { newPK = legendariesLeft.remove(this.random.nextInt(legendariesLeft.size()));
}
- newStatic.pkmn = newPK;
- setFormeForStaticEncounter(newStatic, newPK);
- newStatic.level = old.level;
- newStatic.resetMoves = true;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
if (legendariesLeft.size() == 0) {
legendariesLeft.addAll(onlyLegendaryList);
@@ -2977,10 +2974,7 @@ public abstract class AbstractRomHandler implements RomHandler { } else if (ultraBeastList.contains(old.pkmn)) {
newPK = ultraBeastsLeft.remove(this.random.nextInt(ultraBeastsLeft.size()));
- newStatic.pkmn = newPK;
- setFormeForStaticEncounter(newStatic, newPK);
- newStatic.level = old.level;
- newStatic.resetMoves = true;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
if (ultraBeastsLeft.size() == 0) {
ultraBeastsLeft.addAll(ultraBeastList);
@@ -2991,10 +2985,7 @@ public abstract class AbstractRomHandler implements RomHandler { } else {
newPK = nonlegsLeft.remove(this.random.nextInt(nonlegsLeft.size()));
}
- newStatic.pkmn = newPK;
- setFormeForStaticEncounter(newStatic, newPK);
- newStatic.level = old.level;
- newStatic.resetMoves = true;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
if (nonlegsLeft.size() == 0) {
nonlegsLeft.addAll(noLegendaryList);
@@ -3020,8 +3011,7 @@ public abstract class AbstractRomHandler implements RomHandler { List<Pokemon> pokemonLeft = new ArrayList<>(!allowAltFormes ? mainPokemonList : listInclFormesExclCosmetics);
pokemonLeft.removeAll(banned);
for (StaticEncounter old : currentStaticPokemon) {
- StaticEncounter newStatic = new StaticEncounter();
- newStatic.heldItem = old.heldItem;
+ StaticEncounter newStatic = cloneStaticEncounter(old);
Pokemon newPK;
Pokemon oldPK = old.pkmn;
if (old.forme > 0) {
@@ -3031,19 +3021,15 @@ public abstract class AbstractRomHandler implements RomHandler { if (oldPK.number == 487 && ptGiratina) {
newPK = giratinaPicks.remove(this.random.nextInt(giratinaPicks.size()));
pokemonLeft.remove(newPK);
- newStatic.pkmn = newPK;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
} else if (oldBST >= 600 && limit600) {
if (reallySwapMegaEvos && old.canMegaEvolve()) {
newPK = getMegaEvoPokemon(mainPokemonList, pokemonLeft, newStatic);
} else {
newPK = pokemonLeft.remove(this.random.nextInt(pokemonLeft.size()));
}
- newStatic.pkmn = newPK;
- setFormeForStaticEncounter(newStatic, newPK);
- newStatic.level = old.level;
- newStatic.resetMoves = true;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
} else {
-
if ((oldPK.number == 638 || oldPK.number == 639 || oldPK.number == 640) && limitMusketeers) {
newPK = pickStaticPowerLvlReplacement(
pokemonLeft,
@@ -3092,10 +3078,7 @@ public abstract class AbstractRomHandler implements RomHandler { }
}
pokemonLeft.remove(newPK);
- newStatic.pkmn = newPK;
- setFormeForStaticEncounter(newStatic, newPK);
- newStatic.level = old.level;
- newStatic.resetMoves = true;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
}
if (pokemonLeft.size() == 0) {
@@ -3113,13 +3096,12 @@ public abstract class AbstractRomHandler implements RomHandler { List<Pokemon> pokemonLeft = new ArrayList<>(!allowAltFormes ? mainPokemonList : listInclFormesExclCosmetics);
pokemonLeft.removeAll(banned);
for (StaticEncounter old : currentStaticPokemon) {
- StaticEncounter newStatic = new StaticEncounter();
- newStatic.heldItem = old.heldItem;
+ StaticEncounter newStatic = cloneStaticEncounter(old);
Pokemon newPK;
if (old.pkmn.number == 487 && ptGiratina) {
newPK = giratinaPicks.remove(this.random.nextInt(giratinaPicks.size()));
pokemonLeft.remove(newPK);
- newStatic.pkmn = newPK;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
} else {
if (reallySwapMegaEvos && old.canMegaEvolve()) {
newPK = getMegaEvoPokemon(mainPokemonList, pokemonLeft, newStatic);
@@ -3127,10 +3109,7 @@ public abstract class AbstractRomHandler implements RomHandler { newPK = pokemonLeft.remove(this.random.nextInt(pokemonLeft.size()));
}
pokemonLeft.remove(newPK);
- newStatic.pkmn = newPK;
- setFormeForStaticEncounter(newStatic, newPK);
- newStatic.level = old.level;
- newStatic.resetMoves = true;
+ setPokemonAndFormeForStaticEncounter(newStatic, newPK);
}
if (pokemonLeft.size() == 0) {
pokemonLeft.addAll(!allowAltFormes ? mainPokemonList : listInclFormesExclCosmetics);
@@ -3140,16 +3119,85 @@ public abstract class AbstractRomHandler implements RomHandler { }
}
+ if (levelModifier != 0) {
+ for (StaticEncounter se : replacements) {
+ if (!se.isEgg) {
+ se.level = Math.min(100, (int) Math.round(se.level * (1 + levelModifier / 100.0)));
+ for (StaticEncounter linkedStatic : se.linkedEncounters) {
+ if (!linkedStatic.isEgg) {
+ linkedStatic.level = Math.min(100, (int) Math.round(linkedStatic.level * (1 + levelModifier / 100.0)));
+ }
+ }
+ }
+ }
+ }
+
// Save
this.setStaticPokemon(replacements);
}
+ @Override
+ public void onlyChangeStaticLevels(int levelModifier) {
+ List<StaticEncounter> currentStaticPokemon = this.getStaticPokemon();
+ for (StaticEncounter se : currentStaticPokemon) {
+ if (!se.isEgg) {
+ se.level = Math.min(100, (int) Math.round(se.level * (1 + levelModifier / 100.0)));
+ for (StaticEncounter linkedStatic : se.linkedEncounters) {
+ if (!linkedStatic.isEgg) {
+ linkedStatic.level = Math.min(100, (int) Math.round(linkedStatic.level * (1 + levelModifier / 100.0)));
+ }
+ }
+ }
+ }
+ this.setStaticPokemon(currentStaticPokemon);
+ }
+
+ private StaticEncounter cloneStaticEncounter(StaticEncounter old) {
+ StaticEncounter newStatic = new StaticEncounter();
+ newStatic.pkmn = old.pkmn;
+ newStatic.level = old.level;
+ newStatic.heldItem = old.heldItem;
+ newStatic.isEgg = old.isEgg;
+ newStatic.resetMoves = true;
+ for (StaticEncounter oldLinked : old.linkedEncounters) {
+ StaticEncounter newLinked = new StaticEncounter();
+ newLinked.pkmn = oldLinked.pkmn;
+ newLinked.level = oldLinked.level;
+ newLinked.heldItem = oldLinked.heldItem;
+ newLinked.isEgg = oldLinked.isEgg;
+ newLinked.resetMoves = true;
+ newStatic.linkedEncounters.add(newLinked);
+ }
+ return newStatic;
+ }
+
+ private void setPokemonAndFormeForStaticEncounter(StaticEncounter newStatic, Pokemon pk) {
+ boolean checkCosmetics = true;
+ Pokemon newPK = pk;
+ int newForme = 0;
+ if (pk.formeNumber > 0) {
+ newForme = pk.formeNumber;
+ newPK = pk.baseForme;
+ checkCosmetics = false;
+ }
+ if (checkCosmetics && pk.cosmeticForms > 0) {
+ newForme = pk.getCosmeticFormNumber(this.random.nextInt(pk.cosmeticForms));
+ } else if (!checkCosmetics && pk.cosmeticForms > 0) {
+ newForme += pk.getCosmeticFormNumber(this.random.nextInt(pk.cosmeticForms));
+ }
+ newStatic.pkmn = newPK;
+ newStatic.forme = newForme;
+ for (StaticEncounter linked : newStatic.linkedEncounters) {
+ linked.pkmn = newPK;
+ linked.forme = newForme;
+ }
+ }
+
private void setFormeForStaticEncounter(StaticEncounter newStatic, Pokemon pk) {
boolean checkCosmetics = true;
newStatic.forme = 0;
if (pk.formeNumber > 0) {
newStatic.forme = pk.formeNumber;
- newStatic.formeSuffix = pk.formeSuffix;
newStatic.pkmn = pk.baseForme;
checkCosmetics = false;
}
diff --git a/src/com/dabomstew/pkrandom/romhandlers/Gen3RomHandler.java b/src/com/dabomstew/pkrandom/romhandlers/Gen3RomHandler.java index 4f79baa..ec25bec 100755 --- a/src/com/dabomstew/pkrandom/romhandlers/Gen3RomHandler.java +++ b/src/com/dabomstew/pkrandom/romhandlers/Gen3RomHandler.java @@ -27,6 +27,9 @@ package com.dabomstew.pkrandom.romhandlers; import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.IntStream;
import java.util.zip.CRC32;
import com.dabomstew.pkrandom.FileFunctions;
@@ -37,6 +40,7 @@ import com.dabomstew.pkrandom.constants.Gen3Constants; import com.dabomstew.pkrandom.constants.GlobalConstants;
import com.dabomstew.pkrandom.exceptions.RandomizationException;
import com.dabomstew.pkrandom.exceptions.RandomizerIOException;
+import com.dabomstew.pkrandom.newnds.NARCArchive;
import com.dabomstew.pkrandom.pokemon.*;
import compressors.DSDecmp;
@@ -150,19 +154,8 @@ public class Gen3RomHandler extends AbstractGBRomHandler { }
r[1] = r[1].trim();
// Static Pokemon?
- if (r[0].equals("StaticPokemon[]")) {
- if (r[1].startsWith("[") && r[1].endsWith("]")) {
- String[] offsets = r[1].substring(1, r[1].length() - 1).split(",");
- int[] offs = new int[offsets.length];
- int c = 0;
- for (String off : offsets) {
- offs[c++] = parseRIInt(off);
- }
- current.staticPokemon.add(new StaticPokemon(offs));
- } else {
- int offs = parseRIInt(r[1]);
- current.staticPokemon.add(new StaticPokemon(offs));
- }
+ if (r[0].equals("StaticPokemon{}")) {
+ current.staticPokemon.add(parseStaticPokemon(r[1]));
} else if (r[0].equals("TMText[]")) {
if (r[1].startsWith("[") && r[1].endsWith("]")) {
String[] parts = r[1].substring(1, r[1].length() - 1).split(",", 6);
@@ -274,6 +267,30 @@ public class Gen3RomHandler extends AbstractGBRomHandler { }
}
+ private static StaticPokemon parseStaticPokemon(String staticPokemonString) {
+ StaticPokemon sp = new StaticPokemon();
+ String pattern = "[A-z]+=\\[(0x[0-9a-fA-F]+,?\\s?)+]";
+ Pattern r = Pattern.compile(pattern);
+ Matcher m = r.matcher(staticPokemonString);
+ while (m.find()) {
+ String[] segments = m.group().split("=");
+ String[] romOffsets = segments[1].substring(1, segments[1].length() - 1).split(",");
+ int[] offsets = new int [romOffsets.length];
+ for (int i = 0; i < offsets.length; i++) {
+ offsets[i] = parseRIInt(romOffsets[i]);
+ }
+ switch (segments[0]) {
+ case "Species":
+ sp.speciesOffsets = offsets;
+ break;
+ case "Level":
+ sp.levelOffsets = offsets;
+ break;
+ }
+ }
+ return sp;
+ }
+
private void loadTextTable(String filename) {
try {
Scanner sc = new Scanner(FileFunctions.openConfig(filename + ".tbl"), "UTF-8");
@@ -1694,30 +1711,55 @@ public class Gen3RomHandler extends AbstractGBRomHandler { }
private static class StaticPokemon {
- private int[] offsets;
+ private int[] speciesOffsets;
+ private int[] levelOffsets;
- public StaticPokemon(int... offsets) {
- this.offsets = offsets;
+ public StaticPokemon() {
+ this.speciesOffsets = new int[0];
+ this.levelOffsets = new int[0];
}
public Pokemon getPokemon(Gen3RomHandler parent) {
- return parent.pokesInternal[parent.readWord(offsets[0])];
+ return parent.pokesInternal[parent.readWord(speciesOffsets[0])];
}
public void setPokemon(Gen3RomHandler parent, Pokemon pkmn) {
int value = parent.pokedexToInternal[pkmn.number];
- for (int offset : offsets) {
+ for (int offset : speciesOffsets) {
parent.writeWord(offset, value);
}
}
+
+ public int getLevel(byte[] rom, int i) {
+ if (levelOffsets.length <= i) {
+ return 1;
+ }
+ return rom[levelOffsets[i]];
+ }
+
+ public void setLevel(byte[] rom, int level, int i) {
+ if (levelOffsets.length > i) { // Might not have a level entry e.g., it's an egg
+ rom[levelOffsets[i]] = (byte) level;
+ }
+ }
}
@Override
public List<StaticEncounter> getStaticPokemon() {
List<StaticEncounter> statics = new ArrayList<>();
List<StaticPokemon> staticsHere = romEntry.staticPokemon;
- for (StaticPokemon staticPK : staticsHere) {
- statics.add(new StaticEncounter(staticPK.getPokemon(this)));
+ int[] staticEggOffsets = new int[0];
+ if (romEntry.arrayEntries.containsKey("StaticEggPokemonOffsets")) {
+ staticEggOffsets = romEntry.arrayEntries.get("StaticEggPokemonOffsets");
+ }
+ for (int i = 0; i < staticsHere.size(); i++) {
+ int currentOffset = i;
+ StaticPokemon staticPK = staticsHere.get(i);
+ StaticEncounter se = new StaticEncounter();
+ se.pkmn = staticPK.getPokemon(this);
+ se.level = staticPK.getLevel(rom, 0);
+ se.isEgg = Arrays.stream(staticEggOffsets).anyMatch(x-> x == currentOffset);
+ statics.add(se);
}
return statics;
}
@@ -1734,6 +1776,7 @@ public class Gen3RomHandler extends AbstractGBRomHandler { for (int i = 0; i < staticsHere.size(); i++) {
staticsHere.get(i).setPokemon(this, staticPokemon.get(i).pkmn);
+ staticsHere.get(i).setLevel(rom, staticPokemon.get(i).level, 0);
}
return true;
}
diff --git a/src/com/dabomstew/pkrandom/romhandlers/Gen4RomHandler.java b/src/com/dabomstew/pkrandom/romhandlers/Gen4RomHandler.java index b0919bd..db3b612 100755 --- a/src/com/dabomstew/pkrandom/romhandlers/Gen4RomHandler.java +++ b/src/com/dabomstew/pkrandom/romhandlers/Gen4RomHandler.java @@ -29,7 +29,10 @@ import java.io.FileNotFoundException; import java.io.IOException;
import java.io.PrintStream;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import java.util.stream.IntStream;
import com.dabomstew.pkrandom.pokemon.*;
import thenewpoketext.PokeTextData;
@@ -152,29 +155,8 @@ public class Gen4RomHandler extends AbstractDSRomHandler { }
}
}
- } else if (r[0].equals("StaticPokemon[]")) {
- if (r[1].startsWith("[") && r[1].endsWith("]")) {
- String[] offsets = r[1].substring(1, r[1].length() - 1).split(",");
- int[] offs = new int[offsets.length];
- int[] files = new int[offsets.length];
- int c = 0;
- for (String off : offsets) {
- String[] parts = off.split(":");
- files[c] = parseRIInt(parts[0]);
- offs[c++] = parseRIInt(parts[1]);
- }
- StaticPokemon sp = new StaticPokemon();
- sp.files = files;
- sp.offsets = offs;
- current.staticPokemon.add(sp);
- } else {
- String[] parts = r[1].split(":");
- int files = parseRIInt(parts[0]);
- int offs = parseRIInt(parts[1]);
- StaticPokemon sp = new StaticPokemon();
- sp.files = new int[] { files };
- sp.offsets = new int[] { offs };
- }
+ } else if (r[0].equals("StaticPokemon{}")) {
+ current.staticPokemon.add(parseStaticPokemon(r[1]));
} else if (r[0].equals("StaticPokemonSupport")) {
int spsupport = parseRIInt(r[1]);
current.staticPokemonSupport = (spsupport > 0);
@@ -229,6 +211,34 @@ public class Gen4RomHandler extends AbstractDSRomHandler { }
}
+ private static StaticPokemon parseStaticPokemon(String staticPokemonString) {
+ StaticPokemon sp = new StaticPokemon();
+ String pattern = "[A-z]+=\\[([0-9]+:0x[0-9a-fA-F]+,?\\s?)+]";
+ Pattern r = Pattern.compile(pattern);
+ Matcher m = r.matcher(staticPokemonString);
+ while (m.find()) {
+ String[] segments = m.group().split("=");
+ String[] offsets = segments[1].substring(1, segments[1].length() - 1).split(",");
+ ScriptEntry[] entries = new ScriptEntry[offsets.length];
+ for (int i = 0; i < entries.length; i++) {
+ String[] parts = offsets[i].split(":");
+ entries[i] = new ScriptEntry(parseRIInt(parts[0]), parseRIInt(parts[1]));
+ }
+ switch (segments[0]) {
+ case "Species":
+ sp.speciesEntries = entries;
+ break;
+ case "Level":
+ sp.levelEntries = entries;
+ break;
+ case "Forme":
+ sp.formeEntries = entries;
+ break;
+ }
+ }
+ return sp;
+ }
+
// This rom
private Pokemon[] pokes;
private List<Pokemon> pokemonListInclFormes;
@@ -2290,19 +2300,70 @@ public class Gen4RomHandler extends AbstractDSRomHandler { }
+ private static class ScriptEntry {
+ private int scriptFile;
+ private int scriptOffset;
+
+ public ScriptEntry(int scriptFile, int scriptOffset) {
+ this.scriptFile = scriptFile;
+ this.scriptOffset = scriptOffset;
+ }
+ }
+
private static class StaticPokemon {
- private int[] files;
- private int[] offsets;
+ private ScriptEntry[] speciesEntries;
+ private ScriptEntry[] formeEntries;
+ private ScriptEntry[] levelEntries;
+
+ public StaticPokemon() {
+ this.speciesEntries = new ScriptEntry[0];
+ this.formeEntries = new ScriptEntry[0];
+ this.levelEntries = new ScriptEntry[0];
+ }
public Pokemon getPokemon(Gen4RomHandler parent, NARCArchive scriptNARC) {
- return parent.pokes[parent.readWord(scriptNARC.files.get(files[0]), offsets[0])];
+ return parent.pokes[parent.readWord(scriptNARC.files.get(speciesEntries[0].scriptFile), speciesEntries[0].scriptOffset)];
}
public void setPokemon(Gen4RomHandler parent, NARCArchive scriptNARC, Pokemon pkmn) {
int value = pkmn.number;
- for (int i = 0; i < offsets.length; i++) {
- byte[] file = scriptNARC.files.get(files[i]);
- parent.writeWord(file, offsets[i], value);
+ for (int i = 0; i < speciesEntries.length; i++) {
+ byte[] file = scriptNARC.files.get(speciesEntries[i].scriptFile);
+ parent.writeWord(file, speciesEntries[i].scriptOffset, value);
+ }
+ }
+
+ public int getForme(NARCArchive scriptNARC) {
+ if (formeEntries.length == 0) {
+ return 0;
+ }
+ byte[] file = scriptNARC.files.get(formeEntries[0].scriptFile);
+ return file[formeEntries[0].scriptOffset];
+ }
+
+ public void setForme(NARCArchive scriptNARC, int forme) {
+ for (int i = 0; i < formeEntries.length; i++) {
+ byte[] file = scriptNARC.files.get(formeEntries[i].scriptFile);
+ file[formeEntries[i].scriptOffset] = (byte) forme;
+ }
+ }
+
+ public int getLevelCount() {
+ return levelEntries.length;
+ }
+
+ public int getLevel(NARCArchive scriptNARC, int i) {
+ if (levelEntries.length <= i) {
+ return 1;
+ }
+ byte[] file = scriptNARC.files.get(levelEntries[i].scriptFile);
+ return file[levelEntries[i].scriptOffset];
+ }
+
+ public void setLevel(NARCArchive scriptNARC, int level, int i) {
+ if (levelEntries.length > i) { // Might not have a level entry e.g., it's an egg
+ byte[] file = scriptNARC.files.get(levelEntries[i].scriptFile);
+ file[levelEntries[i].scriptOffset] = (byte) level;
}
}
}
@@ -2314,30 +2375,62 @@ public class Gen4RomHandler extends AbstractDSRomHandler { return sp;
}
try {
+ int[] staticEggOffsets = new int[0];
+ if (romEntry.arrayEntries.containsKey("StaticEggPokemonOffsets")) {
+ staticEggOffsets = romEntry.arrayEntries.get("StaticEggPokemonOffsets");
+ }
NARCArchive scriptNARC = scriptNarc;
- for (StaticPokemon statP : romEntry.staticPokemon) {
- sp.add(new StaticEncounter(statP.getPokemon(this, scriptNARC)));
+ for (int i = 0; i < romEntry.staticPokemon.size(); i++) {
+ int currentOffset = i;
+ StaticPokemon statP = romEntry.staticPokemon.get(i);
+ StaticEncounter se = new StaticEncounter();
+ Pokemon newPK = statP.getPokemon(this, scriptNARC);
+ newPK = getAltFormeOfPokemon(newPK, statP.getForme(scriptNARC));
+ se.pkmn = newPK;
+ se.level = statP.getLevel(scriptNARC, 0);
+ se.isEgg = Arrays.stream(staticEggOffsets).anyMatch(x-> x == currentOffset);
+ for (int levelEntry = 1; levelEntry < statP.getLevelCount(); levelEntry++) {
+ StaticEncounter linkedStatic = new StaticEncounter();
+ linkedStatic.pkmn = newPK;
+ linkedStatic.level = statP.getLevel(scriptNARC, levelEntry);
+ se.linkedEncounters.add(linkedStatic);
+ }
+ sp.add(se);
}
if (romEntry.arrayEntries.containsKey("StaticPokemonTrades")) {
NARCArchive tradeNARC = this.readNARC(romEntry.getString("InGameTrades"));
int[] trades = romEntry.arrayEntries.get("StaticPokemonTrades");
- for (int tradeNum : trades) {
- sp.add(new StaticEncounter(pokes[readLong(tradeNARC.files.get(tradeNum), 0)]));
+ int[] scripts = romEntry.arrayEntries.get("StaticPokemonTradeScripts");
+ int[] scriptOffsets = romEntry.arrayEntries.get("StaticPokemonTradeLevelOffsets");
+ for (int i = 0; i < trades.length; i++) {
+ int tradeNum = trades[i];
+ byte[] scriptFile = scriptNARC.files.get(scripts[i]);
+ int level = scriptFile[scriptOffsets[i]];
+ StaticEncounter se = new StaticEncounter(pokes[readLong(tradeNARC.files.get(tradeNum), 0)]);
+ se.level = level;
+ sp.add(se);
}
}
if (romEntry.getInt("MysteryEggOffset") > 0) {
byte[] ovOverlay = readOverlay(romEntry.getInt("MoveTutorMovesOvlNumber"));
- sp.add(new StaticEncounter(pokes[ovOverlay[romEntry.getInt("MysteryEggOffset")] & 0xFF]));
+ StaticEncounter se = new StaticEncounter(pokes[ovOverlay[romEntry.getInt("MysteryEggOffset")] & 0xFF]);
+ se.isEgg = true;
+ sp.add(se);
}
if (romEntry.getInt("FossilTableOffset") > 0) {
byte[] ftData = arm9;
int baseOffset = romEntry.getInt("FossilTableOffset");
+ int fossilLevelScriptNum = romEntry.getInt("FossilLevelScriptNumber");
+ byte[] fossilLevelScript = scriptNARC.files.get(fossilLevelScriptNum);
+ int level = fossilLevelScript[romEntry.getInt("FossilLevelOffset")];
if (romEntry.romType == Gen4Constants.Type_HGSS) {
ftData = readOverlay(romEntry.getInt("FossilTableOvlNumber"));
}
// read the 7 Fossil Pokemon
for (int f = 0; f < Gen4Constants.fossilCount; f++) {
- sp.add(new StaticEncounter(pokes[readWord(ftData, baseOffset + 2 + f * 4)]));
+ StaticEncounter se = new StaticEncounter(pokes[readWord(ftData, baseOffset + 2 + f * 4)]);
+ se.level = level;
+ sp.add(se);
}
}
} catch (IOException e) {
@@ -2362,13 +2455,24 @@ public class Gen4RomHandler extends AbstractDSRomHandler { Iterator<StaticEncounter> statics = staticPokemon.iterator();
NARCArchive scriptNARC = scriptNarc;
for (StaticPokemon statP : romEntry.staticPokemon) {
- statP.setPokemon(this, scriptNARC, statics.next().pkmn);
+ StaticEncounter se = statics.next();
+ statP.setPokemon(this, scriptNARC, se.pkmn);
+ statP.setForme(scriptNARC, se.pkmn.formeNumber);
+ statP.setLevel(scriptNARC, se.level, 0);
+ for (int i = 0; i < se.linkedEncounters.size(); i++) {
+ StaticEncounter linkedStatic = se.linkedEncounters.get(i);
+ statP.setLevel(scriptNARC, linkedStatic.level, i + 1);
+ }
}
if (romEntry.arrayEntries.containsKey("StaticPokemonTrades")) {
NARCArchive tradeNARC = this.readNARC(romEntry.getString("InGameTrades"));
int[] trades = romEntry.arrayEntries.get("StaticPokemonTrades");
- for (int tradeNum : trades) {
- Pokemon thisTrade = statics.next().pkmn;
+ int[] scripts = romEntry.arrayEntries.get("StaticPokemonTradeScripts");
+ int[] scriptOffsets = romEntry.arrayEntries.get("StaticPokemonTradeLevelOffsets");
+ for (int i = 0; i < trades.length; i++) {
+ int tradeNum = trades[i];
+ StaticEncounter se = statics.next();
+ Pokemon thisTrade = se.pkmn;
List<Integer> possibleAbilities = new ArrayList<>();
possibleAbilities.add(thisTrade.ability1);
if (thisTrade.ability2 > 0) {
@@ -2381,6 +2485,9 @@ public class Gen4RomHandler extends AbstractDSRomHandler { writeLong(tradeNARC.files.get(tradeNum), 0, thisTrade.number);
writeLong(tradeNARC.files.get(tradeNum), 0x1C,
possibleAbilities.get(this.random.nextInt(possibleAbilities.size())));
+ // Write level to script file
+ byte[] scriptFile = scriptNARC.files.get(scripts[i]);
+ scriptFile[scriptOffsets[i]] = (byte) se.level;
}
writeNARC(romEntry.getString("InGameTrades"), tradeNARC);
}
@@ -2397,18 +2504,24 @@ public class Gen4RomHandler extends AbstractDSRomHandler { }
if (romEntry.getInt("FossilTableOffset") > 0) {
int baseOffset = romEntry.getInt("FossilTableOffset");
+ int fossilLevelScriptNum = romEntry.getInt("FossilLevelScriptNumber");
+ byte[] fossilLevelScript = scriptNARC.files.get(fossilLevelScriptNum);
if (romEntry.romType == Gen4Constants.Type_HGSS) {
byte[] ftData = readOverlay(romEntry.getInt("FossilTableOvlNumber"));
for (int f = 0; f < Gen4Constants.fossilCount; f++) {
- int pokenum = statics.next().pkmn.number;
+ StaticEncounter se = statics.next();
+ int pokenum = se.pkmn.number;
writeWord(ftData, baseOffset + 2 + f * 4, pokenum);
+ fossilLevelScript[romEntry.getInt("FossilLevelOffset")] = (byte) se.level;
}
writeOverlay(romEntry.getInt("FossilTableOvlNumber"), ftData);
} else {
// write to arm9
for (int f = 0; f < Gen4Constants.fossilCount; f++) {
- int pokenum = statics.next().pkmn.number;
+ StaticEncounter se = statics.next();
+ int pokenum = se.pkmn.number;
writeWord(arm9, baseOffset + 2 + f * 4, pokenum);
+ fossilLevelScript[romEntry.getInt("FossilLevelOffset")] = (byte) se.level;
}
}
}
diff --git a/src/com/dabomstew/pkrandom/romhandlers/Gen5RomHandler.java b/src/com/dabomstew/pkrandom/romhandlers/Gen5RomHandler.java index 04de11f..fca26db 100755 --- a/src/com/dabomstew/pkrandom/romhandlers/Gen5RomHandler.java +++ b/src/com/dabomstew/pkrandom/romhandlers/Gen5RomHandler.java @@ -30,6 +30,8 @@ import java.io.FileNotFoundException; import java.io.IOException;
import java.io.PrintStream;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.stream.IntStream;
import com.dabomstew.pkrandom.pokemon.*;
@@ -160,29 +162,8 @@ public class Gen5RomHandler extends AbstractDSRomHandler { }
}
}
- } else if (r[0].equals("StaticPokemon[]")) {
- if (r[1].startsWith("[") && r[1].endsWith("]")) {
- String[] offsets = r[1].substring(1, r[1].length() - 1).split(",");
- int[] offs = new int[offsets.length];
- int[] files = new int[offsets.length];
- int c = 0;
- for (String off : offsets) {
- String[] parts = off.split(":");
- files[c] = parseRIInt(parts[0]);
- offs[c++] = parseRIInt(parts[1]);
- }
- StaticPokemon sp = new StaticPokemon();
- sp.files = files;
- sp.offsets = offs;
- current.staticPokemon.add(sp);
- } else {
- String[] parts = r[1].split(":");
- int files = parseRIInt(parts[0]);
- int offs = parseRIInt(parts[1]);
- StaticPokemon sp = new StaticPokemon();
- sp.files = new int[] { files };
- sp.offsets = new int[] { offs };
- }
+ } else if (r[0].equals("StaticPokemon{}")) {
+ current.staticPokemon.add(parseStaticPokemon(r[1]));
} else if (r[0].equals("TradeScript[]")) {
String[] offsets = r[1].substring(1, r[1].length() - 1).split(",");
int[] reqOffs = new int[offsets.length];
@@ -209,7 +190,7 @@ public class Gen5RomHandler extends AbstractDSRomHandler { } else if (r[0].equals("CopyTradeScripts")) {
int cts = parseRIInt(r[1]);
current.copyTradeScripts = (cts > 0);
- } else if (r[0].startsWith("StarterOffsets") || r[0].equals("StaticPokemonFormValues")) {
+ } else if (r[0].startsWith("StarterOffsets")) {
String[] offsets = r[1].substring(1, r[1].length() - 1).split(",");
OffsetWithinEntry[] offs = new OffsetWithinEntry[offsets.length];
int c = 0;
@@ -270,6 +251,34 @@ public class Gen5RomHandler extends AbstractDSRomHandler { }
}
+ private static StaticPokemon parseStaticPokemon(String staticPokemonString) {
+ StaticPokemon sp = new StaticPokemon();
+ String pattern = "[A-z]+=\\[([0-9]+:0x[0-9a-fA-F]+,?\\s?)+]";
+ Pattern r = Pattern.compile(pattern);
+ Matcher m = r.matcher(staticPokemonString);
+ while (m.find()) {
+ String[] segments = m.group().split("=");
+ String[] offsets = segments[1].substring(1, segments[1].length() - 1).split(",");
+ ScriptEntry[] entries = new ScriptEntry[offsets.length];
+ for (int i = 0; i < entries.length; i++) {
+ String[] parts = offsets[i].split(":");
+ entries[i] = new ScriptEntry(parseRIInt(parts[0]), parseRIInt(parts[1]));
+ }
+ switch (segments[0]) {
+ case "Species":
+ sp.speciesEntries = entries;
+ break;
+ case "Level":
+ sp.levelEntries = entries;
+ break;
+ case "Forme":
+ sp.formeEntries = entries;
+ break;
+ }
+ }
+ return sp;
+ }
+
// This ROM
private Pokemon[] pokes;
private Map<Integer,FormeInfo> formeMappings = new TreeMap<>();
@@ -1438,19 +1447,70 @@ public class Gen5RomHandler extends AbstractDSRomHandler { }
+ private static class ScriptEntry {
+ private int scriptFile;
+ private int scriptOffset;
+
+ public ScriptEntry(int scriptFile, int scriptOffset) {
+ this.scriptFile = scriptFile;
+ this.scriptOffset = scriptOffset;
+ }
+ }
+
private static class StaticPokemon {
- private int[] files;
- private int[] offsets;
+ private ScriptEntry[] speciesEntries;
+ private ScriptEntry[] formeEntries;
+ private ScriptEntry[] levelEntries;
+
+ public StaticPokemon() {
+ this.speciesEntries = new ScriptEntry[0];
+ this.formeEntries = new ScriptEntry[0];
+ this.levelEntries = new ScriptEntry[0];
+ }
public Pokemon getPokemon(Gen5RomHandler parent, NARCArchive scriptNARC) {
- return parent.pokes[parent.readWord(scriptNARC.files.get(files[0]), offsets[0])];
+ return parent.pokes[parent.readWord(scriptNARC.files.get(speciesEntries[0].scriptFile), speciesEntries[0].scriptOffset)];
}
public void setPokemon(Gen5RomHandler parent, NARCArchive scriptNARC, Pokemon pkmn) {
int value = pkmn.number;
- for (int i = 0; i < offsets.length; i++) {
- byte[] file = scriptNARC.files.get(files[i]);
- parent.writeWord(file, offsets[i], value);
+ for (int i = 0; i < speciesEntries.length; i++) {
+ byte[] file = scriptNARC.files.get(speciesEntries[i].scriptFile);
+ parent.writeWord(file, speciesEntries[i].scriptOffset, value);
+ }
+ }
+
+ public int getForme(NARCArchive scriptNARC) {
+ if (formeEntries.length == 0) {
+ return 0;
+ }
+ byte[] file = scriptNARC.files.get(formeEntries[0].scriptFile);
+ return file[formeEntries[0].scriptOffset];
+ }
+
+ public void setForme(NARCArchive scriptNARC, int forme) {
+ for (int i = 0; i < formeEntries.length; i++) {
+ byte[] file = scriptNARC.files.get(formeEntries[i].scriptFile);
+ file[formeEntries[i].scriptOffset] = (byte) forme;
+ }
+ }
+
+ public int getLevelCount() {
+ return levelEntries.length;
+ }
+
+ public int getLevel(NARCArchive scriptNARC, int i) {
+ if (levelEntries.length <= i) {
+ return 1;
+ }
+ byte[] file = scriptNARC.files.get(levelEntries[i].scriptFile);
+ return file[levelEntries[i].scriptOffset];
+ }
+
+ public void setLevel(NARCArchive scriptNARC, int level, int i) {
+ if (levelEntries.length > i) { // Might not have a level entry e.g., it's an egg
+ byte[] file = scriptNARC.files.get(levelEntries[i].scriptFile);
+ file[levelEntries[i].scriptOffset] = (byte) level;
}
}
}
@@ -1497,9 +1557,27 @@ public class Gen5RomHandler extends AbstractDSRomHandler { if (!romEntry.staticPokemonSupport) {
return sp;
}
+ int[] staticEggOffsets = new int[0];
+ if (romEntry.arrayEntries.containsKey("StaticEggPokemonOffsets")) {
+ staticEggOffsets = romEntry.arrayEntries.get("StaticEggPokemonOffsets");
+ }
NARCArchive scriptNARC = scriptNarc;
- for (StaticPokemon statP : romEntry.staticPokemon) {
- sp.add(new StaticEncounter(statP.getPokemon(this, scriptNARC)));
+ for (int i = 0; i < romEntry.staticPokemon.size(); i++) {
+ int currentOffset = i;
+ StaticPokemon statP = romEntry.staticPokemon.get(i);
+ StaticEncounter se = new StaticEncounter();
+ Pokemon newPK = statP.getPokemon(this, scriptNARC);
+ newPK = getAltFormeOfPokemon(newPK, statP.getForme(scriptNARC));
+ se.pkmn = newPK;
+ se.level = statP.getLevel(scriptNARC, 0);
+ se.isEgg = Arrays.stream(staticEggOffsets).anyMatch(x-> x == currentOffset);
+ for (int levelEntry = 1; levelEntry < statP.getLevelCount(); levelEntry++) {
+ StaticEncounter linkedStatic = new StaticEncounter();
+ linkedStatic.pkmn = newPK;
+ linkedStatic.level = statP.getLevel(scriptNARC, levelEntry);
+ se.linkedEncounters.add(linkedStatic);
+ }
+ sp.add(se);
}
return sp;
}
@@ -1515,12 +1593,13 @@ public class Gen5RomHandler extends AbstractDSRomHandler { Iterator<StaticEncounter> statics = staticPokemon.iterator();
NARCArchive scriptNARC = scriptNarc;
for (StaticPokemon statP : romEntry.staticPokemon) {
- statP.setPokemon(this, scriptNARC, statics.next().pkmn);
- }
- if (romEntry.offsetArrayEntries.containsKey("StaticPokemonFormValues")) {
- OffsetWithinEntry[] formValues = romEntry.offsetArrayEntries.get("StaticPokemonFormValues");
- for (OffsetWithinEntry owe : formValues) {
- writeWord(scriptNARC.files.get(owe.entry), owe.offset, 0);
+ StaticEncounter se = statics.next();
+ statP.setPokemon(this, scriptNARC, se.pkmn);
+ statP.setForme(scriptNARC, se.pkmn.formeNumber);
+ statP.setLevel(scriptNARC, se.level, 0);
+ for (int i = 0; i < se.linkedEncounters.size(); i++) {
+ StaticEncounter linkedStatic = se.linkedEncounters.get(i);
+ statP.setLevel(scriptNARC, linkedStatic.level, i + 1);
}
}
diff --git a/src/com/dabomstew/pkrandom/romhandlers/Gen6RomHandler.java b/src/com/dabomstew/pkrandom/romhandlers/Gen6RomHandler.java index c38da7c..4adca8e 100644 --- a/src/com/dabomstew/pkrandom/romhandlers/Gen6RomHandler.java +++ b/src/com/dabomstew/pkrandom/romhandlers/Gen6RomHandler.java @@ -78,6 +78,7 @@ public class Gen6RomHandler extends Abstract3DSRomHandler { private String acronym; private int romType; private boolean staticPokemonSupport = true, copyStaticPokemon = true; + private Map<Integer, Integer> linkedStaticOffsets = new HashMap<>(); private Map<String, String> strings = new HashMap<>(); private Map<String, Integer> numbers = new HashMap<>(); private Map<String, int[]> arrayEntries = new HashMap<>(); @@ -146,18 +147,19 @@ public class Gen6RomHandler extends Abstract3DSRomHandler { for (RomEntry otherEntry : roms) { if (r[1].equalsIgnoreCase(otherEntry.romCode)) { // copy from here + current.linkedStaticOffsets.putAll(otherEntry.linkedStaticOffsets); current.arrayEntries.putAll(otherEntry.arrayEntries); current.numbers.putAll(otherEntry.numbers); current.strings.putAll(otherEntry.strings); current.offsetArrayEntries.putAll(otherEntry.offsetArrayEntries); -// if (current.copyStaticPokemon) { -// current.staticPokemon.addAll(otherEntry.staticPokemon); -// current.staticPokemonSupport = true; -// } else { -// current.staticPokemonSupport = false; -// } } } + } else if (r[0].equals("LinkedStaticEncounterOffsets")) { + String[] offsets = r[1].substring(1, r[1].length() - 1).split(","); + for (int i = 0; i < offsets.length; i++) { + String[] parts = offsets[i].split(":"); + current.linkedStaticOffsets.put(Integer.parseInt(parts[0].trim()), Integer.parseInt(parts[1].trim())); + } } else if (r[1].startsWith("[") && r[1].endsWith("]")) { String[] offsets = r[1].substring(1, r[1].length() - 1).split(","); if (offsets.length == 1 && offsets[0].trim().isEmpty()) { @@ -941,7 +943,6 @@ public class Gen6RomHandler extends Abstract3DSRomHandler { Pokemon starter = starterIter.next(); if (starter.formeNumber > 0) { newStatic.forme = starter.formeNumber; - newStatic.formeSuffix = starter.formeSuffix; starter = starter.baseForme; } newStatic.pkmn = starter; @@ -1824,7 +1825,6 @@ public class Gen6RomHandler extends Abstract3DSRomHandler { heldItem = 0; } se.heldItem = heldItem; - se.formeSuffix = Gen6Constants.getFormeSuffixByBaseForme(se.pkmn.number,se.forme); statics.add(se); } @@ -1855,36 +1855,42 @@ public class Gen6RomHandler extends Abstract3DSRomHandler { heldItem = 0; } se.heldItem = heldItem; + if (romEntry.romType == Gen6Constants.Type_ORAS) { + int metLocation = FileFunctions.read2ByteInt(staticCRO, offset + i * size + 18); + if (metLocation == 0xEA64) { + se.isEgg = true; + } + } statics.add(se); } } catch (IOException e) { throw new RandomizerIOException(e); } - // In XY, there are two Xerneas/Yveltal encounters; one for when you - // first encounter them, and another for every time after that. For - // multiple reasons, we don't want these to be different, so delete - // the second one. - if (romEntry.romType == Gen6Constants.Type_XY) { - int[] boxLegendaryOffsets = romEntry.arrayEntries.get("BoxLegendaryOffsets"); - statics.remove(boxLegendaryOffsets[1]); - } + consolidateLinkedEncounters(statics); return statics; } + private void consolidateLinkedEncounters(List<StaticEncounter> statics) { + List<StaticEncounter> encountersToRemove = new ArrayList<>(); + for (Map.Entry<Integer, Integer> entry : romEntry.linkedStaticOffsets.entrySet()) { + StaticEncounter baseEncounter = statics.get(entry.getKey()); + StaticEncounter linkedEncounter = statics.get(entry.getValue()); + baseEncounter.linkedEncounters.add(linkedEncounter); + encountersToRemove.add(linkedEncounter); + } + for (StaticEncounter encounter : encountersToRemove) { + statics.remove(encounter); + } + } + @Override public boolean setStaticPokemon(List<StaticEncounter> staticPokemon) { // Static Pokemon try { byte[] staticCRO = readFile(romEntry.getString("StaticPokemon")); - // To match what we did in getStaticPokemon, we have to add the - // second Xerneas/Yveltal encounter back into the list of statics. - if (romEntry.romType == Gen6Constants.Type_XY) { - int[] boxLegendaryOffsets = romEntry.arrayEntries.get("BoxLegendaryOffsets"); - staticPokemon.add(boxLegendaryOffsets[1], staticPokemon.get(boxLegendaryOffsets[0])); - } - + unlinkStaticEncounters(staticPokemon); Iterator<StaticEncounter> staticIter = staticPokemon.iterator(); int staticCount = Gen6Constants.getStaticPokemonCount(romEntry.romType); @@ -1938,6 +1944,21 @@ public class Gen6RomHandler extends Abstract3DSRomHandler { } } + private void unlinkStaticEncounters(List<StaticEncounter> statics) { + List<Integer> offsetsToInsert = new ArrayList<>(); + for (Map.Entry<Integer, Integer> entry : romEntry.linkedStaticOffsets.entrySet()) { + offsetsToInsert.add(entry.getValue()); + } + Collections.sort(offsetsToInsert); + for (Integer offsetToInsert : offsetsToInsert) { + statics.add(offsetToInsert, new StaticEncounter()); + } + for (Map.Entry<Integer, Integer> entry : romEntry.linkedStaticOffsets.entrySet()) { + StaticEncounter baseEncounter = statics.get(entry.getKey()); + statics.set(entry.getValue(), baseEncounter.linkedEncounters.get(0)); + } + } + private void fixBoxLegendariesXY(int boxLegendarySpecies) throws IOException { // We need to edit the script file or otherwise the text will still say "Xerneas" or "Yveltal" GARCArchive encounterGarc = readGARC(romEntry.getString("WildPokemon"), false); diff --git a/src/com/dabomstew/pkrandom/romhandlers/Gen7RomHandler.java b/src/com/dabomstew/pkrandom/romhandlers/Gen7RomHandler.java index 6cda6b1..71b2ca1 100644 --- a/src/com/dabomstew/pkrandom/romhandlers/Gen7RomHandler.java +++ b/src/com/dabomstew/pkrandom/romhandlers/Gen7RomHandler.java @@ -75,6 +75,7 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { private String titleId; private String acronym; private int romType; + private Map<Integer, Integer> linkedStaticOffsets = new HashMap<>(); private Map<String, String> strings = new HashMap<>(); private Map<String, Integer> numbers = new HashMap<>(); private Map<String, int[]> arrayEntries = new HashMap<>(); @@ -139,6 +140,12 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { current.titleId = r[1]; } else if (r[0].equals("Acronym")) { current.acronym = r[1]; + } else if (r[0].equals("LinkedStaticEncounterOffsets")) { + String[] offsets = r[1].substring(1, r[1].length() - 1).split(","); + for (int i = 0; i < offsets.length; i++) { + String[] parts = offsets[i].split(":"); + current.linkedStaticOffsets.put(Integer.parseInt(parts[0].trim()), Integer.parseInt(parts[1].trim())); + } } else if (r[0].endsWith("Offset") || r[0].endsWith("Count") || r[0].endsWith("Number")) { int offs = parseRIInt(r[1]); current.numbers.put(r[0], offs); @@ -158,6 +165,7 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { for (RomEntry otherEntry : roms) { if (r[1].equalsIgnoreCase(otherEntry.romCode)) { // copy from here + current.linkedStaticOffsets.putAll(otherEntry.linkedStaticOffsets); current.arrayEntries.putAll(otherEntry.arrayEntries); current.numbers.putAll(otherEntry.numbers); current.strings.putAll(otherEntry.strings); @@ -955,7 +963,6 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { } se.pkmn = pokemon; se.forme = forme; - se.formeSuffix = Gen7Constants.getFormeSuffixByBaseForme(species, forme); se.level = giftsFile[offset + 3]; se.heldItem = FileFunctions.read2ByteInt(giftsFile, offset + 8); starters.add(se); @@ -1728,7 +1735,6 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { } totem.pkmn = pokemon; totem.forme = forme; - totem.formeSuffix = Gen7Constants.getFormeSuffixByBaseForme(species, forme); totem.level = staticEncountersFile[offset + 3]; int heldItem = FileFunctions.read2ByteInt(staticEncountersFile, offset + 4); if (heldItem == 0xFFFF) { @@ -1838,9 +1844,9 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { } se.pkmn = pokemon; se.forme = forme; - se.formeSuffix = Gen7Constants.getFormeSuffixByBaseForme(species, forme); se.level = giftsFile[offset + 3]; se.heldItem = FileFunctions.read2ByteInt(giftsFile, offset + 8); + se.isEgg = giftsFile[offset + 10] == 1; statics.add(se); } @@ -1856,6 +1862,7 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { } catch (IOException e) { throw new RandomizerIOException(e); } + consolidateLinkedEncounters(statics); return statics; } @@ -1872,7 +1879,6 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { } se.pkmn = pokemon; se.forme = forme; - se.formeSuffix = Gen7Constants.getFormeSuffixByBaseForme(species, forme); se.level = staticEncountersFile[offset + 3]; int heldItem = FileFunctions.read2ByteInt(staticEncountersFile, offset + 4); if (heldItem == 0xFFFF) { @@ -1882,9 +1888,23 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { return se; } + private void consolidateLinkedEncounters(List<StaticEncounter> statics) { + List<StaticEncounter> encountersToRemove = new ArrayList<>(); + for (Map.Entry<Integer, Integer> entry : romEntry.linkedStaticOffsets.entrySet()) { + StaticEncounter baseEncounter = statics.get(entry.getKey()); + StaticEncounter linkedEncounter = statics.get(entry.getValue()); + baseEncounter.linkedEncounters.add(linkedEncounter); + encountersToRemove.add(linkedEncounter); + } + for (StaticEncounter encounter : encountersToRemove) { + statics.remove(encounter); + } + } + @Override public boolean setStaticPokemon(List<StaticEncounter> staticPokemon) { try { + unlinkStaticEncounters(staticPokemon); GARCArchive staticGarc = readGARC(romEntry.getString("StaticPokemon"), true); List<Integer> skipIndices = Arrays.stream(romEntry.arrayEntries.get("TotemPokemonIndices")).boxed().collect(Collectors.toList()); @@ -1931,7 +1951,21 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { } catch (IOException e) { throw new RandomizerIOException(e); } + } + private void unlinkStaticEncounters(List<StaticEncounter> statics) { + List<Integer> offsetsToInsert = new ArrayList<>(); + for (Map.Entry<Integer, Integer> entry : romEntry.linkedStaticOffsets.entrySet()) { + offsetsToInsert.add(entry.getValue()); + } + Collections.sort(offsetsToInsert); + for (Integer offsetToInsert : offsetsToInsert) { + statics.add(offsetToInsert, new StaticEncounter()); + } + for (Map.Entry<Integer, Integer> entry : romEntry.linkedStaticOffsets.entrySet()) { + StaticEncounter baseEncounter = statics.get(entry.getKey()); + statics.set(entry.getValue(), baseEncounter.linkedEncounters.get(0)); + } } @Override diff --git a/src/com/dabomstew/pkrandom/romhandlers/RomHandler.java b/src/com/dabomstew/pkrandom/romhandlers/RomHandler.java index d901631..5e5bb55 100755 --- a/src/com/dabomstew/pkrandom/romhandlers/RomHandler.java +++ b/src/com/dabomstew/pkrandom/romhandlers/RomHandler.java @@ -267,7 +267,8 @@ public interface RomHandler { boolean setStaticPokemon(List<StaticEncounter> staticPokemon);
void randomizeStaticPokemon(boolean swapLegendaries, boolean similarStrength, boolean limitMusketeers,
- boolean limit600, boolean allowAltFormes, boolean swapMegaEvos1, boolean abilitiesAreRandomized);
+ boolean limit600, boolean allowAltFormes, boolean swapMegaEvos1,
+ boolean abilitiesAreRandomized, int levelModifier);
boolean canChangeStaticPokemon();
@@ -277,6 +278,8 @@ public interface RomHandler { boolean forceSwapStaticMegaEvos();
+ void onlyChangeStaticLevels(int levelModifier);
+
// Randomizer: Totem Pokemon
List<TotemPokemon> getTotemPokemon();
|