Document smart shopper TV show

This commit is contained in:
GriffinR 2021-07-02 01:45:23 -04:00
parent d73b3c05c6
commit 8f43d1ebeb
4 changed files with 94 additions and 72 deletions

View File

@ -1027,7 +1027,7 @@ gTVPokemonTodaySuccessfulText11:: @ 08283A5F
.string "BIG BRO: Remember, it could be your\n" .string "BIG BRO: Remember, it could be your\n"
.string "POKéMON in the spotlight next time!$" .string "POKéMON in the spotlight next time!$"
gTVTodaysSmartShopperText00:: @ 08283B05 SmartShopper_Text_Intro:: @ 08283B05
.string "Hello!\p" .string "Hello!\p"
.string "It's time for TODAY'S SMART SHOPPER.\p" .string "It's time for TODAY'S SMART SHOPPER.\p"
.string "INTERVIEWER: How are you, viewers?\p" .string "INTERVIEWER: How are you, viewers?\p"
@ -1036,7 +1036,7 @@ gTVTodaysSmartShopperText00:: @ 08283B05
.string "Let's check on what the hot sellers\n" .string "Let's check on what the hot sellers\n"
.string "have been recently.$" .string "have been recently.$"
gTVTodaysSmartShopperText01:: @ 08283BAF SmartShopper_Text_ClerkNormal:: @ 08283BAF
.string "Let's interview the clerk to get the\n" .string "Let's interview the clerk to get the\n"
.string "lowdown.\p" .string "lowdown.\p"
.string "Hi, how's your business?\p" .string "Hi, how's your business?\p"
@ -1046,7 +1046,7 @@ gTVTodaysSmartShopperText01:: @ 08283BAF
.string "Why, just the other day a TRAINER\n" .string "Why, just the other day a TRAINER\n"
.string "named {STR_VAR_1} bought {STR_VAR_3}.$" .string "named {STR_VAR_1} bought {STR_VAR_3}.$"
gTVTodaysSmartShopperText02:: @ 08283C81 SmartShopper_Text_RandomComment1:: @ 08283C81
.string "INTERVIEWER: The TRAINER bought\n" .string "INTERVIEWER: The TRAINER bought\n"
.string "{STR_VAR_3} {STR_VAR_2}S? That's a haul!\p" .string "{STR_VAR_3} {STR_VAR_2}S? That's a haul!\p"
.string "If I may say so, {STR_VAR_1} must have\n" .string "If I may say so, {STR_VAR_1} must have\n"
@ -1055,13 +1055,13 @@ gTVTodaysSmartShopperText02:: @ 08283C81
.string "For traveling, {STR_VAR_2}S are so\n" .string "For traveling, {STR_VAR_2}S are so\n"
.string "important!$" .string "important!$"
gTVTodaysSmartShopperText03:: @ 08283D32 SmartShopper_Text_RandomComment2:: @ 08283D32
.string "INTERVIEWER: Speaking of the item\n" .string "INTERVIEWER: Speaking of the item\n"
.string "{STR_VAR_2}, I just bought {STR_VAR_3} of\l" .string "{STR_VAR_2}, I just bought {STR_VAR_3} of\l"
.string "them recently.\p" .string "them recently.\p"
.string "After all, {STR_VAR_2}'s a great item!$" .string "After all, {STR_VAR_2}'s a great item!$"
gTVTodaysSmartShopperText04:: @ 08283D99 SmartShopper_Text_RandomComment3:: @ 08283D99
.string "INTERVIEWER: {STR_VAR_2}?!\n" .string "INTERVIEWER: {STR_VAR_2}?!\n"
.string "But {STR_VAR_3} of them?!\p" .string "But {STR_VAR_3} of them?!\p"
.string "I didn't think there would be anyone\n" .string "I didn't think there would be anyone\n"
@ -1069,7 +1069,7 @@ gTVTodaysSmartShopperText04:: @ 08283D99
.string "My goodness, I can only afford one or\n" .string "My goodness, I can only afford one or\n"
.string "two at a time…$" .string "two at a time…$"
gTVTodaysSmartShopperText05:: @ 08283E28 SmartShopper_Text_RandomComment4:: @ 08283E28
.string "INTERVIEWER: One time, I bought\n" .string "INTERVIEWER: One time, I bought\n"
.string "a whole lot of the item {STR_VAR_2}.\p" .string "a whole lot of the item {STR_VAR_2}.\p"
.string "But it turned out to be too many.\n" .string "But it turned out to be too many.\n"
@ -1079,21 +1079,21 @@ gTVTodaysSmartShopperText05:: @ 08283E28
.string "Oops!\p" .string "Oops!\p"
.string "There's no point talking about me!$" .string "There's no point talking about me!$"
gTVTodaysSmartShopperText06:: @ 08283F01 SmartShopper_Text_SecondItem:: @ 08283F01
.string "CLERK: {STR_VAR_1} also bought the item\n" .string "CLERK: {STR_VAR_1} also bought the item\n"
.string "{STR_VAR_2} in bulk, taking {STR_VAR_3}.\p" .string "{STR_VAR_2} in bulk, taking {STR_VAR_3}.\p"
.string "INTERVIEWER: Oh, that's smart.\n" .string "INTERVIEWER: Oh, that's smart.\n"
.string "{STR_VAR_2}'s a very good item, too.$" .string "{STR_VAR_2}'s a very good item, too.$"
gTVTodaysSmartShopperText07:: @ 08283F72 SmartShopper_Text_ThirdItem:: @ 08283F72
.string "CLERK: And, the TRAINER also bought\n" .string "CLERK: And, the TRAINER also bought\n"
.string "{STR_VAR_3} of the item {STR_VAR_2}.$" .string "{STR_VAR_3} of the item {STR_VAR_2}.$"
gTVTodaysSmartShopperText08:: @ 08283FA9 SmartShopper_Text_DuringSale:: @ 08283FA9
.string "CLERK: Plus, it was during a big sale.\n" .string "CLERK: Plus, it was during a big sale.\n"
.string "That's smart shopping.$" .string "That's smart shopping.$"
gTVTodaysSmartShopperText09:: @ 08283FE7 SmartShopper_Text_OutroNormal:: @ 08283FE7
.string "INTERVIEWER: Hmm… {STR_VAR_1} sounds like\n" .string "INTERVIEWER: Hmm… {STR_VAR_1} sounds like\n"
.string "quite the shrewd bargain hunter!\p" .string "quite the shrewd bargain hunter!\p"
.string "In total, {STR_VAR_1}'s purchases came to…\p" .string "In total, {STR_VAR_1}'s purchases came to…\p"
@ -1102,11 +1102,11 @@ gTVTodaysSmartShopperText09:: @ 08283FE7
.string "Oops! We're out of time!\n" .string "Oops! We're out of time!\n"
.string "See you on our next broadcast!$" .string "See you on our next broadcast!$"
gTVTodaysSmartShopperText10:: @ 0828409E SmartShopper_Text_IsVIP:: @ 0828409E
.string "CLERK: {STR_VAR_1} is a VIP customer,\n" .string "CLERK: {STR_VAR_1} is a VIP customer,\n"
.string "no doubt about it.$" .string "no doubt about it.$"
gTVTodaysSmartShopperText11:: @ 082840CE SmartShopper_Text_ClerkMax:: @ 082840CE
.string "Let's interview the clerk to get the\n" .string "Let's interview the clerk to get the\n"
.string "lowdown.\p" .string "lowdown.\p"
.string "Hi, how's your business?\p" .string "Hi, how's your business?\p"
@ -1127,7 +1127,7 @@ gTVTodaysSmartShopperText11:: @ 082840CE
.string "CLERK: {STR_VAR_1} is a VIP customer,\n" .string "CLERK: {STR_VAR_1} is a VIP customer,\n"
.string "no doubt about it.$" .string "no doubt about it.$"
gTVTodaysSmartShopperText12:: @ 082842E6 SmartShopper_Text_OutroMax:: @ 082842E6
.string "INTERVIEWER: Hmm…\n" .string "INTERVIEWER: Hmm…\n"
.string "That is amazing.\p" .string "That is amazing.\p"
.string "But why would the TRAINER need to buy\n" .string "But why would the TRAINER need to buy\n"

