Merge pull request #3 from Prof-Holon/Special-stat-merge

Special stat merge
This commit is contained in:
Prof-Holon 2026-04-08 12:02:30 +01:00 committed by GitHub
commit ee2d900cf7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 305 additions and 202 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -6885,7 +6885,14 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
gBattleMons[gActiveBattler].statStages[statId] = MIN_STAT_STAGE;
if (gBattleMons[gActiveBattler].statStages[statId] > MAX_STAT_STAGE)
gBattleMons[gActiveBattler].statStages[statId] = MAX_STAT_STAGE;
// ADD: mirror SpAtk and SpDef stages — merged Special stat
if (statId == STAT_SPATK)
gBattleMons[gActiveBattler].statStages[STAT_SPDEF] =
gBattleMons[gActiveBattler].statStages[STAT_SPATK];
if (statId == STAT_SPDEF)
gBattleMons[gActiveBattler].statStages[STAT_SPATK] =
gBattleMons[gActiveBattler].statStages[STAT_SPDEF];
// END ADD
if (gBattleCommunication[MULTISTRING_CHOOSER] == B_MSG_STAT_WONT_INCREASE && flags & STAT_CHANGE_ALLOW_PTR)
gMoveResultFlags |= MOVE_RESULT_MISSED;
@ -6900,6 +6907,12 @@ static void Cmd_statbuffchange(void)
const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
if (ChangeStatBuffs(gBattleScripting.statChanger & 0xF0, GET_STAT_BUFF_ID(gBattleScripting.statChanger), gBattlescriptCurrInstr[1], jumpPtr) == STAT_CHANGE_WORKED)
gBattlescriptCurrInstr += 6;
if (statId == STAT_SPATK)
gBattleMons[gBattlerTarget].statStages[STAT_SPDEF] =
gBattleMons[gBattlerTarget].statStages[STAT_SPATK];
if (statId == STAT_SPDEF)
gBattleMons[gBattlerTarget].statStages[STAT_SPATK] =
gBattleMons[gBattlerTarget].statStages[STAT_SPDEF];
}
// Haze

View File

