Merge level_caps and ev_caps into one caps file (#5429)
* Merge level_caps and ev_caps into one caps file * Update caps.h
This commit is contained in:
parent
ad0778722b
commit
c1dffc694e
13 changed files with 73 additions and 89 deletions
|
@ -1,5 +1,5 @@
|
||||||
#ifndef GUARD_LEVEL_CAP_H
|
#ifndef GUARD_CAPS_H
|
||||||
#define GUARD_LEVEL_CAP_H
|
#define GUARD_CAPS_H
|
||||||
|
|
||||||
#if B_EXP_CAP_TYPE != EXP_CAP_NONE && B_EXP_CAP_TYPE != EXP_CAP_HARD && B_EXP_CAP_TYPE != EXP_CAP_SOFT
|
#if B_EXP_CAP_TYPE != EXP_CAP_NONE && B_EXP_CAP_TYPE != EXP_CAP_HARD && B_EXP_CAP_TYPE != EXP_CAP_SOFT
|
||||||
#error "Invalid choice for B_EXP_CAP_TYPE, must be of [EXP_CAP_NONE, EXP_CAP_HARD, EXP_CAP_SOFT]"
|
#error "Invalid choice for B_EXP_CAP_TYPE, must be of [EXP_CAP_NONE, EXP_CAP_HARD, EXP_CAP_SOFT]"
|
||||||
|
@ -14,7 +14,12 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if B_EV_CAP_TYPE != EV_CAP_NONE && B_EV_CAP_TYPE != EV_CAP_FLAG_LIST && B_EV_CAP_TYPE != EV_CAP_VARIABLE && B_EV_CAP_TYPE != EV_CAP_NO_GAIN
|
||||||
|
#error "Invalid choice for B_EV_CAP_TYPE, must be one of [EV_CAP_NONE, EV_CAP_FLAG_LIST, EV_CAP_VARIABLE, EV_CAP_NO_GAIN]"
|
||||||
|
#endif
|
||||||
|
|
||||||
u32 GetCurrentLevelCap(void);
|
u32 GetCurrentLevelCap(void);
|
||||||
u32 GetSoftLevelCapExpValue(u32 level, u32 expValue);
|
u32 GetSoftLevelCapExpValue(u32 level, u32 expValue);
|
||||||
|
u32 GetCurrentEVCap(void);
|
||||||
|
|
||||||
#endif /* GUARD_LEVEL_CAP_H */
|
#endif /* GUARD_CAPS_H */
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef GUARD_CONFIG_LEVEL_CAP_H
|
#ifndef GUARD_CONFIG_CAPS_H
|
||||||
#define GUARD_CONFIG_LEVEL_CAP_H
|
#define GUARD_CONFIG_CAPS_H
|
||||||
|
|
||||||
// Constants
|
// Level Cap Constants
|
||||||
#define EXP_CAP_NONE 0 // Regular behavior, no level caps are applied
|
#define EXP_CAP_NONE 0 // Regular behavior, no level caps are applied
|
||||||
#define EXP_CAP_HARD 1 // Pokémon with a level >= the level cap cannot gain any experience
|
#define EXP_CAP_HARD 1 // Pokémon with a level >= the level cap cannot gain any experience
|
||||||
#define EXP_CAP_SOFT 2 // Pokémon with a level >= the level cap will gain reduced experience
|
#define EXP_CAP_SOFT 2 // Pokémon with a level >= the level cap will gain reduced experience
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
#define LEVEL_CAP_FLAG_LIST 1 // Level cap is chosen according to the first unset flag in `sLevelCapFlagMap`
|
#define LEVEL_CAP_FLAG_LIST 1 // Level cap is chosen according to the first unset flag in `sLevelCapFlagMap`
|
||||||
#define LEVEL_CAP_VARIABLE 2 // Level cap is chosen according to the contents of the event variable specified by B_LEVEL_CAP_VARIABLE
|
#define LEVEL_CAP_VARIABLE 2 // Level cap is chosen according to the contents of the event variable specified by B_LEVEL_CAP_VARIABLE
|
||||||
|
|
||||||
// Configs
|
// Level Cap Configs
|
||||||
#define B_EXP_CAP_TYPE EXP_CAP_NONE // [EXP_CAP_NONE, EXP_CAP_HARD, EXP_CAP_SOFT] choose the type of level cap to apply
|
#define B_EXP_CAP_TYPE EXP_CAP_NONE // [EXP_CAP_NONE, EXP_CAP_HARD, EXP_CAP_SOFT] choose the type of level cap to apply
|
||||||
#define B_LEVEL_CAP_TYPE LEVEL_CAP_NONE // [LEVEL_CAP_NONE, LEVEL_CAP_FLAG_LIST, LEVEL_CAP_VARIABLE] choose the method to derive the level cap
|
#define B_LEVEL_CAP_TYPE LEVEL_CAP_NONE // [LEVEL_CAP_NONE, LEVEL_CAP_FLAG_LIST, LEVEL_CAP_VARIABLE] choose the method to derive the level cap
|
||||||
#define B_LEVEL_CAP_VARIABLE 0 // event variable used to derive level cap if B_LEVEL_CAP_TYPE is set to LEVEL_CAP_VARIABLE
|
#define B_LEVEL_CAP_VARIABLE 0 // event variable used to derive level cap if B_LEVEL_CAP_TYPE is set to LEVEL_CAP_VARIABLE
|
||||||
|
@ -18,4 +18,16 @@
|
||||||
#define B_RARE_CANDY_CAP FALSE // If set to true, Rare Candies can't be used to go over the level cap
|
#define B_RARE_CANDY_CAP FALSE // If set to true, Rare Candies can't be used to go over the level cap
|
||||||
#define B_LEVEL_CAP_EXP_UP FALSE // If set to true, mons under level cap will receive more experience
|
#define B_LEVEL_CAP_EXP_UP FALSE // If set to true, mons under level cap will receive more experience
|
||||||
|
|
||||||
#endif /* GUARD_CONFIG_LEVEL_CAP_H */
|
// EV Cap Constants
|
||||||
|
#define EV_CAP_NONE 0 // Regular behavior, no EV caps are applied
|
||||||
|
#define EV_CAP_FLAG_LIST 1 // EV cap is chosen according to the first unset flag in `sEVCapFlagMap`
|
||||||
|
#define EV_CAP_VARIABLE 2 // EV cap is chosen according to the contents of the event variable specified by B_EV_CAP_VARIABLE
|
||||||
|
#define EV_CAP_NO_GAIN 3 // No EVs can be gained
|
||||||
|
|
||||||
|
// EV Cap Configs
|
||||||
|
#define B_EV_CAP_TYPE EV_CAP_NONE // [EV_CAP_NONE, EV_CAP_FLAG_LIST, EV_CAP_VARIABLE, EV_CAP_NO_GAIN] choose the type of EV cap to apply#define B_EV_CAP_VARIABLE 12 // event variable used to derive EV cap if B_EV_CAP_TYPE is set to EV_CAP_VARIABLE
|
||||||
|
#define B_EV_CAP_VARIABLE 8 // event variable used to derive EV cap if B_EV_CAP_TYPE is set to EV_CAP_VARIABLE
|
||||||
|
|
||||||
|
#define B_EV_ITEMS_CAP FALSE // If set to true, EV-boosting items can't be used to go over the EV cap
|
||||||
|
|
||||||
|
#endif /* GUARD_CONFIG_CAPS_H */
|
|
@ -1,16 +0,0 @@
|
||||||
#ifndef GUARD_CONFIG_EV_CAP_H
|
|
||||||
#define GUARD_CONFIG_EV_CAP_H
|
|
||||||
|
|
||||||
// Constants for EV Cap Types
|
|
||||||
#define EV_CAP_NONE 0 // Regular behavior, no EV caps are applied
|
|
||||||
#define EV_CAP_FLAG_LIST 1 // EV cap is chosen according to the first unset flag in `sEVCapFlagMap`
|
|
||||||
#define EV_CAP_VARIABLE 2 // EV cap is chosen according to the contents of the event variable specified by B_EV_CAP_VARIABLE
|
|
||||||
#define EV_CAP_NO_GAIN 3 // No EVs can be gained
|
|
||||||
|
|
||||||
// Configs for EV Cap
|
|
||||||
#define B_EV_CAP_TYPE EV_CAP_NONE // [EV_CAP_NONE, EV_CAP_FLAG_LIST, EV_CAP_VARIABLE, EV_CAP_NO_GAIN] choose the type of EV cap to apply#define B_EV_CAP_VARIABLE 12 // event variable used to derive EV cap if B_EV_CAP_TYPE is set to EV_CAP_VARIABLE
|
|
||||||
#define B_EV_CAP_VARIABLE 8 // event variable used to derive EV cap if B_EV_CAP_TYPE is set to EV_CAP_VARIABLE
|
|
||||||
|
|
||||||
#define B_EV_ITEMS_CAP FALSE // If set to true, EV-boosting items can't be used to go over the EV cap
|
|
||||||
|
|
||||||
#endif /*GUARD_CONFIG_EV_CAP_H*/
|
|
|
@ -5,10 +5,9 @@
|
||||||
#include "config/battle.h"
|
#include "config/battle.h"
|
||||||
#include "config/debug.h"
|
#include "config/debug.h"
|
||||||
#include "config/item.h"
|
#include "config/item.h"
|
||||||
#include "config/level_caps.h"
|
#include "config/caps.h"
|
||||||
#include "config/pokemon.h"
|
#include "config/pokemon.h"
|
||||||
#include "config/overworld.h"
|
#include "config/overworld.h"
|
||||||
#include "config/ev_caps.h"
|
|
||||||
|
|
||||||
// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen.
|
// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen.
|
||||||
// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen.
|
// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen.
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
#ifndef GUARD_EV_CAP_H
|
|
||||||
#define GUARD_EV_CAP_H
|
|
||||||
|
|
||||||
#if B_EV_CAP_TYPE != EV_CAP_NONE && B_EV_CAP_TYPE != EV_CAP_FLAG_LIST && B_EV_CAP_TYPE != EV_CAP_VARIABLE && B_EV_CAP_TYPE != EV_CAP_NO_GAIN
|
|
||||||
#error "Invalid choice for B_EV_CAP_TYPE, must be one of [EV_CAP_NONE, EV_CAP_FLAG_LIST, EV_CAP_VARIABLE, EV_CAP_NO_GAIN]"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
u32 GetCurrentEVCap(void);
|
|
||||||
|
|
||||||
#endif /* GUARD_EV_CAP_H */
|
|
|
@ -41,7 +41,7 @@
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
#include "constants/trainers.h"
|
#include "constants/trainers.h"
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
#include "level_caps.h"
|
#include "caps.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "pokemon_summary_screen.h"
|
#include "pokemon_summary_screen.h"
|
||||||
#include "type_icons.h"
|
#include "type_icons.h"
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
#include "constants/items.h"
|
#include "constants/items.h"
|
||||||
#include "level_caps.h"
|
#include "caps.h"
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{ // Corresponds to gHealthboxElementsGfxTable (and the tables after it) in graphics.c
|
{ // Corresponds to gHealthboxElementsGfxTable (and the tables after it) in graphics.c
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include "bg.h"
|
#include "bg.h"
|
||||||
#include "string_util.h"
|
#include "string_util.h"
|
||||||
#include "pokemon_icon.h"
|
#include "pokemon_icon.h"
|
||||||
#include "level_caps.h"
|
#include "caps.h"
|
||||||
#include "m4a.h"
|
#include "m4a.h"
|
||||||
#include "mail.h"
|
#include "mail.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "battle.h"
|
#include "battle.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
#include "level_caps.h"
|
#include "caps.h"
|
||||||
#include "pokemon.h"
|
#include "pokemon.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,3 +81,39 @@ u32 GetSoftLevelCapExpValue(u32 level, u32 expValue)
|
||||||
return expValue;
|
return expValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 GetCurrentEVCap(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
static const u16 sEvCapFlagMap[][2] = {
|
||||||
|
// Define EV caps for each milestone
|
||||||
|
{FLAG_BADGE01_GET, 30},
|
||||||
|
{FLAG_BADGE02_GET, 90},
|
||||||
|
{FLAG_BADGE03_GET, 150},
|
||||||
|
{FLAG_BADGE04_GET, 210},
|
||||||
|
{FLAG_BADGE05_GET, 270},
|
||||||
|
{FLAG_BADGE06_GET, 330},
|
||||||
|
{FLAG_BADGE07_GET, 390},
|
||||||
|
{FLAG_BADGE08_GET, 450},
|
||||||
|
{FLAG_IS_CHAMPION, MAX_TOTAL_EVS},
|
||||||
|
};
|
||||||
|
|
||||||
|
if (B_EV_CAP_TYPE == EV_CAP_FLAG_LIST)
|
||||||
|
{
|
||||||
|
for (u32 evCap = 0; evCap < ARRAY_COUNT(sEvCapFlagMap); evCap++)
|
||||||
|
{
|
||||||
|
if (!FlagGet(sEvCapFlagMap[evCap][0]))
|
||||||
|
return sEvCapFlagMap[evCap][1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (B_EV_CAP_TYPE == EV_CAP_VARIABLE)
|
||||||
|
{
|
||||||
|
return VarGet(B_EV_CAP_VARIABLE);
|
||||||
|
}
|
||||||
|
else if (B_EV_CAP_TYPE == EV_CAP_NO_GAIN)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return MAX_TOTAL_EVS;
|
||||||
|
}
|
|
@ -3,7 +3,7 @@
|
||||||
#include "battle.h"
|
#include "battle.h"
|
||||||
#include "daycare.h"
|
#include "daycare.h"
|
||||||
#include "string_util.h"
|
#include "string_util.h"
|
||||||
#include "level_caps.h"
|
#include "caps.h"
|
||||||
#include "mail.h"
|
#include "mail.h"
|
||||||
#include "pokemon_storage_system.h"
|
#include "pokemon_storage_system.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
#include "global.h"
|
|
||||||
#include "battle.h"
|
|
||||||
#include "event_data.h"
|
|
||||||
#include "ev_caps.h"
|
|
||||||
#include "pokemon.h"
|
|
||||||
|
|
||||||
u32 GetCurrentEVCap(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
static const u16 sEvCapFlagMap[][2] = {
|
|
||||||
// Define EV caps for each milestone
|
|
||||||
{FLAG_BADGE01_GET, 30},
|
|
||||||
{FLAG_BADGE02_GET, 90},
|
|
||||||
{FLAG_BADGE03_GET, 150},
|
|
||||||
{FLAG_BADGE04_GET, 210},
|
|
||||||
{FLAG_BADGE05_GET, 270},
|
|
||||||
{FLAG_BADGE06_GET, 330},
|
|
||||||
{FLAG_BADGE07_GET, 390},
|
|
||||||
{FLAG_BADGE08_GET, 450},
|
|
||||||
{FLAG_IS_CHAMPION, MAX_TOTAL_EVS},
|
|
||||||
};
|
|
||||||
|
|
||||||
if (B_EV_CAP_TYPE == EV_CAP_FLAG_LIST)
|
|
||||||
{
|
|
||||||
for (u32 evCap = 0; evCap < ARRAY_COUNT(sEvCapFlagMap); evCap++)
|
|
||||||
{
|
|
||||||
if (!FlagGet(sEvCapFlagMap[evCap][0]))
|
|
||||||
return sEvCapFlagMap[evCap][1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (B_EV_CAP_TYPE == EV_CAP_VARIABLE)
|
|
||||||
{
|
|
||||||
return VarGet(B_EV_CAP_VARIABLE);
|
|
||||||
}
|
|
||||||
else if (B_EV_CAP_TYPE == EV_CAP_NO_GAIN)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return MAX_TOTAL_EVS;
|
|
||||||
}
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "item_menu.h"
|
#include "item_menu.h"
|
||||||
#include "item_use.h"
|
#include "item_use.h"
|
||||||
#include "level_caps.h"
|
#include "caps.h"
|
||||||
#include "link.h"
|
#include "link.h"
|
||||||
#include "link_rfu.h"
|
#include "link_rfu.h"
|
||||||
#include "mail.h"
|
#include "mail.h"
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include "field_weather.h"
|
#include "field_weather.h"
|
||||||
#include "graphics.h"
|
#include "graphics.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "level_caps.h"
|
#include "caps.h"
|
||||||
#include "link.h"
|
#include "link.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "overworld.h"
|
#include "overworld.h"
|
||||||
|
@ -60,7 +60,6 @@
|
||||||
#include "constants/union_room.h"
|
#include "constants/union_room.h"
|
||||||
#include "constants/weather.h"
|
#include "constants/weather.h"
|
||||||
#include "wild_encounter.h"
|
#include "wild_encounter.h"
|
||||||
#include "ev_caps.h"
|
|
||||||
|
|
||||||
#define FRIENDSHIP_EVO_THRESHOLD ((P_FRIENDSHIP_EVO_THRESHOLD >= GEN_9) ? 160 : 220)
|
#define FRIENDSHIP_EVO_THRESHOLD ((P_FRIENDSHIP_EVO_THRESHOLD >= GEN_9) ? 160 : 220)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue