favor lady funcs

This commit is contained in:
GriffinR
2019-08-04 23:12:49 -04:00
committed by huderlem
parent 771a7b25fa
commit 7fc99f3952
7 changed files with 138 additions and 127 deletions
+15 -15
View File
@@ -4292,7 +4292,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A8395:: @ 82A8395
lock lock
faceplayer faceplayer
msgbox LilycoveCity_PokemonCenter_1F_Text_2A8A69, MSGBOX_DEFAULT msgbox LilycoveCity_PokemonCenter_1F_Text_2A8A69, MSGBOX_DEFAULT
specialvar VAR_RESULT, sub_818DBE8 specialvar VAR_RESULT, GetFavorLadyState
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A83D0 goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A83D0
compare VAR_RESULT, 1 compare VAR_RESULT, 1
@@ -4317,9 +4317,9 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A83D0:: @ 82A83D0
end end
LilycoveCity_PokemonCenter_1F_EventScript_2A83F7:: @ 82A83F7 LilycoveCity_PokemonCenter_1F_EventScript_2A83F7:: @ 82A83F7
special sub_818DCC8 special BufferFavorLadyItemName
special sub_818DD14 special BufferFavorLadyPlayerName
specialvar VAR_RESULT, sub_818DD54 specialvar VAR_RESULT, DidFavorLadyLikeItem
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A8419 goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A8419
compare VAR_RESULT, 1 compare VAR_RESULT, 1
@@ -4357,7 +4357,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A845E:: @ 82A845E
LilycoveCity_PokemonCenter_1F_EventScript_2A846C:: @ 82A846C LilycoveCity_PokemonCenter_1F_EventScript_2A846C:: @ 82A846C
fadescreen 1 fadescreen 1
setvar VAR_RESULT, 0 setvar VAR_RESULT, 0
special OpenBagMenuForFavorLady special FavorLadyOpenBagMenu
waitstate waitstate
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A848E goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A848E
@@ -4374,7 +4374,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A848E:: @ 82A848E
end end
LilycoveCity_PokemonCenter_1F_EventScript_2A84AD:: @ 82A84AD LilycoveCity_PokemonCenter_1F_EventScript_2A84AD:: @ 82A84AD
specialvar VAR_RESULT, sub_818DE44 specialvar VAR_RESULT, Script_ShowFavorLadyItem
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A84C9 goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A84C9
compare VAR_RESULT, 1 compare VAR_RESULT, 1
@@ -4388,7 +4388,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A84C9:: @ 82A84C9
end end
LilycoveCity_PokemonCenter_1F_EventScript_2A84D6:: @ 82A84D6 LilycoveCity_PokemonCenter_1F_EventScript_2A84D6:: @ 82A84D6
specialvar VAR_RESULT, sub_818DE5C specialvar VAR_RESULT, DidFavorLadyLoveItem
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A84F2 goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A84F2
compare VAR_RESULT, 1 compare VAR_RESULT, 1
@@ -4409,7 +4409,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A84FF:: @ 82A84FF
LilycoveCity_PokemonCenter_1F_EventScript_2A8510:: @ 82A8510 LilycoveCity_PokemonCenter_1F_EventScript_2A8510:: @ 82A8510
setvar VAR_0x8004, 0 setvar VAR_0x8004, 0
specialvar VAR_0x8004, sub_818DEA0 specialvar VAR_0x8004, FavorLadyGetPrize
msgbox LilycoveCity_PokemonCenter_1F_Text_2A8D5D, MSGBOX_DEFAULT msgbox LilycoveCity_PokemonCenter_1F_Text_2A8D5D, MSGBOX_DEFAULT
giveitem_std VAR_0x8004 giveitem_std VAR_0x8004
compare VAR_RESULT, 0 compare VAR_RESULT, 0
@@ -4424,7 +4424,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A8545:: @ 82A8545
end end
LilycoveCity_PokemonCenter_1F_EventScript_2A854F:: @ 82A854F LilycoveCity_PokemonCenter_1F_EventScript_2A854F:: @ 82A854F
special sub_818DEDC special SetFavorLadyState_Complete
release release
end end
@@ -4432,7 +4432,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A8554:: @ 82A8554
lock lock
faceplayer faceplayer
msgbox LilycoveCity_PokemonCenter_1F_Text_2A8E2B, MSGBOX_DEFAULT msgbox LilycoveCity_PokemonCenter_1F_Text_2A8E2B, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetQuizLadyPhase specialvar VAR_RESULT, GetQuizLadyState
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A8585 goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A8585
compare VAR_RESULT, 1 compare VAR_RESULT, 1
@@ -4442,7 +4442,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A8554:: @ 82A8554
end end
LilycoveCity_PokemonCenter_1F_EventScript_2A8585:: @ 82A8585 LilycoveCity_PokemonCenter_1F_EventScript_2A8585:: @ 82A8585
specialvar VAR_RESULT, sub_818E06C specialvar VAR_RESULT, GetQuizAuthor
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A85C8 goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A85C8
compare VAR_RESULT, 1 compare VAR_RESULT, 1
@@ -4509,7 +4509,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A864C:: @ 82A864C
end end
LilycoveCity_PokemonCenter_1F_EventScript_2A8656:: @ 82A8656 LilycoveCity_PokemonCenter_1F_EventScript_2A8656:: @ 82A8656
special sub_818E2FC special QuizLadyShowEasyChatScreen
waitstate waitstate
goto LilycoveCity_PokemonCenter_1F_EventScript_2A8635 goto LilycoveCity_PokemonCenter_1F_EventScript_2A8635
end end
@@ -4528,7 +4528,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A867F:: @ 82A867F
end end
LilycoveCity_PokemonCenter_1F_EventScript_2A8689:: @ 82A8689 LilycoveCity_PokemonCenter_1F_EventScript_2A8689:: @ 82A8689
special SetQuizLadyPhase_MakeYourOwn special SetQuizLadyState_Complete
msgbox LilycoveCity_PokemonCenter_1F_Text_2A8F4D, MSGBOX_DEFAULT msgbox LilycoveCity_PokemonCenter_1F_Text_2A8F4D, MSGBOX_DEFAULT
specialvar VAR_RESULT, sub_818E308 specialvar VAR_RESULT, sub_818E308
compare VAR_RESULT, 0 compare VAR_RESULT, 0
@@ -4577,7 +4577,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A8716:: @ 82A8716
LilycoveCity_PokemonCenter_1F_EventScript_2A8724:: @ 82A8724 LilycoveCity_PokemonCenter_1F_EventScript_2A8724:: @ 82A8724
setvar VAR_0x8005, 0 setvar VAR_0x8005, 0
special BufferQuizPrizeItem special BufferQuizPrizeItem
special SetQuizLadyPhase_MakeYourOwn special SetQuizLadyState_Complete
giveitem_std VAR_0x8005 giveitem_std VAR_0x8005
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A874C goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_2A874C
@@ -4586,7 +4586,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_2A8724:: @ 82A8724
LilycoveCity_PokemonCenter_1F_EventScript_2A874C:: @ 82A874C LilycoveCity_PokemonCenter_1F_EventScript_2A874C:: @ 82A874C
msgbox LilycoveCity_PokemonCenter_1F_Text_2A906A, MSGBOX_DEFAULT msgbox LilycoveCity_PokemonCenter_1F_Text_2A906A, MSGBOX_DEFAULT
special SetQuizLadyPhase_GivePrize special SetQuizLadyState_GivePrize
release release
end end
+14 -14
View File
@@ -374,27 +374,27 @@ gSpecials:: @ 81DBA64
def_special SetSecretBaseSecretsTvFlags_Poster def_special SetSecretBaseSecretsTvFlags_Poster
def_special SetLilycoveLadyGfx def_special SetLilycoveLadyGfx
def_special Script_GetLilycoveLadyId def_special Script_GetLilycoveLadyId
def_special sub_818DBE8 def_special GetFavorLadyState
def_special BufferFavorLadyDescription def_special BufferFavorLadyDescription
def_special sub_818DC60 def_special sub_818DC60
def_special sub_818DCC8 def_special BufferFavorLadyItemName
def_special sub_818DD14 def_special BufferFavorLadyPlayerName
def_special sub_818DD54 def_special DidFavorLadyLikeItem
def_special OpenBagMenuForFavorLady def_special FavorLadyOpenBagMenu
def_special sub_818DE44 def_special Script_ShowFavorLadyItem
def_special sub_818DE5C def_special DidFavorLadyLoveItem
def_special sub_818DEA0 def_special FavorLadyGetPrize
def_special sub_818DEDC def_special SetFavorLadyState_Complete
def_special GetQuizLadyPhase def_special GetQuizLadyState
def_special sub_818E06C def_special GetQuizAuthor
def_special IsQuizLadyWaitingForChallenger def_special IsQuizLadyWaitingForChallenger
def_special sub_811A858 def_special sub_811A858
def_special sub_818E2FC def_special QuizLadyShowEasyChatScreen
def_special sub_818E308 def_special sub_818E308
def_special BufferQuizPrizeItem def_special BufferQuizPrizeItem
def_special SetQuizLadyPhase_MakeYourOwn def_special SetQuizLadyState_Complete
def_special sub_818E298 def_special sub_818E298
def_special SetQuizLadyPhase_GivePrize def_special SetQuizLadyState_GivePrize
def_special ClearQuizLadyResponse def_special ClearQuizLadyResponse
def_special sub_818E3E0 def_special sub_818E3E0
def_special sub_818E430 def_special sub_818E430
+7 -6
View File
@@ -741,13 +741,14 @@ enum
{ {
LILYCOVE_LADY_QUIZ, LILYCOVE_LADY_QUIZ,
LILYCOVE_LADY_FAVOR, LILYCOVE_LADY_FAVOR,
LILYCOVE_LADY_CONTEST LILYCOVE_LADY_CONTEST,
LILYCOVE_LADY_COUNT
}; };
struct LilycoveLadyQuiz struct LilycoveLadyQuiz
{ {
/*0x000*/ u8 id; /*0x000*/ u8 id;
/*0x001*/ u8 phase; /*0x001*/ u8 state;
/*0x002*/ u16 question[9]; /*0x002*/ u16 question[9];
/*0x014*/ u16 answer; /*0x014*/ u16 answer;
/*0x016*/ u16 response; /*0x016*/ u16 response;
@@ -763,13 +764,13 @@ struct LilycoveLadyQuiz
struct LilycoveLadyFavor struct LilycoveLadyFavor
{ {
/*0x000*/ u8 id; /*0x000*/ u8 id;
/*0x001*/ u8 phase; /*0x001*/ u8 state;
/*0x002*/ u8 unk_002; /*0x002*/ bool8 likedItem;
/*0x003*/ u8 unk_003; /*0x003*/ u8 numItemsGiven;
/*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x00c*/ u8 favorId; /*0x00c*/ u8 favorId;
/*0x00e*/ u16 itemId; /*0x00e*/ u16 itemId;
/*0x010*/ u16 unk_010; /*0x010*/ u16 bestItem;
/*0x012*/ u8 language; /*0x012*/ u8 language;
}; };
+2 -2
View File
@@ -2,8 +2,8 @@
#define GUARD_LILYCOVE_LADY_H #define GUARD_LILYCOVE_LADY_H
u8 GetLilycoveLadyId(void); u8 GetLilycoveLadyId(void);
void SetLilycoveLady(void); void InitLilycoveLady(void);
void sub_818DA78(void); void ReadyLilycoveLady(void);
void sub_818DEF4(void); void sub_818DEF4(void);
void sub_818E564(void); void sub_818E564(void);
void sub_818E570(const LilycoveLady *lilycoveLady); void sub_818E570(const LilycoveLady *lilycoveLady);
+98 -88
View File
@@ -18,9 +18,16 @@
#include "berry.h" #include "berry.h"
#include "strings.h" #include "strings.h"
// TODO use array count macro? // TODO use array count macro?
#define QUIZ_QUESTION_LEN 9 #define QUIZ_QUESTION_LEN 9 //len of sQuizLadyQuestion#
#define QUIZ_QUESTION_NUM 16 #define NUM_QUIZ_QUESTIONS 16 //len of sQuizLadyQuizQuestions
#define FAVOR_DESCRIPTION_NUM 6 //len of sFavorLadyDescriptions
// TODO not a great name? The number of successes required to receive
// an item from the favor lady. Reached automatically if the randomly
// selected 'best' item is given to her
#define FAVOR_GIFT_MAX 5
enum enum
{ {
@@ -31,26 +38,24 @@ enum
enum enum
{ {
QUIZ_PHASE_ATTEMPT_QUIZ, LILYCOVE_LADY_STATE_READY,
QUIZ_PHASE_MAKE_YOUR_OWN, LILYCOVE_LADY_STATE_COMPLETED,
QUIZ_PHASE_GIVE_PRIZE LILYCOVE_LADY_STATE_PRIZE
}; };
#include "data/lilycove_lady.h"
#include "data/lilycove_lady.h"
static void InitLilycoveQuizLady(void); static void InitLilycoveQuizLady(void);
static void InitLilycoveFavorLady(void); static void InitLilycoveFavorLady(void);
static void InitLilycoveContestLady(void); static void InitLilycoveContestLady(void);
static void sub_818E004(void); static void ReadyQuizLady(void);
static void sub_818DBC4(void); static void ReadyFavorLady(void);
static void sub_818E674(void); static void ReadyContestLady(void);
static u8 BufferAuthorName(void); static u8 BufferAuthorName(void);
static bool8 IsQuizTrainerIdNotPlayer(void); static bool8 IsQuizTrainerIdNotPlayer(void);
static u8 GetPlayerNameLength(const u8 *); static u8 GetPlayerNameLength(const u8 *);
static EWRAM_DATA struct LilycoveLadyFavor *sFavorLadyPtr = NULL; static EWRAM_DATA struct LilycoveLadyFavor *sFavorLadyPtr = NULL;
static EWRAM_DATA struct LilycoveLadyQuiz *sQuizLadyPtr = NULL; static EWRAM_DATA struct LilycoveLadyQuiz *sQuizLadyPtr = NULL;
static EWRAM_DATA struct LilycoveLadyContest *sContestLadyPtr = NULL; static EWRAM_DATA struct LilycoveLadyContest *sContestLadyPtr = NULL;
@@ -79,12 +84,12 @@ void SetLilycoveLadyGfx(void)
} }
} }
void SetLilycoveLady(void) void InitLilycoveLady(void)
{ {
u16 id; u16 id;
id = ((gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0]); id = ((gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0]);
id %= 6; id %= 6; //TODO num lilycove ladies * 2. constant?
id >>= 1; id >>= 1;
switch (id) switch (id)
{ {
@@ -100,28 +105,30 @@ void SetLilycoveLady(void)
} }
} }
void sub_818DA78(void) // Used after mixing records
void ReadyLilycoveLady(void)
{ {
switch (GetLilycoveLadyId()) switch (GetLilycoveLadyId())
{ {
case LILYCOVE_LADY_QUIZ: case LILYCOVE_LADY_QUIZ:
sub_818E004(); ReadyQuizLady();
break; break;
case LILYCOVE_LADY_FAVOR: case LILYCOVE_LADY_FAVOR:
sub_818DBC4(); ReadyFavorLady();
break; break;
case LILYCOVE_LADY_CONTEST: case LILYCOVE_LADY_CONTEST:
sub_818E674(); ReadyContestLady();
break; break;
} }
} }
void SetLilycoveLadyRandomly(void) // Unused?
void InitLilycoveLadyRandomly(void)
{ {
u8 id; u8 lady;
id = Random() % 3; lady = Random() % LILYCOVE_LADY_COUNT;
switch (id) switch (lady)
{ {
case LILYCOVE_LADY_QUIZ: case LILYCOVE_LADY_QUIZ:
InitLilycoveQuizLady(); InitLilycoveQuizLady();
@@ -148,51 +155,51 @@ static u8 GetNumAcceptedItems(const u16 *itemsArray)
return items; return items;
} }
static void sub_818DB20(void) static void FavorLadyPickFavorAndBestItem(void)
{ {
u8 size; u8 size;
u8 idx; u8 idx;
sFavorLadyPtr->favorId = Random() % 6; sFavorLadyPtr->favorId = Random() % FAVOR_DESCRIPTION_NUM;
size = GetNumAcceptedItems(sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId]); size = GetNumAcceptedItems(sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId]);
idx = Random() % size; idx = Random() % size;
sFavorLadyPtr->unk_010 = sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId][idx]; sFavorLadyPtr->bestItem = sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId][idx];
} }
static void InitLilycoveFavorLady(void) static void InitLilycoveFavorLady(void)
{ {
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
sFavorLadyPtr->id = LILYCOVE_LADY_FAVOR; sFavorLadyPtr->id = LILYCOVE_LADY_FAVOR;
sFavorLadyPtr->phase = 0; sFavorLadyPtr->state = LILYCOVE_LADY_STATE_READY;
sFavorLadyPtr->playerName[0] = EOS; sFavorLadyPtr->playerName[0] = EOS;
sFavorLadyPtr->unk_002 = 0; sFavorLadyPtr->likedItem = FALSE;
sFavorLadyPtr->unk_003= 0; sFavorLadyPtr->numItemsGiven = 0;
sFavorLadyPtr->itemId = ITEM_NONE; sFavorLadyPtr->itemId = ITEM_NONE;
sFavorLadyPtr->language = gGameLanguage; sFavorLadyPtr->language = gGameLanguage;
sub_818DB20(); FavorLadyPickFavorAndBestItem();
} }
static void sub_818DBC4(void) static void ReadyFavorLady(void)
{ {
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
sFavorLadyPtr->id = LILYCOVE_LADY_FAVOR; sFavorLadyPtr->id = LILYCOVE_LADY_FAVOR;
sFavorLadyPtr->phase = 0; sFavorLadyPtr->state = LILYCOVE_LADY_STATE_READY;
} }
u8 sub_818DBE8(void) u8 GetFavorLadyState(void)
{ {
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
if (sFavorLadyPtr->phase == 2) if (sFavorLadyPtr->state == LILYCOVE_LADY_STATE_PRIZE)
{ {
return 2; return LILYCOVE_LADY_STATE_PRIZE;
} }
else if (sFavorLadyPtr->phase == 1) else if (sFavorLadyPtr->state == LILYCOVE_LADY_STATE_COMPLETED)
{ {
return 1; return LILYCOVE_LADY_STATE_COMPLETED;
} }
else else
{ {
return 0; return LILYCOVE_LADY_STATE_READY;
} }
} }
@@ -224,80 +231,82 @@ static void BufferItemName(u8 *dest, u16 itemId)
StringCopy(dest, ItemId_GetName(itemId)); StringCopy(dest, ItemId_GetName(itemId));
} }
void sub_818DCC8(void) void BufferFavorLadyItemName(void)
{ {
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
BufferItemName(gStringVar2, sFavorLadyPtr->itemId); BufferItemName(gStringVar2, sFavorLadyPtr->itemId);
} }
static void sub_818DCF4(const u8 *src, u8 *dest) static void SetFavorLadyPlayerName(const u8 *src, u8 *dest)
{ {
memset(dest, 0xFF, 8); memset(dest, 0xFF, 8);
StringCopy7(dest, src); StringCopy7(dest, src);
} }
void sub_818DD14(void) void BufferFavorLadyPlayerName(void)
{ {
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
sub_818DCF4(sFavorLadyPtr->playerName, gStringVar3); SetFavorLadyPlayerName(sFavorLadyPtr->playerName, gStringVar3);
ConvertInternationalString(gStringVar3, sFavorLadyPtr->language); ConvertInternationalString(gStringVar3, sFavorLadyPtr->language);
} }
bool8 sub_818DD54(void) bool8 DidFavorLadyLikeItem(void)
{ {
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
return sFavorLadyPtr->unk_002 ? TRUE : FALSE; return sFavorLadyPtr->likedItem ? TRUE : FALSE;
} }
void OpenBagMenuForFavorLady(void) void FavorLadyOpenBagMenu(void)
{ {
sub_81AAC50(); sub_81AAC50();
} }
static bool8 sub_818DD84(u16 itemId) //TODO rename?
static bool8 ShowFavorLadyItem(u16 itemId)
{ {
u8 numItems; u8 numItems;
u8 i; u8 i;
bool8 response; bool8 likedItem;
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
numItems = GetNumAcceptedItems(sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId]); numItems = GetNumAcceptedItems(sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId]);
sFavorLadyPtr->phase = 1; sFavorLadyPtr->state = LILYCOVE_LADY_STATE_COMPLETED;
BufferItemName(gStringVar2, itemId); BufferItemName(gStringVar2, itemId);
sFavorLadyPtr->itemId = itemId; sFavorLadyPtr->itemId = itemId;
sub_818DCF4(gSaveBlock2Ptr->playerName, sFavorLadyPtr->playerName); SetFavorLadyPlayerName(gSaveBlock2Ptr->playerName, sFavorLadyPtr->playerName);
sFavorLadyPtr->language = gGameLanguage; sFavorLadyPtr->language = gGameLanguage;
response = FALSE; likedItem = FALSE;
for (i = 0; i < numItems; i ++) for (i = 0; i < numItems; i ++)
{ {
if (sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId][i] == itemId) if (sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId][i] == itemId)
{ {
response = TRUE; likedItem = TRUE;
sFavorLadyPtr->unk_003 ++; sFavorLadyPtr->numItemsGiven++;
sFavorLadyPtr->unk_002 = 1; sFavorLadyPtr->likedItem = TRUE;
if (sFavorLadyPtr->unk_010 == itemId) if (sFavorLadyPtr->bestItem == itemId)
{ {
sFavorLadyPtr->unk_003 = 5; sFavorLadyPtr->numItemsGiven = FAVOR_GIFT_MAX;
} }
break; break;
} }
sFavorLadyPtr->unk_002 = 0; sFavorLadyPtr->likedItem = FALSE;
} }
return response; return likedItem;
} }
bool8 sub_818DE44(void) bool8 Script_ShowFavorLadyItem(void)
{ {
return sub_818DD84(gSpecialVar_ItemId); return ShowFavorLadyItem(gSpecialVar_ItemId);
} }
bool8 sub_818DE5C(void) //was item given the best item / have they given her 5 items
bool8 DidFavorLadyLoveItem(void)
{ {
u8 checkval; u8 checkval;
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
checkval = sFavorLadyPtr->unk_003; checkval = sFavorLadyPtr->numItemsGiven;
return checkval < 5 ? FALSE : TRUE; return checkval < FAVOR_GIFT_MAX ? FALSE : TRUE;
} }
static void BufferPrizeName(u16 itemId) static void BufferPrizeName(u16 itemId)
@@ -305,21 +314,21 @@ static void BufferPrizeName(u16 itemId)
BufferItemName(gStringVar2, itemId); BufferItemName(gStringVar2, itemId);
} }
u16 sub_818DEA0(void) u16 FavorLadyGetPrize(void)
{ {
u16 itemId; u16 itemId;
sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor; sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
itemId = sFavorLadyPrizes[sFavorLadyPtr->favorId]; itemId = sFavorLadyPrizes[sFavorLadyPtr->favorId];
BufferPrizeName(itemId); BufferPrizeName(itemId);
sFavorLadyPtr->phase = 2; sFavorLadyPtr->state = LILYCOVE_LADY_STATE_PRIZE;
return itemId; return itemId;
} }
void sub_818DEDC(void) void SetFavorLadyState_Complete(void)
{ {
InitLilycoveFavorLady(); InitLilycoveFavorLady();
sFavorLadyPtr->phase = 1; sFavorLadyPtr->state = LILYCOVE_LADY_STATE_COMPLETED;
} }
void sub_818DEF4(void) void sub_818DEF4(void)
@@ -332,7 +341,7 @@ static void PickQuizQuestion(void)
u8 questionId; u8 questionId;
u8 i; u8 i;
questionId = Random() % QUIZ_QUESTION_NUM; questionId = Random() % NUM_QUIZ_QUESTIONS;
for (i = 0; i < QUIZ_QUESTION_LEN; i ++) for (i = 0; i < QUIZ_QUESTION_LEN; i ++)
{ {
sQuizLadyPtr->question[i] = sQuizLadyQuizQuestions[questionId][i]; sQuizLadyPtr->question[i] = sQuizLadyQuizQuestions[questionId][i];
@@ -349,7 +358,7 @@ static void InitLilycoveQuizLady(void)
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz; sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
sQuizLadyPtr->id = LILYCOVE_LADY_QUIZ; sQuizLadyPtr->id = LILYCOVE_LADY_QUIZ;
sQuizLadyPtr->phase = QUIZ_PHASE_ATTEMPT_QUIZ; sQuizLadyPtr->state = LILYCOVE_LADY_STATE_READY;
for (i = 0; i < QUIZ_QUESTION_LEN; i ++) for (i = 0; i < QUIZ_QUESTION_LEN; i ++)
{ {
sQuizLadyPtr->question[i] = -1; sQuizLadyPtr->question[i] = -1;
@@ -362,41 +371,42 @@ static void InitLilycoveQuizLady(void)
} }
sQuizLadyPtr->itemId = ITEM_NONE; sQuizLadyPtr->itemId = ITEM_NONE;
sQuizLadyPtr->waitingForChallenger = FALSE; sQuizLadyPtr->waitingForChallenger = FALSE;
sQuizLadyPtr->prevQuestionId = QUIZ_QUESTION_NUM; sQuizLadyPtr->prevQuestionId = NUM_QUIZ_QUESTIONS;
sQuizLadyPtr->language = gGameLanguage; sQuizLadyPtr->language = gGameLanguage;
PickQuizQuestion(); PickQuizQuestion();
} }
static void sub_818E004(void) static void ReadyQuizLady(void)
{ {
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz; sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
sQuizLadyPtr->id = LILYCOVE_LADY_QUIZ; sQuizLadyPtr->id = LILYCOVE_LADY_QUIZ;
sQuizLadyPtr->phase = QUIZ_PHASE_ATTEMPT_QUIZ; sQuizLadyPtr->state = LILYCOVE_LADY_STATE_READY;
sQuizLadyPtr->waitingForChallenger = FALSE; sQuizLadyPtr->waitingForChallenger = FALSE;
sQuizLadyPtr->response = -1; sQuizLadyPtr->response = -1;
} }
u8 GetQuizLadyPhase(void) u8 GetQuizLadyState(void)
{ {
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz; sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
if (sQuizLadyPtr->phase == QUIZ_PHASE_GIVE_PRIZE) if (sQuizLadyPtr->state == LILYCOVE_LADY_STATE_PRIZE)
{ {
return QUIZ_PHASE_GIVE_PRIZE; return LILYCOVE_LADY_STATE_PRIZE;
} }
else if (sQuizLadyPtr->phase == QUIZ_PHASE_MAKE_YOUR_OWN) else if (sQuizLadyPtr->state == LILYCOVE_LADY_STATE_COMPLETED)
{ {
return QUIZ_PHASE_MAKE_YOUR_OWN; return LILYCOVE_LADY_STATE_COMPLETED;
} }
else else
{ {
return QUIZ_PHASE_ATTEMPT_QUIZ; return LILYCOVE_LADY_STATE_READY;
} }
} }
// TODO enum? another enum might be excessive. why did GF swap the order from AUTHOR
// 0: waiting for someone to attempt player's quiz // 0: waiting for someone to attempt player's quiz
// 1: ready to attempt other player's quiz // 1: ready to attempt other player's quiz
// 2: ready to attempt lady's quiz // 2: ready to attempt lady's quiz
u8 sub_818E06C(void) //sub_818E06C u8 GetQuizAuthor(void)
{ {
int i; int i;
int j; int j;
@@ -409,7 +419,7 @@ u8 sub_818E06C(void) //sub_818E06C
i = quiz->questionId; i = quiz->questionId;
do do
{ {
if (++ i >= QUIZ_QUESTION_NUM) if (++ i >= NUM_QUIZ_QUESTIONS)
{ {
i = 0; i = 0;
} }
@@ -523,7 +533,7 @@ bool8 IsQuizLadyWaitingForChallenger(void)
return sQuizLadyPtr->waitingForChallenger; return sQuizLadyPtr->waitingForChallenger;
} }
void sub_818E2FC(void) //sub_818E2FC void QuizLadyShowEasyChatScreen(void)
{ {
ShowEasyChatScreen(); ShowEasyChatScreen();
} }
@@ -542,16 +552,16 @@ void BufferQuizPrizeItem(void)
gSpecialVar_0x8005 = sQuizLadyPtr->itemId; gSpecialVar_0x8005 = sQuizLadyPtr->itemId;
} }
void SetQuizLadyPhase_MakeYourOwn(void) void SetQuizLadyState_Complete(void)
{ {
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz; sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
sQuizLadyPtr->phase = QUIZ_PHASE_MAKE_YOUR_OWN; sQuizLadyPtr->state = LILYCOVE_LADY_STATE_COMPLETED;
} }
void SetQuizLadyPhase_GivePrize(void) void SetQuizLadyState_GivePrize(void)
{ {
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz; sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
sQuizLadyPtr->phase = QUIZ_PHASE_GIVE_PRIZE; sQuizLadyPtr->state = LILYCOVE_LADY_STATE_PRIZE;
} }
void ClearQuizLadyResponse(void) void ClearQuizLadyResponse(void)
@@ -574,7 +584,7 @@ void sub_818E3EC(void)
} }
else else
{ {
sQuizLadyPtr->prevQuestionId = QUIZ_QUESTION_NUM; sQuizLadyPtr->prevQuestionId = NUM_QUIZ_QUESTIONS;
} }
PickQuizQuestion(); PickQuizQuestion();
} }
@@ -638,7 +648,7 @@ void sub_818E570(const LilycoveLady *lilycoveLady)
u8 i; u8 i;
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz; sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
if (lilycoveLady->quiz.prevQuestionId < QUIZ_QUESTION_NUM && sQuizLadyPtr->id == LILYCOVE_LADY_QUIZ) if (lilycoveLady->quiz.prevQuestionId < NUM_QUIZ_QUESTIONS && sQuizLadyPtr->id == LILYCOVE_LADY_QUIZ)
{ {
for (i = 0; i < 4; i ++) for (i = 0; i < 4; i ++)
{ {
@@ -646,11 +656,11 @@ void sub_818E570(const LilycoveLady *lilycoveLady)
{ {
break; break;
} }
sQuizLadyPtr->questionId = Random() % QUIZ_QUESTION_NUM; sQuizLadyPtr->questionId = Random() % NUM_QUIZ_QUESTIONS;
} }
if (lilycoveLady->quiz.prevQuestionId == sQuizLadyPtr->questionId) if (lilycoveLady->quiz.prevQuestionId == sQuizLadyPtr->questionId)
{ {
sQuizLadyPtr->questionId = (sQuizLadyPtr->questionId + 1) % QUIZ_QUESTION_NUM; sQuizLadyPtr->questionId = (sQuizLadyPtr->questionId + 1) % NUM_QUIZ_QUESTIONS;
} }
sQuizLadyPtr->prevQuestionId = lilycoveLady->quiz.prevQuestionId; sQuizLadyPtr->prevQuestionId = lilycoveLady->quiz.prevQuestionId;
} }
@@ -674,7 +684,7 @@ static void InitLilycoveContestLady(void)
sContestLadyPtr->language = gGameLanguage; sContestLadyPtr->language = gGameLanguage;
} }
static void sub_818E674(void) static void ReadyContestLady(void)
{ {
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest; sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
sContestLadyPtr->id = LILYCOVE_LADY_CONTEST; sContestLadyPtr->id = LILYCOVE_LADY_CONTEST;
+1 -1
View File
@@ -198,7 +198,7 @@ void NewGameInitData(void)
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
ResetMiniGamesResults(); ResetMiniGamesResults();
copy_strings_to_sav1(); copy_strings_to_sav1();
SetLilycoveLady(); InitLilycoveLady();
ResetAllApprenticeData(); ResetAllApprenticeData();
ClearRankingHallRecords(); ClearRankingHallRecords();
InitMatchCallCounters(); InitMatchCallCounters();
+1 -1
View File
@@ -701,7 +701,7 @@ static void ReceiveLilycoveLadyData(LilycoveLady *lilycoveLady, size_t recordSiz
} }
memcpy(sLilycoveLadySave, (void *)lilycoveLady + recordSize * mixIndices[which], sizeof(LilycoveLady)); memcpy(sLilycoveLadySave, (void *)lilycoveLady + recordSize * mixIndices[which], sizeof(LilycoveLady));
sub_818DA78(); ReadyLilycoveLady();
if (dest != NULL) if (dest != NULL)
{ {
sub_818E570(dest); sub_818E570(dest);