Merge branch 'fairy' into 'main'

Fairy type

See merge request tbld/game!9
This commit is contained in:
Jess 2022-10-11 17:46:54 +00:00
commit f0a61f8324
10 changed files with 45 additions and 33 deletions

BIN
graphics/types/fairy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

View File

@ -19,7 +19,7 @@ OBJEVENTGFXDIR := graphics/object_events
MISCGFXDIR := graphics/misc MISCGFXDIR := graphics/misc
JPCONTESTGFXDIR := graphics/contest/japanese JPCONTESTGFXDIR := graphics/contest/japanese
types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark fairy
contest_types := cool beauty cute smart tough contest_types := cool beauty cute smart tough

View File

@ -85,7 +85,7 @@ extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE];
extern const struct SpriteTemplate gUnusedBattleInitSprite; extern const struct SpriteTemplate gUnusedBattleInitSprite;
extern const struct OamData gOamData_BattleSpriteOpponentSide; extern const struct OamData gOamData_BattleSpriteOpponentSide;
extern const struct OamData gOamData_BattleSpritePlayerSide; extern const struct OamData gOamData_BattleSpritePlayerSide;
extern const u8 gTypeEffectiveness[336]; extern const u8 gTypeEffectiveness[339];
extern const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1]; extern const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1];
extern const struct TrainerMoney gTrainerMoneyTable[]; extern const struct TrainerMoney gTrainerMoneyTable[];
extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1];

View File

@ -21,7 +21,8 @@
#define TYPE_ICE 15 #define TYPE_ICE 15
#define TYPE_DRAGON 16 #define TYPE_DRAGON 16
#define TYPE_DARK 17 #define TYPE_DARK 17
#define NUMBER_OF_MON_TYPES 18 #define TYPE_FAIRY 18
#define NUMBER_OF_MON_TYPES 19
// Pokemon egg groups // Pokemon egg groups
#define EGG_GROUP_NONE 0 #define EGG_GROUP_NONE 0

View File

@ -315,7 +315,7 @@ static const s8 sCenterToCornerVecXs[8] ={-32, -16, -16, -32, -32};
// 10 is ×1.0 TYPE_MUL_NORMAL // 10 is ×1.0 TYPE_MUL_NORMAL
// 05 is ×0.5 TYPE_MUL_NOT_EFFECTIVE // 05 is ×0.5 TYPE_MUL_NOT_EFFECTIVE
// 00 is ×0.0 TYPE_MUL_NO_EFFECT // 00 is ×0.0 TYPE_MUL_NO_EFFECT
const u8 gTypeEffectiveness[336] = const u8 gTypeEffectiveness[339] =
{ {
TYPE_NORMAL, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE, TYPE_NORMAL, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE,
TYPE_NORMAL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, TYPE_NORMAL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
@ -425,6 +425,7 @@ const u8 gTypeEffectiveness[336] =
TYPE_STEEL, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE, TYPE_STEEL, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_STEEL, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE, TYPE_STEEL, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_STEEL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, TYPE_STEEL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FAIRY, TYPE_DRAGON, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FORESIGHT, TYPE_FORESIGHT, TYPE_MUL_NO_EFFECT, TYPE_FORESIGHT, TYPE_FORESIGHT, TYPE_MUL_NO_EFFECT,
TYPE_NORMAL, TYPE_GHOST, TYPE_MUL_NO_EFFECT, TYPE_NORMAL, TYPE_GHOST, TYPE_MUL_NO_EFFECT,
TYPE_FIGHTING, TYPE_GHOST, TYPE_MUL_NO_EFFECT, TYPE_FIGHTING, TYPE_GHOST, TYPE_MUL_NO_EFFECT,
@ -451,6 +452,7 @@ const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1] =
[TYPE_ICE] = _("Ice"), [TYPE_ICE] = _("Ice"),
[TYPE_DRAGON] = _("Dragon"), [TYPE_DRAGON] = _("Dragon"),
[TYPE_DARK] = _("Dark"), [TYPE_DARK] = _("Dark"),
[TYPE_FAIRY] = ("Fairy"),
}; };
// This is a factor in how much money you get for beating a trainer. // This is a factor in how much money you get for beating a trainer.

View File

