From 306621638915c4a503a3e44ad6b40acc10e4b282 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 12 Mar 2024 08:32:06 -0300 Subject: [PATCH] Type array tweaks (#4276) * Using Z-Moves in type array * Added Arceus form data --- include/data.h | 3 ++- src/battle_main.c | 54 ++++++++++++++++++++++++++++++--------------- src/battle_z_move.c | 14 ++++++------ 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/include/data.h b/include/data.h index df11e48a10..eba8e6f809 100644 --- a/include/data.h +++ b/include/data.h @@ -104,7 +104,7 @@ struct TypeInfo u8 name[TYPE_NAME_LENGTH + 1]; u8 generic[17]; u8 palette; - //u16 zMove; + u16 zMove; u16 maxMove; //u16 enhanceItem; //u16 berry; @@ -113,6 +113,7 @@ struct TypeInfo //u16 memory; //u16 zCrystal; //u16 teraShard; + //u16 arceusForm; }; extern const u16 gMinigameDigits_Pal[]; diff --git a/src/battle_main.c b/src/battle_main.c index 782016ee40..19acc700e1 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -303,20 +303,21 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .name = _("Normal"), .generic = _("a NORMAL move"), .palette = 13, - //.zMove = MOVE_BREAKNECK_BLITZ, + .zMove = MOVE_BREAKNECK_BLITZ, .maxMove = MOVE_MAX_STRIKE, //.enhanceItem = ITEM_SILK_SCARF, //.berry = ITEM_CHILAN_BERRY, //.gem = ITEM_NORMAL_GEM, //.zCrystal = ITEM_NORMALIUM_Z, //.teraShard = ITEM_NORMAL_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_NORMAL, }, [TYPE_FIGHTING] = { .name = _("Fight"), .generic = _("a FIGHTING move"), .palette = 13, - //.zMove = MOVE_ALL_OUT_PUMMELING, + .zMove = MOVE_ALL_OUT_PUMMELING, .maxMove = MOVE_MAX_KNUCKLE, //.enhanceItem = ITEM_BLACK_BELT, //.berry = ITEM_CHOPLE_BERRY, @@ -325,13 +326,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_FIST_PLATE, //.memory = ITEM_FIGHTING_MEMORY, //.teraShard = ITEM_FIGHTING_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FIGHTING, }, [TYPE_FLYING] = { .name = _("Flying"), .generic = _("a FLYING move"), .palette = 14, - //.zMove = MOVE_SUPERSONIC_SKYSTRIKE, + .zMove = MOVE_SUPERSONIC_SKYSTRIKE, .maxMove = MOVE_MAX_AIRSTREAM, //.enhanceItem = ITEM_SHARP_BEAK, //.berry = ITEM_COBA_BERRY, @@ -340,13 +342,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_SKY_PLATE, //.memory = ITEM_FLYING_MEMORY, //.teraShard = ITEM_FLYING_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FLYING, }, [TYPE_POISON] = { .name = _("Poison"), .generic = _("a POISON move"), .palette = 14, - //.zMove = MOVE_ACID_DOWNPOUR, + .zMove = MOVE_ACID_DOWNPOUR, .maxMove = MOVE_MAX_OOZE, //.enhanceItem = ITEM_POISON_BARB, //.berry = ITEM_KEBIA_BERRY, @@ -355,13 +358,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_TOXIC_PLATE, //.memory = ITEM_POISON_MEMORY, //.teraShard = ITEM_POISON_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_POISON, }, [TYPE_GROUND] = { .name = _("Ground"), .generic = _("a GROUND move"), .palette = 13, - //.zMove = MOVE_TECTONIC_RAGE, + .zMove = MOVE_TECTONIC_RAGE, .maxMove = MOVE_MAX_QUAKE, //.enhanceItem = ITEM_SOFT_SAND, //.berry = ITEM_SHUCA_BERRY, @@ -370,13 +374,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_EARTH_PLATE, //.memory = ITEM_GROUND_MEMORY, //.teraShard = ITEM_GROUND_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GROUND, }, [TYPE_ROCK] = { .name = _("Rock"), .generic = _("a ROCK move"), .palette = 13, - //.zMove = MOVE_CONTINENTAL_CRUSH, + .zMove = MOVE_CONTINENTAL_CRUSH, .maxMove = MOVE_MAX_ROCKFALL, //.enhanceItem = ITEM_HARD_STONE, //.berry = ITEM_CHARTI_BERRY, @@ -385,13 +390,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_STONE_PLATE, //.memory = ITEM_ROCK_MEMORY, //.teraShard = ITEM_ROCK_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ROCK, }, [TYPE_BUG] = { .name = _("Bug"), .generic = _("a BUG move"), .palette = 15, - //.zMove = MOVE_SAVAGE_SPIN_OUT, + .zMove = MOVE_SAVAGE_SPIN_OUT, .maxMove = MOVE_MAX_FLUTTERBY, //.enhanceItem = ITEM_SILVER_POWDER, //.berry = ITEM_TANGA_BERRY, @@ -400,13 +406,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_INSECT_PLATE, //.memory = ITEM_BUG_MEMORY, //.teraShard = ITEM_BUG_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_BUG, }, [TYPE_GHOST] = { .name = _("Ghost"), .generic = _("a GHOST move"), .palette = 14, - //.zMove = MOVE_NEVER_ENDING_NIGHTMARE, + .zMove = MOVE_NEVER_ENDING_NIGHTMARE, .maxMove = MOVE_MAX_PHANTASM, //.enhanceItem = ITEM_SPELL_TAG, //.berry = ITEM_KASIB_BERRY, @@ -415,13 +422,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_SPOOKY_PLATE, //.memory = ITEM_GHOST_MEMORY, //.teraShard = ITEM_GHOST_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GHOST, }, [TYPE_STEEL] = { .name = _("Steel"), .generic = _("a STEEL move"), .palette = 13, - //.zMove = MOVE_CORKSCREW_CRASH, + .zMove = MOVE_CORKSCREW_CRASH, .maxMove = MOVE_MAX_STEELSPIKE, //.enhanceItem = ITEM_METAL_COAT, //.berry = ITEM_BABIRI_BERRY, @@ -430,6 +438,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_IRON_PLATE, //.memory = ITEM_STEEL_MEMORY, //.teraShard = ITEM_STEEL_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_STEEL, }, [TYPE_MYSTERY] = { @@ -442,7 +451,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .name = _("Fire"), .generic = _("a FIRE move"), .palette = 13, - //.zMove = MOVE_INFERNO_OVERDRIVE, + .zMove = MOVE_INFERNO_OVERDRIVE, .maxMove = MOVE_MAX_FLARE, //.enhanceItem = ITEM_CHARCOAL, //.berry = ITEM_OCCA_BERRY, @@ -451,13 +460,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_FLAME_PLATE, //.memory = ITEM_FIRE_MEMORY, //.teraShard = ITEM_FIRE_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FIRE, }, [TYPE_WATER] = { .name = _("Water"), .generic = _("a WATER move"), .palette = 14, - //.zMove = MOVE_HYDRO_VORTEX, + .zMove = MOVE_HYDRO_VORTEX, .maxMove = MOVE_MAX_GEYSER, //.enhanceItem = ITEM_MYSTIC_WATER, //.berry = ITEM_PASSHO_BERRY, @@ -466,13 +476,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_SPLASH_PLATE, //.memory = ITEM_WATER_MEMORY, //.teraShard = ITEM_WATER_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_WATER, }, [TYPE_GRASS] = { .name = _("Grass"), .generic = _("a GRASS move"), .palette = 15, - //.zMove = MOVE_BLOOM_DOOM, + .zMove = MOVE_BLOOM_DOOM, .maxMove = MOVE_MAX_OVERGROWTH, //.enhanceItem = ITEM_MIRACLE_SEED, //.berry = ITEM_RINDO_BERRY, @@ -481,13 +492,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_MEADOW_PLATE, //.memory = ITEM_GRASS_MEMORY, //.teraShard = ITEM_GRASS_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GRASS, }, [TYPE_ELECTRIC] = { .name = _("Electr"), .generic = _("an ELECTRIC move"), .palette = 13, - //.zMove = MOVE_GIGAVOLT_HAVOC, + .zMove = MOVE_GIGAVOLT_HAVOC, .maxMove = MOVE_MAX_LIGHTNING, //.enhanceItem = ITEM_MAGNET, //.berry = ITEM_WACAN_BERRY, @@ -496,13 +508,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_ZAP_PLATE, //.memory = ITEM_ELECTRIC_MEMORY, //.teraShard = ITEM_ELECTRIC_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ELECTRIC, }, [TYPE_PSYCHIC] = { .name = _("Psychc"), .generic = _("a PSYCHIC move"), .palette = 14, - //.zMove = MOVE_SHATTERED_PSYCHE, + .zMove = MOVE_SHATTERED_PSYCHE, .maxMove = MOVE_MAX_MINDSTORM, //.enhanceItem = ITEM_TWISTED_SPOON, //.berry = ITEM_PAYAPA_BERRY, @@ -511,13 +524,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_MIND_PLATE, //.memory = ITEM_PSYCHIC_MEMORY, //.teraShard = ITEM_PSYCHIC_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_PSYCHIC, }, [TYPE_ICE] = { .name = _("Ice"), .generic = _("an ICE move"), .palette = 14, - //.zMove = MOVE_SUBZERO_SLAMMER, + .zMove = MOVE_SUBZERO_SLAMMER, .maxMove = MOVE_MAX_HAILSTORM, //.enhanceItem = ITEM_NEVER_MELT_ICE, //.berry = ITEM_YACHE_BERRY, @@ -526,13 +540,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_ICICLE_PLATE, //.memory = ITEM_ICE_MEMORY, //.teraShard = ITEM_ICE_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ICE, }, [TYPE_DRAGON] = { .name = _("Dragon"), .generic = _("a DRAGON move"), .palette = 15, - //.zMove = MOVE_DEVASTATING_DRAKE, + .zMove = MOVE_DEVASTATING_DRAKE, .maxMove = MOVE_MAX_WYRMWIND, //.enhanceItem = ITEM_DRAGON_FANG, //.berry = ITEM_HABAN_BERRY, @@ -541,13 +556,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_DRACO_PLATE, //.memory = ITEM_DRAGON_MEMORY, //.teraShard = ITEM_DRAGON_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_DRAGON, }, [TYPE_DARK] = { .name = _("Dark"), .generic = _("a DARK move"), .palette = 13, - //.zMove = MOVE_BLACK_HOLE_ECLIPSE, + .zMove = MOVE_BLACK_HOLE_ECLIPSE, .maxMove = MOVE_MAX_DARKNESS, //.enhanceItem = ITEM_BLACK_GLASSES, //.berry = ITEM_COLBUR_BERRY, @@ -556,13 +572,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_DREAD_PLATE, //.memory = ITEM_DARK_MEMORY, //.teraShard = ITEM_DARK_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_DARK, }, [TYPE_FAIRY] = { .name = _("Fairy"), .generic = _("a FAIRY move"), .palette = 14, - //.zMove = MOVE_TWINKLE_TACKLE, + .zMove = MOVE_TWINKLE_TACKLE, .maxMove = MOVE_MAX_STARFALL, //.enhanceItem = ITEM_FAIRY_FEATHER, //.berry = ITEM_ROSELI_BERRY, @@ -571,6 +588,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_PIXIE_PLATE, //.memory = ITEM_FAIRY_MEMORY, //.teraShard = ITEM_FAIRY_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FAIRY, }, /* [TYPE_STELLAR] = diff --git a/src/battle_z_move.c b/src/battle_z_move.c index f0d2938b8e..e4ea9fabc0 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -378,13 +378,13 @@ static u16 GetTypeBasedZMove(u16 move, u8 battler) { u8 moveType = gMovesInfo[move].type; - // Get z move from type - if (moveType < TYPE_FIRE) - return MOVE_BREAKNECK_BLITZ + moveType; - else if (moveType >= TYPE_FAIRY) - return MOVE_TWINKLE_TACKLE + (moveType - TYPE_FAIRY); - else - return MOVE_BREAKNECK_BLITZ + (moveType - 1); + if (moveType >= NUMBER_OF_MON_TYPES) + moveType = TYPE_MYSTERY; + + // Get Z-Move from type + if (gTypesInfo[moveType].zMove == MOVE_NONE) // failsafe + return gTypesInfo[0].zMove; + return gTypesInfo[moveType].zMove; } bool32 MoveSelectionDisplayZMove(u16 zmove, u32 battler)