Merge branch 'fairy' into 'main'
Fairy type See merge request tbld/game!9
This commit is contained in:
commit
f0a61f8324
BIN
graphics/types/fairy.png
Normal file
BIN
graphics/types/fairy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 324 B |
@ -19,7 +19,7 @@ OBJEVENTGFXDIR := graphics/object_events
|
||||
MISCGFXDIR := graphics/misc
|
||||
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
|
||||
|
||||
|
||||
|
@ -85,7 +85,7 @@ extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE];
|
||||
extern const struct SpriteTemplate gUnusedBattleInitSprite;
|
||||
extern const struct OamData gOamData_BattleSpriteOpponentSide;
|
||||
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 struct TrainerMoney gTrainerMoneyTable[];
|
||||
extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1];
|
||||
|
@ -21,7 +21,8 @@
|
||||
#define TYPE_ICE 15
|
||||
#define TYPE_DRAGON 16
|
||||
#define TYPE_DARK 17
|
||||
#define NUMBER_OF_MON_TYPES 18
|
||||
#define TYPE_FAIRY 18
|
||||
#define NUMBER_OF_MON_TYPES 19
|
||||
|
||||
// Pokemon egg groups
|
||||
#define EGG_GROUP_NONE 0
|
||||
|
@ -315,7 +315,7 @@ static const s8 sCenterToCornerVecXs[8] ={-32, -16, -16, -32, -32};
|
||||
// 10 is ×1.0 TYPE_MUL_NORMAL
|
||||
// 05 is ×0.5 TYPE_MUL_NOT_EFFECTIVE
|
||||
// 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_STEEL, TYPE_MUL_NOT_EFFECTIVE,
|
||||
@ -425,6 +425,7 @@ const u8 gTypeEffectiveness[336] =
|
||||
TYPE_STEEL, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE,
|
||||
TYPE_STEEL, TYPE_ROCK, TYPE_MUL_SUPER_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_NORMAL, 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_DRAGON] = _("Dragon"),
|
||||
[TYPE_DARK] = _("Dark"),
|
||||
[TYPE_FAIRY] = ("Fairy"),
|
||||
};
|
||||
|
||||
// This is a factor in how much money you get for beating a trainer.
|
||||
|
@ -1322,7 +1322,7 @@ static const u8 sText_SpaceIs[] = _(" is");
|
||||
static const u8 sText_ApostropheS[] = _("'s");
|
||||
|
||||
// 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_FIGHTING] = _("a Fighting move"),
|
||||
@ -1341,7 +1341,8 @@ static const u8 sATypeMove_Table[NUMBER_OF_MON_TYPES][17] =
|
||||
[TYPE_PSYCHIC] = _("a Psychic move"),
|
||||
[TYPE_ICE] = _("an Ice 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");
|
||||
|
@ -2422,7 +2422,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
{
|
||||
.effect = EFFECT_CONFUSE,
|
||||
.power = 0,
|
||||
.type = TYPE_NORMAL,
|
||||
.type = TYPE_FAIRY,
|
||||
.accuracy = 75,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
@ -2656,7 +2656,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
{
|
||||
.effect = EFFECT_ATTACK_DOWN_2,
|
||||
.power = 0,
|
||||
.type = TYPE_NORMAL,
|
||||
.type = TYPE_FAIRY,
|
||||
.accuracy = 100,
|
||||
.pp = 20,
|
||||
.secondaryEffectChance = 0,
|
||||
@ -3072,7 +3072,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
{
|
||||
.effect = EFFECT_MOONLIGHT,
|
||||
.power = 0,
|
||||
.type = TYPE_NORMAL,
|
||||
.type = TYPE_FAIRY,
|
||||
.accuracy = 0,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 0,
|
||||
|
@ -1134,8 +1134,8 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpeed = 35,
|
||||
.baseSpAttack = 60,
|
||||
.baseSpDefense = 65,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type1 = TYPE_FAIRY,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 150,
|
||||
.expYield = 68,
|
||||
.evYield_HP = 2,
|
||||
@ -1166,8 +1166,8 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpeed = 60,
|
||||
.baseSpAttack = 85,
|
||||
.baseSpDefense = 90,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type1 = TYPE_FAIRY,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 25,
|
||||
.expYield = 129,
|
||||
.evYield_HP = 3,
|
||||
@ -1263,7 +1263,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 45,
|
||||
.baseSpDefense = 25,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 170,
|
||||
.expYield = 76,
|
||||
.evYield_HP = 2,
|
||||
@ -1295,7 +1295,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 75,
|
||||
.baseSpDefense = 50,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 50,
|
||||
.expYield = 109,
|
||||
.evYield_HP = 3,
|
||||
@ -3919,7 +3919,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 100,
|
||||
.baseSpDefense = 120,
|
||||
.type1 = TYPE_PSYCHIC,
|
||||
.type2 = TYPE_PSYCHIC,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 45,
|
||||
.expYield = 136,
|
||||
.evYield_HP = 0,
|
||||
@ -5550,8 +5550,8 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpeed = 15,
|
||||
.baseSpAttack = 45,
|
||||
.baseSpDefense = 55,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type1 = TYPE_FAIRY,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 150,
|
||||
.expYield = 37,
|
||||
.evYield_HP = 0,
|
||||
@ -5583,7 +5583,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 40,
|
||||
.baseSpDefense = 20,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 170,
|
||||
.expYield = 39,
|
||||
.evYield_HP = 1,
|
||||
@ -5614,8 +5614,8 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpeed = 20,
|
||||
.baseSpAttack = 40,
|
||||
.baseSpDefense = 65,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type1 = TYPE_FAIRY,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 190,
|
||||
.expYield = 74,
|
||||
.evYield_HP = 0,
|
||||
@ -5646,7 +5646,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpeed = 40,
|
||||
.baseSpAttack = 80,
|
||||
.baseSpDefense = 105,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type1 = TYPE_FAIRY,
|
||||
.type2 = TYPE_FLYING,
|
||||
.catchRate = 75,
|
||||
.expYield = 114,
|
||||
@ -5871,7 +5871,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 20,
|
||||
.baseSpDefense = 50,
|
||||
.type1 = TYPE_WATER,
|
||||
.type2 = TYPE_WATER,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 190,
|
||||
.expYield = 58,
|
||||
.evYield_HP = 2,
|
||||
@ -5903,7 +5903,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 50,
|
||||
.baseSpDefense = 80,
|
||||
.type1 = TYPE_WATER,
|
||||
.type2 = TYPE_WATER,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 75,
|
||||
.expYield = 153,
|
||||
.evYield_HP = 3,
|
||||
@ -6702,8 +6702,8 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpeed = 30,
|
||||
.baseSpAttack = 40,
|
||||
.baseSpDefense = 40,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type1 = TYPE_FAIRY,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 190,
|
||||
.expYield = 63,
|
||||
.evYield_HP = 0,
|
||||
@ -6734,8 +6734,8 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpeed = 45,
|
||||
.baseSpAttack = 60,
|
||||
.baseSpDefense = 60,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type1 = TYPE_FAIRY,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 75,
|
||||
.expYield = 178,
|
||||
.evYield_HP = 0,
|
||||
@ -10465,7 +10465,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 20,
|
||||
.baseSpDefense = 40,
|
||||
.type1 = TYPE_NORMAL,
|
||||
.type2 = TYPE_NORMAL,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 150,
|
||||
.expYield = 33,
|
||||
.evYield_HP = 1,
|
||||
@ -10625,7 +10625,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 55,
|
||||
.baseSpDefense = 55,
|
||||
.type1 = TYPE_STEEL,
|
||||
.type2 = TYPE_STEEL,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 45,
|
||||
.expYield = 98,
|
||||
.evYield_HP = 0,
|
||||
@ -11809,7 +11809,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 45,
|
||||
.baseSpDefense = 35,
|
||||
.type1 = TYPE_PSYCHIC,
|
||||
.type2 = TYPE_PSYCHIC,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 235,
|
||||
.expYield = 70,
|
||||
.evYield_HP = 0,
|
||||
@ -11841,7 +11841,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 65,
|
||||
.baseSpDefense = 55,
|
||||
.type1 = TYPE_PSYCHIC,
|
||||
.type2 = TYPE_PSYCHIC,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 120,
|
||||
.expYield = 140,
|
||||
.evYield_HP = 0,
|
||||
@ -11873,7 +11873,7 @@ const struct BaseStats gBaseStats[] =
|
||||
.baseSpAttack = 125,
|
||||
.baseSpDefense = 115,
|
||||
.type1 = TYPE_PSYCHIC,
|
||||
.type2 = TYPE_PSYCHIC,
|
||||
.type2 = TYPE_FAIRY,
|
||||
.catchRate = 45,
|
||||
.expYield = 208,
|
||||
.evYield_HP = 0,
|
||||
|
@ -1393,6 +1393,7 @@ static const struct SearchOptionText sDexSearchTypeOptions[NUMBER_OF_MON_TYPES +
|
||||
{gText_DexEmptyString, gTypeNames[TYPE_ICE]},
|
||||
{gText_DexEmptyString, gTypeNames[TYPE_DRAGON]},
|
||||
{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_DRAGON,
|
||||
TYPE_DARK,
|
||||
TYPE_FAIRY,
|
||||
};
|
||||
|
||||
// Number pairs are the task data for tracking the cursor pos and scroll offset of each option list
|
||||
|
@ -819,6 +819,10 @@ static const union AnimCmd sSpriteAnim_TypeDark[] = {
|
||||
ANIMCMD_FRAME(TYPE_DARK * 8, 0, FALSE, FALSE),
|
||||
ANIMCMD_END
|
||||
};
|
||||
static const union AnimCmd sSpriteAnim_TypeFairy[] = {
|
||||
ANIMCMD_FRAME(TYPE_FAIRY * 8, 0, FALSE, FALSE),
|
||||
ANIMCMD_END
|
||||
};
|
||||
static const union AnimCmd sSpriteAnim_CategoryCool[] = {
|
||||
ANIMCMD_FRAME((CONTEST_CATEGORY_COOL + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE),
|
||||
ANIMCMD_END
|
||||
@ -858,6 +862,7 @@ static const union AnimCmd *const sSpriteAnimTable_MoveTypes[NUMBER_OF_MON_TYPES
|
||||
sSpriteAnim_TypeIce,
|
||||
sSpriteAnim_TypeDragon,
|
||||
sSpriteAnim_TypeDark,
|
||||
sSpriteAnim_TypeFairy,
|
||||
sSpriteAnim_CategoryCool,
|
||||
sSpriteAnim_CategoryBeauty,
|
||||
sSpriteAnim_CategoryCute,
|
||||
@ -901,6 +906,7 @@ static const u8 sMoveTypeToOamPaletteNum[NUMBER_OF_MON_TYPES + CONTEST_CATEGORIE
|
||||
[TYPE_ICE] = 14,
|
||||
[TYPE_DRAGON] = 15,
|
||||
[TYPE_DARK] = 13,
|
||||
[TYPE_FAIRY] = 14,
|
||||
[NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_COOL] = 13,
|
||||
[NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_BEAUTY] = 14,
|
||||
[NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_CUTE] = 14,
|
||||
|
Loading…
Reference in New Issue
Block a user