@ -1322,7 +1322,7 @@ static const u8 sText_SpaceIs[] = _(" is");
static const u8 sText_ApostropheS[] = _("'s"); static const u8 sText_ApostropheS[] = _("'s");
// For displaying names of invalid moves // For displaying names of invalid moves
static const u8 sATypeMove_Table[NUMBER_OF_MON_TYPES][17] = static const u8 sATypeMove_Table[NUMBER_OF_MON_TYPES][18] =
{ {
[TYPE_NORMAL] = _("a Normal move"), [TYPE_NORMAL] = _("a Normal move"),
[TYPE_FIGHTING] = _("a Fighting move"), [TYPE_FIGHTING] = _("a Fighting move"),
@ -1341,7 +1341,8 @@ static const u8 sATypeMove_Table[NUMBER_OF_MON_TYPES][17] =
[TYPE_PSYCHIC] = _("a Psychic move"), [TYPE_PSYCHIC] = _("a Psychic move"),
[TYPE_ICE] = _("an Ice move"), [TYPE_ICE] = _("an Ice move"),
[TYPE_DRAGON] = _("a Dragon move"), [TYPE_DRAGON] = _("a Dragon move"),
[TYPE_DARK] = _("a Dark move") [TYPE_DARK] = _("a Dark move"),
[TYPE_FAIRY] = _("a Fairy move")
}; };
const u8 gText_BattleTourney[] = _("Battle Tourney"); const u8 gText_BattleTourney[] = _("Battle Tourney");

View File

