pmd-red/src/thank_you_wonder_mail.c
2025-06-15 18:47:45 +02:00

1480 lines
42 KiB
C

#include "global.h"
#include "globaldata.h"
#include "constants/communication_error_codes.h"
#include "code_800D090.h"
#include "music_util.h"
#include "code_801B3C0.h"
#include "code_801C8C4.h"
#include "code_802F204.h"
#include "code_8094F88.h"
#include "cpu.h"
#include "input.h"
#include "items.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu_input.h"
#include "other_menus2.h"
#include "pokemon.h"
#include "rescue_password_menu.h"
#include "save.h"
#include "save_write.h"
#include "string_format.h"
#include "text_1.h"
#include "text_util.h"
#include "thank_you_wonder_mail.h"
#include "wonder_mail_4.h"
#include "wonder_mail_5.h"
#include "naming_screen.h"
static EWRAM_INIT WonderMailStruct_203B2C4 *sUnknown_203B2C4 = {NULL};
#define THANK_YOU_MAIL_MAIN_MENU 0
#define ANYTHING_ELSE_THANK_YOU_MAIN_MENU 1
#define EXIT_THANK_YOU_MAIL_PRE 2
#define EXIT_THANK_YOU_MAIL 3
#define NO_THANK_YOU_MAIL 4
#define SELECT_THANK_YOU_MAIL_COMMS 6
#define ITEM_EXISTS_ON_THANK_YOU_MAIL 7
#define PROMPT_RESEND_WITH_ATTACHED_ITEM 8
#define PROMPT_REWARD_ITEM_TO_SEND 9
#define THANK_YOU_MAIL_STORAGE_EMPTY 0xA
#define PROMPT_ITEM_TO_SEND 0xB
#define CONFIRM_ITEM_TO_SEND 0xC
#define THANK_YOU_MAIL_COMMS_CLEANUP 0xD
#define PROMPT_THANK_YOU_TO_SEND 0xF
#define SHOW_ITEM_TO_SEND_INFO 0x15
#define COMMUNICATING_THANK_YOU_MAIL 0x16
// TODO: verify it is 0x19 and not 0x1A
#define DISPLAY_THANK_YOU_PASSWORD 0x19
#define PROMPT_CONNECT_GAME_LINK 0x1D
#define THANK_YOU_MAIL_COMMS_FINISHED 0x1E
#define PRINT_THANK_YOU_ERROR 0x1F
#define THANK_YOU_PASSWORD_SUCCESS 0x21
#define PROMPT_THANK_YOU_PASSWORD 0x26
#define PROCESS_THANK_YOU_PASSWORD 0x27
#define THANK_YOU_PASSWORD_WRONG 0x28
enum menuActions {
CANCEL_ACTION,
SEND_THANK_YOU_MAIL_ACTION,
GET_THANK_YOU_MAIL_ACTION,
GAME_LINK_ACTION,
// 4 - ???
PASSWORD_ACTION = 5,
YES_ACTION = 0x7,
NO_ACTION,
SEND_ITEM_ACTION,
NO_SEND_ITEM_ACTION,
CONFIRM_ACTION,
INFO_ACTION,
};
const Item gUnknown_80DED44 =
{
ITEM_FLAG_EXISTS, 0, ITEM_NOTHING
};
const WindowTemplate gUnknown_80DED48 =
{
0,
0x03,
0x15, 0x04,
0x06, 0x05,
0x05, 0x00,
NULL
};
const WindowTemplate gUnknown_80DED60 =
{
0,
0x03,
0x16, 0x07,
0x06, 0x05,
0x05, 0x00,
NULL
};
const MenuItem gUnknown_80DED78[] =
{
{"Confirm", CONFIRM_ACTION},
{"Info", INFO_ACTION},
{},
};
// Unused
const WindowTemplate gUnknown_80DEDA0 =
{
0,
0x03,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const MenuItem gThankYouMailMainMenuItems[] =
{
{"Send Thank-You Mail", SEND_THANK_YOU_MAIL_ACTION},
{"Get Thank-You Mail", GET_THANK_YOU_MAIL_ACTION},
{"Cancel", CANCEL_ACTION},
{},
};
const MenuItem gUnknown_80DEE08[] =
{
{"Game Link cable", GAME_LINK_ACTION},
{"Password", PASSWORD_ACTION},
{"Cancel", CANCEL_ACTION},
{},
};
const MenuItem gUnknown_80DEE44[] =
{
{"Yes", YES_ACTION},
{"Cancel", CANCEL_ACTION},
{},
};
const MenuItem gUnknown_80DEE60[] =
{
{"Yes", YES_ACTION},
{"No", NO_ACTION},
{},
};
const MenuItem gUnknown_80DEE7C[] =
{
{"Send Item", SEND_ITEM_ACTION},
{_("Don't Send Item"), NO_SEND_ITEM_ACTION},
{"Cancel", CANCEL_ACTION},
{},
};
const MenuItem gUnknown_80DEEBC[] =
{
{"Send w/o Item", NO_SEND_ITEM_ACTION},
{"Cancel", CANCEL_ACTION},
{},
};
const MenuItem gUnknown_80DEEE4[] =
{
{"Yes", YES_ACTION},
{"No", NO_ACTION},
{"Cancel", CANCEL_ACTION},
{},
};
#include "data/thank_you_wonder_mail.h"
extern u32 sub_8031DCC(void);
extern void sub_8031E00(void);
extern void HandleThankYouMailPelipperMainMenu();
extern void sub_802AAC8();
extern void ReturnToThankYouMailMainMenu();
extern void sub_802AB7C();
extern void HandleMailCommunicationMenu();
extern void sub_802A98C();
extern void sub_802A9A8();
extern void sub_802A910();
extern void sub_802A8BC();
extern void sub_802A8A0();
extern void HandleConfirmItemtoSendMenu();
extern void ExitThankYouMailMenu1();
extern void sub_802A090();
extern void sub_802A158();
extern void sub_802A0C8();
extern void sub_802A174();
extern void sub_802A230();
extern void sub_802A28C();
extern void sub_802A39C();
extern void sub_802A33C();
extern void sub_802A740();
extern void sub_802A6F0();
extern void sub_802A68C();
extern void sub_802A4D4();
extern void sub_802A050();
extern void sub_802A4AC();
extern void sub_802A458();
extern void sub_802A75C();
extern void DisplayThankYouMailCommsOutcome();
extern void ReturnToThankYouMainFromError();
extern void ExitThankYouMailMenu2();
extern void sub_802AB60();
extern void sub_802AB98();
extern void sub_802A718();
extern void sub_802A6B4();
extern void AdvanceToThankYouPasswordProcessing();
extern void HandleThankYouMailPasswordMenu();
extern void sub_802A9FC();
extern void sub_802A828();
extern void sub_802A850();
extern void sub_8031E10();
extern void SetThankYouMailMenuState(u32);
extern u8 sub_800D588(void);
extern u32 GetDungeonTeamRankPts(DungeonLocation *, u32);
extern void sub_8031D70(u8, u32);
extern void sub_8011C28(u32);
extern u32 sub_8039068(u32, u8 *r1, unkStruct_203B480 *r0);
u32 CreateThankYouMailPelipper(void)
{
char *monName;
OpenedFile *faceFile;
s32 index;
int counter;
unkStruct_203B480 *mail;
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
sUnknown_203B2C4 = MemoryAlloc(sizeof(WonderMailStruct_203B2C4), 8);
MemoryFill8(sUnknown_203B2C4, 0, sizeof(WonderMailStruct_203B2C4));
CopyYellowMonsterNametoBuffer(gSpeakerNameBuffer, MONSTER_PELIPPER);
monName = GetMonSpecies(MONSTER_PELIPPER);
strcpy(gFormatBuffer_Monsters[0], monName);
faceFile = GetDialogueSpriteDataPtr(MONSTER_PELIPPER);
sUnknown_203B2C4->monPortrait.faceFile = faceFile;
sUnknown_203B2C4->monPortrait.faceData = (PortraitGfx *) faceFile->data;
sUnknown_203B2C4->monPortrait.spriteId = 0;
sUnknown_203B2C4->monPortrait.flip = FALSE;
sUnknown_203B2C4->monPortrait.unkE = 0;
sUnknown_203B2C4->monPortrait.pos.x = 2;
sUnknown_203B2C4->monPortrait.pos.y = 8;
for(counter = 0; counter < PASSWORD_BUFFER_SIZE; counter++){
sUnknown_203B2C4->passwordBuffer[counter] = 0;
}
sUnknown_203B2C4->wonderMailMethod = WONDER_MAIL_GAME_LINK;
sUnknown_203B2C4->wonderMailMode = WONDER_MAIL_MODE_SEND;
index = GetFirstIndexofMailType(6);
if (index != -1) {
mail = GetMailatIndex(index);
sUnknown_203B2C4->unk41C = mail->item;
sUnknown_203B2C4->mailIndex = index;
sUnknown_203B2C4->unk430 = mail->unk10.unk10;
SetThankYouMailMenuState(5);
}
else {
sUnknown_203B2C4->unk41C = gUnknown_80DED44;
sUnknown_203B2C4->mailIndex = -1;
SetThankYouMailMenuState(THANK_YOU_MAIL_MAIN_MENU);
}
sUnknown_203B2C4->fallbackState = 0x2b;
return 1;
}
u32 ThankYouMailPelipperCallback(void)
{
switch(sUnknown_203B2C4->state) {
case 5:
sub_802AB7C();
break;
case THANK_YOU_MAIL_COMMS_FINISHED:
DisplayThankYouMailCommsOutcome();
break;
case PRINT_THANK_YOU_ERROR:
ReturnToThankYouMainFromError();
break;
case 0xe:
sub_802A090();
break;
case PROMPT_THANK_YOU_TO_SEND:
sub_802A158();
break;
case 0x11:
sub_802A174();
break;
case 0x12:
sub_802A230();
break;
case 0x10:
sub_802A0C8();
break;
case 0x13:
sub_802A28C();
break;
case 0x14:
sub_802A39C();
break;
case SHOW_ITEM_TO_SEND_INFO:
sub_802A33C();
break;
case 0x1c:
sub_802A458();
break;
case 0x1b:
sub_802A4AC();
break;
case DISPLAY_THANK_YOU_PASSWORD:
sub_802A4D4();
break;
case 0x1a:
sub_802A050();
break;
case THANK_YOU_PASSWORD_WRONG:
sub_802A9FC();
break;
case PROMPT_THANK_YOU_PASSWORD:
AdvanceToThankYouPasswordProcessing();
break;
case PROCESS_THANK_YOU_PASSWORD:
HandleThankYouMailPasswordMenu();
break;
case 0x25:
sub_802A6B4();
break;
case 0x24:
sub_802A718();
break;
case THANK_YOU_PASSWORD_SUCCESS:
sub_802AB60();
break;
case 0x22:
sub_802AB98();
break;
case COMMUNICATING_THANK_YOU_MAIL:
sub_802A740();
break;
case 0x18:
sub_802A68C();
break;
case 0x17:
sub_802A6F0();
break;
case PROMPT_CONNECT_GAME_LINK:
sub_802A75C();
break;
case 0x20:
ExitThankYouMailMenu2();
break;
case THANK_YOU_MAIL_COMMS_CLEANUP:
ExitThankYouMailMenu1();
break;
case CONFIRM_ITEM_TO_SEND:
HandleConfirmItemtoSendMenu();
break;
case 0x29:
sub_802A828();
break;
case 0x2a:
sub_802A850();
break;
case PROMPT_ITEM_TO_SEND:
sub_802A8A0();
break;
case THANK_YOU_MAIL_STORAGE_EMPTY:
sub_802A8BC();
break;
case PROMPT_REWARD_ITEM_TO_SEND:
sub_802A910();
break;
case ITEM_EXISTS_ON_THANK_YOU_MAIL:
sub_802A98C();
break;
case PROMPT_RESEND_WITH_ATTACHED_ITEM:
sub_802A9A8();
break;
case SELECT_THANK_YOU_MAIL_COMMS:
HandleMailCommunicationMenu();
break;
case NO_THANK_YOU_MAIL:
ReturnToThankYouMailMainMenu();
break;
case THANK_YOU_MAIL_MAIN_MENU:
case ANYTHING_ELSE_THANK_YOU_MAIN_MENU:
HandleThankYouMailPelipperMainMenu();
break;
case EXIT_THANK_YOU_MAIL_PRE:
sub_802AAC8();
break;
case EXIT_THANK_YOU_MAIL:
return 3;
}
return 0;
}
void CleanThankYouMailPelipper(void)
{
if (sUnknown_203B2C4 != NULL) {
CloseFile(sUnknown_203B2C4->monPortrait.faceFile);
FREE_AND_SET_NULL(sUnknown_203B2C4);
sub_8030DE4();
FreeItemDescriptionWindow();
sub_803084C();
sub_801CBB8();
NamingScreen_Free();
sub_8031E10();
sub_802F2C0();
}
}
void ReturnToThankYouMainFromError(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
}
}
void PrintThankYouMailLinkError(u32 errorCode)
{
switch(errorCode) {
case COMMS_INCORRECT_NUM_SYSTEMS:
CreateDialogueBoxAndPortrait(gUnknown_80DEF28, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case COMMS_DIFFERENT_MODES:
CreateDialogueBoxAndPortrait(gUnknown_80DEF80, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case COMMS_NO_ROOM_STORAGE:
CreateDialogueBoxAndPortrait(gUnknown_80DEFDC, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case COMMS_DUPLICATE_MAIL:
CreateDialogueBoxAndPortrait(gUnknown_80DF044, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case COMMS_NOT_ELIGIBLE_1:
CreateDialogueBoxAndPortrait(gUnknown_80DF0A0, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case COMMS_NOT_ELIGIBLE_2:
CreateDialogueBoxAndPortrait(gUnknown_80DF0A0, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case COMMS_NO_ROOM_MAIL:
CreateDialogueBoxAndPortrait(gUnknown_80DF0E0, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case 1:
case COMMS_NO_RESPONSE:
case 5:
case 14:
CreateDialogueBoxAndPortrait(gUnknown_80DEF04, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case COMMS_NOT_READY:
CreateDialogueBoxAndPortrait(gUnknown_80DF138, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case COMMS_GOOD:
default:
break;
}
}
void DisplayThankYouMailCommsOutcome(void)
{
s32 auStack20;
if (sub_80144A4(&auStack20) != 0) {
return;
}
MemoryFill8(&sUnknown_203B2C4->unk41C, 0, sizeof(Item));
sUnknown_203B2C4->unk41C.id = ITEM_NOTHING;
sUnknown_203B2C4->unk41C.quantity = 1;
sUnknown_203B2C4->unk41C.flags = 0;
if (sUnknown_203B2C4->linkError == COMMS_GOOD) {
switch(sUnknown_203B2C4->unk40)
{
case 6:
switch(sUnknown_203B2C4->wonderMailMethod)
{
case WONDER_MAIL_GAME_LINK:
case WONDER_MAIL_PASSWORD:
case 6:
// "Thank-You Mail has been sent"
CreateDialogueBoxAndPortrait(gUnknown_80DF194, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
break;
case 4:
default:
break;
}
SetThankYouMailMenuState(THANK_YOU_MAIL_COMMS_CLEANUP);
break;
case 7:
SetThankYouMailMenuState(THANK_YOU_PASSWORD_SUCCESS);
break;
default:
break;
}
}
else
{
PrintThankYouMailLinkError(sUnknown_203B2C4->linkError);
SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
}
}
void sub_802A050(void)
{
switch(sub_8031DCC())
{
case 3:
case 2:
sub_8031E10();
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE);
SetThankYouMailMenuState(0x1B);
break;
case 1:
sub_8031E00();
break;
default:
return;
}
}
void sub_802A090(void)
{
s32 menuAction;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case YES_ACTION:
SetThankYouMailMenuState(SELECT_THANK_YOU_MAIL_COMMS);
break;
case NO_ACTION:
case CANCEL_ACTION:
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
default:
break;
}
}
}
void sub_802A0C8(void)
{
switch(sub_8030768(1))
{
case 2:
sub_803084C();
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
case 3:
sUnknown_203B2C4->mailIndex = sub_80307EC();
SetThankYouMailMenuState(0x11);
break;
case 4:
sUnknown_203B2C4->fallbackState = 0x10;
sUnknown_203B2C4->mailIndex = sub_80307EC();
RestoreSavedWindows(&sUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
sub_8030D40(sUnknown_203B2C4->mailIndex,0);
SetThankYouMailMenuState(0x12);
break;
}
}
void sub_802A158(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(0x10);
}
}
void sub_802A174(void)
{
s32 menuAction;
menuAction = -1;
sub_8030768(0);
if (sub_8012FD8(&sUnknown_203B2C4->unk21C[3]) == 0) {
sub_8013114(&sUnknown_203B2C4->unk21C[3], &menuAction);
}
switch(menuAction)
{
case CONFIRM_ACTION:
sub_803084C();
SetThankYouMailMenuState(0xe);
break;
case INFO_ACTION:
sUnknown_203B2C4->fallbackState = 0x2b;
RestoreSavedWindows(&sUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
sub_8030D40(sUnknown_203B2C4->mailIndex,0);
SetThankYouMailMenuState(0x12);
break;
case CANCEL_ACTION:
case 0xD:
sub_8035CC0(&sUnknown_203B2C4->unk35C,2);
sub_8030810(1);
SetThankYouMailMenuState(0x10);
default:
break;
}
}
void sub_802A230(void)
{
switch(sub_8030DA0())
{
case 2:
case 3:
sub_8030DE4();
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE);
sub_803092C();
if (sUnknown_203B2C4->fallbackState == 0x2b) {
sub_8035CF4(sUnknown_203B2C4->unk21C, 3, TRUE);
SetThankYouMailMenuState(0x11);
}
else {
SetThankYouMailMenuState(sUnknown_203B2C4->fallbackState);
}
break;
default:
break;
}
}
void sub_802A28C(void)
{
sUnknown_203B2C4->unk41C.id = ITEM_NOTHING;
sUnknown_203B2C4->unk41C.quantity = 1;
sUnknown_203B2C4->unk41C.flags = 0;
switch(sub_801CA08(TRUE))
{
case 2:
sub_801CBB8();
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
case 3:
sUnknown_203B2C4->unk41C.id = sub_801CB24();
SetThankYouMailMenuState(0x14);
break;
case 4:
sUnknown_203B2C4->fallbackState = 0x13;
sUnknown_203B2C4->unk41C.id = sub_801CB24();
RestoreSavedWindows(&sUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
InitItemDescriptionWindow(&sUnknown_203B2C4->unk41C);
SetThankYouMailMenuState(SHOW_ITEM_TO_SEND_INFO);
break;
}
}
void sub_802A33C(void)
{
switch(sub_801B410())
{
case 2:
case 3:
FreeItemDescriptionWindow();
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE);
sub_801CB5C(TRUE);
if (sUnknown_203B2C4->fallbackState == 0x2b) {
sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE);
SetThankYouMailMenuState(0x14);
}
else {
SetThankYouMailMenuState(sUnknown_203B2C4->fallbackState);
}
break;
case 1:
default:
break;
}
}
void sub_802A39C(void)
{
s32 menuAction;
menuAction = -1;
sub_801CA08(FALSE);
if (sub_8012FD8(&sUnknown_203B2C4->unk21C[3]) == 0) {
sub_8013114(&sUnknown_203B2C4->unk21C[3], &menuAction);
}
switch(menuAction)
{
case CONFIRM_ACTION:
sub_801CBB8();
SetThankYouMailMenuState(CONFIRM_ITEM_TO_SEND);
break;
case INFO_ACTION:
sUnknown_203B2C4->fallbackState = 0x2b;
RestoreSavedWindows(&sUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
InitItemDescriptionWindow(&sUnknown_203B2C4->unk41C);
SetThankYouMailMenuState(SHOW_ITEM_TO_SEND_INFO);
break;
case CANCEL_ACTION:
case 0xD:
sub_8035CC0(&sUnknown_203B2C4->unk35C, 3);
sub_801CCD8();
SetThankYouMailMenuState(0x13);
default:
break;
}
}
void sub_802A458(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(THANK_YOU_MAIL_COMMS_CLEANUP);
}
}
void ExitThankYouMailMenu1(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(EXIT_THANK_YOU_MAIL);
}
}
void ExitThankYouMailMenu2(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(EXIT_THANK_YOU_MAIL);
}
}
void sub_802A4AC(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(0x18);
sub_8011C28(1);
PrepareSavePakWrite(MONSTER_NONE);
}
}
void sub_802A4D4(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(0x1A);
}
}
void AdvanceToThankYouPasswordProcessing(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(PROCESS_THANK_YOU_PASSWORD);
}
}
void HandleThankYouMailPasswordMenu(void)
{
u8 mailIndex;
unkStruct_203B480 *mail;
u32 return_var;
unkStruct_203B480 mail1;
return_var = NamingScreen_HandleInput();
MemoryFill8(&mail1, 0, sizeof(unkStruct_203B480));
switch(return_var)
{
case 3:
switch(sub_8039068(PASSWORD_ENTRY_THANK_YOU_MAIL_MODE,sUnknown_203B2C4->passwordBuffer,&mail1))
{
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF1C0, 0, 7, gUnknown_80DEE44, 0, 4, 0, &sUnknown_203B2C4->monPortrait, 0xc);
SetThankYouMailMenuState(THANK_YOU_PASSWORD_WRONG);
break;
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:
CreateDialogueBoxAndPortrait(gUnknown_80DF208, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
break;
case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL:
CreateDialogueBoxAndPortrait(gUnknown_80DF0A0, 0, &sUnknown_203B2C4->monPortrait, 0x10d);
SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
break;
case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS:
mailIndex = GetMailIndex(4,mail1.unk10.unk10);
mail = GetMailatIndex(mailIndex);
*mail = mail1;
mail->mailType = 6;
sUnknown_203B2C4->unk430 = mail1.unk10.unk10;
SetThankYouMailMenuState(THANK_YOU_PASSWORD_SUCCESS);
break;
default:
case 7:
break;
}
NamingScreen_Free();
break;
case 2:
NamingScreen_Free();
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE);
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
}
}
void sub_802A68C(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
if (!WriteSavePak()) {
FinishWriteSavePak();
SetThankYouMailMenuState(THANK_YOU_MAIL_COMMS_CLEANUP);
}
}
}
void sub_802A6B4(void)
{
int saveStatus;
u32 temp;
if (sub_80144A4(&temp) == 0) {
if (!WriteSavePak()) {
saveStatus = GetSavePakStatus();
FinishWriteSavePak();
if (saveStatus == SAVE_COMPLETED) {
SetThankYouMailMenuState(0x20);
}
else {
SetThankYouMailMenuState(EXIT_THANK_YOU_MAIL);
}
}
}
}
void sub_802A6F0(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
SetThankYouMailMenuState(0x18);
sub_8011C28(1);
PrepareSavePakWrite(MONSTER_NONE);
}
}
void sub_802A718(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
SetThankYouMailMenuState(0x25);
sub_8011C28(1);
PrepareSavePakWrite(MONSTER_NONE);
}
}
void sub_802A740(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
SetThankYouMailMenuState(THANK_YOU_MAIL_COMMS_FINISHED);
}
}
void sub_802A75C(void)
{
s32 menuAction;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case YES_ACTION:
// NOTE: if statement is needed to match
if(sUnknown_203B2C4->wonderMailMode)
SetThankYouMailMenuState(COMMUNICATING_THANK_YOU_MAIL);
else
SetThankYouMailMenuState(COMMUNICATING_THANK_YOU_MAIL);
break;
case CANCEL_ACTION:
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
}
}
}
void HandleConfirmItemtoSendMenu(void)
{
s32 menuAction;
unkStruct_203B480 *mail;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case YES_ACTION:
mail = GetMailatIndex(sUnknown_203B2C4->mailIndex);
if(sUnknown_203B2C4->unk41C.id != ITEM_NOTHING)
{
mail->item = sUnknown_203B2C4->unk41C;
}
gTeamInventoryRef->teamStorage[sUnknown_203B2C4->unk41C.id]--;
SetThankYouMailMenuState(0x29);
break;
case NO_ACTION:
SetThankYouMailMenuState(PROMPT_ITEM_TO_SEND);
break;
case CANCEL_ACTION:
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
}
}
}
void sub_802A828(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(0x2A);
sub_8011C28(1);
PrepareSavePakWrite(MONSTER_NONE);
}
}
void sub_802A850(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
if(!WriteSavePak())
{
FinishWriteSavePak();
switch(sUnknown_203B2C4->wonderMailMethod)
{
case WONDER_MAIL_GAME_LINK:
case 4:
SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
break;
case WONDER_MAIL_PASSWORD:
SetThankYouMailMenuState(DISPLAY_THANK_YOU_PASSWORD);
break;
}
}
}
}
void sub_802A8A0(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
SetThankYouMailMenuState(0x13);
}
}
void sub_802A8BC(void)
{
s32 menuAction;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case NO_SEND_ITEM_ACTION:
switch(sUnknown_203B2C4->wonderMailMethod)
{
case WONDER_MAIL_GAME_LINK:
case 4:
SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
break;
case WONDER_MAIL_PASSWORD:
SetThankYouMailMenuState(DISPLAY_THANK_YOU_PASSWORD);
break;
}
break;
case CANCEL_ACTION:
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
}
}
}
void sub_802A910(void)
{
s32 menuAction;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case SEND_ITEM_ACTION:
if(sub_801CF14(0))
{
SetThankYouMailMenuState(THANK_YOU_MAIL_STORAGE_EMPTY);
}
else
{
SetThankYouMailMenuState(PROMPT_ITEM_TO_SEND);
}
break;
case NO_SEND_ITEM_ACTION:
switch(sUnknown_203B2C4->wonderMailMethod)
{
case WONDER_MAIL_GAME_LINK:
case 4:
SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
break;
case WONDER_MAIL_PASSWORD:
SetThankYouMailMenuState(DISPLAY_THANK_YOU_PASSWORD);
break;
}
break;
case CANCEL_ACTION:
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
}
}
}
void sub_802A98C(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
SetThankYouMailMenuState(PROMPT_RESEND_WITH_ATTACHED_ITEM);
}
}
void sub_802A9A8(void)
{
s32 menuAction;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case YES_ACTION:
switch(sUnknown_203B2C4->wonderMailMethod)
{
case WONDER_MAIL_GAME_LINK:
case 4:
SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
break;
case WONDER_MAIL_PASSWORD:
SetThankYouMailMenuState(DISPLAY_THANK_YOU_PASSWORD);
break;
}
break;
case CANCEL_ACTION:
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
}
}
}
void sub_802A9FC(void)
{
s32 menuAction;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case YES_ACTION:
SetThankYouMailMenuState(PROMPT_THANK_YOU_PASSWORD);
break;
case CANCEL_ACTION:
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
}
}
}
void HandleMailCommunicationMenu(void)
{
s32 menuAction;
unkStruct_203B480 *mail;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case WONDER_MAIL_GAME_LINK:
case 4:
case WONDER_MAIL_PASSWORD:
sUnknown_203B2C4->wonderMailMethod = menuAction;
switch(sUnknown_203B2C4->wonderMailMode)
{
case WONDER_MAIL_MODE_SEND:
mail = GetMailatIndex(GetFirstIndexofMailType(WONDER_MAIL_TYPE_THANK_YOU));
if(mail->item.id != ITEM_NOTHING)
{
SetThankYouMailMenuState(ITEM_EXISTS_ON_THANK_YOU_MAIL);
}
else
{
SetThankYouMailMenuState(PROMPT_REWARD_ITEM_TO_SEND);
}
break;
default:
if(sUnknown_203B2C4->wonderMailMethod == WONDER_MAIL_PASSWORD)
{
SetThankYouMailMenuState(PROMPT_THANK_YOU_PASSWORD);
}
else
{
SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
}
break;
}
break;
case CANCEL_ACTION:
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
break;
}
}
}
void ReturnToThankYouMailMainMenu(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
}
}
void sub_802AAC8(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(EXIT_THANK_YOU_MAIL);
}
}
void HandleThankYouMailPelipperMainMenu(void)
{
s32 menuAction;
if(sub_80144A4(&menuAction) == 0)
{
switch(menuAction)
{
case SEND_THANK_YOU_MAIL_ACTION:
sUnknown_203B2C4->unk40 = 6;
sUnknown_203B2C4->wonderMailMode = WONDER_MAIL_MODE_SEND;
if(CountMailType(5) == 0)
{
SetThankYouMailMenuState(NO_THANK_YOU_MAIL);
}
else
{
SetThankYouMailMenuState(PROMPT_THANK_YOU_TO_SEND);
}
break;
case GET_THANK_YOU_MAIL_ACTION:
sUnknown_203B2C4->unk40 = 7;
sUnknown_203B2C4->wonderMailMode = WONDER_MAIL_MODE_RECEIVE;
SetThankYouMailMenuState(SELECT_THANK_YOU_MAIL_COMMS);
break;
case CANCEL_ACTION:
SetThankYouMailMenuState(2);
break;
}
}
}
void sub_802AB60(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(0x22);
}
}
void sub_802AB7C(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetThankYouMailMenuState(0x22);
}
}
void sub_802AB98(void)
{
const char *monName;
switch(sub_802F298())
{
case 3:
sub_802F2C0();
CopyYellowMonsterNametoBuffer(gSpeakerNameBuffer, MONSTER_PELIPPER);
monName = GetMonSpecies(MONSTER_PELIPPER);
strcpy(gFormatBuffer_Monsters[0], monName);
DeleteMailAtIndex(GetMailIndex(6, sUnknown_203B2C4->unk430));
SetThankYouMailMenuState(0x24);
break;
default:
break;
}
}
void nullsub_131(void)
{
}
void UpdateThankYouMailText(void)
{
u8 itemIndex;
char *monName;
u8 buffer1 [80];
u8 buffer2 [80];
u8 mailIndex;
Pokemon *pokeStruct;
Pokemon *pokeStruct2;
s32 linkStatus;
unkStruct_203B480 *mail;
switch(sUnknown_203B2C4->state) {
case 5:
pokeStruct = GetPlayerPokemonStruct();
StrncpyCustom(buffer1,pokeStruct->name, POKEMON_NAME_LENGTH);
sprintfStatic(sUnknown_203B2C4->formattedString,gUnknown_80DF250,buffer1);
CreateDialogueBoxAndPortrait(sUnknown_203B2C4->formattedString,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case 0xe:
// Is it OK to send this Thank-You Mail?
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF304,0,7,gUnknown_80DEE60,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case PROMPT_THANK_YOU_TO_SEND:
// Please choose the Thank-You Mail that you want to send to your friend
CreateDialogueBoxAndPortrait(gUnknown_80DF330,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case 0x10:
if (sub_8030894() != 0)
break;
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
sub_80306A8(WONDER_MAIL_TYPE_THANK_YOU,0,0,6);
break;
case 0x11:
RestoreSavedWindows(&sUnknown_203B2C4->unk35C);
SetMenuItems(sUnknown_203B2C4->unk21C,&sUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,TRUE,0,FALSE);
sub_803092C();
sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE);
break;
case 0x13:
if (sub_801D008() != NULL)
break;
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
{
DungeonPos local_x = {3, 2};
sub_801C8C4(0, 1, &local_x, 9);
}
break;
case 0x14:
RestoreSavedWindows(&sUnknown_203B2C4->unk35C);
SetMenuItems(sUnknown_203B2C4->unk21C,&sUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,TRUE,0,FALSE);
sub_801CCD8();
sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE);
break;
case THANK_YOU_MAIL_COMMS_FINISHED:
sUnknown_203B2C4->linkError = COMMS_GOOD;
StopBGMResetSoundEffectCounters();
linkStatus = sub_8037B28(sUnknown_203B2C4->unk40);
sUnknown_203B2C4->linkError = linkStatus;
if (linkStatus == COMMS_GOOD)
{
switch(sUnknown_203B2C4->unk40)
{
case 6:
MemoryFill8(&sUnknown_203B2C4->unk1B8,0, sizeof(unkStruct_203B480));
sUnknown_203B2C4->unk1B8 = *GetMailatIndex(sUnknown_203B2C4->mailIndex);
sUnknown_203B2C4->linkError = sub_8037D64(sUnknown_203B2C4->unk40,&sUnknown_203B2C4->unk1B8,&sUnknown_203B2C4->unk1E8);
break;
case 7:
MemoryFill8(&sUnknown_203B2C4->unk1B8,0, sizeof(unkStruct_203B480));
MemoryFill8(&sUnknown_203B2C4->unk1E8,0, sizeof(unkStruct_203B480));
sUnknown_203B2C4->linkError = sub_8037D64(sUnknown_203B2C4->unk40,&sUnknown_203B2C4->unk1B8,&sUnknown_203B2C4->unk1E8);
break;
}
if (sUnknown_203B2C4->linkError == COMMS_GOOD){
switch(sUnknown_203B2C4->unk40){
case 6:
case 7:
sUnknown_203B2C4->linkError = sub_80381F4(sUnknown_203B2C4->unk40,&sUnknown_203B2C4->unk1B8,&sUnknown_203B2C4->unk1E8);
if ( sub_800D588() != '\0') {
sUnknown_203B2C4->unk430 = sUnknown_203B2C4->unk1E8.unk10.unk10;
}
else {
sUnknown_203B2C4->unk430 = sUnknown_203B2C4->unk1B8.unk10.unk10;
}
break;
}
}
}
StartBGMusic();
break;
case PROMPT_THANK_YOU_PASSWORD:
// OK. Please enter the Thank-You Mail Password
CreateDialogueBoxAndPortrait(gUnknown_80DF380,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case PROCESS_THANK_YOU_PASSWORD:
RestoreSavedWindows(&sUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
NamingScreen_Init(4,sUnknown_203B2C4->passwordBuffer);
break;
case 0x1a:
RestoreSavedWindows(&sUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
ShowWindows(NULL, TRUE, TRUE);
sub_8031D70(sUnknown_203B2C4->mailIndex,0);
break;
case 0x1b:
// Please give this password to the friend that rescued your team. I also must save your adventure
CreateDialogueBoxAndPortrait(gUnknown_80DF3B4,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case DISPLAY_THANK_YOU_PASSWORD:
// Ok. Here is your Thank You Mail Password
CreateDialogueBoxAndPortrait(gUnknown_80DF418,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case 0x24:
// I need to save your adventure
CreateDialogueBoxAndPortrait(gUnknown_80DF44C,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case 0x20:
// There we go. I'm all done.
CreateDialogueBoxAndPortrait(gUnknown_80DF46C,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case THANK_YOU_PASSWORD_SUCCESS:
switch(sUnknown_203B2C4->wonderMailMethod)
{
case WONDER_MAIL_GAME_LINK:
case WONDER_MAIL_PASSWORD:
case 6:
// A Thank You Mail has arrived from your friend
CreateDialogueBoxAndPortrait(gUnknown_80DF4F4,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case 4:
break;
}
break;
case 0x22:
monName = GetMonSpecies(MONSTER_PELIPPER);
strcpy(sUnknown_203B2C4->unk53C.clientName,monName); // 0x53C
sUnknown_203B2C4->unk53C.clientSpecies = MONSTER_PELIPPER; // 0x550
sUnknown_203B2C4->unk53C.rewardType = 2; // 0x552
sUnknown_203B2C4->unk53C.moneyReward = 0; // 0x554
mailIndex = GetMailIndex(6,sUnknown_203B2C4->unk430);
mail = GetMailatIndex(mailIndex);
itemIndex = mail->item.id;
if (itemIndex != ITEM_NOTHING)
sUnknown_203B2C4->unk53C.itemRewards[0] = itemIndex; // unk558
else
sUnknown_203B2C4->unk53C.itemRewards[0] = ITEM_NOTHING; // unk558
sUnknown_203B2C4->unk53C.quantity = 1; // unk55B
sUnknown_203B2C4->unk53C.teamRankPtsReward = GetDungeonTeamRankPts(&mail->dungeonSeed.location, 0); // unk560
sUnknown_203B2C4->unk53C.itemRewards[1] = 0; // unk559
sUnknown_203B2C4->unk53C.itemRewards[2] = 0; // unk55A
sUnknown_203B2C4->unk53C.friendAreaReward = 0; // unk55C
sub_802F204(&sUnknown_203B2C4->unk53C,0); // unk53C
break;
case COMMUNICATING_THANK_YOU_MAIL:
// Communicating..
nullsub_23(FALSE);
CreateDialogueBoxAndPortrait(gUnknown_80DF544,0,0,0);
break;
case 0x17:
// There. I've sent your thank-you mail. I need to save your adventure.
CreateDialogueBoxAndPortrait(gUnknown_80DF594,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case PROMPT_CONNECT_GAME_LINK:
// Please connect the GBA systems with a Game Link Cable
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF5E4,0,7,gUnknown_80DEE44,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case THANK_YOU_MAIL_COMMS_CLEANUP:
pokeStruct2 = GetPlayerPokemonStruct();
StrncpyCustom(buffer2, pokeStruct2->name, POKEMON_NAME_LENGTH);
sprintfStatic(sUnknown_203B2C4->formattedString,gUnknown_80DF63C,buffer2);
CreateDialogueBoxAndPortrait(sUnknown_203B2C4->formattedString,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case CONFIRM_ITEM_TO_SEND:
// The item you've chosen can't be exchanged later. Is that OK?
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF694,0,7,gUnknown_80DEEE4,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case 0x29:
// I need to save your adventure
CreateDialogueBoxAndPortrait(gUnknown_80DF44C,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case 0x2a:
// I've saved your adventure
CreateDialogueBoxAndPortrait(gUnknown_80DF6F0,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case PROMPT_ITEM_TO_SEND:
// Ok, please choose the item to be sent
CreateDialogueBoxAndPortrait(gUnknown_80DF710,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case THANK_YOU_MAIL_STORAGE_EMPTY:
// Oh? Your storage space is empty
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF73C,0,0,gUnknown_80DEEBC,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case PROMPT_REWARD_ITEM_TO_SEND:
// Would you like to choose a reward item from storage and send it with your mail?
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF77C,0,0,gUnknown_80DEE7C,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case ITEM_EXISTS_ON_THANK_YOU_MAIL:
// Oh? You've already attached a reward item on this mail.
CreateDialogueBoxAndPortrait(gUnknown_80DF7D4,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case PROMPT_RESEND_WITH_ATTACHED_ITEM:
// Would you like to send it again with the item you chose before?
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF870,0,7,gUnknown_80DEE44,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case NO_THANK_YOU_MAIL:
// You don't seem to have a Thank-You Mail
CreateDialogueBoxAndPortrait(gUnknown_80DF8B4,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case THANK_YOU_MAIL_MAIN_MENU:
// Hello. I handle Thank You Mail. How may I help You?
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF8EC,0,1,gThankYouMailMainMenuItems,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case ANYTHING_ELSE_THANK_YOU_MAIN_MENU:
// May I help you with anything else?
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF928,0,1,gThankYouMailMainMenuItems,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case EXIT_THANK_YOU_MAIL_PRE:
// Please come see me anytime
CreateDialogueBoxAndPortrait(gUnknown_80DF94C,0,&sUnknown_203B2C4->monPortrait,0x10d);
break;
case SELECT_THANK_YOU_MAIL_COMMS:
switch(sUnknown_203B2C4->wonderMailMode){
case WONDER_MAIL_MODE_SEND:
// How would you like to send your thank you mail?
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF96C,0,3,gUnknown_80DEE08,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
case WONDER_MAIL_MODE_RECEIVE:
// How would you like to recieve your friend's thank you mail?
CreateMenuDialogueBoxAndPortrait(gUnknown_80DF9A4,0,3,gUnknown_80DEE08,0,4,0,&sUnknown_203B2C4->monPortrait,0xc);
break;
}
break;
}
}
void SetThankYouMailMenuState(u32 newState)
{
sUnknown_203B2C4->state = newState;
nullsub_131();
UpdateThankYouMailText();
}