summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-02-02 13:28:54 -0500
committerhuderlem <huderlem@gmail.com>2020-02-04 12:16:15 -0600
commit27c4329e4518a9838476e16c9fbb4cfb6d83a0d7 (patch)
treefffa4a6ab7cdee6fd0c171b8381db06f10b32c6d /src
parentc859fe36066bd420ea37222615aef177a318b5fd (diff)
Use friendship event constants
Diffstat (limited to 'src')
-rw-r--r--src/battle_main.c2
-rw-r--r--src/battle_script_commands.c2
-rw-r--r--src/battle_util2.c6
-rw-r--r--src/field_poison.c2
-rwxr-xr-xsrc/party_menu.c2
-rw-r--r--src/pokemon.c65
6 files changed, 43 insertions, 36 deletions
diff --git a/src/battle_main.c b/src/battle_main.c
index bcef3b286..0f6ec40a4 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -718,7 +718,7 @@ static void CB2_InitBattleInternal(void)
gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE;
for (i = 0; i < PARTY_SIZE; i++)
- AdjustFriendship(&gPlayerParty[i], 3);
+ AdjustFriendship(&gPlayerParty[i], FRIENDSHIP_EVENT_LEAGUE_BATTLE);
gBattleCommunication[MULTIUSE_STATE] = 0;
}
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index b6dd292f8..685626a85 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -3434,7 +3434,7 @@ static void Cmd_getexp(void)
gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId];
gBattlescriptCurrInstr = BattleScript_LevelUp;
gBattleMoveDamage = (gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8));
- AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], 0);
+ AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], FRIENDSHIP_EVENT_GROW_LEVEL);
// update battle mon structure after level up
if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && gBattleMons[0].hp)
diff --git a/src/battle_util2.c b/src/battle_util2.c
index fd0dda76b..6d51f51e7 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -92,13 +92,13 @@ void AdjustFriendshipOnBattleFaint(u8 battlerId)
if (gBattleMons[opposingBattlerId].level > gBattleMons[battlerId].level)
{
if (gBattleMons[opposingBattlerId].level - gBattleMons[battlerId].level > 29)
- AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 8);
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_LARGE);
else
- AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 6);
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_SMALL);
}
else
{
- AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 6);
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_SMALL);
}
}
diff --git a/src/field_poison.c b/src/field_poison.c
index 8385966d4..9d3ca047c 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -48,7 +48,7 @@ static void FaintFromFieldPoison(u8 partyIdx)
struct Pokemon *pokemon = gPlayerParty + partyIdx;
u32 status = STATUS1_NONE;
- AdjustFriendship(pokemon, 0x07);
+ AdjustFriendship(pokemon, FRIENDSHIP_EVENT_FAINT_FIELD_PSN);
SetMonData(pokemon, MON_DATA_STATUS, &status);
GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
StringGetEnd10(gStringVar1);
diff --git a/src/party_menu.c b/src/party_menu.c
index bc4cf8c0b..4decdeb02 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -4701,7 +4701,7 @@ static void Task_LearnedMove(u8 taskId)
if (move[1] == 0)
{
- AdjustFriendship(mon, 4);
+ AdjustFriendship(mon, FRIENDSHIP_EVENT_LEARN_TMHM);
if (item < ITEM_HM01_CUT)
RemoveBagItem(item, 1);
}
diff --git a/src/pokemon.c b/src/pokemon.c
index 040b342d2..3f49c0440 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -61,6 +61,7 @@ static void DecryptBoxMon(struct BoxPokemon *boxMon);
static void sub_806E6CC(u8 taskId);
static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId);
static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
+static bool8 ShouldSkipFriendshipChange(void);
// EWRAM vars
EWRAM_DATA static u8 sLearningMoveTableID = 0;
@@ -1886,12 +1887,12 @@ const u8 gStatStageRatios[][2] =
static const u16 sDeoxysBaseStats[] =
{
- 50, // Hp
- 95, // Attack
- 90, // Defense
- 180, // Speed
- 95, // Sp.Attack
- 90, // Sp.Defense
+ [STAT_HP] = 50,
+ [STAT_ATK] = 95,
+ [STAT_DEF] = 90,
+ [STAT_SPEED] = 180,
+ [STAT_SPATK] = 95,
+ [STAT_SPDEF] = 90,
};
const u16 gLinkPlayerFacilityClasses[] =
@@ -2063,17 +2064,19 @@ static const u8 sStatsToRaise[] =
STAT_ATK, STAT_ATK, STAT_SPEED, STAT_DEF, STAT_SPATK, STAT_ACC
};
-static const s8 gUnknown_08329ECE[][3] =
-{
- { 5, 3, 2},
- { 5, 3, 2},
- { 1, 1, 0},
- { 3, 2, 1},
- { 1, 1, 0},
- { 1, 1, 1},
- {-1, -1, -1},
- {-5, -5, -10},
- {-5, -5, -10},
+// 3 modifiers each for how much to change friendship for different ranges
+// 0-99, 100-199, 200+
+static const s8 sFriendshipEventModifiers[][3] =
+{
+ [FRIENDSHIP_EVENT_GROW_LEVEL] = { 5, 3, 2},
+ [FRIENDSHIP_EVENT_VITAMIN] = { 5, 3, 2},
+ [FRIENDSHIP_EVENT_BATTLE_ITEM] = { 1, 1, 0},
+ [FRIENDSHIP_EVENT_LEAGUE_BATTLE] = { 3, 2, 1},
+ [FRIENDSHIP_EVENT_LEARN_TMHM] = { 1, 1, 0},
+ [FRIENDSHIP_EVENT_WALKING] = { 1, 1, 1},
+ [FRIENDSHIP_EVENT_FAINT_SMALL] = {-1, -1, -1},
+ [FRIENDSHIP_EVENT_FAINT_FIELD_PSN] = {-5, -5, -10},
+ [FRIENDSHIP_EVENT_FAINT_LARGE] = {-5, -5, -10},
};
static const u16 sHMMoves[] =
@@ -5083,7 +5086,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
break;
case 5:
- if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 100 && (retVal == 0 || var_28 != 0) && !sub_806F104() && var_34 == 0)
+ if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 100 && (retVal == 0 || var_28 != 0) && !ShouldSkipFriendshipChange() && var_34 == 0)
{
var_34 = itemEffect[var_3C];
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL);
@@ -5109,7 +5112,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
break;
case 6:
if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 100 && GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 200
- && (retVal == 0 || var_28 != 0) && !sub_806F104() && var_34 == 0)
+ && (retVal == 0 || var_28 != 0) && !ShouldSkipFriendshipChange() && var_34 == 0)
{
var_34 = itemEffect[var_3C];
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL);
@@ -5134,7 +5137,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
var_3C++;
break;
case 7:
- if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 200 && (retVal == 0 || var_28 != 0) && !sub_806F104() && var_34 == 0)
+ if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 200 && (retVal == 0 || var_28 != 0) && !ShouldSkipFriendshipChange() && var_34 == 0)
{
var_34 = itemEffect[var_3C];
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL);
@@ -5752,12 +5755,18 @@ u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
return n;
}
+#define IS_LEAGUE_BATTLE \
+ ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
+ && (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR \
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_LEADER \
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION)) \
+
void AdjustFriendship(struct Pokemon *mon, u8 event)
{
u16 species, heldItem;
u8 holdEffect;
- if (sub_806F104())
+ if (ShouldSkipFriendshipChange())
return;
species = GetMonData(mon, MON_DATA_SPECIES2, 0);
@@ -5779,18 +5788,16 @@ void AdjustFriendship(struct Pokemon *mon, u8 event)
{
u8 friendshipLevel = 0;
s16 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0);
+
if (friendship > 99)
friendshipLevel++;
if (friendship > 199)
friendshipLevel++;
- if ((event != 5 || !(Random() & 1))
- && (event != 3
- || ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR
- || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_LEADER
- || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION))))
+
+ if ((event != FRIENDSHIP_EVENT_WALKING || !(Random() & 1))
+ && (event != FRIENDSHIP_EVENT_LEAGUE_BATTLE || IS_LEAGUE_BATTLE))
{
- s8 mod = gUnknown_08329ECE[event][friendshipLevel];
+ s8 mod = sFriendshipEventModifiers[event][friendshipLevel];
if (mod > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
mod = (150 * mod) / 100;
friendship += mod;
@@ -6782,7 +6789,7 @@ bool8 HasTwoFramesAnimation(u16 species)
&& species != SPECIES_UNOWN);
}
-bool8 sub_806F104(void)
+static bool8 ShouldSkipFriendshipChange(void)
{
if (gMain.inBattle && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER))
return TRUE;