ac2b41ae71
* changes Growth's move description to account for Gen 5+ behavior * completes B_DIVE_BALL_MODIFIER comment * fixes typos and incongruent spacing in various files * Update src/data/moves_info.h Co-authored-by: Bassoonian <iasperbassoonian@gmail.com> --------- Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
359 lines
No EOL
12 KiB
Markdown
359 lines
No EOL
12 KiB
Markdown
# Migration Scripts
|
|
|
|
## What are migration scripts?
|
|
|
|
pokeemerald-expansion rewrites existing systems in pokeemerald to improve their efficiency and make them easier to use and implement for developers. If developers were previously using a system that has been deprecated, it can be difficult to manually migrate between systems.
|
|
|
|
These scripts exist to help developers make the transition between refactored systems.
|
|
|
|
## Requirements
|
|
|
|
All migration scripts require [`python3`](https://www.python.org/downloads/) to be installed. Migration scripts are executed by running the following commands from the root directory of a developer's project.
|
|
|
|
```bash
|
|
chmod +x migration_scripts/*.py ; #give permission to make the script executable
|
|
python3 migration_scripts/*.py ; #run the migration script
|
|
```
|
|
|
|
`*` will need to be replaced with the name of the appropriate script.
|
|
|
|
## 1.8.x to 1.9.x+
|
|
|
|
### Battle Anim Moves
|
|
|
|
* Filepath [`migration_scripts/1.9/battle_anim_moves_refactor.py`](1.9/battle_anim_moves_refactor.py)
|
|
* Introduced in [Refactor move animations #4683](https://github.com/rh-hideout/pokeemerald-expansion/pull/4683)
|
|
|
|
Refactors all battle animation move scripts, removing the list from `data/battle_anim_scripts.s` and linking them to the moves in `gMovesInfo` for easier maintaining. Only necessary if new moves have been added.
|
|
|
|
#### [data/battle_anim_scripts.h](../data/battle_anim_scripts.s)
|
|
```diff
|
|
- .4byte Move_POUND
|
|
```
|
|
|
|
#### [include/battle_anim_scripts.h](../include/battle_anim_scripts.h)
|
|
```diff
|
|
+ extern const u8 Move_POUND[];
|
|
```
|
|
|
|
#### [src/data/moves_info.h](../src/data/moves_info.h)
|
|
```diff
|
|
[MOVE_POUND] =
|
|
{
|
|
.name = COMPOUND_STRING("Pound"),
|
|
.description = COMPOUND_STRING(
|
|
"Pounds the foe with\n"
|
|
"forelegs or tail."),
|
|
.effect = EFFECT_HIT,
|
|
.power = 40,
|
|
.type = TYPE_NORMAL,
|
|
.accuracy = 100,
|
|
.pp = 35,
|
|
.target = MOVE_TARGET_SELECTED,
|
|
.priority = 0,
|
|
.category = DAMAGE_CATEGORY_PHYSICAL,
|
|
.makesContact = TRUE,
|
|
.ignoresKingsRock = B_UPDATED_MOVE_FLAGS == GEN_4,
|
|
.contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING,
|
|
.contestCategory = CONTEST_CATEGORY_TOUGH,
|
|
.contestComboStarterId = COMBO_STARTER_POUND,
|
|
- .contestComboMoves = {0}
|
|
+ .contestComboMoves = {0},
|
|
+ .battleAnimScript = Move_POUND,
|
|
},
|
|
```
|
|
|
|
### Item Icons
|
|
|
|
* Filepath [`migration_scripts/1.9/convert_item_icons.py`](1.9/convert_item_icons.py)
|
|
* Introduced in [Get rid of gItemIconTable #4579](https://github.com/rh-hideout/pokeemerald-expansion/pull/4579)
|
|
|
|
Moves all information from `gItemIconTable` to `gItemsInfo`.
|
|
|
|
#### [src/data/item_icon_table.h](..src/data/item_icon_table.h)
|
|
```diff
|
|
- [ITEM_POKE_BALL] = {gItemIcon_PokeBall, gItemIconPalette_PokeBall},
|
|
```
|
|
|
|
#### [src/data/items.h](..src/data/items.h)
|
|
```diff
|
|
[ITEM_POKE_BALL] =
|
|
{
|
|
.name = _("Poké Ball"),
|
|
.price = 200,
|
|
.description = COMPOUND_STRING(
|
|
"A tool used for\n"
|
|
"catching wild\n"
|
|
"Pokémon."),
|
|
.pocket = POCKET_POKE_BALLS,
|
|
.type = ITEM_USE_BAG_MENU,
|
|
.battleUsage = EFFECT_ITEM_THROW_BALL,
|
|
.secondaryId = ITEM_POKE_BALL - FIRST_BALL,
|
|
+ .iconSprite = gItemIcon_PokeBall,
|
|
+ .iconPalette = gItemIconPalette_PokeBall,
|
|
},
|
|
```
|
|
|
|
### Partner & Trainer Parties
|
|
|
|
* Filepaths [`migration_scripts/1.9/convert_trainer_parties.py`](1.9/convert_trainer_parties.py) and [`migration_scripts/1.9/convert_partner_parties.py`](1.9/convert_trainer_parties.py)
|
|
* Introduced in [Competitive-formatted parties #3545](https://github.com/rh-hideout/pokeemerald-expansion/pull/3545) and [Make trainerproc compatible with partners #4421](https://github.com/rh-hideout/pokeemerald-expansion/pull/4421)
|
|
|
|
Converts trainer data (for `convert_trainer_parties.py`) and partner data (for `convert_partner_data.py`) to the new `.party` format. Not necessary if `COMPETITIVE_PARTY_SYNTAX` is turned off.
|
|
|
|
#### [src/data/trainer_parties.h](..src/data/trainer_parties.h)
|
|
```diff
|
|
-static const struct TrainerMon sParty_Sawyer1[] = {
|
|
- {
|
|
- .lvl = 21,
|
|
- .species = SPECIES_GEODUDE,
|
|
- }
|
|
-};
|
|
```
|
|
|
|
#### [src/data/trainers.party](..src/data/trainers.party)
|
|
```diff
|
|
+=== TRAINER_SAWYER_1 ===
|
|
+Name: SAWYER
|
|
+Class: Hiker
|
|
+Pic: Hiker
|
|
+Gender: Male
|
|
+Music: Hiker
|
|
+Double Battle: No
|
|
+AI: Check Bad Move / Try To Faint / Check Viability
|
|
+
|
|
+Geodude
|
|
+Level: 21
|
|
+IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe
|
|
```
|
|
|
|
#### [src/data/partner_parties.h](..src/data/partner_parties.h)
|
|
```diff
|
|
-static const struct TrainerMon sParty_StevenPartner[] = {
|
|
- {
|
|
- .species = SPECIES_METANG,
|
|
- .lvl = 42,
|
|
- .nature = NATURE_BRAVE,
|
|
- .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
|
|
- .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 6, 0),
|
|
- .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW},
|
|
- },
|
|
- {
|
|
- .species = SPECIES_SKARMORY,
|
|
- .lvl = 43,
|
|
- .nature = NATURE_IMPISH,
|
|
- .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
|
|
- .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 6, 252),
|
|
- .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING},
|
|
- },
|
|
- {
|
|
- .species = SPECIES_AGGRON,
|
|
- .lvl = 44,
|
|
- .nature = NATURE_ADAMANT,
|
|
- .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
|
|
- .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 6),
|
|
- .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW},
|
|
- }
|
|
-};
|
|
```
|
|
|
|
#### [src/data/battle_partners.party](..src/data/battle_partners.party)
|
|
```diff
|
|
+=== PARTNER_STEVEN ===
|
|
+Name: STEVEN
|
|
+Class: Rival
|
|
+Pic: Steven
|
|
+Gender: Male
|
|
+Music: Male
|
|
+
|
|
+Metang
|
|
+Brave Nature
|
|
+Level: 42
|
|
+IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe
|
|
+EVs: 252 Atk / 252 Def / 6 SpA
|
|
+- Light Screen
|
|
+- Psychic
|
|
+- Reflect
|
|
+- Metal Claw
|
|
+
|
|
+Skarmory
|
|
+Impish Nature
|
|
+Level: 43
|
|
+IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe
|
|
+EVs: 252 HP / 6 SpA / 252 SpD
|
|
+- Toxic
|
|
+- Aerial Ace
|
|
+- Protect
|
|
+- Steel Wing
|
|
+
|
|
+Aggron
|
|
+Adamant Nature
|
|
+Level: 44
|
|
+IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe
|
|
+EVs: 252 Atk / 252 SpA / 6 SpD
|
|
+- Thunder
|
|
+- Protect
|
|
+- Solar Beam
|
|
+- Dragon Claw
|
|
```
|
|
|
|
### Egg Move Refactor
|
|
|
|
* Filepaths [`migration_scripts/1.9/egg_move_refactor.py`](1.9/egg_move_refactor.py)
|
|
* Introduced in [Egg Move Refactor #4534](https://github.com/rh-hideout/pokeemerald-expansion/pull/4534)
|
|
|
|
Updates egg moves to the refactored format. Only necessary if new species have been added or if egg moves of an existing species was altered.
|
|
|
|
#### [src/data/pokemon/egg_moves.h](..src/data/pokemon/egg_moves.h)
|
|
```diff
|
|
- egg_moves(BULBASAUR,
|
|
- MOVE_SKULL_BASH,
|
|
- MOVE_CHARM,
|
|
- MOVE_PETAL_DANCE,
|
|
- MOVE_MAGICAL_LEAF,
|
|
- MOVE_GRASS_WHISTLE,
|
|
- MOVE_CURSE,
|
|
- MOVE_INGRAIN,
|
|
- MOVE_NATURE_POWER,
|
|
- MOVE_AMNESIA,
|
|
- MOVE_LEAF_STORM,
|
|
- MOVE_POWER_WHIP,
|
|
- MOVE_SLUDGE,
|
|
- MOVE_ENDURE,
|
|
- MOVE_GIGA_DRAIN,
|
|
- MOVE_GRASSY_TERRAIN),
|
|
+static const u16 sBulbasaurEggMoveLearnset[] = {
|
|
+ MOVE_SKULL_BASH,
|
|
+ MOVE_CHARM,
|
|
+ MOVE_PETAL_DANCE,
|
|
+ MOVE_MAGICAL_LEAF,
|
|
+ MOVE_GRASS_WHISTLE,
|
|
+ MOVE_CURSE,
|
|
+ MOVE_INGRAIN,
|
|
+ MOVE_NATURE_POWER,
|
|
+ MOVE_AMNESIA,
|
|
+ MOVE_LEAF_STORM,
|
|
+ MOVE_POWER_WHIP,
|
|
+ MOVE_SLUDGE,
|
|
+ MOVE_ENDURE,
|
|
+ MOVE_GIGA_DRAIN,
|
|
+ MOVE_GRASSY_TERRAIN,
|
|
+ MOVE_UNAVAILABLE,
|
|
};
|
|
```
|
|
|
|
#### [src/data/pokemon/species_info/gen_1_families.h](..src/data/pokemon/species_info/gen_1_families.h)
|
|
```diff
|
|
[SPECIES_BULBASAUR] =
|
|
{
|
|
.baseHP = 45,
|
|
.baseAttack = 49,
|
|
.baseDefense = 49,
|
|
.baseSpeed = 45,
|
|
.baseSpAttack = 65,
|
|
.baseSpDefense = 65,
|
|
.types = MON_TYPES(TYPE_GRASS, TYPE_POISON),
|
|
.catchRate = 45,
|
|
.expYield = 64,
|
|
.evYield_SpAttack = 1,
|
|
.genderRatio = PERCENT_FEMALE(12.5),
|
|
.eggCycles = 20,
|
|
.friendship = STANDARD_FRIENDSHIP,
|
|
.growthRate = GROWTH_MEDIUM_SLOW,
|
|
.eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS),
|
|
.abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL },
|
|
.bodyColor = BODY_COLOR_GREEN,
|
|
.speciesName = _("Bulbasaur"),
|
|
.cryId = CRY_BULBASAUR,
|
|
.natDexNum = NATIONAL_DEX_BULBASAUR,
|
|
.categoryName = _("Seed"),
|
|
.height = 7,
|
|
.weight = 69,
|
|
.description = COMPOUND_STRING(
|
|
"Bulbasaur can be seen napping in bright\n"
|
|
"sunlight. There is a seed on its back.\n"
|
|
"By soaking up the sun's rays, the seed\n"
|
|
"grows progressively larger."),
|
|
.pokemonScale = 356,
|
|
.pokemonOffset = 17,
|
|
.trainerScale = 256,
|
|
.trainerOffset = 0,
|
|
.frontPic = gMonFrontPic_Bulbasaur,
|
|
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
|
.frontPicYOffset = 13,
|
|
.frontAnimFrames = sAnims_Bulbasaur,
|
|
.frontAnimId = ANIM_V_JUMPS_H_JUMPS,
|
|
.backPic = gMonBackPic_Bulbasaur,
|
|
.backPicSize = MON_COORDS_SIZE(56, 40),
|
|
.backPicYOffset = 13,
|
|
.backAnimId = BACK_ANIM_DIP_RIGHT_SIDE,
|
|
.palette = gMonPalette_Bulbasaur,
|
|
.shinyPalette = gMonShinyPalette_Bulbasaur,
|
|
.iconSprite = gMonIcon_Bulbasaur,
|
|
.iconPalIndex = 4,
|
|
FOOTPRINT(Bulbasaur)
|
|
.levelUpLearnset = sBulbasaurLevelUpLearnset,
|
|
.teachableLearnset = sBulbasaurTeachableLearnset,
|
|
+ .eggMoveLearnset = sBulbasaurEggMoveLearnset,
|
|
.evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_IVYSAUR}),
|
|
},
|
|
```
|
|
|
|
## 1.7.x to 1.8.x+
|
|
|
|
### Item Balls
|
|
|
|
* Filepath [`migration_scripts/1.8/item_ball_refactor.py`](1.8/item_ball_refactor.py)
|
|
* Introduced in [Item Ball refactor / Pluralize item names for giveitem and finditem #3942](https://github.com/rh-hideout/pokeemerald-expansion/pull/3942)
|
|
|
|
Modifies all item ball scripts defined using to original Game Freak method to the new refactored method.
|
|
|
|
#### [data/scripts/item_ball_scripts.inc](../data/scripts/item_ball_scripts.inc)
|
|
```diff
|
|
- Route102_EventScript_ItemPotion::
|
|
- finditem ITEM_POTION
|
|
+ Common_EventScript_FindItem::
|
|
+ callnative GetObjectEventTrainerRangeFromTemplate
|
|
+ finditem VAR_RESULT
|
|
end
|
|
```
|
|
|
|
#### [data/maps/Route102/map.json](../data/maps/Route102/map.json)
|
|
```diff
|
|
{
|
|
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
|
|
"x": 50,
|
|
"y": 5,
|
|
"elevation": 3,
|
|
"movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
|
|
"movement_range_x": 1,
|
|
"movement_range_y": 1,
|
|
"trainer_type": "TRAINER_TYPE_NONE",
|
|
- "trainer_sight_or_berry_tree_id": "0",
|
|
- "script": "Route102_EventScript_ItemPotion",
|
|
+ "trainer_sight_or_berry_tree_id": "ITEM_POTION",
|
|
+ "script": "Common_EventScript_FindItem",
|
|
"flag": "FLAG_ITEM_ROUTE_102_POTION"
|
|
},
|
|
```
|
|
|
|
### Facility Mons
|
|
|
|
* Filepath [`migration_scripts/1.9/battle_frontier_convert_parties.py`](1.8/battle_frontier_convert_parties.py)
|
|
* Introduced in [Adds battle frontier conversion script #5040](https://github.com/rh-hideout/pokeemerald-expansion/pull/5040)
|
|
* Original refactor in [Customizable FrontierMon Sets #4313](https://github.com/rh-hideout/pokeemerald-expansion/pull/4313)
|
|
|
|
Replaces itemTableId with heldItem and evSpread with ev.
|
|
|
|
#### [src/data/battle_frontier/battle_frontier_mons.h](../src/data/battle_frontier/battle_frontier_mons.h)
|
|
```diff
|
|
[FRONTIER_MON_SUNKERN] = {
|
|
.species = SPECIES_SUNKERN,
|
|
.moves = {MOVE_MEGA_DRAIN, MOVE_HELPING_HAND, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN},
|
|
- .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
|
|
+ .heldItem = ITEM_LAX_INCENSE,
|
|
- .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
|
|
+ .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0),
|
|
.nature = NATURE_RELAXED
|
|
},
|
|
``` |