View File

@ -249,6 +249,21 @@
#define CONTESTLADYLIVE_STATE_LOST 2 #define CONTESTLADYLIVE_STATE_LOST 2
#define CONTESTLADYLIVE_STATE_LOST_BADLY 3 #define CONTESTLADYLIVE_STATE_LOST_BADLY 3
// TV Show states for Smart Shopper
#define SMARTSHOPPER_STATE_INTRO 0
#define SMARTSHOPPER_STATE_CLERK_NORMAL 1
#define SMARTSHOPPER_STATE_RAND_COMMENT_1 2
#define SMARTSHOPPER_STATE_RAND_COMMENT_2 3
#define SMARTSHOPPER_STATE_RAND_COMMENT_3 4
#define SMARTSHOPPER_STATE_RAND_COMMENT_4 5
#define SMARTSHOPPER_STATE_SECOND_ITEM 6
#define SMARTSHOPPER_STATE_THIRD_ITEM 7
#define SMARTSHOPPER_STATE_DURING_SALE 8
#define SMARTSHOPPER_STATE_OUTRO_NORMAL 9
#define SMARTSHOPPER_STATE_IS_VIP 10
#define SMARTSHOPPER_STATE_CLERK_MAX 11
#define SMARTSHOPPER_STATE_OUTRO_MAX 12
#define SMARTSHOPPER_NUM_ITEMS 3 #define SMARTSHOPPER_NUM_ITEMS 3
#endif //GUARD_CONSTANTS_TV_H #endif //GUARD_CONSTANTS_TV_H