@ -2422,7 +2422,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
{ {
.effect = EFFECT_CONFUSE, .effect = EFFECT_CONFUSE,
.power = 0, .power = 0,
.type = TYPE_NORMAL, .type = TYPE_FAIRY,
.accuracy = 75, .accuracy = 75,
.pp = 10, .pp = 10,
.secondaryEffectChance = 0, .secondaryEffectChance = 0,
@ -2656,7 +2656,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
{ {
.effect = EFFECT_ATTACK_DOWN_2, .effect = EFFECT_ATTACK_DOWN_2,
.power = 0, .power = 0,
.type = TYPE_NORMAL, .type = TYPE_FAIRY,
.accuracy = 100, .accuracy = 100,
.pp = 20, .pp = 20,
.secondaryEffectChance = 0, .secondaryEffectChance = 0,
@ -3072,7 +3072,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
{ {
.effect = EFFECT_MOONLIGHT, .effect = EFFECT_MOONLIGHT,
.power = 0, .power = 0,
.type = TYPE_NORMAL, .type = TYPE_FAIRY,
.accuracy = 0, .accuracy = 0,
.pp = 5, .pp = 5,
.secondaryEffectChance = 0, .secondaryEffectChance = 0,

View File

@ -1134,8 +1134,8 @@ const struct BaseStats gBaseStats[] =
.baseSpeed = 35, .baseSpeed = 35,
.baseSpAttack = 60, .baseSpAttack = 60,
.baseSpDefense = 65, .baseSpDefense = 65,
.type1 = TYPE_NORMAL, .type1 = TYPE_FAIRY,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 150, .catchRate = 150,
.expYield = 68, .expYield = 68,
.evYield_HP = 2, .evYield_HP = 2,
@ -1166,8 +1166,8 @@ const struct BaseStats gBaseStats[] =
.baseSpeed = 60, .baseSpeed = 60,
.baseSpAttack = 85, .baseSpAttack = 85,
.baseSpDefense = 90, .baseSpDefense = 90,
.type1 = TYPE_NORMAL, .type1 = TYPE_FAIRY,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 25, .catchRate = 25,
.expYield = 129, .expYield = 129,
.evYield_HP = 3, .evYield_HP = 3,
@ -1263,7 +1263,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 45, .baseSpAttack = 45,
.baseSpDefense = 25, .baseSpDefense = 25,
.type1 = TYPE_NORMAL, .type1 = TYPE_NORMAL,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 170, .catchRate = 170,
.expYield = 76, .expYield = 76,
.evYield_HP = 2, .evYield_HP = 2,
@ -1295,7 +1295,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 75, .baseSpAttack = 75,
.baseSpDefense = 50, .baseSpDefense = 50,
.type1 = TYPE_NORMAL, .type1 = TYPE_NORMAL,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 50, .catchRate = 50,
.expYield = 109, .expYield = 109,
.evYield_HP = 3, .evYield_HP = 3,
@ -3919,7 +3919,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 100, .baseSpAttack = 100,
.baseSpDefense = 120, .baseSpDefense = 120,
.type1 = TYPE_PSYCHIC, .type1 = TYPE_PSYCHIC,
.type2 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY,
.catchRate = 45, .catchRate = 45,
.expYield = 136, .expYield = 136,
.evYield_HP = 0, .evYield_HP = 0,
@ -5550,8 +5550,8 @@ const struct BaseStats gBaseStats[] =
.baseSpeed = 15, .baseSpeed = 15,
.baseSpAttack = 45, .baseSpAttack = 45,
.baseSpDefense = 55, .baseSpDefense = 55,
.type1 = TYPE_NORMAL, .type1 = TYPE_FAIRY,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 150, .catchRate = 150,
.expYield = 37, .expYield = 37,
.evYield_HP = 0, .evYield_HP = 0,
@ -5583,7 +5583,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 40, .baseSpAttack = 40,
.baseSpDefense = 20, .baseSpDefense = 20,
.type1 = TYPE_NORMAL, .type1 = TYPE_NORMAL,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 170, .catchRate = 170,
.expYield = 39, .expYield = 39,
.evYield_HP = 1, .evYield_HP = 1,
@ -5614,8 +5614,8 @@ const struct BaseStats gBaseStats[] =
.baseSpeed = 20, .baseSpeed = 20,
.baseSpAttack = 40, .baseSpAttack = 40,
.baseSpDefense = 65, .baseSpDefense = 65,
.type1 = TYPE_NORMAL, .type1 = TYPE_FAIRY,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 190, .catchRate = 190,
.expYield = 74, .expYield = 74,
.evYield_HP = 0, .evYield_HP = 0,
@ -5646,7 +5646,7 @@ const struct BaseStats gBaseStats[] =
.baseSpeed = 40, .baseSpeed = 40,
.baseSpAttack = 80, .baseSpAttack = 80,
.baseSpDefense = 105, .baseSpDefense = 105,
.type1 = TYPE_NORMAL, .type1 = TYPE_FAIRY,
.type2 = TYPE_FLYING, .type2 = TYPE_FLYING,
.catchRate = 75, .catchRate = 75,
.expYield = 114, .expYield = 114,
@ -5871,7 +5871,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 20, .baseSpAttack = 20,
.baseSpDefense = 50, .baseSpDefense = 50,
.type1 = TYPE_WATER, .type1 = TYPE_WATER,
.type2 = TYPE_WATER, .type2 = TYPE_FAIRY,
.catchRate = 190, .catchRate = 190,
.expYield = 58, .expYield = 58,
.evYield_HP = 2, .evYield_HP = 2,
@ -5903,7 +5903,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 50, .baseSpAttack = 50,
.baseSpDefense = 80, .baseSpDefense = 80,
.type1 = TYPE_WATER, .type1 = TYPE_WATER,
.type2 = TYPE_WATER, .type2 = TYPE_FAIRY,
.catchRate = 75, .catchRate = 75,
.expYield = 153, .expYield = 153,
.evYield_HP = 3, .evYield_HP = 3,
@ -6702,8 +6702,8 @@ const struct BaseStats gBaseStats[] =
.baseSpeed = 30, .baseSpeed = 30,
.baseSpAttack = 40, .baseSpAttack = 40,
.baseSpDefense = 40, .baseSpDefense = 40,
.type1 = TYPE_NORMAL, .type1 = TYPE_FAIRY,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 190, .catchRate = 190,
.expYield = 63, .expYield = 63,
.evYield_HP = 0, .evYield_HP = 0,
@ -6734,8 +6734,8 @@ const struct BaseStats gBaseStats[] =
.baseSpeed = 45, .baseSpeed = 45,
.baseSpAttack = 60, .baseSpAttack = 60,
.baseSpDefense = 60, .baseSpDefense = 60,
.type1 = TYPE_NORMAL, .type1 = TYPE_FAIRY,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 75, .catchRate = 75,
.expYield = 178, .expYield = 178,
.evYield_HP = 0, .evYield_HP = 0,
@ -10465,7 +10465,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 20, .baseSpAttack = 20,
.baseSpDefense = 40, .baseSpDefense = 40,
.type1 = TYPE_NORMAL, .type1 = TYPE_NORMAL,
.type2 = TYPE_NORMAL, .type2 = TYPE_FAIRY,
.catchRate = 150, .catchRate = 150,
.expYield = 33, .expYield = 33,
.evYield_HP = 1, .evYield_HP = 1,
@ -10625,7 +10625,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 55, .baseSpAttack = 55,
.baseSpDefense = 55, .baseSpDefense = 55,
.type1 = TYPE_STEEL, .type1 = TYPE_STEEL,
.type2 = TYPE_STEEL, .type2 = TYPE_FAIRY,
.catchRate = 45, .catchRate = 45,
.expYield = 98, .expYield = 98,
.evYield_HP = 0, .evYield_HP = 0,
@ -11809,7 +11809,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 45, .baseSpAttack = 45,
.baseSpDefense = 35, .baseSpDefense = 35,
.type1 = TYPE_PSYCHIC, .type1 = TYPE_PSYCHIC,
.type2 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY,
.catchRate = 235, .catchRate = 235,
.expYield = 70, .expYield = 70,
.evYield_HP = 0, .evYield_HP = 0,
@ -11841,7 +11841,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 65, .baseSpAttack = 65,
.baseSpDefense = 55, .baseSpDefense = 55,
.type1 = TYPE_PSYCHIC, .type1 = TYPE_PSYCHIC,
.type2 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY,
.catchRate = 120, .catchRate = 120,
.expYield = 140, .expYield = 140,
.evYield_HP = 0, .evYield_HP = 0,
@ -11873,7 +11873,7 @@ const struct BaseStats gBaseStats[] =
.baseSpAttack = 125, .baseSpAttack = 125,
.baseSpDefense = 115, .baseSpDefense = 115,
.type1 = TYPE_PSYCHIC, .type1 = TYPE_PSYCHIC,
.type2 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY,
.catchRate = 45, .catchRate = 45,
.expYield = 208, .expYield = 208,
.evYield_HP = 0, .evYield_HP = 0,

View File

@ -1393,6 +1393,7 @@ static const struct SearchOptionText sDexSearchTypeOptions[NUMBER_OF_MON_TYPES +
{gText_DexEmptyString, gTypeNames[TYPE_ICE]}, {gText_DexEmptyString, gTypeNames[TYPE_ICE]},
{gText_DexEmptyString, gTypeNames[TYPE_DRAGON]}, {gText_DexEmptyString, gTypeNames[TYPE_DRAGON]},
{gText_DexEmptyString, gTypeNames[TYPE_DARK]}, {gText_DexEmptyString, gTypeNames[TYPE_DARK]},
{gText_DexEmptyString, gTypeNames[TYPE_FAIRY]},
{}, {},
}; };
@ -1427,6 +1428,7 @@ static const u8 sDexSearchTypeIds[NUMBER_OF_MON_TYPES] =
TYPE_ICE, TYPE_ICE,
TYPE_DRAGON, TYPE_DRAGON,
TYPE_DARK, TYPE_DARK,
TYPE_FAIRY,
}; };
// Number pairs are the task data for tracking the cursor pos and scroll offset of each option list // Number pairs are the task data for tracking the cursor pos and scroll offset of each option list

View File

@ -819,6 +819,10 @@ static const union AnimCmd sSpriteAnim_TypeDark[] = {
ANIMCMD_FRAME(TYPE_DARK * 8, 0, FALSE, FALSE), ANIMCMD_FRAME(TYPE_DARK * 8, 0, FALSE, FALSE),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_TypeFairy[] = {
ANIMCMD_FRAME(TYPE_FAIRY * 8, 0, FALSE, FALSE),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_CategoryCool[] = { static const union AnimCmd sSpriteAnim_CategoryCool[] = {
ANIMCMD_FRAME((CONTEST_CATEGORY_COOL + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE), ANIMCMD_FRAME((CONTEST_CATEGORY_COOL + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE),
ANIMCMD_END ANIMCMD_END
@ -858,6 +862,7 @@ static const union AnimCmd *const sSpriteAnimTable_MoveTypes[NUMBER_OF_MON_TYPES
sSpriteAnim_TypeIce, sSpriteAnim_TypeIce,
sSpriteAnim_TypeDragon, sSpriteAnim_TypeDragon,
sSpriteAnim_TypeDark, sSpriteAnim_TypeDark,
sSpriteAnim_TypeFairy,
sSpriteAnim_CategoryCool, sSpriteAnim_CategoryCool,
sSpriteAnim_CategoryBeauty, sSpriteAnim_CategoryBeauty,
sSpriteAnim_CategoryCute, sSpriteAnim_CategoryCute,
@ -901,6 +906,7 @@ static const u8 sMoveTypeToOamPaletteNum[NUMBER_OF_MON_TYPES + CONTEST_CATEGORIE
[TYPE_ICE] = 14, [TYPE_ICE] = 14,
[TYPE_DRAGON] = 15, [TYPE_DRAGON] = 15,
[TYPE_DARK] = 13, [TYPE_DARK] = 13,
[TYPE_FAIRY] = 14,
[NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_COOL] = 13, [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_COOL] = 13,
[NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_BEAUTY] = 14, [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_BEAUTY] = 14,
[NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_CUTE] = 14, [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_CUTE] = 14,