2017-09-19 22:17:23 +02:00
|
|
|
#include "global.h"
|
2017-09-19 22:55:53 +02:00
|
|
|
#include "main.h"
|
2017-10-12 09:06:19 +02:00
|
|
|
#include "overworld.h"
|
2018-12-24 22:19:40 +01:00
|
|
|
#include "fldeff.h"
|
|
|
|
#include "field_specials.h"
|
|
|
|
#include "pokeblock.h"
|
2017-09-19 22:17:23 +02:00
|
|
|
#include "event_data.h"
|
2017-09-20 03:58:32 +02:00
|
|
|
#include "script.h"
|
2017-12-05 19:27:33 +01:00
|
|
|
#include "random.h"
|
2017-09-19 23:04:17 +02:00
|
|
|
#include "string_util.h"
|
2017-09-20 03:28:01 +02:00
|
|
|
#include "item.h"
|
2017-12-05 18:55:48 +01:00
|
|
|
#include "constants/items.h"
|
2017-09-20 03:47:15 +02:00
|
|
|
#include "item_menu.h"
|
2017-09-19 23:07:36 +02:00
|
|
|
#include "text.h"
|
2017-09-20 17:44:20 +02:00
|
|
|
#include "easy_chat.h"
|
2017-09-19 22:17:23 +02:00
|
|
|
#include "lilycove_lady.h"
|
2019-08-04 10:22:19 +02:00
|
|
|
#include "contest.h"
|
|
|
|
#include "berry.h"
|
|
|
|
#include "strings.h"
|
|
|
|
#include "constants/easy_chat.h"
|
|
|
|
#include "constants/event_objects.h"
|
|
|
|
#include "constants/items.h"
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
QUIZ_AUTHOR_LADY,
|
|
|
|
QUIZ_AUTHOR_PLAYER,
|
|
|
|
QUIZ_AUTHOR_OTHER_PLAYER
|
|
|
|
};
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
QUIZ_PHASE_ATTEMPT_QUIZ,
|
|
|
|
QUIZ_PHASE_MAKE_YOUR_OWN,
|
|
|
|
QUIZ_PHASE_GIVE_PRIZE
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//TODO name phases
|
2017-09-19 22:17:23 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static void InitLilycoveQuizLady(void);
|
2019-08-04 10:38:59 +02:00
|
|
|
static void InitLilycoveFavorLady(void);
|
2019-08-04 10:22:19 +02:00
|
|
|
static void InitLilycoveContestLady(void);
|
2017-09-21 03:03:57 +02:00
|
|
|
static void sub_818E004(void);
|
|
|
|
static void sub_818DBC4(void);
|
|
|
|
static void sub_818E674(void);
|
2019-08-04 10:22:19 +02:00
|
|
|
static u8 BufferAuthorName(void);
|
|
|
|
static bool8 IsQuizTrainerIdNotPlayer(void);
|
|
|
|
static u8 GetPlayerNameLength(const u8 *);
|
2017-09-19 22:17:23 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sContestLadyMonGfxId[] =
|
|
|
|
{
|
|
|
|
EVENT_OBJ_GFX_ZIGZAGOON_1,
|
|
|
|
EVENT_OBJ_GFX_SKITTY,
|
|
|
|
EVENT_OBJ_GFX_POOCHYENA,
|
|
|
|
EVENT_OBJ_GFX_KECLEON_1,
|
|
|
|
EVENT_OBJ_GFX_PIKACHU
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
2019-08-04 10:22:19 +02:00
|
|
|
|
|
|
|
static const u16 sLilycoveLadyGfxId[] =
|
|
|
|
{
|
|
|
|
EVENT_OBJ_GFX_WOMAN_4,
|
|
|
|
EVENT_OBJ_GFX_WOMAN_2,
|
|
|
|
EVENT_OBJ_GFX_GIRL_2
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
// Quiz Lady data
|
|
|
|
static const u16 sQuizLadyQuestion1[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_STORES,
|
|
|
|
EC_WORD_INFORMATION,
|
|
|
|
EC_WORD_ON,
|
|
|
|
EC_WORD_POKEMON,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_CAMERA,
|
|
|
|
EC_WORD_POKEDEX,
|
|
|
|
EC_WORD_POKENAV
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion2[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_ISN_T,
|
|
|
|
EC_WORD_A,
|
|
|
|
EC_WORD_GAME,
|
|
|
|
EC_WORD_VERSION,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_RUBY,
|
|
|
|
EC_WORD_SAPPHIRE,
|
|
|
|
EC_WORD_DARK
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion3[] =
|
|
|
|
{
|
|
|
|
EC_WORD_HOW,
|
|
|
|
EC_WORD_DO,
|
|
|
|
EC_WORD_POKEMON,
|
|
|
|
EC_WORD_EVOLVE,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
0xFFFF,
|
|
|
|
EC_WORD_LEVEL,
|
|
|
|
EC_WORD_INSOMNIA,
|
|
|
|
EC_WORD_CUTE_CHARM
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion4[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_IS,
|
|
|
|
EC_WORD_THE,
|
|
|
|
EC_WORD_PRETTY,
|
|
|
|
EC_WORD_ITEM,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_COLD,
|
|
|
|
EC_WORD_FLOWERS,
|
|
|
|
EC_WORD_MACHINE
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion5[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_ITEM,
|
|
|
|
EC_WORD_DO,
|
|
|
|
EC_WORD_YOU,
|
|
|
|
EC_WORD_BREAK,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_EGG,
|
|
|
|
EC_WORD_MAIL,
|
|
|
|
EC_WORD_PHONE
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion6[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_WILL,
|
|
|
|
EC_WORD_STOP,
|
|
|
|
EC_MOVE2(CONFUSION),
|
|
|
|
EC_WORD_QUES,
|
|
|
|
0xFFFF,
|
|
|
|
EC_WORD_ILLUMINATE,
|
|
|
|
EC_WORD_OWN_TEMPO,
|
|
|
|
EC_WORD_SWIFT_SWIM
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion7[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_OF,
|
|
|
|
EC_WORD_THESE,
|
|
|
|
EC_WORD_IS,
|
|
|
|
EC_WORD_MUSIC,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_FLYING,
|
|
|
|
EC_WORD_STEEL,
|
|
|
|
EC_WORD_ROCK
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion8[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_WILL,
|
|
|
|
EC_MOVE2(BLOCK),
|
|
|
|
EC_WORD_ESCAPE,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
0xFFFF,
|
|
|
|
EC_WORD_RUN_AWAY,
|
|
|
|
EC_WORD_SHADOW_TAG,
|
|
|
|
EC_WORD_WONDER_GUARD
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion9[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_WILL,
|
|
|
|
EC_WORD_STOP,
|
|
|
|
EC_WORD_POISON,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
0xFFFF,
|
|
|
|
EC_WORD_GUTS,
|
|
|
|
EC_WORD_IMMUNITY,
|
|
|
|
EC_WORD_SHED_SKIN
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion10[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_GOES,
|
|
|
|
EC_WORD_WITH,
|
|
|
|
EC_WORD_CENTER,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
0xFFFF,
|
|
|
|
EC_WORD_POKEDEX,
|
|
|
|
EC_WORD_POKEMON,
|
|
|
|
EC_WORD_POKENAV
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion11[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_STORES,
|
|
|
|
EC_WORD_YOUR,
|
|
|
|
EC_WORD_POKEMON,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
0xFFFF,
|
|
|
|
EC_WORD_PC,
|
|
|
|
EC_WORD_DEPT_STORE,
|
|
|
|
EC_WORD_TELEVISION
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion12[] =
|
|
|
|
{
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_MACHINE,
|
|
|
|
EC_WORD_GIVES,
|
|
|
|
EC_WORD_YOU,
|
|
|
|
EC_WORD_INFORMATION,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_BIKE,
|
|
|
|
EC_WORD_LOCOMOTIVE,
|
|
|
|
EC_WORD_TELEVISION
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion13[] =
|
|
|
|
{
|
|
|
|
EC_WORD_A,
|
|
|
|
EC_WORD_POKEMON,
|
|
|
|
EC_WORD_WAS,
|
|
|
|
EC_WORD_ONCE,
|
|
|
|
EC_WORD_THIS,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_PHONE,
|
|
|
|
EC_WORD_PLUSH_DOLL,
|
|
|
|
EC_WORD_LETTER
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion14[] =
|
|
|
|
{
|
|
|
|
EC_WORD_STEEL,
|
|
|
|
EC_WORD_IS,
|
|
|
|
EC_WORD_STRONG,
|
|
|
|
EC_WORD_VERSUS,
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_ICE,
|
|
|
|
EC_WORD_GROUND,
|
|
|
|
0xFFFF
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion15[] =
|
|
|
|
{
|
|
|
|
EC_WORD_DARK,
|
|
|
|
EC_WORD_IS,
|
|
|
|
EC_WORD_WEAK,
|
|
|
|
EC_WORD_VERSUS,
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_PSYCHIC,
|
|
|
|
EC_WORD_FIGHTING,
|
|
|
|
0xFFFF
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuestion16[] =
|
|
|
|
{
|
|
|
|
EC_WORD_GHOST,
|
|
|
|
EC_WORD_IS,
|
|
|
|
EC_WORD_WEAK,
|
|
|
|
EC_WORD_VERSUS,
|
|
|
|
EC_WORD_WHICH,
|
|
|
|
EC_WORD_QUES,
|
|
|
|
EC_WORD_NORMAL,
|
|
|
|
EC_WORD_DARK,
|
|
|
|
0xFFFF
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 *const sQuizLadyQuizQuestions[] =
|
|
|
|
{
|
|
|
|
sQuizLadyQuestion1,
|
|
|
|
sQuizLadyQuestion2,
|
|
|
|
sQuizLadyQuestion3,
|
|
|
|
sQuizLadyQuestion4,
|
|
|
|
sQuizLadyQuestion5,
|
|
|
|
sQuizLadyQuestion6,
|
|
|
|
sQuizLadyQuestion7,
|
|
|
|
sQuizLadyQuestion8,
|
|
|
|
sQuizLadyQuestion9,
|
|
|
|
sQuizLadyQuestion10,
|
|
|
|
sQuizLadyQuestion11,
|
|
|
|
sQuizLadyQuestion12,
|
|
|
|
sQuizLadyQuestion13,
|
|
|
|
sQuizLadyQuestion14,
|
|
|
|
sQuizLadyQuestion15,
|
|
|
|
sQuizLadyQuestion16
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyQuizAnswers[] =
|
|
|
|
{
|
|
|
|
EC_WORD_POKEDEX,
|
|
|
|
EC_WORD_DARK,
|
|
|
|
EC_WORD_LEVEL,
|
|
|
|
EC_WORD_FLOWERS,
|
|
|
|
EC_WORD_EGG,
|
|
|
|
EC_WORD_OWN_TEMPO,
|
|
|
|
EC_WORD_ROCK,
|
|
|
|
EC_WORD_SHADOW_TAG,
|
|
|
|
EC_WORD_IMMUNITY,
|
|
|
|
EC_WORD_POKEMON,
|
|
|
|
EC_WORD_PC,
|
|
|
|
EC_WORD_TELEVISION,
|
|
|
|
EC_WORD_PLUSH_DOLL,
|
|
|
|
EC_WORD_ICE,
|
|
|
|
EC_WORD_FIGHTING,
|
|
|
|
EC_WORD_DARK // DARK is accepted as the correct answer despite the fact that it's wrong
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sQuizLadyPrizes[] =
|
|
|
|
{
|
|
|
|
ITEM_GLITTER_MAIL,
|
|
|
|
ITEM_BEAD_MAIL,
|
|
|
|
ITEM_TROPIC_MAIL,
|
|
|
|
ITEM_MAX_ETHER,
|
|
|
|
ITEM_MAX_ETHER,
|
|
|
|
ITEM_MAX_ETHER,
|
|
|
|
ITEM_WATMEL_BERRY,
|
|
|
|
ITEM_BELUE_BERRY,
|
|
|
|
ITEM_DURIN_BERRY,
|
|
|
|
ITEM_LUXURY_BALL,
|
|
|
|
ITEM_TM15_HYPER_BEAM,
|
|
|
|
ITEM_BIG_PEARL,
|
|
|
|
ITEM_STAR_PIECE,
|
|
|
|
ITEM_RARE_CANDY,
|
|
|
|
ITEM_RARE_CANDY,
|
|
|
|
ITEM_PREMIER_BALL
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
#define QUIZ_QUESTION_LEN ARRAY_COUNT(sQuizLadyQuestion1) //
|
|
|
|
#define QUIZ_QUESTION_NUM ARRAY_COUNT(sQuizLadyQuizQuestions)
|
|
|
|
|
|
|
|
// Favor Lady data
|
|
|
|
static const u8 *const sFavorLadyDescriptions[] =
|
|
|
|
{
|
|
|
|
gText_Slippery,
|
|
|
|
gText_Roundish,
|
|
|
|
gText_Whamish,
|
|
|
|
gText_Shiny,
|
|
|
|
gText_Sticky,
|
|
|
|
gText_Pointy
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sFavorLadyAcceptedItems_Slippery[] =
|
|
|
|
{
|
|
|
|
ITEM_REPEL,
|
|
|
|
ITEM_SUPER_REPEL,
|
|
|
|
ITEM_MAX_REPEL,
|
|
|
|
ITEM_ANTIDOTE,
|
|
|
|
ITEM_PARALYZE_HEAL,
|
|
|
|
ITEM_BURN_HEAL,
|
|
|
|
ITEM_BELUE_BERRY,
|
|
|
|
ITEM_LUXURY_BALL,
|
|
|
|
ITEM_TIMER_BALL,
|
|
|
|
ITEM_REVIVE,
|
|
|
|
ITEM_MAX_REVIVE,
|
|
|
|
ITEM_ENERGY_POWDER,
|
|
|
|
ITEM_NONE
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sFavorLadyAcceptedItems_Roundish[] =
|
|
|
|
{
|
|
|
|
ITEM_FLUFFY_TAIL,
|
|
|
|
ITEM_PEARL,
|
|
|
|
ITEM_BIG_PEARL,
|
|
|
|
ITEM_HARD_STONE,
|
|
|
|
ITEM_SMOKE_BALL,
|
|
|
|
ITEM_SHOAL_SHELL,
|
|
|
|
ITEM_TINY_MUSHROOM,
|
|
|
|
ITEM_BIG_MUSHROOM,
|
|
|
|
ITEM_PECHA_BERRY,
|
|
|
|
ITEM_ASPEAR_BERRY,
|
|
|
|
ITEM_ORAN_BERRY,
|
|
|
|
ITEM_GREPA_BERRY,
|
|
|
|
ITEM_MAGOST_BERRY,
|
|
|
|
ITEM_WATMEL_BERRY,
|
|
|
|
ITEM_POKE_BALL,
|
|
|
|
ITEM_ULTRA_BALL,
|
|
|
|
ITEM_NONE
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sFavorLadyAcceptedItems_Whamish[] =
|
|
|
|
{
|
|
|
|
ITEM_REVIVAL_HERB,
|
|
|
|
ITEM_POTION,
|
|
|
|
ITEM_FRESH_WATER,
|
|
|
|
ITEM_SODA_POP,
|
|
|
|
ITEM_LEMONADE,
|
|
|
|
ITEM_HARD_STONE,
|
|
|
|
ITEM_LIGHT_BALL,
|
|
|
|
ITEM_LAVA_COOKIE,
|
|
|
|
ITEM_CHESTO_BERRY,
|
|
|
|
ITEM_NANAB_BERRY,
|
|
|
|
ITEM_WEPEAR_BERRY,
|
|
|
|
ITEM_KELPSY_BERRY,
|
|
|
|
ITEM_NOMEL_BERRY,
|
|
|
|
ITEM_DURIN_BERRY,
|
|
|
|
ITEM_NONE
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sFavorLadyAcceptedItems_Shiny[] =
|
|
|
|
{
|
|
|
|
ITEM_HEAL_POWDER,
|
|
|
|
ITEM_X_SPEED,
|
|
|
|
ITEM_X_ATTACK,
|
|
|
|
ITEM_X_DEFEND,
|
|
|
|
ITEM_BLUE_FLUTE,
|
|
|
|
ITEM_YELLOW_FLUTE,
|
|
|
|
ITEM_RED_FLUTE,
|
|
|
|
ITEM_BLACK_FLUTE,
|
|
|
|
ITEM_WHITE_FLUTE,
|
|
|
|
ITEM_NUGGET,
|
|
|
|
ITEM_SUN_STONE,
|
|
|
|
ITEM_STARDUST,
|
|
|
|
ITEM_STAR_PIECE,
|
|
|
|
ITEM_PEARL,
|
|
|
|
ITEM_BIG_PEARL,
|
|
|
|
ITEM_TWISTED_SPOON,
|
|
|
|
ITEM_SILVER_POWDER,
|
|
|
|
ITEM_BRIGHT_POWDER,
|
|
|
|
ITEM_LUXURY_BALL,
|
|
|
|
ITEM_PREMIER_BALL,
|
|
|
|
ITEM_NONE
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sFavorLadyAcceptedItems_Sticky[] =
|
|
|
|
{
|
|
|
|
ITEM_ENERGY_ROOT,
|
|
|
|
ITEM_FULL_RESTORE,
|
|
|
|
ITEM_MAX_POTION,
|
|
|
|
ITEM_DIRE_HIT,
|
|
|
|
ITEM_X_ACCURACY,
|
|
|
|
ITEM_GUARD_SPEC,
|
|
|
|
ITEM_WATMEL_BERRY,
|
|
|
|
ITEM_LEFTOVERS,
|
|
|
|
ITEM_TINY_MUSHROOM,
|
|
|
|
ITEM_HEART_SCALE,
|
|
|
|
ITEM_NONE
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sFavorLadyAcceptedItems_Pointy[] =
|
|
|
|
{
|
|
|
|
ITEM_QUICK_CLAW,
|
|
|
|
ITEM_POISON_BARB,
|
|
|
|
ITEM_SHARP_BEAK,
|
|
|
|
ITEM_DRAGON_FANG,
|
|
|
|
ITEM_TAMATO_BERRY,
|
|
|
|
ITEM_DURIN_BERRY,
|
|
|
|
ITEM_PETAYA_BERRY,
|
|
|
|
ITEM_SALAC_BERRY,
|
|
|
|
ITEM_STARDUST,
|
|
|
|
ITEM_STAR_PIECE,
|
|
|
|
ITEM_NONE
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 *const sFavorLadyAcceptedItemLists[] =
|
|
|
|
{
|
|
|
|
sFavorLadyAcceptedItems_Slippery,
|
|
|
|
sFavorLadyAcceptedItems_Roundish,
|
|
|
|
sFavorLadyAcceptedItems_Whamish,
|
|
|
|
sFavorLadyAcceptedItems_Shiny,
|
|
|
|
sFavorLadyAcceptedItems_Sticky,
|
|
|
|
sFavorLadyAcceptedItems_Pointy
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sFavorLadyPrizes[] =
|
|
|
|
{
|
|
|
|
ITEM_LUXURY_BALL,
|
|
|
|
ITEM_NUGGET,
|
|
|
|
ITEM_PROTEIN,
|
|
|
|
ITEM_HEART_SCALE,
|
|
|
|
ITEM_RARE_CANDY,
|
|
|
|
ITEM_PP_MAX
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
|
|
|
|
static const u8 *const sContestLadyMonNames[] =
|
|
|
|
{
|
|
|
|
gText_Handsome,
|
|
|
|
gText_Vinny,
|
|
|
|
gText_Moreme,
|
|
|
|
gText_Ironhard,
|
|
|
|
gText_Muscle
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
2019-08-04 10:22:19 +02:00
|
|
|
|
|
|
|
static const u8 *const sContestLadyCategoryNames[] =
|
|
|
|
{
|
|
|
|
gText_Coolness,
|
|
|
|
gText_Beauty,
|
|
|
|
gText_Cuteness,
|
|
|
|
gText_Smartness,
|
|
|
|
gText_Toughness
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
2019-08-04 10:22:19 +02:00
|
|
|
|
|
|
|
static const u8 *const sContestNames[] =
|
|
|
|
{
|
|
|
|
gText_CoolnessContest,
|
|
|
|
gText_BeautyContest,
|
|
|
|
gText_CutenessContest,
|
|
|
|
gText_SmartnessContest,
|
|
|
|
gText_ToughnessContest
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u16 sContestLadyMonSpecies[] =
|
|
|
|
{
|
|
|
|
SPECIES_ZIGZAGOON,
|
|
|
|
SPECIES_SKITTY,
|
|
|
|
SPECIES_POOCHYENA,
|
|
|
|
SPECIES_KECLEON,
|
|
|
|
SPECIES_PIKACHU
|
2017-09-21 04:01:28 +02:00
|
|
|
};
|
2017-09-19 22:32:33 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static EWRAM_DATA struct LilycoveLadyFavor *sFavorLadyPtr = NULL;
|
|
|
|
static EWRAM_DATA struct LilycoveLadyQuiz *sQuizLadyPtr = NULL;
|
|
|
|
static EWRAM_DATA struct LilycoveLadyContest *sContestLadyPtr = NULL;
|
2017-09-20 22:32:37 +02:00
|
|
|
|
2017-11-11 01:12:18 +01:00
|
|
|
extern EWRAM_DATA u16 gSpecialVar_ItemId;
|
2017-09-19 22:17:23 +02:00
|
|
|
|
|
|
|
u8 GetLilycoveLadyId(void)
|
|
|
|
{
|
2017-09-20 22:49:22 +02:00
|
|
|
return gSaveBlock1Ptr->lilycoveLady.id;
|
2017-09-19 22:17:23 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void SetLilycoveLadyGfx(void)
|
2017-09-19 22:17:23 +02:00
|
|
|
{
|
|
|
|
LilycoveLady *lilycoveLady;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
VarSet(VAR_OBJ_GFX_ID_0, sLilycoveLadyGfxId[GetLilycoveLadyId()]);
|
2017-09-19 22:17:23 +02:00
|
|
|
if (GetLilycoveLadyId() == LILYCOVE_LADY_CONTEST)
|
|
|
|
{
|
|
|
|
lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
|
2019-08-04 10:22:19 +02:00
|
|
|
VarSet(VAR_OBJ_GFX_ID_1, sContestLadyMonGfxId[lilycoveLady->contest.category]);
|
2017-11-11 01:12:18 +01:00
|
|
|
gSpecialVar_Result = TRUE;
|
2017-09-19 22:17:23 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2017-11-11 01:12:18 +01:00
|
|
|
gSpecialVar_Result = FALSE;
|
2017-09-19 22:17:23 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetLilycoveLady(void)
|
|
|
|
{
|
|
|
|
u16 id;
|
|
|
|
|
|
|
|
id = ((gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0]);
|
|
|
|
id %= 6;
|
|
|
|
id >>= 1;
|
|
|
|
switch (id)
|
|
|
|
{
|
|
|
|
case LILYCOVE_LADY_QUIZ:
|
2019-08-04 10:22:19 +02:00
|
|
|
InitLilycoveQuizLady();
|
2017-09-19 22:17:23 +02:00
|
|
|
break;
|
2019-08-04 10:38:59 +02:00
|
|
|
case LILYCOVE_LADY_FAVOR:
|
|
|
|
InitLilycoveFavorLady();
|
2017-09-19 22:17:23 +02:00
|
|
|
break;
|
|
|
|
case LILYCOVE_LADY_CONTEST:
|
2019-08-04 10:22:19 +02:00
|
|
|
InitLilycoveContestLady();
|
2017-09-19 22:17:23 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2017-09-19 22:21:50 +02:00
|
|
|
|
|
|
|
void sub_818DA78(void)
|
|
|
|
{
|
|
|
|
switch (GetLilycoveLadyId())
|
|
|
|
{
|
|
|
|
case LILYCOVE_LADY_QUIZ:
|
|
|
|
sub_818E004();
|
|
|
|
break;
|
2019-08-04 10:38:59 +02:00
|
|
|
case LILYCOVE_LADY_FAVOR:
|
2017-09-19 22:21:50 +02:00
|
|
|
sub_818DBC4();
|
|
|
|
break;
|
|
|
|
case LILYCOVE_LADY_CONTEST:
|
|
|
|
sub_818E674();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetLilycoveLadyRandomly(void)
|
|
|
|
{
|
|
|
|
u8 id;
|
|
|
|
|
|
|
|
id = Random() % 3;
|
|
|
|
switch (id)
|
|
|
|
{
|
|
|
|
case LILYCOVE_LADY_QUIZ:
|
2019-08-04 10:22:19 +02:00
|
|
|
InitLilycoveQuizLady();
|
2017-09-19 22:21:50 +02:00
|
|
|
break;
|
2019-08-04 10:38:59 +02:00
|
|
|
case LILYCOVE_LADY_FAVOR:
|
|
|
|
InitLilycoveFavorLady();
|
2017-09-19 22:21:50 +02:00
|
|
|
break;
|
|
|
|
case LILYCOVE_LADY_CONTEST:
|
2019-08-04 10:22:19 +02:00
|
|
|
InitLilycoveContestLady();
|
2017-09-19 22:21:50 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2017-09-19 22:24:42 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void Script_GetLilycoveLadyId(void)
|
2017-09-19 22:24:42 +02:00
|
|
|
{
|
2017-11-11 01:12:18 +01:00
|
|
|
gSpecialVar_Result = GetLilycoveLadyId();
|
2017-09-19 22:24:42 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static u8 GetNumAcceptedItems(const u16 *itemsArray)
|
2017-09-19 22:24:42 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
u8 items;
|
2017-09-19 22:24:42 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
for (items = 0; *itemsArray != ITEM_NONE; items ++, itemsArray ++);
|
|
|
|
return items;
|
2017-09-19 22:24:42 +02:00
|
|
|
}
|
2017-09-19 22:32:33 +02:00
|
|
|
|
2017-09-21 03:03:57 +02:00
|
|
|
static void sub_818DB20(void)
|
2017-09-19 22:32:33 +02:00
|
|
|
{
|
|
|
|
u8 size;
|
|
|
|
u8 idx;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
sFavorLadyPtr->favorId = Random() % 6;
|
|
|
|
size = GetNumAcceptedItems(sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId]);
|
2017-09-19 22:32:33 +02:00
|
|
|
idx = Random() % size;
|
2019-08-04 10:22:19 +02:00
|
|
|
sFavorLadyPtr->unk_010 = sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId][idx];
|
2017-09-19 22:32:33 +02:00
|
|
|
}
|
2017-09-19 22:55:53 +02:00
|
|
|
|
2019-08-04 10:38:59 +02:00
|
|
|
static void InitLilycoveFavorLady(void)
|
2017-09-19 22:55:53 +02:00
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
|
|
|
sFavorLadyPtr->id = LILYCOVE_LADY_FAVOR;
|
2019-08-04 10:22:19 +02:00
|
|
|
sFavorLadyPtr->phase = 0;
|
|
|
|
sFavorLadyPtr->playerName[0] = EOS;
|
|
|
|
sFavorLadyPtr->unk_002 = 0;
|
|
|
|
sFavorLadyPtr->unk_003= 0;
|
|
|
|
sFavorLadyPtr->itemId = ITEM_NONE;
|
|
|
|
sFavorLadyPtr->language = gGameLanguage;
|
2017-09-19 22:55:53 +02:00
|
|
|
sub_818DB20();
|
|
|
|
}
|
|
|
|
|
2017-09-21 03:03:57 +02:00
|
|
|
static void sub_818DBC4(void)
|
2017-09-19 22:55:53 +02:00
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
|
|
|
sFavorLadyPtr->id = LILYCOVE_LADY_FAVOR;
|
2019-08-04 10:22:19 +02:00
|
|
|
sFavorLadyPtr->phase = 0;
|
2017-09-19 22:55:53 +02:00
|
|
|
}
|
2017-09-19 23:04:17 +02:00
|
|
|
|
|
|
|
u8 sub_818DBE8(void)
|
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
if (sFavorLadyPtr->phase == 2)
|
2017-09-19 23:04:17 +02:00
|
|
|
{
|
|
|
|
return 2;
|
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
else if (sFavorLadyPtr->phase == 1)
|
2017-09-19 23:04:17 +02:00
|
|
|
{
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static const u8 *GetFavorLadyDescription(u8 idx)
|
2017-09-19 23:04:17 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
return sFavorLadyDescriptions[idx];
|
2017-09-19 23:04:17 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void BufferFavorLadyDescription(void)
|
2017-09-19 23:04:17 +02:00
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
StringCopy(gStringVar1, GetFavorLadyDescription(sFavorLadyPtr->favorId));
|
2017-09-19 23:04:17 +02:00
|
|
|
}
|
2017-09-19 23:07:36 +02:00
|
|
|
|
|
|
|
bool8 sub_818DC60(void)
|
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
if (sFavorLadyPtr->playerName[0] != EOS)
|
2017-09-19 23:07:36 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
StringCopy7(gStringVar3, sFavorLadyPtr->playerName);
|
|
|
|
ConvertInternationalString(gStringVar3, sFavorLadyPtr->language);
|
2017-09-19 23:07:36 +02:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
2017-09-20 03:28:01 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static void BufferItemName(u8 *dest, u16 itemId)
|
2017-09-20 03:28:01 +02:00
|
|
|
{
|
2018-04-29 13:36:26 +02:00
|
|
|
StringCopy(dest, ItemId_GetName(itemId));
|
2017-09-20 03:28:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818DCC8(void)
|
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
BufferItemName(gStringVar2, sFavorLadyPtr->itemId);
|
2017-09-20 03:28:01 +02:00
|
|
|
}
|
|
|
|
|
2017-09-21 03:03:57 +02:00
|
|
|
static void sub_818DCF4(const u8 *src, u8 *dest)
|
2017-09-20 03:28:01 +02:00
|
|
|
{
|
|
|
|
memset(dest, 0xFF, 8);
|
|
|
|
StringCopy7(dest, src);
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818DD14(void)
|
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
sub_818DCF4(sFavorLadyPtr->playerName, gStringVar3);
|
|
|
|
ConvertInternationalString(gStringVar3, sFavorLadyPtr->language);
|
2017-09-20 03:28:01 +02:00
|
|
|
}
|
2017-09-20 03:47:15 +02:00
|
|
|
|
|
|
|
bool8 sub_818DD54(void)
|
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
return sFavorLadyPtr->unk_002 ? TRUE : FALSE;
|
2017-09-20 03:47:15 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void OpenBagMenuForFavorLady(void)
|
2017-09-20 03:47:15 +02:00
|
|
|
{
|
|
|
|
sub_81AAC50();
|
|
|
|
}
|
|
|
|
|
2017-09-21 03:03:57 +02:00
|
|
|
static bool8 sub_818DD84(u16 itemId)
|
2017-09-20 03:47:15 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
u8 numItems;
|
2017-09-20 03:47:15 +02:00
|
|
|
u8 i;
|
|
|
|
bool8 response;
|
|
|
|
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
numItems = GetNumAcceptedItems(sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId]);
|
|
|
|
sFavorLadyPtr->phase = 1;
|
|
|
|
BufferItemName(gStringVar2, itemId);
|
|
|
|
sFavorLadyPtr->itemId = itemId;
|
|
|
|
sub_818DCF4(gSaveBlock2Ptr->playerName, sFavorLadyPtr->playerName);
|
|
|
|
sFavorLadyPtr->language = gGameLanguage;
|
2017-09-20 03:47:15 +02:00
|
|
|
response = FALSE;
|
2019-08-04 10:22:19 +02:00
|
|
|
for (i = 0; i < numItems; i ++)
|
2017-09-20 03:47:15 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
if (sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId][i] == itemId)
|
2017-09-20 03:47:15 +02:00
|
|
|
{
|
|
|
|
response = TRUE;
|
2019-08-04 10:22:19 +02:00
|
|
|
sFavorLadyPtr->unk_003 ++;
|
|
|
|
sFavorLadyPtr->unk_002 = 1;
|
|
|
|
if (sFavorLadyPtr->unk_010 == itemId)
|
2017-09-20 03:47:15 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sFavorLadyPtr->unk_003 = 5;
|
2017-09-20 03:47:15 +02:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
sFavorLadyPtr->unk_002 = 0;
|
2017-09-20 03:47:15 +02:00
|
|
|
}
|
|
|
|
return response;
|
|
|
|
}
|
2017-09-20 03:58:32 +02:00
|
|
|
|
|
|
|
bool8 sub_818DE44(void)
|
|
|
|
{
|
2017-11-11 01:12:18 +01:00
|
|
|
return sub_818DD84(gSpecialVar_ItemId);
|
2017-09-20 03:58:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool8 sub_818DE5C(void)
|
|
|
|
{
|
|
|
|
u8 checkval;
|
|
|
|
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
checkval = sFavorLadyPtr->unk_003;
|
2017-09-20 03:58:32 +02:00
|
|
|
return checkval < 5 ? FALSE : TRUE;
|
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static void BufferPrizeName(u16 itemId)
|
2017-09-20 03:58:32 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
BufferItemName(gStringVar2, itemId);
|
2017-09-20 03:58:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
u16 sub_818DEA0(void)
|
|
|
|
{
|
|
|
|
u16 itemId;
|
|
|
|
|
2019-08-04 10:38:59 +02:00
|
|
|
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
|
2019-08-04 10:22:19 +02:00
|
|
|
itemId = sFavorLadyPrizes[sFavorLadyPtr->favorId];
|
|
|
|
BufferPrizeName(itemId);
|
|
|
|
sFavorLadyPtr->phase = 2;
|
2017-09-20 03:58:32 +02:00
|
|
|
return itemId;
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818DEDC(void)
|
|
|
|
{
|
2019-08-04 10:38:59 +02:00
|
|
|
InitLilycoveFavorLady();
|
2019-08-04 10:22:19 +02:00
|
|
|
sFavorLadyPtr->phase = 1;
|
2017-09-20 03:58:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818DEF4(void)
|
|
|
|
{
|
|
|
|
EnableBothScriptContexts();
|
|
|
|
}
|
2017-09-20 04:25:31 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static void PickQuizQuestion(void)
|
2017-09-20 04:25:31 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
u8 questionId;
|
2017-09-20 04:25:31 +02:00
|
|
|
u8 i;
|
2017-09-20 16:45:00 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
questionId = Random() % QUIZ_QUESTION_NUM;
|
|
|
|
for (i = 0; i < QUIZ_QUESTION_LEN; i ++)
|
2017-09-20 04:25:31 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->question[i] = sQuizLadyQuizQuestions[questionId][i];
|
2017-09-20 04:25:31 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->answer = sQuizLadyQuizAnswers[questionId];
|
|
|
|
sQuizLadyPtr->itemId = sQuizLadyPrizes[questionId];
|
|
|
|
sQuizLadyPtr->questionId = questionId;
|
|
|
|
sQuizLadyPtr->playerName[0] = EOS;
|
2017-09-20 04:25:31 +02:00
|
|
|
}
|
2017-09-20 04:35:40 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static void InitLilycoveQuizLady(void)
|
2017-09-20 04:35:40 +02:00
|
|
|
{
|
|
|
|
u8 i;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
sQuizLadyPtr->id = LILYCOVE_LADY_QUIZ;
|
|
|
|
sQuizLadyPtr->phase = QUIZ_PHASE_ATTEMPT_QUIZ;
|
|
|
|
for (i = 0; i < QUIZ_QUESTION_LEN; i ++)
|
2017-09-20 04:35:40 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->question[i] = -1;
|
2017-09-20 04:35:40 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->answer = -1;
|
|
|
|
sQuizLadyPtr->response = -1;
|
2017-09-20 04:35:40 +02:00
|
|
|
for (i = 0; i < 4; i ++)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->playerTrainerId[i] = 0;
|
2017-09-20 04:35:40 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->itemId = ITEM_NONE;
|
|
|
|
sQuizLadyPtr->waitingForChallenger = FALSE;
|
|
|
|
sQuizLadyPtr->prevQuestionId = QUIZ_QUESTION_NUM;
|
|
|
|
sQuizLadyPtr->language = gGameLanguage;
|
|
|
|
PickQuizQuestion();
|
2017-09-20 04:35:40 +02:00
|
|
|
}
|
2017-09-20 04:57:22 +02:00
|
|
|
|
2017-09-21 03:03:57 +02:00
|
|
|
static void sub_818E004(void)
|
2017-09-20 04:57:22 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
sQuizLadyPtr->id = LILYCOVE_LADY_QUIZ;
|
|
|
|
sQuizLadyPtr->phase = QUIZ_PHASE_ATTEMPT_QUIZ;
|
|
|
|
sQuizLadyPtr->waitingForChallenger = FALSE;
|
|
|
|
sQuizLadyPtr->response = -1;
|
2017-09-20 04:57:22 +02:00
|
|
|
}
|
2017-09-20 05:31:05 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
u8 GetQuizLadyPhase(void)
|
2017-09-20 05:31:05 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
if (sQuizLadyPtr->phase == QUIZ_PHASE_GIVE_PRIZE)
|
2017-09-20 05:31:05 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
return QUIZ_PHASE_GIVE_PRIZE;
|
2017-09-20 05:31:05 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
else if (sQuizLadyPtr->phase == QUIZ_PHASE_MAKE_YOUR_OWN)
|
2017-09-20 05:31:05 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
return QUIZ_PHASE_MAKE_YOUR_OWN;
|
2017-09-20 05:31:05 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
return QUIZ_PHASE_ATTEMPT_QUIZ;
|
2017-09-20 05:31:05 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
// 0: waiting for someone to attempt player's quiz
|
|
|
|
// 1: ready to attempt other player's quiz
|
|
|
|
// 2: ready to attempt lady's quiz
|
|
|
|
u8 sub_818E06C(void) //sub_818E06C
|
2017-09-20 05:31:05 +02:00
|
|
|
{
|
|
|
|
int i;
|
|
|
|
int j;
|
2019-08-04 10:22:19 +02:00
|
|
|
u8 author;
|
2017-09-20 05:31:05 +02:00
|
|
|
struct LilycoveLadyQuiz *quiz;
|
|
|
|
|
|
|
|
quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
2019-08-04 10:22:19 +02:00
|
|
|
if (sub_811F8D8(quiz->answer) == 0)
|
|
|
|
{
|
|
|
|
i = quiz->questionId;
|
2017-09-20 05:31:05 +02:00
|
|
|
do
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
if (++ i >= QUIZ_QUESTION_NUM)
|
2017-09-20 05:31:05 +02:00
|
|
|
{
|
|
|
|
i = 0;
|
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
} while (sub_811F8D8(sQuizLadyQuizAnswers[i]) == 0);
|
|
|
|
for (j = 0; j < QUIZ_QUESTION_LEN; j ++)
|
2017-09-20 05:31:05 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
quiz->question[j] = sQuizLadyQuizQuestions[i][j];
|
2017-09-20 05:31:05 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
quiz->answer = sQuizLadyQuizAnswers[i];
|
|
|
|
quiz->itemId = sQuizLadyPrizes[i];
|
|
|
|
quiz->questionId = i;
|
2017-09-20 16:45:00 +02:00
|
|
|
quiz->playerName[0] = EOS;
|
2017-09-20 05:31:05 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
author = BufferAuthorName();
|
|
|
|
if (author == QUIZ_AUTHOR_LADY)
|
2017-09-20 05:31:05 +02:00
|
|
|
{
|
|
|
|
return 2;
|
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
else if (author == QUIZ_AUTHOR_OTHER_PLAYER || IsQuizTrainerIdNotPlayer())
|
2017-09-20 05:31:05 +02:00
|
|
|
{
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
2017-09-20 16:45:00 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static u8 BufferAuthorName(void)
|
2017-09-20 16:45:00 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
u8 author;
|
|
|
|
u8 nameLen;
|
2017-09-20 16:45:00 +02:00
|
|
|
u8 i;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
author = QUIZ_AUTHOR_PLAYER;
|
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
if (sQuizLadyPtr->playerName[0] == EOS)
|
2017-09-20 16:45:00 +02:00
|
|
|
{
|
2017-09-21 05:02:17 +02:00
|
|
|
StringCopy7(gStringVar1, gText_Lady2);
|
2019-08-04 10:22:19 +02:00
|
|
|
author = QUIZ_AUTHOR_LADY;
|
2017-09-20 16:45:00 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
StringCopy7(gStringVar1, sQuizLadyPtr->playerName);
|
|
|
|
ConvertInternationalString(gStringVar1, sQuizLadyPtr->language);
|
|
|
|
nameLen = GetPlayerNameLength(sQuizLadyPtr->playerName);
|
|
|
|
if (nameLen == GetPlayerNameLength(gSaveBlock2Ptr->playerName))
|
2017-09-20 16:45:00 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
u8 *name = sQuizLadyPtr->playerName;
|
|
|
|
for (i = 0; i < nameLen; i ++)
|
2017-09-20 16:45:00 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
name = sQuizLadyPtr->playerName;
|
2018-02-28 19:37:48 +01:00
|
|
|
if (name[i] != gSaveBlock2Ptr->playerName[i])
|
2017-09-20 16:45:00 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
author = QUIZ_AUTHOR_OTHER_PLAYER;
|
2017-09-20 16:45:00 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
return author;
|
2017-09-20 16:45:00 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static bool8 IsQuizTrainerIdNotPlayer(void)
|
2017-09-20 16:45:00 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
bool8 notPlayer;
|
2017-09-20 16:45:00 +02:00
|
|
|
u8 i;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
notPlayer = FALSE;
|
2017-09-20 16:45:00 +02:00
|
|
|
for (i = 0; i < 4; i ++)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
if (sQuizLadyPtr->playerTrainerId[i] != gSaveBlock2Ptr->playerTrainerId[i])
|
2017-09-20 16:45:00 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
notPlayer = TRUE;
|
2017-09-20 16:45:00 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
return notPlayer;
|
2017-09-20 16:45:00 +02:00
|
|
|
}
|
2017-09-20 17:25:46 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static u8 GetPlayerNameLength(const u8 *playerName)
|
2017-09-20 17:25:46 +02:00
|
|
|
{
|
|
|
|
u8 len;
|
|
|
|
const u8 *ptr;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
for (len = 0, ptr = playerName; *ptr != EOS; len ++, ptr ++);
|
2017-09-20 17:25:46 +02:00
|
|
|
return len;
|
|
|
|
}
|
2017-09-20 17:30:09 +02:00
|
|
|
|
|
|
|
void sub_818E274(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
StringCopy(gStringVar1, ItemId_GetName(sQuizLadyPtr->itemId));
|
2017-09-20 17:30:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool8 sub_818E298(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
if (BufferAuthorName() == QUIZ_AUTHOR_LADY)
|
2017-09-20 17:30:09 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->language = gGameLanguage;
|
2017-09-20 17:30:09 +02:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
2017-09-20 17:44:20 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
bool8 IsQuizLadyWaitingForChallenger(void)
|
2017-09-20 17:44:20 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
return sQuizLadyPtr->waitingForChallenger;
|
2017-09-20 17:44:20 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void sub_818E2FC(void) //sub_818E2FC
|
2017-09-20 17:44:20 +02:00
|
|
|
{
|
2019-02-27 19:45:31 +01:00
|
|
|
ShowEasyChatScreen();
|
2017-09-20 17:44:20 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool8 sub_818E308(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
CopyEasyChatWord(gStringVar1, sQuizLadyPtr->answer);
|
|
|
|
CopyEasyChatWord(gStringVar2, sQuizLadyPtr->response);
|
2017-09-20 17:44:20 +02:00
|
|
|
return StringCompare(gStringVar1, gStringVar2) ? FALSE : TRUE;
|
|
|
|
}
|
2017-09-20 17:48:11 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void BufferQuizPrizeItem(void)
|
2017-09-20 17:48:11 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
gSpecialVar_0x8005 = sQuizLadyPtr->itemId;
|
2017-09-20 17:48:11 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void SetQuizLadyPhase_MakeYourOwn(void)
|
2017-09-20 17:48:11 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
sQuizLadyPtr->phase = QUIZ_PHASE_MAKE_YOUR_OWN;
|
2017-09-20 17:48:11 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void SetQuizLadyPhase_GivePrize(void)
|
2017-09-20 17:48:11 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
sQuizLadyPtr->phase = QUIZ_PHASE_GIVE_PRIZE;
|
2017-09-20 17:48:11 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void ClearQuizLadyResponse(void)
|
2017-09-20 17:48:11 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
sQuizLadyPtr->response = -1;
|
2017-09-20 17:48:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E3E0(void)
|
|
|
|
{
|
|
|
|
sub_81AAC70();
|
|
|
|
}
|
2017-09-20 18:56:45 +02:00
|
|
|
|
|
|
|
void sub_818E3EC(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
2017-09-20 18:56:45 +02:00
|
|
|
if (sub_818E298())
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->prevQuestionId = sQuizLadyPtr->questionId;
|
2017-09-20 18:56:45 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->prevQuestionId = QUIZ_QUESTION_NUM;
|
2017-09-20 18:56:45 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
PickQuizQuestion();
|
2017-09-20 18:56:45 +02:00
|
|
|
}
|
2017-09-20 22:12:18 +02:00
|
|
|
|
|
|
|
void sub_818E430(void)
|
|
|
|
{
|
|
|
|
u8 i;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
for (i = 0; i < QUIZ_QUESTION_LEN; i ++)
|
2017-09-20 22:12:18 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->question[i] = -1;
|
2017-09-20 22:12:18 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->answer = -1;
|
2017-09-20 22:12:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E47C(void)
|
|
|
|
{
|
2019-02-27 19:45:31 +01:00
|
|
|
gSpecialVar_0x8004 = EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
|
|
|
|
ShowEasyChatScreen();
|
2017-09-20 22:12:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E490(void)
|
|
|
|
{
|
2017-11-11 01:12:18 +01:00
|
|
|
RemoveBagItem(gSpecialVar_ItemId, 1);
|
2017-09-20 22:12:18 +02:00
|
|
|
}
|
2017-09-20 22:32:37 +02:00
|
|
|
|
|
|
|
void sub_818E4A4(void)
|
|
|
|
{
|
|
|
|
u8 i;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
sQuizLadyPtr->itemId = gSpecialVar_ItemId;
|
2017-09-20 22:32:37 +02:00
|
|
|
for (i = 0; i < 4; i ++)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->playerTrainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
|
2017-09-20 22:32:37 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
StringCopy7(sQuizLadyPtr->playerName, gSaveBlock2Ptr->playerName);
|
|
|
|
sQuizLadyPtr->language = gGameLanguage;
|
2017-09-20 22:32:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E510(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
sQuizLadyPtr->waitingForChallenger = TRUE;
|
2017-09-20 22:32:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E538(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
CopyEasyChatWord(gStringVar3, sQuizLadyPtr->answer);
|
2017-09-20 22:32:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E564(void)
|
|
|
|
{
|
|
|
|
EnableBothScriptContexts();
|
|
|
|
}
|
|
|
|
|
2017-11-05 00:03:41 +01:00
|
|
|
void sub_818E570(const LilycoveLady *lilycoveLady)
|
2017-09-20 22:32:37 +02:00
|
|
|
{
|
|
|
|
u8 i;
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
|
|
|
|
if (lilycoveLady->quiz.prevQuestionId < QUIZ_QUESTION_NUM && sQuizLadyPtr->id == LILYCOVE_LADY_QUIZ)
|
2017-09-20 22:32:37 +02:00
|
|
|
{
|
|
|
|
for (i = 0; i < 4; i ++)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
if (lilycoveLady->quiz.prevQuestionId != sQuizLadyPtr->questionId)
|
2017-09-20 22:32:37 +02:00
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->questionId = Random() % QUIZ_QUESTION_NUM;
|
2017-09-20 22:32:37 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
if (lilycoveLady->quiz.prevQuestionId == sQuizLadyPtr->questionId)
|
2017-09-20 22:32:37 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->questionId = (sQuizLadyPtr->questionId + 1) % QUIZ_QUESTION_NUM;
|
2017-09-20 22:32:37 +02:00
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
sQuizLadyPtr->prevQuestionId = lilycoveLady->quiz.prevQuestionId;
|
2017-09-20 22:32:37 +02:00
|
|
|
}
|
|
|
|
}
|
2017-09-20 22:49:22 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static void ResetContestLadyContestData(void)
|
2017-09-20 22:49:22 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr->playerName[0] = EOS;
|
|
|
|
sContestLadyPtr->fave_pkblk = 0;
|
|
|
|
sContestLadyPtr->other_pkblk = 0;
|
|
|
|
sContestLadyPtr->max_sheen = 0;
|
|
|
|
sContestLadyPtr->category = Random() % CONTEST_CATEGORIES_COUNT;
|
2017-09-20 22:49:22 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static void InitLilycoveContestLady(void)
|
2017-09-20 22:49:22 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
sContestLadyPtr->id = LILYCOVE_LADY_CONTEST;
|
|
|
|
sContestLadyPtr->phase = 0;
|
|
|
|
ResetContestLadyContestData();
|
|
|
|
sContestLadyPtr->language = gGameLanguage;
|
2017-09-20 22:49:22 +02:00
|
|
|
}
|
2017-09-21 02:08:05 +02:00
|
|
|
|
2017-09-21 03:03:57 +02:00
|
|
|
static void sub_818E674(void)
|
2017-09-21 02:08:05 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
sContestLadyPtr->id = LILYCOVE_LADY_CONTEST;
|
|
|
|
sContestLadyPtr->phase = 0;
|
|
|
|
if (sContestLadyPtr->fave_pkblk == FLAVOR_COUNT
|
|
|
|
|| sContestLadyPtr->other_pkblk == FLAVOR_COUNT)
|
2017-09-21 02:08:05 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
ResetContestLadyContestData();
|
2017-09-21 02:08:05 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-09-21 03:03:57 +02:00
|
|
|
static void sub_818E6B0(u8 sheen)
|
2017-09-21 02:08:05 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
if (sContestLadyPtr->max_sheen <= sheen)
|
2017-09-21 02:08:05 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr->max_sheen = sheen;
|
|
|
|
memset(sContestLadyPtr->playerName, EOS, sizeof(sContestLadyPtr->playerName));
|
|
|
|
memcpy(sContestLadyPtr->playerName, gSaveBlock2Ptr->playerName, sizeof(sContestLadyPtr->playerName));
|
|
|
|
sContestLadyPtr->language = gGameLanguage;
|
2017-09-21 02:08:05 +02:00
|
|
|
}
|
2017-09-21 02:16:11 +02:00
|
|
|
}
|
|
|
|
|
2017-12-16 15:10:29 +01:00
|
|
|
bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock)
|
2017-09-21 02:16:11 +02:00
|
|
|
{
|
|
|
|
u8 sheen;
|
|
|
|
bool8 response;
|
|
|
|
|
|
|
|
sheen = 0;
|
|
|
|
response = FALSE;
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
switch (sContestLadyPtr->category)
|
2017-09-21 02:16:11 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
case CONTEST_CATEGORY_COOL:
|
2017-09-21 02:16:11 +02:00
|
|
|
if (pokeblock->spicy != 0)
|
|
|
|
{
|
|
|
|
sheen = pokeblock->spicy;
|
|
|
|
response = TRUE;
|
|
|
|
}
|
|
|
|
break;
|
2019-08-04 10:22:19 +02:00
|
|
|
case CONTEST_CATEGORY_BEAUTY:
|
2017-09-21 02:16:11 +02:00
|
|
|
if (pokeblock->dry != 0)
|
|
|
|
{
|
|
|
|
sheen = pokeblock->dry;
|
|
|
|
response = TRUE;
|
|
|
|
}
|
|
|
|
break;
|
2019-08-04 10:22:19 +02:00
|
|
|
case CONTEST_CATEGORY_CUTE:
|
2017-09-21 02:16:11 +02:00
|
|
|
if (pokeblock->sweet != 0)
|
|
|
|
{
|
|
|
|
sheen = pokeblock->sweet;
|
|
|
|
response = TRUE;
|
|
|
|
}
|
|
|
|
break;
|
2019-08-04 10:22:19 +02:00
|
|
|
case CONTEST_CATEGORY_SMART:
|
2017-09-21 02:16:11 +02:00
|
|
|
if (pokeblock->bitter != 0)
|
|
|
|
{
|
|
|
|
sheen = pokeblock->bitter;
|
|
|
|
response = TRUE;
|
|
|
|
}
|
|
|
|
break;
|
2019-08-04 10:22:19 +02:00
|
|
|
case CONTEST_CATEGORY_TOUGH:
|
2017-09-21 02:16:11 +02:00
|
|
|
if (pokeblock->sour != 0)
|
|
|
|
{
|
|
|
|
sheen = pokeblock->sour;
|
|
|
|
response = TRUE;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (response == TRUE)
|
|
|
|
{
|
|
|
|
sub_818E6B0(sheen);
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr->fave_pkblk ++;
|
2017-09-21 02:16:11 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr->other_pkblk ++;
|
2017-09-21 02:16:11 +02:00
|
|
|
}
|
|
|
|
return response;
|
|
|
|
}
|
2017-09-21 02:24:22 +02:00
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
static void sub_818E794(u8 *dest1, u8 *dest2) //sub_818E794
|
2017-09-21 02:24:22 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
StringCopy(dest1, sContestLadyCategoryNames[sContestLadyPtr->category]);
|
|
|
|
StringCopy10(dest2, sContestLadyMonNames[sContestLadyPtr->category]);
|
2017-09-21 02:24:22 +02:00
|
|
|
}
|
2017-09-21 02:32:22 +02:00
|
|
|
|
|
|
|
void sub_818E7E0(u8 *dest1, u8 *dest2)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
*dest1 = sContestLadyPtr->category;
|
|
|
|
StringCopy(dest2, sContestLadyMonNames[sContestLadyPtr->category]);
|
2017-09-21 02:32:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E81C(u8 *dest)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
StringCopy(dest, sContestLadyPtr->playerName);
|
2017-09-21 02:32:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E848(u8 *dest)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
*dest = sContestLadyPtr->language;
|
2017-09-21 02:32:22 +02:00
|
|
|
}
|
|
|
|
|
2019-08-04 10:22:19 +02:00
|
|
|
void BufferContestName(u8 *dest, u8 category)
|
2017-09-21 02:32:22 +02:00
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
StringCopy(dest, sContestNames[category]);
|
2017-09-21 02:32:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
u8 sub_818E880(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
if (sContestLadyPtr->fave_pkblk >= FLAVOR_COUNT)
|
2017-09-21 02:32:22 +02:00
|
|
|
{
|
|
|
|
return 1;
|
|
|
|
}
|
2019-08-04 10:22:19 +02:00
|
|
|
else if (sContestLadyPtr->fave_pkblk == 0)
|
2017-09-21 02:32:22 +02:00
|
|
|
{
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
2017-09-21 02:48:32 +02:00
|
|
|
|
|
|
|
bool8 sub_818E8B4(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
if (sContestLadyPtr->phase == 1)
|
2017-09-21 02:48:32 +02:00
|
|
|
{
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool8 sub_818E8E0(void)
|
|
|
|
{
|
|
|
|
bool8 response;
|
|
|
|
|
|
|
|
response = FALSE;
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
if (sContestLadyPtr->fave_pkblk >= FLAVOR_COUNT
|
|
|
|
|| sContestLadyPtr->other_pkblk >= FLAVOR_COUNT)
|
2017-09-21 02:48:32 +02:00
|
|
|
{
|
|
|
|
response = TRUE;
|
|
|
|
}
|
|
|
|
return response;
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E914(void)
|
|
|
|
{
|
|
|
|
sub_818E794(gStringVar2, gStringVar1);
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E92C(void)
|
|
|
|
{
|
2018-02-14 00:58:22 +01:00
|
|
|
OpenPokeblockCase(3, CB2_ReturnToField);
|
2017-09-21 02:48:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E940(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
sContestLadyPtr->phase = 1;
|
2017-09-21 02:48:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void sub_818E960(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
gSpecialVar_0x8005 = sContestLadyMonSpecies[sContestLadyPtr->category];
|
2017-09-21 02:48:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
u8 sub_818E990(void)
|
|
|
|
{
|
2019-08-04 10:22:19 +02:00
|
|
|
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
|
|
|
|
return sContestLadyPtr->category;
|
2017-09-21 02:48:32 +02:00
|
|
|
}
|