#ifndef GUARD_CONSTANTS_CONTEST_H #define GUARD_CONSTANTS_CONTEST_H #define APPLAUSE_METER_SIZE 5 #define CONTEST_NUM_APPEALS 5 #define CONTEST_LAST_APPEAL (CONTEST_NUM_APPEALS - 1) #define MAX_CONTEST_MOVE_HEARTS 8 #define CONTESTANT_NONE 0xFF #define LINK_CONTEST_FLAG_IS_LINK (1 << 0) #define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1) #define LINK_CONTEST_FLAG_HAS_RS_PLAYER (1 << 2) #define CONTEST_RANK_NORMAL 0 #define CONTEST_RANK_SUPER 1 #define CONTEST_RANK_HYPER 2 #define CONTEST_RANK_MASTER 3 #define CONTEST_RANK_LINK 4 // States for VAR_CONTEST_TYPE #define CONTEST_TYPE_NPC_NORMAL (CONTEST_RANK_NORMAL + 1) #define CONTEST_TYPE_NPC_SUPER (CONTEST_RANK_SUPER + 1) #define CONTEST_TYPE_NPC_HYPER (CONTEST_RANK_HYPER + 1) #define CONTEST_TYPE_NPC_MASTER (CONTEST_RANK_MASTER + 1) #define CONTEST_TYPE_LINK (CONTEST_RANK_LINK + 1) // IDs below - 1 are indexes into gSaveBlock1Ptr->contestWinners[] // CONTEST_WINNER_ARTIST is for the winner of the most recent contest, and is not saved. #define CONTEST_WINNER_ARTIST 0 #define CONTEST_WINNER_HALL_1 1 #define CONTEST_WINNER_HALL_2 2 #define CONTEST_WINNER_HALL_3 3 #define CONTEST_WINNER_HALL_4 4 #define CONTEST_WINNER_HALL_5 5 #define CONTEST_WINNER_HALL_6 6 #define NUM_CONTEST_HALL_WINNERS 6 #define CONTEST_WINNER_HALL_UNUSED_1 7 // These two have data for gDefaultContestWinners #define CONTEST_WINNER_HALL_UNUSED_2 8 // but there are only 6 paintings in the Contest Hall #define CONTEST_WINNER_MUSEUM_COOL 9 #define CONTEST_WINNER_MUSEUM_BEAUTY 10 #define CONTEST_WINNER_MUSEUM_CUTE 11 #define CONTEST_WINNER_MUSEUM_SMART 12 #define CONTEST_WINNER_MUSEUM_TOUGH 13 // NUM_CONTEST_WINNERS in constants/global.h #define MUSEUM_CONTEST_WINNERS_START (CONTEST_WINNER_MUSEUM_COOL - 1) #define CONTEST_SAVE_FOR_MUSEUM ((u8)-1) #define CONTEST_SAVE_FOR_ARTIST ((u8)-2) // The number of possible captions for a Contest painting, per category #define NUM_PAINTING_CAPTIONS 3 #define CANT_ENTER_CONTEST 0 #define CAN_ENTER_CONTEST_EQUAL_RANK 1 #define CAN_ENTER_CONTEST_HIGH_RANK 2 #define CANT_ENTER_CONTEST_EGG 3 #define CANT_ENTER_CONTEST_FAINTED 4 #define CONTEST_AI_CHECK_BAD_MOVE (1 << 0) #define CONTEST_AI_CHECK_COMBO (1 << 1) #define CONTEST_AI_CHECK_BORING (1 << 2) #define CONTEST_AI_CHECK_EXCITEMENT (1 << 3) #define CONTEST_AI_CHECK_ORDER (1 << 4) #define CONTEST_AI_CHECK_GOOD_MOVE (1 << 5) #define CONTEST_AI_ERRATIC (1 << 6) #define CONTEST_AI_DUMMY_1 (1 << 7) #define CONTEST_AI_DUMMY_2 (1 << 8) #define CONTEST_AI_DUMMY_3 (1 << 9) #define CONTEST_AI_DUMMY_4 (1 << 10) #define CONTEST_AI_DUMMY_5 (1 << 11) #define CONTEST_AI_DUMMY_6 (1 << 12) #define CONTEST_AI_DUMMY_7 (1 << 13) #define CONTEST_AI_DUMMY_8 (1 << 14) #define CONTEST_AI_DUMMY_9 (1 << 15) #define CONTEST_AI_DUMMY_10 (1 << 16) #define CONTEST_AI_DUMMY_11 (1 << 17) #define CONTEST_AI_DUMMY_12 (1 << 18) #define CONTEST_AI_DUMMY_13 (1 << 19) #define CONTEST_AI_DUMMY_14 (1 << 20) #define CONTEST_AI_DUMMY_15 (1 << 21) #define CONTEST_AI_DUMMY_16 (1 << 22) #define CONTEST_AI_DUMMY_17 (1 << 23) #define CONTEST_AI_DUMMY_18 (1 << 24) #define CONTEST_AI_DUMMY_19 (1 << 25) #define CONTEST_AI_DUMMY_20 (1 << 26) #define CONTEST_AI_DUMMY_21 (1 << 27) #define CONTEST_AI_DUMMY_22 (1 << 28) #define CONTEST_AI_DUMMY_23 (1 << 29) #define CONTEST_AI_DUMMY_24 (1 << 30) #define CONTEST_AI_DUMMY_25 (1 << 31) // The below scripts are used by every AI contest opponent // It includes every non-dummy script #define CONTEST_AI_COMMON (CONTEST_AI_CHECK_BAD_MOVE | CONTEST_AI_CHECK_COMBO | CONTEST_AI_CHECK_BORING | \ CONTEST_AI_CHECK_EXCITEMENT | CONTEST_AI_CHECK_ORDER | CONTEST_AI_CHECK_GOOD_MOVE | CONTEST_AI_ERRATIC | \ CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5) #define CONTEST_EFFECT_HIGHLY_APPEALING 0 #define CONTEST_EFFECT_USER_MORE_EASILY_STARTLED 1 #define CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES 2 #define CONTEST_EFFECT_REPETITION_NOT_BORING 3 #define CONTEST_EFFECT_AVOID_STARTLE_ONCE 4 #define CONTEST_EFFECT_AVOID_STARTLE 5 #define CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY 6 // Unused #define CONTEST_EFFECT_USER_LESS_EASILY_STARTLED 7 // Unused #define CONTEST_EFFECT_STARTLE_FRONT_MON 8 // Unused #define CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS 9 // Unused #define CONTEST_EFFECT_STARTLE_PREV_MON 10 #define CONTEST_EFFECT_STARTLE_PREV_MONS 11 #define CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON 12 #define CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS 13 #define CONTEST_EFFECT_STARTLE_PREV_MON_2 14 // Unused #define CONTEST_EFFECT_STARTLE_PREV_MONS_2 15 // Unused #define CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION 16 #define CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION 17 #define CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN 18 #define CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL 19 #define CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL 20 // Unused #define CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL 21 // Unused #define CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL 22 // Unused #define CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL 23 // Unused #define CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL 24 // Unused #define CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS 25 // Unused #define CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS 26 #define CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS 27 #define CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION 28 // Unused #define CONTEST_EFFECT_BETTER_IF_FIRST 29 #define CONTEST_EFFECT_BETTER_IF_LAST 30 #define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES 31 #define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE 32 #define CONTEST_EFFECT_BETTER_WHEN_LATER 33 #define CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING 34 #define CONTEST_EFFECT_BETTER_IF_SAME_TYPE 35 #define CONTEST_EFFECT_BETTER_IF_DIFF_TYPE 36 // Unused #define CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL 37 #define CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS 38 #define CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION 39 #define CONTEST_EFFECT_NEXT_APPEAL_EARLIER 40 #define CONTEST_EFFECT_NEXT_APPEAL_LATER 41 #define CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER 42 // Unused #define CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER 43 #define CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST 44 #define CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS 45 #define CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED 46 #define CONTEST_EFFECT_DONT_EXCITE_AUDIENCE 47 //#define CONTEST_EFFECT_QUICKLY_GROW_BORED 48 // New in Gen 6 //#define CONTEST_EFFECT_EXCITES_AUDIENCE_MORE_IF_FIRST 49 // New in Gen 6 //#define CONTEST_EFFECT_EXCITES_AUDIENCE_MORE_IF_LAST 50 // New in Gen 6 // Each of the above effects is grouped into one of these effect type categories // Only a few of these get checked by the AI, the rest go unused #define CONTEST_EFFECT_TYPE_APPEAL 0 #define CONTEST_EFFECT_TYPE_AVOID_STARTLE 1 #define CONTEST_EFFECT_TYPE_STARTLE_MON 2 #define CONTEST_EFFECT_TYPE_STARTLE_MONS 3 #define CONTEST_EFFECT_TYPE_WORSEN 4 #define CONTEST_EFFECT_TYPE_SPECIAL_APPEAL 5 #define CONTEST_EFFECT_TYPE_TURN_ORDER 6 #define CONTEST_EFFECT_TYPE_UNKNOWN 8 enum { COMBO_STARTER_POUND, COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_ICE_PUNCH, COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_SCRATCH, COMBO_STARTER_VICE_GRIP, COMBO_STARTER_SWORDS_DANCE, COMBO_STARTER_SAND_ATTACK, COMBO_STARTER_HORN_ATTACK, COMBO_STARTER_LEER, COMBO_STARTER_SING, COMBO_STARTER_SURF, COMBO_STARTER_PECK, COMBO_STARTER_LEECH_SEED, COMBO_STARTER_GROWTH, COMBO_STARTER_STRING_SHOT, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_ROCK_THROW, COMBO_STARTER_EARTHQUAKE, COMBO_STARTER_TOXIC, COMBO_STARTER_CONFUSION, COMBO_STARTER_PSYCHIC, COMBO_STARTER_HYPNOSIS, COMBO_STARTER_RAGE, COMBO_STARTER_DOUBLE_TEAM, COMBO_STARTER_HARDEN, COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_SMOG, COMBO_STARTER_SLUDGE, COMBO_STARTER_BONE_CLUB, COMBO_STARTER_KINESIS, COMBO_STARTER_SOFT_BOILED, COMBO_STARTER_BONEMERANG, COMBO_STARTER_REST, COMBO_STARTER_MIND_READER, COMBO_STARTER_CURSE, COMBO_STARTER_POWDER_SNOW, COMBO_STARTER_SCARY_FACE, COMBO_STARTER_BELLY_DRUM, COMBO_STARTER_SLUDGE_BOMB, COMBO_STARTER_MUD_SLAP, COMBO_STARTER_BONE_RUSH, COMBO_STARTER_LOCK_ON, COMBO_STARTER_SANDSTORM, COMBO_STARTER_ENDURE, COMBO_STARTER_CHARM, COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_HEAL_BELL, COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_SWEET_SCENT, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_FAKE_OUT, COMBO_STARTER_STOCKPILE, COMBO_STARTER_HAIL, COMBO_STARTER_CHARGE, COMBO_STARTER_TAUNT, COMBO_STARTER_REVENGE, COMBO_STARTER_YAWN, COMBO_STARTER_DIVE, COMBO_STARTER_MUD_SPORT, COMBO_STARTER_METAL_SOUND, COMBO_STARTER_WATER_SPORT, COMBO_STARTER_CALM_MIND, COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_PAYBACK, COMBO_STARTER_LUCKY_CHANT, COMBO_STARTER_WORRY_SEED, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_BRAVE_BIRD, COMBO_STARTER_THUNDER_FANG, COMBO_STARTER_ICE_FANG, COMBO_STARTER_FIRE_FANG, COMBO_STARTER_ATTACK_ORDER, COMBO_STARTER_DEFEND_ORDER, COMBO_STARTER_HEAL_ORDER, COMBO_STARTER_SCALD, COMBO_STARTER_DRAGON_TAIL, COMBO_STARTER_HYPERSPACE_HOLE, COMBO_STARTER_THOUSAND_ARROWS, COMBO_STARTER_THOUSAND_WAVES, COMBO_STARTER_HYPERSPACE_FURY, COMBO_STARTER_SHADOW_BONE, COMBO_STARTER_ELECTRIC_TERRAIN, COMBO_STARTER_MISTY_TERRAIN, COMBO_STARTER_GRASSY_TERRAIN, COMBO_STARTER_PSYCHIC_TERRAIN, COMBO_STARTER_FORCE_PALM, COMBO_STARTER_THUNDER_WAVE, COMBO_STARTER_AGILITY, COMBO_STARTER_STEALTH_ROCK, COMBO_STARTER_INFERNO, COMBO_STARTER_WILL_O_WISP, COMBO_STARTER_LOVELY_KISS, COMBO_STARTER_SPORE, COMBO_STARTER_CELEBRATE, COMBO_STARTER_COVET, COMBO_STARTER_HAPPY_HOUR, COMBO_STARTER_WISH, COMBO_STARTER_AMNESIA, COMBO_STARTER_HONE_CLAWS, COMBO_STARTER_ENTRAINMENT, COMBO_STARTER_PLAY_NICE, COMBO_STARTER_BLOCK, COMBO_STARTER_ENCORE, COMBO_STARTER_DARK_VOID, COMBO_STARTER_GRASS_WHISTLE, COMBO_STARTER_SLEEP_POWDER, COMBO_STARTER_POISON_GAS, COMBO_STARTER_POISON_POWDER, COMBO_STARTER_NASTY_PLOT, COMBO_STARTER_PARABOLIC_CHARGE, COMBO_STARTER_SHIFT_GEAR, COMBO_STARTER_SPIKES, COMBO_STARTER_TOXIC_SPIKES, COMBO_STARTER_GLARE, COMBO_STARTER_ROCK_POLISH, COMBO_STARTER_ROTOTILLER, COMBO_STARTER_TORMENT, }; #endif // GUARD_CONSTANTS_CONTEST_H