@ -1224,7 +1224,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
[MOVE_PSYCHIC] =
{
.effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
.effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT,
.power = 90,
.type = TYPE_PSYCHIC,
.accuracy = 100,
@ -1731,7 +1731,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
[MOVE_AMNESIA] =
{
.effect = EFFECT_SPECIAL_DEFENSE_UP_2,
.effect = EFFECT_SPECIAL_ATTACK_UP_2,
.power = 0,
.type = TYPE_PSYCHIC,
.accuracy = 0,
@ -3213,7 +3213,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
[MOVE_SHADOW_BALL] =
{
.effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
.effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT,
.power = 80,
.type = TYPE_GHOST,
.accuracy = 100,
@ -4071,7 +4071,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
[MOVE_FAKE_TEARS] =
{
.effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
.effect = EFFECT_SPECIAL_ATTACK_DOWN_2,
.power = 0,
.type = TYPE_PSYCHIC,
.accuracy = 100,
@ -4149,7 +4149,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
[MOVE_METAL_SOUND] =
{
.effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
.effect = EFFECT_SPECIAL_ATTACK_DOWN_2,
.power = 0,
.type = TYPE_ELECTRIC,
.accuracy = 85,

File diff suppressed because it is too large Load Diff

View File

@ -2160,8 +2160,14 @@ void CalculateMonStats(struct Pokemon *mon)
CALC_STAT(baseAttack, attackIV, attackEV, STAT_ATK, MON_DATA_ATK)
CALC_STAT(baseDefense, defenseIV, defenseEV, STAT_DEF, MON_DATA_DEF)
CALC_STAT(baseSpeed, speedIV, speedEV, STAT_SPEED, MON_DATA_SPEED)
CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, STAT_SPATK, MON_DATA_SPATK)
CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, STAT_SPDEF, MON_DATA_SPDEF)
{
u8 baseStat = gSpeciesInfo[species].baseSpAttack; // same value as baseSpDefense after Step 1
s32 n = (((2 * baseStat + spAttackIV + spAttackEV / 4) * level) / 100) + 5;
u8 nature = GetNature(mon);
n = ModifyStatByNature(nature, n, STAT_SPATK); // use SpAtk column only
SetMonData(mon, MON_DATA_SPATK, &n);
SetMonData(mon, MON_DATA_SPDEF, &n); // mirror
}
if (species == SPECIES_SHEDINJA)
{
@ -2438,7 +2444,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
attack = attacker->attack;
defense = defender->defense;
spAttack = attacker->spAttack;
spDefense = defender->spDefense;
spDefense = defender->spAttack; //updated to merge
// Get attacker hold item info
if (attacker->item == ITEM_ENIGMA_BERRY)
@ -2625,13 +2631,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (gCritMultiplier == 2)
{
// Critical hit, if defender has gained sp. defense stat stages then ignore stat increase
if (defender->statStages[STAT_SPDEF] < DEFAULT_STAT_STAGE)
APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_SPDEF)
if (defender->statStages[STAT_SPATK] < DEFAULT_STAT_STAGE)
APPLY_STAT_MOD(damageHelper, defender, spAttack, STAT_SPATK)
else
damageHelper = spDefense;
damageHelper = spAttack;
}
else
APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_SPDEF)
APPLY_STAT_MOD(damageHelper, defender, spAttack, STAT_SPATK)
damage = (damage / damageHelper);
damage /= 50;

View File

@ -174,6 +174,8 @@ struct PokemonSummaryScreenData
u8 ALIGNED(4) levelStrBuf[7];
u8 ALIGNED(4) curHpStrBuf[9];
u8 ALIGNED(4) statValueStrBufs[5][5];
u8 ALIGNED(4) ivStrBufs[5][4]; // add Ivs
u8 ALIGNED(4) evStrBufs[5][5]; // add Evs
u8 ALIGNED(4) moveCurPpStrBufs[5][11];
u8 ALIGNED(4) moveMaxPpStrBufs[5][11];
@ -2171,28 +2173,8 @@ static void BufferMonSkills(void)
if (sMonSummaryScreen->savedCallback == CB2_ReturnToTradeMenuFromSummary && sMonSummaryScreen->isEnemyParty == TRUE)
{
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK2);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->atkStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK]);
// SpAtk + SpDef block and add IV/EV reads:
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_DEF2);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->defStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF]);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK2);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->spAStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA]);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPDEF2);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->spDStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD]);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED2);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->speStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE]);
}
else
{
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->atkStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK]);
@ -2201,17 +2183,95 @@ static void BufferMonSkills(void)
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->defStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF]);
// CHANGED: read SpAtk only, write to SPA slot, discard SpDef entirely
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->spAStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA]);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPDEF);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->spDStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD]);
// PSS_STAT_SPD slot and spDStr are no longer populated
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->speStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE]);
// ADD: IV reads
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[0], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_DEF_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[1], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[2], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[3], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_HP_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[4], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
// ADD: EV reads
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[0], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_DEF_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[1], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[2], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[3], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_HP_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[4], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
}
else
{
// SpAtk + SpDef block and add IV/EV reads:
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->atkStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK]);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_DEF);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->defStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF]);
// CHANGED: read SpAtk only, write to SPA slot, discard SpDef entirely
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->spAStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA]);
// PSS_STAT_SPD slot and spDStr are no longer populated
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
sMonSkillsPrinterXpos->speStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE]);
// ADD: IV reads
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[0], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_DEF_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[1], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[2], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED_IV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.ivStrBufs[3], statValue, STR_CONV_MODE_LEFT_ALIGN, 2);
// ADD: EV reads
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[0], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_DEF_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[1], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[2], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED_EV);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.evStrBufs[3], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
}
exp = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_EXP);
@ -2498,13 +2558,37 @@ static void PrintInfoPage(void)
static void PrintSkillsPage(void)
{
// HP — unchanged
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 14 + sMonSkillsPrinterXpos->curHpStr, 4, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.curHpStrBuf);
// ADD: HP IV and EV on the same row
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 56, 4, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.ivStrBufs[4]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 70, 4, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.evStrBufs[4]);
// ATK — y=22, stat value left column, IV and EV right columns
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 50 + sMonSkillsPrinterXpos->atkStr, 22, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 56, 22, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.ivStrBufs[0]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 70, 22, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.evStrBufs[0]);
// DEF — y=35
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 50 + sMonSkillsPrinterXpos->defStr, 35, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 50 + sMonSkillsPrinterXpos->spAStr, 48, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 50 + sMonSkillsPrinterXpos->spDStr, 61, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 56, 35, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.ivStrBufs[1]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 70, 35, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.evStrBufs[1]);
// SPECIAL — y=54 (centred between old y=48 and y=61, SpDef row removed)
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 50 + sMonSkillsPrinterXpos->spAStr, 54, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 56, 54, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.ivStrBufs[2]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 70, 54, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.evStrBufs[2]);
// SPEED — not shifted
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 50 + sMonSkillsPrinterXpos->speStr, 74, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 56, 74, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.ivStrBufs[3]);
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_SMALL, 70, 74, sLevelNickTextColors[1], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.evStrBufs[3]);
// EXP — not shifted
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 15 + sMonSkillsPrinterXpos->expStr, 87, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.expPointsStrBuf);
// To Next — not shifted
AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], FONT_NORMAL, 15 + sMonSkillsPrinterXpos->toNextLevel, 100, sLevelNickTextColors[0], TEXT_SKIP_DRAW, sMonSummaryScreen->summary.expToNextLevelStrBuf);
}