mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-03-21 18:04:50 -05:00
79 lines
2.1 KiB
C
79 lines
2.1 KiB
C
#ifndef GUARD_TRAINER_POOLS_H
|
|
#define GUARD_TRAINER_POOLS_H
|
|
|
|
#include "pokemon.h"
|
|
#include "data.h"
|
|
#include "global.h"
|
|
|
|
#define POOL_SLOT_DISABLED 0xff
|
|
|
|
// Unlimited is set to 0 so that the default is unlimited
|
|
#define POOL_MEMBER_COUNT_UNLIMITED 0
|
|
#define POOL_MEMBER_COUNT_NONE 0xff
|
|
|
|
enum PoolRulesets {
|
|
POOL_RULESET_BASIC,
|
|
POOL_RULESET_DOUBLES,
|
|
POOL_RULESET_WEATHER_SINGLES,
|
|
POOL_RULESET_WEATHER_DOUBLES,
|
|
POOL_RULESET_SUPPORT_DOUBLES,
|
|
};
|
|
|
|
enum PoolPickFunctions {
|
|
POOL_PICK_DEFAULT,
|
|
POOL_PICK_LOWEST,
|
|
};
|
|
|
|
enum PoolPruneOptions {
|
|
POOL_PRUNE_NONE,
|
|
POOL_PRUNE_TEST,
|
|
POOL_PRUNE_RANDOM_TAG,
|
|
};
|
|
|
|
enum PoolTags {
|
|
// Lead and Ace has special handling, leave them be
|
|
POOL_TAG_LEAD = 0,
|
|
POOL_TAG_ACE = 1,
|
|
// No special handling for these
|
|
POOL_TAG_WEATHER_SETTER = 2,
|
|
POOL_TAG_WEATHER_ABUSER = 3,
|
|
POOL_TAG_SUPPORT = 4,
|
|
POOL_TAG_TAG6 = 5,
|
|
POOL_TAG_TAG7 = 6,
|
|
POOL_TAG_TAG8 = 7,
|
|
// Must be the last element
|
|
POOL_NUM_TAGS = 8
|
|
};
|
|
|
|
#define MON_POOL_TAG_LEAD 1 << POOL_TAG_LEAD
|
|
#define MON_POOL_TAG_ACE 1 << POOL_TAG_ACE
|
|
#define MON_POOL_TAG_WEATHER_SETTER 1 << POOL_TAG_WEATHER_SETTER
|
|
#define MON_POOL_TAG_WEATHER_ABUSER 1 << POOL_TAG_WEATHER_ABUSER
|
|
#define MON_POOL_TAG_SUPPORT 1 << POOL_TAG_SUPPORT
|
|
#define MON_POOL_TAG_TAG6 1 << POOL_TAG_TAG6
|
|
#define MON_POOL_TAG_TAG7 1 << POOL_TAG_TAG7
|
|
#define MON_POOL_TAG_TAG8 1 << POOL_TAG_TAG8
|
|
|
|
struct PoolRules
|
|
{
|
|
u8 speciesClause:1;
|
|
u8 excludeForms:1;
|
|
u8 itemClause:1;
|
|
u8 itemClauseExclusions:1;
|
|
u8 megaStoneClause:1;
|
|
u8 zCrystalClause:1;
|
|
u8 tagMaxMembers[POOL_NUM_TAGS];
|
|
bool8 tagRequired[POOL_NUM_TAGS];
|
|
};
|
|
|
|
struct PickFunctions
|
|
{
|
|
u32 (*LeadFunction)(const struct Trainer *, u8 *, u32, u32, u32, struct PoolRules *);
|
|
u32 (*AceFunction)(const struct Trainer *, u8 *, u32, u32, u32, struct PoolRules *);
|
|
u32 (*OtherFunction)(const struct Trainer *, u8 *, u32, u32, u32, struct PoolRules *);
|
|
};
|
|
|
|
void DoTrainerPartyPool(const struct Trainer *trainer, u32 *monIndices, u8 monsCount, u32 battleTypeFlags);
|
|
|
|
#endif
|