summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2023-12-06 15:53:57 -0500
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2023-12-06 15:53:57 -0500
commit0131e5ff523ceaaf6febcf30d86f7ea00f475cdd (patch)
treee79c1385b5172e1a1d680e83394f605e2354cca6 /src/d
parent56a37d2594701d37d220fe6d4927d61f4abb3419 (diff)
d_a_npc_md work
Diffstat (limited to 'src/d')
-rw-r--r--src/d/actor/d_a_npc_md.cpp256
1 files changed, 254 insertions, 2 deletions
diff --git a/src/d/actor/d_a_npc_md.cpp b/src/d/actor/d_a_npc_md.cpp
index e1deb02c..7dcf065d 100644
--- a/src/d/actor/d_a_npc_md.cpp
+++ b/src/d/actor/d_a_npc_md.cpp
@@ -1688,8 +1688,260 @@ bool daNpc_Md_c::checkCommandTalk() {
}
/* 0000DCB0-0000E410 .text next_msgStatus__10daNpc_Md_cFPUl */
-void daNpc_Md_c::next_msgStatus(u32*) {
- /* Nonmatching */
+u16 daNpc_Md_c::next_msgStatus(u32* pCurrMsgNo) {
+ u16 msgStatus = dNpcMsgStts_MSG_CONTINUES_e;
+ switch (*pCurrMsgNo) {
+ case 0x5AC:
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x17D5:
+ case 0x1805:
+ *pCurrMsgNo = 0x17D6;
+ break;
+ case 0x17D6:
+ *pCurrMsgNo = 0x17D7;
+ break;
+ case 0x17D7:
+ *pCurrMsgNo = 0x17D8;
+ break;
+ case 0x17D8:
+ mCurEventMode = 4;
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x17D9:
+ *pCurrMsgNo = 0x1802;
+ break;
+ case 0x1802:
+ *pCurrMsgNo = 0x17DA;
+ break;
+ case 0x17DA:
+ *pCurrMsgNo = 0x17DB;
+ break;
+ case 0x17DB:
+ dComIfGs_onEventBit(0x0E02);
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x17DD:
+ *pCurrMsgNo = 0x17DE;
+ break;
+ case 0x17DE:
+ mCurEventMode = 5;
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x17DF:
+ *pCurrMsgNo = 0x17E0;
+ break;
+ case 0x17E0:
+ *pCurrMsgNo = 0x17E1;
+ break;
+ case 0x17E1:
+ *pCurrMsgNo = 0x17E2;
+ break;
+ case 0x17E2:
+ *pCurrMsgNo = 0x17E3;
+ break;
+ case 0x17E4:
+ dComIfGs_onEventBit(0x1101);
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x17E5:
+ dComIfGs_onEventBit(0x1280);
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x17E6:
+ *pCurrMsgNo = 0x17E7;
+ break;
+ case 0x17E7:
+ *pCurrMsgNo = 0x17E8;
+ break;
+ case 0x17E8:
+ *pCurrMsgNo = 0x17E9;
+ break;
+ case 0x17E9:
+ *pCurrMsgNo = 0x17EA;
+ break;
+ case 0x17EA:
+ *pCurrMsgNo = 0x17EB;
+ break;
+ case 0x17EB:
+ *pCurrMsgNo = 0x17EC;
+ break;
+ case 0x17EC:
+ *pCurrMsgNo = 0x17ED;
+ break;
+ case 0x17ED:
+ *pCurrMsgNo = 0x17EE;
+ break;
+ case 0x17EE:
+ if (l_msg->mSelectedChoiceIdx == 1) {
+ *pCurrMsgNo = 0x17EF;
+ } else {
+ *pCurrMsgNo = 0x17F0;
+ }
+ break;
+ case 0x17EF:
+ *pCurrMsgNo = 0x17ED;
+ break;
+ case 0x17F0:
+ *pCurrMsgNo = 0x17F1;
+ break;
+ case 0x17F1:
+ mCurEventMode = 7;
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x17F3:
+ *pCurrMsgNo = 0x17F4;
+ break;
+ case 0x17F4:
+ dComIfGs_onEventBit(0x1104);
+ // Fall-through
+ case 0x17F8:
+ cLib_onBit(m30F0, 0x40UL);
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x17F7:
+ *pCurrMsgNo = 0x17F8;
+ break;
+ case 0x17FA:
+ *pCurrMsgNo = 0x17FB;
+ break;
+ case 0x17FB:
+ *pCurrMsgNo = 0x17FC;
+ break;
+ case 0x17FC:
+ *pCurrMsgNo = 0x17FD;
+ break;
+ case 0x17FD:
+ *pCurrMsgNo = 0x17FE;
+ break;
+ case 0x17FE:
+ *pCurrMsgNo = 0x17FF;
+ break;
+ case 0x1800:
+ *pCurrMsgNo = 0x1801;
+ break;
+ case 0x1801:
+ dComIfGs_onEventBit(0x1102);
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x19C9:
+ *pCurrMsgNo = 0x19ca;
+ break;
+ case 0x19CA:
+ *pCurrMsgNo = 0x19CB;
+ break;
+ case 0x19CB:
+ *pCurrMsgNo = 0x19CC;
+ break;
+ case 0x19CC:
+ *pCurrMsgNo = 0x19CD;
+ break;
+ case 0x19CD:
+ *pCurrMsgNo = 0x19CE;
+ break;
+ case 0x19CE:
+ *pCurrMsgNo = 0x19CF;
+ break;
+ case 0x19CF:
+ *pCurrMsgNo = 0x19D0;
+ break;
+ case 0x19D0:
+ *pCurrMsgNo = 0x19D1;
+ break;
+ case 0x19D1:
+ dComIfGs_onEventBit(0x1402);
+ onSeaTalk();
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x19D2:
+ *pCurrMsgNo = 0x19D3;
+ break;
+ case 0x19D3:
+ *pCurrMsgNo = 0x19D4;
+ break;
+ case 0x19D4:
+ *pCurrMsgNo = 0x19D5;
+ break;
+ case 0x19D6:
+ *pCurrMsgNo = 0x19D7;
+ break;
+ case 0x19D7:
+ *pCurrMsgNo = 0x19D8;
+ break;
+ case 0x19D8:
+ dComIfGs_onEventBit(0x1504);
+ case 0x19D9:
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x19DA:
+ *pCurrMsgNo = 0x19db;
+ break;
+ case 0x19DD:
+ *pCurrMsgNo = 0x19de;
+ break;
+ case 0x19E0:
+ *pCurrMsgNo = 0x19e1;
+ break;
+ case 0x19E1:
+ *pCurrMsgNo = 0x19e2;
+ break;
+ case 0x19E2:
+ *pCurrMsgNo = 0x19e3;
+ break;
+ case 0x19E3:
+ *pCurrMsgNo = 0x19e4;
+ break;
+ case 0x19E5:
+ *pCurrMsgNo = 0x19e6;
+ break;
+ case 0x19E7:
+ *pCurrMsgNo = 0x19e8;
+ break;
+ case 0x19F6:
+ *pCurrMsgNo = 0x19f7;
+ break;
+ case 0x19F7:
+ *pCurrMsgNo = 0x19d2;
+ break;
+ case 0x19F8:
+ *pCurrMsgNo = 0x19f9;
+ break;
+ case 0x19F9:
+ *pCurrMsgNo = 0x19fa;
+ break;
+ case 0x19FA:
+ *pCurrMsgNo = 0x19fb;
+ break;
+ case 0x19FB:
+ case 0x19FF:
+ dComIfGs_onEventBit(0x2E40);
+ onSeaTalk();
+ // Fall-through
+ case 0x1A01:
+ dComIfGs_onEventBit(0x2C08);
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ case 0x19FC:
+ *pCurrMsgNo = 0x19FD;
+ break;
+ case 0x19FD:
+ *pCurrMsgNo = 0x19FE;
+ break;
+ case 0x19FE:
+ *pCurrMsgNo = 0x19FF;
+ break;
+ case 0x1A00:
+ *pCurrMsgNo = 0x1A01;
+ break;
+ case 0x1A02:
+ dComIfGs_onEventBit(0x3B80);
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ default:
+ msgStatus = dNpcMsgStts_MSG_ENDS_e;
+ break;
+ }
+ return msgStatus;
}
/* 0000E410-0000E64C .text getMsg__10daNpc_Md_cFv */