View File

@ -108,19 +108,19 @@ extern const u8 gTVPokemonTodaySuccessfulText08[];
extern const u8 gTVPokemonTodaySuccessfulText09[]; extern const u8 gTVPokemonTodaySuccessfulText09[];
extern const u8 gTVPokemonTodaySuccessfulText10[]; extern const u8 gTVPokemonTodaySuccessfulText10[];
extern const u8 gTVPokemonTodaySuccessfulText11[]; extern const u8 gTVPokemonTodaySuccessfulText11[];
extern const u8 gTVTodaysSmartShopperText00[]; extern const u8 SmartShopper_Text_Intro[];
extern const u8 gTVTodaysSmartShopperText01[]; extern const u8 SmartShopper_Text_ClerkNormal[];
extern const u8 gTVTodaysSmartShopperText02[]; extern const u8 SmartShopper_Text_RandomComment1[];
extern const u8 gTVTodaysSmartShopperText03[]; extern const u8 SmartShopper_Text_RandomComment2[];
extern const u8 gTVTodaysSmartShopperText04[]; extern const u8 SmartShopper_Text_RandomComment3[];
extern const u8 gTVTodaysSmartShopperText05[]; extern const u8 SmartShopper_Text_RandomComment4[];
extern const u8 gTVTodaysSmartShopperText06[]; extern const u8 SmartShopper_Text_SecondItem[];
extern const u8 gTVTodaysSmartShopperText07[]; extern const u8 SmartShopper_Text_ThirdItem[];
extern const u8 gTVTodaysSmartShopperText08[]; extern const u8 SmartShopper_Text_DuringSale[];
extern const u8 gTVTodaysSmartShopperText09[]; extern const u8 SmartShopper_Text_OutroNormal[];
extern const u8 gTVTodaysSmartShopperText10[]; extern const u8 SmartShopper_Text_IsVIP[];
extern const u8 gTVTodaysSmartShopperText11[]; extern const u8 SmartShopper_Text_ClerkMax[];
extern const u8 gTVTodaysSmartShopperText12[]; extern const u8 SmartShopper_Text_OutroMax[];
extern const u8 gTVWorldOfMastersText00[]; extern const u8 gTVWorldOfMastersText00[];
extern const u8 gTVWorldOfMastersText01[]; extern const u8 gTVWorldOfMastersText01[];
extern const u8 gTVWorldOfMastersText02[]; extern const u8 gTVWorldOfMastersText02[];

