summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2025-12-01 16:33:12 -0500
committerGitHub <noreply@github.com>2025-12-01 13:33:12 -0800
commit1e2d9151a0ba815d9ebe11dcc0a66d037fb41449 (patch)
tree70a3d7e5b758f302c0ac9126fc57533516e7a2bb /src/d
parent03efb3f79a551172b1e724eff26d8c8116f96ca5 (diff)
d_a_tag_kmsg OK (#2901)
Diffstat (limited to 'src/d')
-rw-r--r--src/d/actor/d_a_tag_kmsg.cpp51
1 files changed, 30 insertions, 21 deletions
diff --git a/src/d/actor/d_a_tag_kmsg.cpp b/src/d/actor/d_a_tag_kmsg.cpp
index f1b81cd1d4..2737dc370f 100644
--- a/src/d/actor/d_a_tag_kmsg.cpp
+++ b/src/d/actor/d_a_tag_kmsg.cpp
@@ -24,12 +24,14 @@ static char* l_resNameList[3] = {
};
int daTag_KMsg_c::create() {
- attention_info.position = current.pos;
- eyePos = attention_info.position;
+ int r27 = 0;
+
+ eyePos = attention_info.position = current.pos;
+
fopAcM_ct(this, daTag_KMsg_c);
- int rv;
+
if (getType() == KMSG_TYPE_3) {
- rv = dComIfG_resLoad(&mPhase, "Lv6Gate");
+ int rv = dComIfG_resLoad(&mPhase, "Lv6Gate");
if (rv != cPhs_COMPLEATE_e) {
return rv;
}
@@ -40,6 +42,22 @@ int daTag_KMsg_c::create() {
mFlowNodeNo = getFlowNodeNo();
mEventIdx = -1;
+ OS_REPORT(
+ "\t(%s:%d) flowNo:%d, BitSW:%02x, dis:%d, angle:%d, eye:%f, attn:%f, scale:%f,%f,%f<%08x>(%d/%04x)\n",
+ fopAcM_getProcNameString(this),
+ getType(),
+ getFlowNodeNo(),
+ getBitSW(),
+ getTalkDis(),
+ getTalkAngle(),
+ getEyePosOffset(),
+ getAttnPosOffset(),
+ scale.x, scale.y, scale.z,
+ fopAcM_GetParam(this),
+ getChkType(),
+ home.angle.x
+ );
+
if (isDelete()) {
return cPhs_ERROR_e;
} else {
@@ -49,12 +67,11 @@ int daTag_KMsg_c::create() {
int daTag_KMsg_c::Delete() {
OS_REPORT("|%06d:%x|daTag_KMsg_c -> Delete\n", g_Counter.mCounter0, this);
- fopAcM_GetID(this);
+ fopAcM_RegisterDeleteID(this, "TAG_KMSG");
this->~daTag_KMsg_c();
return 1;
}
-// NONMATCHING Various issues: stack, getTalkAngle
int daTag_KMsg_c::Execute() {
bool var_r28 = false;
if (home.roomNo == dComIfGp_roomControl_getStayNo()) {
@@ -70,11 +87,7 @@ int daTag_KMsg_c::Execute() {
attention_info.flags = 0;
}
} else {
-#if VERSION == VERSION_SHIELD_DEBUG
attention_info.distances[fopAc_attn_TALK_e] = daNpcT_getDistTableIdx(getTalkDis(), getTalkAngle());
-#else
- attention_info.distances[fopAc_attn_TALK_e] = daNpcT_getDistTableIdx(getTalkAngle(), getTalkDis());
-#endif
attention_info.distances[fopAc_attn_SPEAK_e] = attention_info.distances[fopAc_attn_TALK_e];
if (getAttnPosOffset() != G_CM3D_F_INF) {
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
@@ -88,7 +101,9 @@ int daTag_KMsg_c::Execute() {
attention_info.flags = 0;
}
- if (dComIfGp_event_runCheck()) {
+ // TODO: gameInfo fake match to force reuse of pointer
+ dComIfG_play_c* play = &g_dComIfG_gameInfo.play;
+ if (play->getEvent().runCheck()) {
if (eventInfo.checkCommandTalk()) {
u16 iVar10 = 0;
switch (getType()) {
@@ -104,7 +119,7 @@ int daTag_KMsg_c::Execute() {
}
mEventIdx =
dComIfGp_getEventManager().getEventIdx(this, l_evtList[iVar10].mEventName, 0xff);
- dComIfGp_getEvent().reset(this);
+ play->getEvent().reset(this);
fopAcM_orderChangeEventId(this, mEventIdx, 1, 0xffff);
}
@@ -146,7 +161,7 @@ int daTag_KMsg_c::Execute() {
} else {
eventInfo.onCondition(1);
if (getType() != KMSG_TYPE_1 && daNpcT_chkDoBtnIsSpeak(this)) {
- if (getChkType() != KMSG_TYPE_0) {
+ if (getChkType()) {
dComIfGp_setDoStatusForce(0x80, 2);
} else {
dComIfGp_setDoStatus(8, 0);
@@ -193,9 +208,7 @@ int daTag_KMsg_c::Execute() {
lin_chk.OnFrontFlag();
lin_chk.Set(&vec54, &vec60, NULL);
if (dComIfG_Bgsp().LineCross(&lin_chk)) {
- cXyz vec48;
- cXyz vec30 = vec54 - vec60;
- vec48 = lin_chk.GetCross() + vec30.norm() * 10.0f;
+ cXyz vec48 = lin_chk.GetCross() + cXyz(vec54 - vec60).norm() * 10.0f;
attention_info.position.x = vec48.x;
attention_info.position.z = vec48.z;
}
@@ -220,11 +233,7 @@ int daTag_KMsg_c::isDelete() {
case KMSG_TYPE_2:
return 0;
case KMSG_TYPE_3:
- bool rv = false;
- if (getBitSW() != 0xff && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) {
- rv = true;
- }
- return rv;
+ return getBitSW() != 0xff && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this));
case KMSG_TYPE_4:
return 0;
case KMSG_TYPE_5: