c56acb944b
* New Feature: Level Caps * B_LEVEL_CAP_EXP_UP and fixes * 1 exp fix for hard level caps * remove 1 exp hack * Reviews applied * fix u8/u16 --------- Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
37 lines
2.2 KiB
C
37 lines
2.2 KiB
C
#ifndef GUARD_LEVEL_CAP_H
|
|
#define GUARD_LEVEL_CAP_H
|
|
|
|
// experience (soft-)caps
|
|
|
|
#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_SOFT 2 // Pokémon with a level >= the level cap will gain reduced experience
|
|
|
|
#define LEVEL_CAP_NONE 0 // No level cap, only applicable if B_EXP_CAP_TYPE is EXP_CAP_NONE
|
|
#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 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_VARIABLE 0 // event variable used to derive level cap if B_LEVEL_CAP_TYPE is set to LEVEL_CAP_VARIABLE
|
|
|
|
#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
|
|
|
|
#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]"
|
|
#endif
|
|
|
|
#if B_EXP_CAP_TYPE == EXP_CAP_HARD || B_EXP_CAP_TYPE == EXP_CAP_SOFT
|
|
#if B_LEVEL_CAP_TYPE != LEVEL_CAP_FLAG_LIST && B_LEVEL_CAP_TYPE != LEVEL_CAP_VARIABLE
|
|
#error "Invalid choice for B_LEVEL_CAP_TYPE, must be of [LEVEL_CAP_FLAG_LIST, LEVEL_CAP_VARIABLE]"
|
|
#endif
|
|
#if B_LEVEL_CAP_TYPE == LEVEL_CAP_VARIABLE && B_LEVEL_CAP_VARIABLE == 0
|
|
#error "B_LEVEL_CAP_TYPE set to LEVEL_CAP_VARIABLE, but no variable chosen for B_LEVEL_CAP_VARIABLE, set B_LEVEL_CAP_VARIABLE to a valid event variable"
|
|
#endif
|
|
#endif
|
|
|
|
u32 GetCurrentLevelCap(void);
|
|
u32 GetSoftLevelCapExpValue(u32 level, u32 expValue);
|
|
|
|
#endif /* GUARD_LEVEL_CAP_H */
|