Even more enums and documentation (#8029)
This commit is contained in:
parent
7ebb939cbc
commit
be23dfdf2a
@ -45,7 +45,7 @@ void GetAIPartyIndexes(u32 battlerId, s32 *firstId, s32 *lastId);
|
||||
void AI_TrySwitchOrUseItem(u32 battler);
|
||||
u32 GetMostSuitableMonToSwitchInto(u32 battler, enum SwitchType switchType);
|
||||
bool32 ShouldSwitch(u32 battler);
|
||||
bool32 IsMonGrounded(u16 heldItemEffect, enum Ability ability, u8 type1, u8 type2);
|
||||
bool32 IsMonGrounded(enum HoldEffect heldItemEffect, enum Ability ability, u8 type1, u8 type2);
|
||||
void ModifySwitchAfterMoveScoring(u32 battler);
|
||||
|
||||
#endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H
|
||||
|
||||
@ -94,7 +94,7 @@ void RecordAllMoves(u32 battler);
|
||||
void RecordKnownMove(u32 battlerId, u32 move);
|
||||
void RecordAbilityBattle(u32 battlerId, enum Ability abilityId);
|
||||
void ClearBattlerAbilityHistory(u32 battlerId);
|
||||
void RecordItemEffectBattle(u32 battlerId, u32 itemEffect);
|
||||
void RecordItemEffectBattle(u32 battlerId, enum HoldEffect itemEffect);
|
||||
void ClearBattlerItemEffectHistory(u32 battlerId);
|
||||
void SaveBattlerData(u32 battlerId);
|
||||
void SetBattlerData(u32 battlerId);
|
||||
@ -151,8 +151,8 @@ bool32 CanEndureHit(u32 battler, u32 battlerTarget, u32 move);
|
||||
|
||||
// stat stage checks
|
||||
bool32 AnyStatIsRaised(u32 battlerId);
|
||||
bool32 CanLowerStat(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData, u32 stat);
|
||||
bool32 BattlerStatCanRise(u32 battler, enum Ability battlerAbility, u32 stat);
|
||||
bool32 CanLowerStat(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData, enum Stat stat);
|
||||
bool32 BattlerStatCanRise(u32 battler, enum Ability battlerAbility, enum Stat stat);
|
||||
bool32 AreBattlersStatsMaxed(u32 battler);
|
||||
u32 CountPositiveStatStages(u32 battlerId);
|
||||
u32 CountNegativeStatStages(u32 battlerId);
|
||||
@ -256,7 +256,7 @@ s32 BattlerBenefitsFromAbilityScore(u32 battler, enum Ability ability, struct Ai
|
||||
bool32 IsTargetingPartner(u32 battlerAtk, u32 battlerDef);
|
||||
// IsTargetingPartner includes a check to make sure the adjacent pokemon is truly a partner.
|
||||
u32 GetAllyChosenMove(u32 battlerId);
|
||||
bool32 IsBattle1v1();
|
||||
bool32 IsBattle1v1(void);
|
||||
// IsBattle1v1 is distinct from !IsDoubleBattle. If the player is fighting Maxie and Tabitha, with Steven as their partner, and both Tabitha and Steven have run out of Pokemon, the battle is 1v1, even though mechanically it is a Double Battle for how battlers and flags are set.
|
||||
// Most AI checks should be using IsBattle1v1; most engine checks should be using !IsDoubleBattle
|
||||
bool32 HasTwoOpponents(u32 battler);
|
||||
@ -287,7 +287,7 @@ bool32 SideHasMoveCategory(u32 battlerId, enum DamageCategory category);
|
||||
// score increases
|
||||
u32 IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, enum StatChange statId);
|
||||
u32 IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, enum StatChange statId);
|
||||
u32 IncreaseStatDownScore(u32 battlerAtk, u32 battlerDef, u32 stat);
|
||||
u32 IncreaseStatDownScore(u32 battlerAtk, u32 battlerDef, enum Stat stat);
|
||||
void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score);
|
||||
void IncreaseBurnScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score);
|
||||
void IncreaseParalyzeScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score);
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
bool32 CanDynamax(u32 battler);
|
||||
bool32 IsGigantamaxed(u32 battler);
|
||||
void ApplyDynamaxHPMultiplier(struct Pokemon* mon);
|
||||
void ApplyDynamaxHPMultiplier(struct Pokemon *mon);
|
||||
void ActivateDynamax(u32 battler);
|
||||
u16 GetNonDynamaxHP(u32 battler);
|
||||
u16 GetNonDynamaxMaxHP(u32 battler);
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
#include "constants/battle.h"
|
||||
#include "battle_bg.h"
|
||||
|
||||
struct BattleEnvironment {
|
||||
u8 name[26];
|
||||
struct BattleEnvironment
|
||||
{
|
||||
u16 naturePower;
|
||||
u16 secretPowerEffect;
|
||||
u8 camouflageType;
|
||||
|
||||
@ -29,7 +29,7 @@ extern const struct HoldEffectInfo gHoldEffectsInfo[];
|
||||
typedef bool32 (*ActivationTiming)(enum HoldEffect holdEffect);
|
||||
enum ItemEffect ItemBattleEffects(u32 primaryBattler, u32 secondaryBattler, enum HoldEffect holdEffect, ActivationTiming timing);
|
||||
enum ItemEffect TryBoosterEnergy(u32 battler, enum Ability ability, ActivationTiming timing);
|
||||
enum ItemEffect TryHandleSeed(u32 battler, u32 terrainFlag, u32 statId, u32 itemId, ActivationTiming timing);
|
||||
enum ItemEffect TryHandleSeed(u32 battler, u32 terrainFlag, enum Stat statId, u32 itemId, ActivationTiming timing);
|
||||
|
||||
bool32 IsOnSwitchInActivation(enum HoldEffect holdEffect);
|
||||
bool32 IsOnSwitchInFirstTurnActivation(enum HoldEffect holdEffect);
|
||||
|
||||
@ -43,7 +43,6 @@ union TRANSPARENT StatChangeFlags
|
||||
s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, enum Ability abilityAtk, enum Ability abilityDef, enum HoldEffect holdEffectAtk);
|
||||
s32 CalcCritChanceStageGen1(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, enum Ability abilityAtk, enum Ability abilityDef, enum HoldEffect holdEffectAtk);
|
||||
s32 GetCritHitOdds(s32 critChanceIndex);
|
||||
u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, enum Ability atkAbility, enum Ability defAbility, u32 atkHoldEffect, u32 defHoldEffect);
|
||||
bool32 HasBattlerActedThisTurn(u32 battler);
|
||||
u32 GetBattlerTurnOrderNum(u32 battler);
|
||||
bool32 NoAliveMonsForBattlerSide(u32 battler);
|
||||
@ -67,7 +66,7 @@ bool32 TryResetBattlerStatChanges(u8 battler);
|
||||
bool32 CanCamouflage(u8 battlerId);
|
||||
void StealTargetItem(u8 battlerStealer, u8 battlerItem);
|
||||
u8 GetCatchingBattler(void);
|
||||
u32 GetHighestStatId(u32 battlerId);
|
||||
enum Stat GetHighestStatId(u32 battlerId);
|
||||
bool32 ProteanTryChangeType(u32 battler, enum Ability ability, u32 move, u32 moveType);
|
||||
bool32 IsMoveNotAllowedInSkyBattles(u32 move);
|
||||
bool32 DoSwitchInAbilities(u32 battlerId);
|
||||
|
||||
@ -338,7 +338,7 @@ void TrySaveExchangedItem(u32 battler, u16 stolenItem);
|
||||
bool32 IsPartnerMonFromSameTrainer(u32 battler);
|
||||
bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes);
|
||||
void SortBattlersBySpeed(u8 *battlers, bool32 slowToFast);
|
||||
bool32 CompareStat(u32 battler, u8 statId, u8 cmpTo, u8 cmpKind);
|
||||
bool32 CompareStat(u32 battler, enum Stat statId, u8 cmpTo, u8 cmpKind);
|
||||
bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 checkTarget);
|
||||
bool32 PickupHasValidTarget(u32 battler);
|
||||
bool32 CantPickupItem(u32 battler);
|
||||
@ -412,7 +412,7 @@ void RemoveAllHazardsFromField(u32 side);
|
||||
bool32 IsHazardOnSideAndClear(u32 side, enum Hazards hazardType);
|
||||
void RemoveHazardFromField(u32 side, enum Hazards hazardType);
|
||||
bool32 CanMoveSkipAccuracyCalc(u32 battlerAtk, u32 battlerDef, enum Ability abilityAtk, enum Ability abilityDef, u32 move, enum FunctionCallOption option);
|
||||
u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, enum Ability atkAbility, enum Ability defAbility, u32 atkHoldEffect, u32 defHoldEffect);
|
||||
u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, enum Ability atkAbility, enum Ability defAbility, enum HoldEffect atkHoldEffect, enum HoldEffect defHoldEffect);
|
||||
bool32 IsSemiInvulnerable(u32 battler, enum SemiInvulnerableExclusion excludeCommander);
|
||||
bool32 BreaksThroughSemiInvulnerablity(u32 battler, u32 move);
|
||||
u32 GetNaturePowerMove(u32 battler);
|
||||
|
||||
@ -74,16 +74,18 @@
|
||||
#define NUM_NATURES 25
|
||||
|
||||
// Pokémon Stats
|
||||
#define STAT_HP 0
|
||||
#define STAT_ATK 1
|
||||
#define STAT_DEF 2
|
||||
#define STAT_SPEED 3
|
||||
#define STAT_SPATK 4
|
||||
#define STAT_SPDEF 5
|
||||
#define NUM_STATS 6
|
||||
|
||||
#define STAT_ACC 6 // Only in battles.
|
||||
#define STAT_EVASION 7 // Only in battles.
|
||||
enum __attribute__((packed)) Stat
|
||||
{
|
||||
STAT_HP,
|
||||
STAT_ATK,
|
||||
STAT_DEF,
|
||||
STAT_SPEED,
|
||||
STAT_SPATK,
|
||||
STAT_SPDEF,
|
||||
NUM_STATS,
|
||||
STAT_ACC = NUM_STATS, // Only in battles.
|
||||
STAT_EVASION, // Only in battles.
|
||||
};
|
||||
|
||||
#define NUM_NATURE_STATS (NUM_STATS - 1) // excludes HP
|
||||
#define NUM_BATTLE_STATS (NUM_STATS + 2) // includes Accuracy and Evasion
|
||||
|
||||
@ -231,7 +231,7 @@ bool32 RemovePyramidBagItem(u16 itemId, u16 count);
|
||||
const u8 *GetItemName(u16 itemId);
|
||||
u32 GetItemPrice(u16 itemId);
|
||||
const u8 *GetItemEffect(u32 itemId);
|
||||
u32 GetItemHoldEffect(u32 itemId);
|
||||
enum HoldEffect GetItemHoldEffect(u32 itemId);
|
||||
u32 GetItemHoldEffectParam(u32 itemId);
|
||||
const u8 *GetItemDescription(u16 itemId);
|
||||
u8 GetItemImportance(u16 itemId);
|
||||
|
||||
@ -601,8 +601,8 @@ enum {
|
||||
struct NatureInfo
|
||||
{
|
||||
const u8 *name;
|
||||
u8 statUp;
|
||||
u8 statDown;
|
||||
enum Stat statUp;
|
||||
enum Stat statDown;
|
||||
u8 backAnim;
|
||||
u8 pokeBlockAnim[2];
|
||||
u8 battlePalacePercents[4];
|
||||
@ -826,7 +826,7 @@ u8 GetPlayerFlankId(void);
|
||||
u16 GetLinkTrainerFlankId(u8 linkPlayerId);
|
||||
s32 GetBattlerMultiplayerId(u16 id);
|
||||
u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
|
||||
u16 ModifyStatByNature(u8 nature, u16 stat, u8 statIndex);
|
||||
u16 ModifyStatByNature(u8 nature, u16 stat, enum Stat statIndex);
|
||||
void AdjustFriendship(struct Pokemon *mon, u8 event);
|
||||
void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
|
||||
u16 GetMonEVCount(struct Pokemon *mon);
|
||||
|
||||
@ -1535,7 +1535,7 @@ static u32 GetFirstNonInvalidMon(u32 firstId, u32 lastId, u32 invalidMons, u32 b
|
||||
return PARTY_SIZE;
|
||||
}
|
||||
|
||||
bool32 IsMonGrounded(u16 heldItemEffect, enum Ability ability, u8 type1, u8 type2)
|
||||
bool32 IsMonGrounded(enum HoldEffect heldItemEffect, enum Ability ability, u8 type1, u8 type2)
|
||||
{
|
||||
// List that makes mon not grounded
|
||||
if (type1 == TYPE_FLYING || type2 == TYPE_FLYING || ability == ABILITY_LEVITATE
|
||||
|
||||
@ -271,7 +271,7 @@ void ClearBattlerAbilityHistory(u32 battlerId)
|
||||
gBattleHistory->abilities[battlerId] = ABILITY_NONE;
|
||||
}
|
||||
|
||||
void RecordItemEffectBattle(u32 battlerId, u32 itemEffect)
|
||||
void RecordItemEffectBattle(u32 battlerId, enum HoldEffect itemEffect)
|
||||
{
|
||||
gBattleHistory->itemEffects[battlerId] = itemEffect;
|
||||
gAiPartyData->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect = itemEffect;
|
||||
@ -2107,7 +2107,7 @@ s32 ProtectChecks(u32 battlerAtk, u32 battlerDef, u32 move, u32 predictedMove)
|
||||
}
|
||||
|
||||
// stat stages
|
||||
bool32 CanLowerStat(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData, u32 stat)
|
||||
bool32 CanLowerStat(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData, enum Stat stat)
|
||||
{
|
||||
if (gBattleMons[battlerDef].statStages[stat] == MIN_STAT_STAGE)
|
||||
return FALSE;
|
||||
@ -2170,7 +2170,7 @@ bool32 CanLowerStat(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 IncreaseStatDownScore(u32 battlerAtk, u32 battlerDef, u32 stat)
|
||||
u32 IncreaseStatDownScore(u32 battlerAtk, u32 battlerDef, enum Stat stat)
|
||||
{
|
||||
u32 tempScore = NO_INCREASE;
|
||||
|
||||
@ -2236,12 +2236,14 @@ u32 IncreaseStatDownScore(u32 battlerAtk, u32 battlerDef, u32 stat)
|
||||
if (gBattleMons[battlerDef].volatiles.cursed)
|
||||
tempScore += WEAK_EFFECT;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return (tempScore > BEST_EFFECT) ? BEST_EFFECT : tempScore; // don't inflate score so only max +4
|
||||
}
|
||||
|
||||
bool32 BattlerStatCanRise(u32 battler, enum Ability battlerAbility, u32 stat)
|
||||
bool32 BattlerStatCanRise(u32 battler, enum Ability battlerAbility, enum Stat stat)
|
||||
{
|
||||
if ((gBattleMons[battler].statStages[stat] < MAX_STAT_STAGE && battlerAbility != ABILITY_CONTRARY)
|
||||
|| (battlerAbility == ABILITY_CONTRARY && gBattleMons[battler].statStages[stat] > MIN_STAT_STAGE))
|
||||
@ -2251,7 +2253,7 @@ bool32 BattlerStatCanRise(u32 battler, enum Ability battlerAbility, u32 stat)
|
||||
|
||||
bool32 AreBattlersStatsMaxed(u32 battlerId)
|
||||
{
|
||||
u32 i;
|
||||
enum Stat i;
|
||||
for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++)
|
||||
{
|
||||
if (gBattleMons[battlerId].statStages[i] < MAX_STAT_STAGE)
|
||||
@ -2262,7 +2264,7 @@ bool32 AreBattlersStatsMaxed(u32 battlerId)
|
||||
|
||||
bool32 AnyStatIsRaised(u32 battlerId)
|
||||
{
|
||||
u32 i;
|
||||
enum Stat i;
|
||||
|
||||
for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++)
|
||||
{
|
||||
@ -2275,7 +2277,7 @@ bool32 AnyStatIsRaised(u32 battlerId)
|
||||
u32 CountPositiveStatStages(u32 battlerId)
|
||||
{
|
||||
u32 count = 0;
|
||||
u32 i;
|
||||
enum Stat i;
|
||||
for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++)
|
||||
{
|
||||
if (gBattleMons[battlerId].statStages[i] > DEFAULT_STAT_STAGE)
|
||||
@ -2287,7 +2289,7 @@ u32 CountPositiveStatStages(u32 battlerId)
|
||||
u32 CountNegativeStatStages(u32 battlerId)
|
||||
{
|
||||
u32 count = 0;
|
||||
u32 i;
|
||||
enum Stat i;
|
||||
for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++)
|
||||
{
|
||||
if (gBattleMons[battlerId].statStages[i] < DEFAULT_STAT_STAGE)
|
||||
@ -3192,7 +3194,7 @@ bool32 BattlerWillFaintFromSecondaryDamage(u32 battler, enum Ability ability)
|
||||
|
||||
static bool32 AnyUsefulStatIsRaised(u32 battler)
|
||||
{
|
||||
u32 statId;
|
||||
enum Stat statId;
|
||||
|
||||
for (statId = STAT_ATK; statId < NUM_BATTLE_STATS; statId++)
|
||||
{
|
||||
@ -3210,6 +3212,8 @@ static bool32 AnyUsefulStatIsRaised(u32 battler)
|
||||
break;
|
||||
case STAT_SPEED:
|
||||
return TRUE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4033,7 +4037,7 @@ bool32 ShouldCureStatusWithItem(u32 battlerAtk, u32 battlerDef, struct AiLogicDa
|
||||
}
|
||||
|
||||
// Partner Logic
|
||||
bool32 IsBattle1v1()
|
||||
bool32 IsBattle1v1(void)
|
||||
{
|
||||
if (IsDoubleBattle()
|
||||
&& ((IsBattlerAlive(B_POSITION_PLAYER_LEFT) && IsBattlerAlive(B_POSITION_PLAYER_RIGHT))
|
||||
@ -4706,7 +4710,7 @@ static bool32 HasMoveThatChangesKOThreshold(u32 battlerId, u32 noOfHitsToFaint,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static u32 GetStatBeingChanged(enum StatChange statChange)
|
||||
static enum Stat GetStatBeingChanged(enum StatChange statChange)
|
||||
{
|
||||
switch(statChange)
|
||||
{
|
||||
@ -4774,7 +4778,7 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
|
||||
u32 aiIsFaster = AI_IsFaster(battlerAtk, battlerDef, MOVE_NONE, predictedMoveSpeedCheck, DONT_CONSIDER_PRIORITY); // Don't care about the priority of our setup move, care about outspeeding otherwise
|
||||
u32 shouldSetUp = ((noOfHitsToFaint >= 2 && aiIsFaster) || (noOfHitsToFaint >= 3 && !aiIsFaster) || noOfHitsToFaint == UNKNOWN_NO_OF_HITS);
|
||||
u32 i;
|
||||
u32 statId = GetStatBeingChanged(statChange);
|
||||
enum Stat statId = GetStatBeingChanged(statChange);
|
||||
u32 stages = GetStagesOfStatChange(statChange);
|
||||
|
||||
if (considerContrary && gAiLogicData->abilities[battlerAtk] == ABILITY_CONTRARY)
|
||||
@ -4878,6 +4882,8 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
|
||||
else
|
||||
tempScore += DECENT_EFFECT;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// if already inclined to boost, be slightly more likely to if boost levels matter
|
||||
@ -5479,7 +5485,7 @@ s32 AI_TryToClearStats(u32 battlerAtk, u32 battlerDef, bool32 isDoubleBattle)
|
||||
|
||||
bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef)
|
||||
{
|
||||
u8 i;
|
||||
enum Stat i;
|
||||
// Want to copy positive stat changes
|
||||
for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++)
|
||||
{
|
||||
@ -5499,6 +5505,8 @@ bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef)
|
||||
case STAT_DEF:
|
||||
case STAT_SPDEF:
|
||||
return (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2312,7 +2312,7 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
u32 x;
|
||||
u32 done = FALSE;
|
||||
bool32 done = FALSE;
|
||||
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
switch (gTasks[taskId].data[10])
|
||||
|
||||
@ -2291,6 +2291,7 @@ static const u8 *const sHoldEffectNames[HOLD_EFFECT_COUNT] =
|
||||
[HOLD_EFFECT_OGERPON_MASK] = COMPOUND_STRING("Ogerpon Mask"),
|
||||
[HOLD_EFFECT_BERSERK_GENE] = COMPOUND_STRING("Berserk Gene"),
|
||||
};
|
||||
|
||||
static const u8 *GetHoldEffectName(enum HoldEffect holdEffect)
|
||||
{
|
||||
if (sHoldEffectNames[holdEffect] == NULL)
|
||||
|
||||
@ -2136,9 +2136,8 @@ static void InitDomeTrainers(void)
|
||||
static void CalcDomeMonStats(const struct TrainerMon *fmon, int level, u8 ivs, int *stats)
|
||||
{
|
||||
int evs[NUM_STATS];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_STATS; i++)
|
||||
for (enum Stat i = 0; i < NUM_STATS; i++)
|
||||
{
|
||||
if (fmon->ev != NULL)
|
||||
evs[i] = fmon->ev[i];
|
||||
|
||||
@ -97,7 +97,7 @@ static enum ItemEffect TryRoomService(u32 battler, ActivationTiming timing)
|
||||
return ITEM_NO_EFFECT;
|
||||
}
|
||||
|
||||
enum ItemEffect TryHandleSeed(u32 battler, u32 terrainFlag, u32 statId, u32 itemId, ActivationTiming timing)
|
||||
enum ItemEffect TryHandleSeed(u32 battler, u32 terrainFlag, enum Stat statId, u32 itemId, ActivationTiming timing)
|
||||
{
|
||||
if (gFieldStatuses & terrainFlag && CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
{
|
||||
@ -516,7 +516,7 @@ static enum ItemEffect TryThroatSray(u32 battlerAtk)
|
||||
return effect;
|
||||
}
|
||||
|
||||
static enum ItemEffect DamagedStatBoostBerryEffect(u32 battlerDef, u32 battlerAtk, u32 statId, enum DamageCategory category)
|
||||
static enum ItemEffect DamagedStatBoostBerryEffect(u32 battlerDef, u32 battlerAtk, enum Stat statId, enum DamageCategory category)
|
||||
{
|
||||
enum ItemEffect effect = ITEM_NO_EFFECT;
|
||||
|
||||
@ -968,7 +968,7 @@ static enum ItemEffect HealConfuseBerry(u32 battler, u32 itemId, u32 flavorId, A
|
||||
return effect;
|
||||
}
|
||||
|
||||
static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, u32 statId, ActivationTiming timing)
|
||||
static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, enum Stat statId, ActivationTiming timing)
|
||||
{
|
||||
enum ItemEffect effect = ITEM_NO_EFFECT;
|
||||
enum Ability ability = GetBattlerAbility(battler);
|
||||
@ -1013,7 +1013,7 @@ static enum ItemEffect CriticalHitRatioUp(u32 battler, u32 itemId, ActivationTim
|
||||
static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, ActivationTiming timing)
|
||||
{
|
||||
enum ItemEffect effect = ITEM_NO_EFFECT;
|
||||
s32 stat;
|
||||
enum Stat stat;
|
||||
|
||||
for (stat = STAT_ATK; stat < NUM_STATS; stat++)
|
||||
{
|
||||
|
||||
@ -1985,7 +1985,7 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer
|
||||
}
|
||||
if (partyData[monIndex].isShiny)
|
||||
{
|
||||
u32 data = TRUE;
|
||||
bool32 data = TRUE;
|
||||
SetMonData(&party[i], MON_DATA_IS_SHINY, &data);
|
||||
}
|
||||
if (partyData[monIndex].dynamaxLevel > 0)
|
||||
|
||||
@ -311,7 +311,7 @@ enum GiveCaughtMonStates
|
||||
#define TAG_LVLUP_BANNER_MON_ICON 55130
|
||||
|
||||
static void TrySetDestinyBondToHappen(void);
|
||||
static u32 ChangeStatBuffs(u32 battler, s8 statValue, u32 statId, union StatChangeFlags flags, u32 stats, const u8 *BS_ptr);
|
||||
static u32 ChangeStatBuffs(u32 battler, s8 statValue, enum Stat statId, union StatChangeFlags flags, u32 stats, const u8 *BS_ptr);
|
||||
static bool32 IsMonGettingExpSentOut(void);
|
||||
static void InitLevelUpBanner(void);
|
||||
static bool8 SlideInLevelUpBanner(void);
|
||||
@ -3562,7 +3562,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, bool32 primary, bool32 certai
|
||||
break;
|
||||
case MOVE_EFFECT_ORDER_UP:
|
||||
{
|
||||
u32 stat = 0;
|
||||
enum Stat stat = 0;
|
||||
bool32 commanderAffected = TRUE;
|
||||
switch (gBattleStruct->battlerState[gEffectBattler].commanderSpecies)
|
||||
{
|
||||
@ -3735,7 +3735,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, bool32 primary, bool32 certai
|
||||
case MOVE_EFFECT_LOWER_EVASIVENESS_SIDE:
|
||||
if (!NoAliveMonsForEitherParty())
|
||||
{
|
||||
u32 statId = 0;
|
||||
enum Stat statId = 0;
|
||||
u32 stage = 1;
|
||||
switch (gBattleScripting.moveEffect)
|
||||
{
|
||||
@ -5581,7 +5581,7 @@ static bool32 HandleMoveEndAbilityBlock(u32 battlerAtk, u32 battlerDef, u32 move
|
||||
if (!IsBattlerAlive(battlerAtk) || NoAliveMonsForEitherParty())
|
||||
break;
|
||||
|
||||
u32 stat = STAT_ATK;
|
||||
enum Stat stat = STAT_ATK;
|
||||
u32 numMonsFainted = NumFaintedBattlersByAttacker(battlerAtk);
|
||||
|
||||
if (abilityAtk == ABILITY_BEAST_BOOST)
|
||||
@ -5671,7 +5671,7 @@ static bool32 HandleMoveEndMoveBlock(u32 moveEffect)
|
||||
if (gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE)
|
||||
return FALSE;
|
||||
|
||||
u32 effect = FALSE;
|
||||
bool32 effect = FALSE;
|
||||
enum BattleSide side = GetBattlerSide(gBattlerTarget);
|
||||
switch (moveEffect)
|
||||
{
|
||||
@ -7444,7 +7444,7 @@ static void Cmd_openpartyscreen(void)
|
||||
{
|
||||
if (((1u << i) & hitmarkerFaintBits))
|
||||
{
|
||||
u32 skipPartnerCheck = FALSE;
|
||||
bool32 skipPartnerCheck = FALSE;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS
|
||||
&& GetBattlerSide(i) == B_SIDE_OPPONENT
|
||||
&& TRAINER_BATTLE_PARAM.opponentB != TRAINER_NONE)
|
||||
@ -9331,9 +9331,11 @@ u32 IsAbilityStatusProtected(u32 battler, enum Ability ability)
|
||||
|| IsFlowerVeilProtected(battler);
|
||||
}
|
||||
|
||||
u32 GetHighestStatId(u32 battler)
|
||||
enum Stat GetHighestStatId(u32 battler)
|
||||
{
|
||||
u32 i, highestId = STAT_ATK, highestStat = gBattleMons[battler].attack;
|
||||
enum Stat i;
|
||||
enum Stat highestId = STAT_ATK;
|
||||
u32 highestStat = gBattleMons[battler].attack;
|
||||
|
||||
for (i = STAT_DEF; i < NUM_STATS; i++)
|
||||
{
|
||||
@ -10012,7 +10014,7 @@ static u16 ReverseStatChangeMoveEffect(u16 moveEffect)
|
||||
|
||||
static void TryPlayStatChangeAnimation(u32 battler, enum Ability ability, u32 stats, s32 statValue, u32 statId, bool32 certain)
|
||||
{
|
||||
u32 currStat = 0;
|
||||
enum Stat currStat = 0;
|
||||
u32 changeableStatsCount = 1; // current stat is counted automatically
|
||||
u32 statAnimId = statId;
|
||||
bool32 statChangeByTwo = statValue > 1 || statValue < -1;
|
||||
@ -10098,7 +10100,7 @@ static void TryPlayStatChangeAnimation(u32 battler, enum Ability ability, u32 st
|
||||
}
|
||||
}
|
||||
|
||||
static u32 ChangeStatBuffs(u32 battler, s8 statValue, u32 statId, union StatChangeFlags flags, u32 stats, const u8 *BS_ptr)
|
||||
static u32 ChangeStatBuffs(u32 battler, s8 statValue, enum Stat statId, union StatChangeFlags flags, u32 stats, const u8 *BS_ptr)
|
||||
{
|
||||
u32 index, battlerAbility;
|
||||
enum HoldEffect battlerHoldEffect;
|
||||
@ -14239,7 +14241,7 @@ static void Cmd_swapstatstages(void)
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
static u16 *GetBattlerStat(struct BattlePokemon *battler, u32 stat)
|
||||
static u16 *GetBattlerStat(struct BattlePokemon *battler, enum Stat stat)
|
||||
{
|
||||
switch (stat)
|
||||
{
|
||||
@ -15934,7 +15936,7 @@ void BS_TrySpectralThiefSteal(void)
|
||||
bool32 contrary = GetBattlerAbility(gBattlerAttacker) == ABILITY_CONTRARY;
|
||||
gBattleStruct->stolenStats[0] = 0; // Stats to steal.
|
||||
gBattleScripting.animArg1 = 0;
|
||||
for (u32 stat = STAT_ATK; stat < NUM_BATTLE_STATS; stat++)
|
||||
for (enum Stat stat = STAT_ATK; stat < NUM_BATTLE_STATS; stat++)
|
||||
{
|
||||
if (gBattleMons[gBattlerTarget].statStages[stat] > DEFAULT_STAT_STAGE && gBattleMons[gBattlerAttacker].statStages[stat] != MAX_STAT_STAGE)
|
||||
{
|
||||
@ -15979,7 +15981,7 @@ void BS_SpectralThiefPrintStats(void)
|
||||
{
|
||||
NATIVE_ARGS();
|
||||
|
||||
for (u32 stat = STAT_ATK; stat < NUM_BATTLE_STATS; stat++)
|
||||
for (enum Stat stat = STAT_ATK; stat < NUM_BATTLE_STATS; stat++)
|
||||
{
|
||||
if (gBattleStruct->stolenStats[0] & (1u << stat))
|
||||
{
|
||||
@ -16045,7 +16047,7 @@ void BS_SwapStats(void)
|
||||
{
|
||||
NATIVE_ARGS(u8 stat);
|
||||
|
||||
u32 stat = cmd->stat;
|
||||
enum Stat stat = cmd->stat;
|
||||
u32 temp;
|
||||
|
||||
switch (stat)
|
||||
@ -16068,6 +16070,8 @@ void BS_SwapStats(void)
|
||||
case STAT_SPDEF:
|
||||
SWAP(gBattleMons[gBattlerAttacker].spDefense, gBattleMons[gBattlerTarget].spDefense, temp);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, stat);
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
@ -16279,7 +16283,7 @@ void BS_JumpIfIntimidateAbilityPrevented(void)
|
||||
{
|
||||
NATIVE_ARGS();
|
||||
|
||||
u32 hasAbility = FALSE;
|
||||
bool32 hasAbility = FALSE;
|
||||
enum Ability ability = GetBattlerAbility(gBattlerTarget);
|
||||
|
||||
switch (ability)
|
||||
@ -16681,7 +16685,7 @@ void BS_TryAcupressure(void)
|
||||
{
|
||||
NATIVE_ARGS(const u8 *failInstr);
|
||||
u32 bits = 0;
|
||||
for (u32 stat = STAT_ATK; stat < NUM_BATTLE_STATS; stat++)
|
||||
for (enum Stat stat = STAT_ATK; stat < NUM_BATTLE_STATS; stat++)
|
||||
{
|
||||
if (CompareStat(gBattlerTarget, stat, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
bits |= 1u << stat;
|
||||
|
||||
@ -1632,7 +1632,7 @@ void CreateFacilityMon(const struct TrainerMon *fmon, u16 level, u8 fixedIV, u32
|
||||
|
||||
if (fmon->isShiny)
|
||||
{
|
||||
u32 data = TRUE;
|
||||
bool32 data = TRUE;
|
||||
SetMonData(dst, MON_DATA_IS_SHINY, &data);
|
||||
}
|
||||
if (fmon->dynamaxLevel > 0)
|
||||
|
||||
@ -2388,7 +2388,7 @@ static enum MoveCanceller CancellerChoiceLock(struct BattleContext *ctx)
|
||||
|
||||
static enum MoveCanceller CancellerCallSubmove(struct BattleContext *ctx)
|
||||
{
|
||||
u32 noEffect = FALSE;
|
||||
bool32 noEffect = FALSE;
|
||||
u32 calledMove = MOVE_NONE;
|
||||
const u8 *battleScript = NULL;
|
||||
battleScript = BattleScript_SubmoveAttackstring;
|
||||
@ -3453,7 +3453,7 @@ bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, enum Ability ability
|
||||
{
|
||||
enum MoveAbsorbed effect = MOVE_ABSORBED_BY_NO_ABILITY;
|
||||
const u8 *battleScript = NULL;
|
||||
u32 statId = 0;
|
||||
enum Stat statId = 0;
|
||||
u32 statAmount = 1;
|
||||
|
||||
switch (abilityDef)
|
||||
@ -4067,7 +4067,8 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
|
||||
case ABILITY_DOWNLOAD:
|
||||
if (!gSpecialStatuses[battler].switchInAbilityDone)
|
||||
{
|
||||
u32 statId, opposingBattler;
|
||||
enum Stat statId;
|
||||
u32 opposingBattler;
|
||||
u32 opposingDef = 0, opposingSpDef = 0;
|
||||
|
||||
opposingBattler = BATTLE_OPPOSITE(battler);
|
||||
@ -4463,7 +4464,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
|
||||
case ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK:
|
||||
if (!gSpecialStatuses[battler].switchInAbilityDone)
|
||||
{
|
||||
u32 stat;
|
||||
enum Stat stat;
|
||||
|
||||
if (gLastUsedAbility == ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK)
|
||||
stat = STAT_ATK;
|
||||
@ -6603,7 +6604,7 @@ u32 GetBattlerWeight(u32 battler)
|
||||
|
||||
u32 CountBattlerStatIncreases(u32 battler, bool32 countEvasionAcc)
|
||||
{
|
||||
u32 i;
|
||||
enum Stat i;
|
||||
u32 count = 0;
|
||||
|
||||
for (i = 0; i < NUM_BATTLE_STATS; i++)
|
||||
@ -7293,7 +7294,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageContext *ctx)
|
||||
break;
|
||||
case ABILITY_PROTOSYNTHESIS:
|
||||
{
|
||||
u8 defHighestStat = GetHighestStatId(battlerDef);
|
||||
enum Stat defHighestStat = GetHighestStatId(battlerDef);
|
||||
if (((ctx->weather & B_WEATHER_SUN && HasWeatherEffect()) || gDisableStructs[battlerDef].boosterEnergyActivated)
|
||||
&& ((IsBattleMovePhysical(move) && defHighestStat == STAT_DEF) || (IsBattleMoveSpecial(move) && defHighestStat == STAT_SPDEF))
|
||||
&& !(gBattleMons[battlerDef].volatiles.transformed))
|
||||
@ -7566,7 +7567,7 @@ static inline u32 CalcAttackStat(struct DamageContext *ctx)
|
||||
case ABILITY_PROTOSYNTHESIS:
|
||||
if (!(gBattleMons[battlerAtk].volatiles.transformed))
|
||||
{
|
||||
u32 atkHighestStat = GetHighestStatId(battlerAtk);
|
||||
enum Stat atkHighestStat = GetHighestStatId(battlerAtk);
|
||||
if (((ctx->weather & B_WEATHER_SUN) && HasWeatherEffect()) || gDisableStructs[battlerAtk].boosterEnergyActivated)
|
||||
{
|
||||
if ((IsBattleMovePhysical(move) && atkHighestStat == STAT_ATK) || (IsBattleMoveSpecial(move) && atkHighestStat == STAT_SPATK))
|
||||
@ -7577,7 +7578,7 @@ static inline u32 CalcAttackStat(struct DamageContext *ctx)
|
||||
case ABILITY_QUARK_DRIVE:
|
||||
if (!(gBattleMons[battlerAtk].volatiles.transformed))
|
||||
{
|
||||
u32 atkHighestStat = GetHighestStatId(battlerAtk);
|
||||
enum Stat atkHighestStat = GetHighestStatId(battlerAtk);
|
||||
if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gDisableStructs[battlerAtk].boosterEnergyActivated)
|
||||
{
|
||||
if ((IsBattleMovePhysical(move) && atkHighestStat == STAT_ATK) || (IsBattleMoveSpecial(move) && atkHighestStat == STAT_SPATK))
|
||||
@ -9631,7 +9632,7 @@ bool32 TestIfSheerForceAffected(u32 battler, u16 move)
|
||||
}
|
||||
|
||||
// This function is the body of "jumpifstat", but can be used dynamically in a function
|
||||
bool32 CompareStat(u32 battler, u8 statId, u8 cmpTo, u8 cmpKind)
|
||||
bool32 CompareStat(u32 battler, enum Stat statId, u8 cmpTo, u8 cmpKind)
|
||||
{
|
||||
bool32 ret = FALSE;
|
||||
u8 statValue = gBattleMons[battler].statStages[statId];
|
||||
@ -10555,7 +10556,7 @@ bool32 CanMoveSkipAccuracyCalc(u32 battlerAtk, u32 battlerDef, enum Ability abil
|
||||
return effect;
|
||||
}
|
||||
|
||||
u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, enum Ability atkAbility, enum Ability defAbility, u32 atkHoldEffect, u32 defHoldEffect)
|
||||
u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, enum Ability atkAbility, enum Ability defAbility, enum HoldEffect atkHoldEffect, enum HoldEffect defHoldEffect)
|
||||
{
|
||||
u32 calc, moveAcc;
|
||||
s8 buff, accStage, evasionStage;
|
||||
@ -10652,6 +10653,8 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, enum Ability atkA
|
||||
if (HasBattlerActedThisTurn(battlerDef))
|
||||
calc = (calc * (100 + atkParam)) / 100;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Target's hold effect
|
||||
@ -10660,6 +10663,8 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, enum Ability atkA
|
||||
case HOLD_EFFECT_EVASION_UP:
|
||||
calc = (calc * (100 - defParam)) / 100;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (gBattleStruct->battlerState[battlerAtk].usedMicleBerry)
|
||||
|
||||
@ -1199,7 +1199,7 @@ static void ContestAICmd_if_condition_not_eq(void)
|
||||
|
||||
static void ContestAICmd_get_used_combo_starter(void)
|
||||
{
|
||||
u16 result = FALSE;
|
||||
bool32 result = FALSE;
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
|
||||
if (IsContestantAllowedToCombo(contestant))
|
||||
|
||||
@ -1959,7 +1959,7 @@ void TryEnterContestMon(void)
|
||||
|
||||
u16 HasMonWonThisContestBefore(void)
|
||||
{
|
||||
u16 hasRankRibbon = FALSE;
|
||||
bool32 hasRankRibbon = FALSE;
|
||||
struct Pokemon *mon = &gPlayerParty[gContestMonPartyIndex];
|
||||
switch (gSpecialVar_ContestCategory)
|
||||
{
|
||||
|
||||
@ -995,7 +995,7 @@ static const u16 sLocationFlags[] =
|
||||
|
||||
static u8 Debug_CheckToggleFlags(u8 id)
|
||||
{
|
||||
u8 result = FALSE;
|
||||
bool32 result = FALSE;
|
||||
|
||||
switch (id)
|
||||
{
|
||||
|
||||
@ -812,7 +812,7 @@ const u8 *GetItemEffect(u32 itemId)
|
||||
return gItemsInfo[SanitizeItemId(itemId)].effect;
|
||||
}
|
||||
|
||||
u32 GetItemHoldEffect(u32 itemId)
|
||||
enum HoldEffect GetItemHoldEffect(u32 itemId)
|
||||
{
|
||||
return gItemsInfo[SanitizeItemId(itemId)].holdEffect;
|
||||
}
|
||||
|
||||
@ -331,7 +331,7 @@ bool8 MetatileBehavior_IsSouthArrowWarp(u8 metatileBehavior)
|
||||
|
||||
bool8 UNUSED Unref_MetatileBehavior_IsArrowWarp(u8 metatileBehavior)
|
||||
{
|
||||
u8 isArrowWarp = FALSE;
|
||||
bool32 isArrowWarp = FALSE;
|
||||
|
||||
if (MetatileBehavior_IsEastArrowWarp(metatileBehavior)
|
||||
|| MetatileBehavior_IsWestArrowWarp(metatileBehavior)
|
||||
|
||||
@ -228,7 +228,7 @@ static const struct SpritePalette sCryMeterNeedleSpritePalettes[] =
|
||||
bool8 LoadCryWaveformWindow(struct CryScreenWindow *window, u8 windowId)
|
||||
{
|
||||
u8 i;
|
||||
u8 finished = FALSE;
|
||||
bool32 finished = FALSE;
|
||||
|
||||
switch (gDexCryScreenState)
|
||||
{
|
||||
|
||||
@ -852,7 +852,7 @@ static const u8 sGetMonDataEVConstants[] =
|
||||
};
|
||||
|
||||
// For stat-raising items
|
||||
static const u8 sStatsToRaise[] =
|
||||
static const enum Stat sStatsToRaise[] =
|
||||
{
|
||||
STAT_ATK, STAT_ATK, STAT_DEF, STAT_SPEED, STAT_SPATK, STAT_SPDEF, STAT_ACC
|
||||
};
|
||||
@ -1042,8 +1042,8 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
|
||||
u32 value;
|
||||
u16 checksum;
|
||||
u8 i;
|
||||
u8 availableIVs[NUM_STATS];
|
||||
u8 selectedIvs[NUM_STATS];
|
||||
enum Stat availableIVs[NUM_STATS];
|
||||
enum Stat selectedIvs[NUM_STATS];
|
||||
bool32 isShiny;
|
||||
|
||||
ZeroBoxMonData(boxMon);
|
||||
@ -1200,6 +1200,8 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
|
||||
case STAT_SPDEF:
|
||||
SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3743,9 +3745,9 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
u8 itemEffectParam = ITEM_EFFECT_ARG_START;
|
||||
u32 temp1, temp2;
|
||||
s8 friendshipChange = 0;
|
||||
u8 holdEffect;
|
||||
enum HoldEffect holdEffect;
|
||||
u8 battler = MAX_BATTLERS_COUNT;
|
||||
u32 friendshipOnly = FALSE;
|
||||
bool32 friendshipOnly = FALSE;
|
||||
u16 heldItem;
|
||||
u8 effectFlags;
|
||||
s8 evChange;
|
||||
@ -4329,7 +4331,7 @@ u8 GetItemEffectParamOffset(u32 battler, u16 itemId, u8 effectByte, u8 effectBit
|
||||
return offset;
|
||||
}
|
||||
|
||||
static void BufferStatRoseMessage(s32 statIdx)
|
||||
static void BufferStatRoseMessage(enum Stat statIdx)
|
||||
{
|
||||
gBattlerTarget = gBattlerInMenuId;
|
||||
StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[statIdx]]);
|
||||
@ -4470,7 +4472,7 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
|
||||
for (i = 0; params != NULL && params[i].condition != CONDITIONS_END; i++)
|
||||
{
|
||||
enum EvolutionConditions condition = params[i].condition;
|
||||
u32 currentCondition = FALSE;
|
||||
bool32 currentCondition = FALSE;
|
||||
|
||||
switch(condition)
|
||||
{
|
||||
@ -4761,7 +4763,7 @@ u32 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16
|
||||
u32 species = GetMonData(mon, MON_DATA_SPECIES, 0);
|
||||
u32 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
|
||||
u32 level = GetMonData(mon, MON_DATA_LEVEL, 0);
|
||||
u32 holdEffect;
|
||||
enum HoldEffect holdEffect;
|
||||
const struct Evolution *evolutions = GetSpeciesEvolutions(species);
|
||||
|
||||
if (evolutions == NULL)
|
||||
@ -5204,7 +5206,7 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
|
||||
return gTrainers[difficulty][sanitizedTrainerId].encounterMusic_gender & (F_TRAINER_FEMALE - 1);
|
||||
}
|
||||
|
||||
u16 ModifyStatByNature(u8 nature, u16 stat, u8 statIndex)
|
||||
u16 ModifyStatByNature(u8 nature, u16 stat, enum Stat statIndex)
|
||||
{
|
||||
// Don't modify HP, Accuracy, or Evasion by nature
|
||||
if (statIndex <= STAT_HP || statIndex > NUM_NATURE_STATS || gNaturesInfo[nature].statUp == gNaturesInfo[nature].statDown)
|
||||
@ -5220,7 +5222,7 @@ u16 ModifyStatByNature(u8 nature, u16 stat, u8 statIndex)
|
||||
void AdjustFriendship(struct Pokemon *mon, u8 event)
|
||||
{
|
||||
u16 species, heldItem;
|
||||
u8 holdEffect;
|
||||
enum HoldEffect holdEffect;
|
||||
s8 mod;
|
||||
|
||||
if (ShouldSkipFriendshipChange())
|
||||
@ -5302,8 +5304,9 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
||||
u16 evIncrease = 0;
|
||||
u16 totalEVs = 0;
|
||||
u16 heldItem;
|
||||
u8 holdEffect;
|
||||
int i, multiplier;
|
||||
enum HoldEffect holdEffect;
|
||||
enum Stat i;
|
||||
int multiplier;
|
||||
u8 stat;
|
||||
u8 bonus;
|
||||
u32 currentEVCap = GetCurrentEVCap();
|
||||
@ -5382,6 +5385,8 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
||||
else
|
||||
evIncrease = gSpeciesInfo[defeatedSpecies].evYield_SpDefense * multiplier;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
|
||||
|
||||
@ -3757,7 +3757,7 @@ static void PrintRibbonCount(void)
|
||||
PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT), text, x, 1, 0, 0);
|
||||
}
|
||||
|
||||
static void BufferStat(u8 *dst, u8 statIndex, u32 stat, u32 strId, u32 n)
|
||||
static void BufferStat(u8 *dst, enum Stat statIndex, u32 stat, u32 strId, u32 n)
|
||||
{
|
||||
static const u8 sTextNatureDown[] = _("{COLOR}{08}");
|
||||
static const u8 sTextNatureUp[] = _("{COLOR}{05}");
|
||||
|
||||
@ -856,7 +856,7 @@ bool8 WriteSaveBlock2(void)
|
||||
// It returns TRUE when finished.
|
||||
bool8 WriteSaveBlock1Sector(void)
|
||||
{
|
||||
u8 finished = FALSE;
|
||||
bool32 finished = FALSE;
|
||||
u16 sectorId = ++gIncrementalSectorId; // Because WriteSaveBlock2 will have been called prior, this will be SECTOR_ID_SAVEBLOCK1_START
|
||||
if (sectorId <= SECTOR_ID_SAVEBLOCK1_END)
|
||||
{
|
||||
|
||||
@ -518,8 +518,8 @@ void ScrCmd_createmon(struct ScriptContext *ctx)
|
||||
|
||||
// Perfect IV calculation
|
||||
u32 i;
|
||||
u8 availableIVs[NUM_STATS];
|
||||
u8 selectedIvs[NUM_STATS];
|
||||
enum Stat availableIVs[NUM_STATS];
|
||||
enum Stat selectedIvs[NUM_STATS];
|
||||
if (gSpeciesInfo[species].perfectIVCount != 0)
|
||||
{
|
||||
// Initialize a list of IV indices.
|
||||
@ -543,6 +543,7 @@ void ScrCmd_createmon(struct ScriptContext *ctx)
|
||||
case STAT_SPEED: speedIv = MAX_PER_STAT_IVS; break;
|
||||
case STAT_SPATK: spAtkIv = MAX_PER_STAT_IVS; break;
|
||||
case STAT_SPDEF: spDefIv = MAX_PER_STAT_IVS; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2079,6 +2079,8 @@ void Item_(u32 sourceLine, u32 item)
|
||||
case HOLD_EFFECT_Z_CRYSTAL:
|
||||
SetGimmick(sourceLine, DATA.currentPosition, DATA.currentPartyIndex, GIMMICK_Z_MOVE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user