View File

@ -335,19 +335,19 @@ static const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = {
}; };
static const u8 *const sTVTodaysSmartShopperTextGroup[] = { static const u8 *const sTVTodaysSmartShopperTextGroup[] = {
gTVTodaysSmartShopperText00, [SMARTSHOPPER_STATE_INTRO] = SmartShopper_Text_Intro,
gTVTodaysSmartShopperText01, [SMARTSHOPPER_STATE_CLERK_NORMAL] = SmartShopper_Text_ClerkNormal,
gTVTodaysSmartShopperText02, [SMARTSHOPPER_STATE_RAND_COMMENT_1] = SmartShopper_Text_RandomComment1,
gTVTodaysSmartShopperText03, [SMARTSHOPPER_STATE_RAND_COMMENT_2] = SmartShopper_Text_RandomComment2,
gTVTodaysSmartShopperText04, [SMARTSHOPPER_STATE_RAND_COMMENT_3] = SmartShopper_Text_RandomComment3,
gTVTodaysSmartShopperText05, [SMARTSHOPPER_STATE_RAND_COMMENT_4] = SmartShopper_Text_RandomComment4,
gTVTodaysSmartShopperText06, [SMARTSHOPPER_STATE_SECOND_ITEM] = SmartShopper_Text_SecondItem,
gTVTodaysSmartShopperText07, [SMARTSHOPPER_STATE_THIRD_ITEM] = SmartShopper_Text_ThirdItem,
gTVTodaysSmartShopperText08, [SMARTSHOPPER_STATE_DURING_SALE] = SmartShopper_Text_DuringSale,
gTVTodaysSmartShopperText09, [SMARTSHOPPER_STATE_OUTRO_NORMAL] = SmartShopper_Text_OutroNormal,
gTVTodaysSmartShopperText10, [SMARTSHOPPER_STATE_IS_VIP] = SmartShopper_Text_IsVIP,
gTVTodaysSmartShopperText11, [SMARTSHOPPER_STATE_CLERK_MAX] = SmartShopper_Text_ClerkMax,
gTVTodaysSmartShopperText12 [SMARTSHOPPER_STATE_OUTRO_MAX] = SmartShopper_Text_OutroMax
}; };
static const u8 *const sTVBravoTrainerTextGroup[] = { static const u8 *const sTVBravoTrainerTextGroup[] = {
@ -2785,7 +2785,7 @@ size_t CountDigits(int value)
return 1; return 1;
} }
static void sub_80EF40C(u8 varIdx, TVShow *show) static void SmartShopper_BufferPurchaseTotal(u8 varIdx, TVShow *show)
{ {
u8 i; u8 i;
int price; int price;
@ -4460,78 +4460,85 @@ static void DoTVShowTodaysSmartShopper(void)
state = sTVShowState; state = sTVShowState;
switch(state) switch(state)
{ {
case 0: case SMARTSHOPPER_STATE_INTRO:
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
GetMapName(gStringVar2, show->smartshopperShow.shopLocation, 0); GetMapName(gStringVar2, show->smartshopperShow.shopLocation, 0);
if (show->smartshopperShow.itemAmounts[0] >= 255) if (show->smartshopperShow.itemAmounts[0] >= 255)
sTVShowState = 11; sTVShowState = SMARTSHOPPER_STATE_CLERK_MAX;
else else
sTVShowState = 1; sTVShowState = SMARTSHOPPER_STATE_CLERK_NORMAL;
break; break;
case 1: case SMARTSHOPPER_STATE_CLERK_NORMAL:
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0])); StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0]); ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0]);
sTVShowState += 1 + (Random() % 4); // Pick a random comment (SMARTSHOPPER_STATE_RAND_COMMENT_#)
sTVShowState += SMARTSHOPPER_STATE_CLERK_NORMAL + (Random() % (SMARTSHOPPER_STATE_RAND_COMMENT_4 - SMARTSHOPPER_STATE_RAND_COMMENT_1 + 1));
break; break;
case 2: case SMARTSHOPPER_STATE_RAND_COMMENT_1:
case 4: case SMARTSHOPPER_STATE_RAND_COMMENT_3:
case 5: case SMARTSHOPPER_STATE_RAND_COMMENT_4:
if (show->smartshopperShow.itemIds[1] != ITEM_NONE) if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
sTVShowState = 6; sTVShowState = SMARTSHOPPER_STATE_SECOND_ITEM;
else else
sTVShowState = 10; sTVShowState = SMARTSHOPPER_STATE_IS_VIP;
break; break;
case 3: case SMARTSHOPPER_STATE_RAND_COMMENT_2:
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0] + 1); ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0] + 1);
if (show->smartshopperShow.itemIds[1] != ITEM_NONE) if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
sTVShowState = 6; sTVShowState = SMARTSHOPPER_STATE_SECOND_ITEM;
else else
sTVShowState = 10; sTVShowState = SMARTSHOPPER_STATE_IS_VIP;
break; break;
case 6: case SMARTSHOPPER_STATE_SECOND_ITEM:
// Clerk describes 2nd type of item player purchased
StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[1])); StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[1]));
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[1]); ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[1]);
if (show->smartshopperShow.itemIds[2] != ITEM_NONE) if (show->smartshopperShow.itemIds[2] != ITEM_NONE)
sTVShowState = 7; sTVShowState = SMARTSHOPPER_STATE_THIRD_ITEM;
else if (show->smartshopperShow.priceReduced == TRUE) else if (show->smartshopperShow.priceReduced == TRUE)
sTVShowState = 8; sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
else else
sTVShowState = 9; sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
break; break;
case 7: case SMARTSHOPPER_STATE_THIRD_ITEM:
// Clerk describes 3rd type of item player purchased
StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[2])); StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[2]));
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[2]); ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[2]);
if (show->smartshopperShow.priceReduced == TRUE) if (show->smartshopperShow.priceReduced == TRUE)
sTVShowState = 8; sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
else else
sTVShowState = 9; sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
break; break;
case 8: case SMARTSHOPPER_STATE_DURING_SALE:
if (show->smartshopperShow.itemAmounts[0] >= 255) if (show->smartshopperShow.itemAmounts[0] >= 255)
sTVShowState = 12; sTVShowState = SMARTSHOPPER_STATE_OUTRO_MAX;
else else
sTVShowState = 9; sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
break; break;
case 9: case SMARTSHOPPER_STATE_OUTRO_NORMAL:
sub_80EF40C(1, show); SmartShopper_BufferPurchaseTotal(1, show);
TVShowDone(); TVShowDone();
break; break;
case 10: case SMARTSHOPPER_STATE_IS_VIP:
// Clerk says customer is a VIP
// Said if player only purchased one type of item
if (show->smartshopperShow.priceReduced == TRUE) if (show->smartshopperShow.priceReduced == TRUE)
sTVShowState = 8; sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
else else
sTVShowState = 9; sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
break; break;
case 11: case SMARTSHOPPER_STATE_CLERK_MAX:
// Clerk's comments if player purchased maximum number of 1st item
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0])); StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
if (show->smartshopperShow.priceReduced == TRUE) if (show->smartshopperShow.priceReduced == TRUE)
sTVShowState = 8; sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
else else
sTVShowState = 12; sTVShowState = SMARTSHOPPER_STATE_OUTRO_MAX;
break; break;
case 12: case SMARTSHOPPER_STATE_OUTRO_MAX:
// Outro comments if player purchased maximum number of 1st item
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
TVShowDone(); TVShowDone();
break; break;