36 {
39 s32 screenX, screenY, screenZ;
42 f32 reverseAngle;
43 f32 angle;
44 f32* listenerYaw;
45 s32 speakerNpcID;
46 s32 targetNpcID;
47 s32 msgID;
48 s32 animID;
49 s32 ret;
50
51 targetNpc = NULL;
52
53 if (isInitialCall) {
61
65 }
66
67 switch (mode) {
71 break;
74 break;
78 break;
84 break;
85 }
86
90 &screenX, &screenY, &screenZ);
91 script->functionTemp[3] = playerStatus->
anim;
93 script->varTable[15] = playerStatus->
targetYaw;
94 } else {
97 &screenX, &screenY, &screenZ);
98 script->functionTemp[3] = speakerNpc->
curAnim;
99 script->varTable[15] = speakerNpc->
yaw;
100 }
101
105 script->varTablePtr[12] = speakerNpc;
106
109 listenerYaw = &targetNpc->
yaw;
111 } else {
114 }
115
119 speakerNpc->
yaw = angle;
120 *listenerYaw = reverseAngle;
121 break;
123 speakerNpc->
yaw = reverseAngle;
124 *listenerYaw = reverseAngle;
125 break;
127 speakerNpc->
yaw = angle;
128 *listenerYaw = angle;
129 break;
131 speakerNpc->
yaw = reverseAngle;
132 *listenerYaw = angle;
133 break;
135 speakerNpc->
yaw = angle;
136 break;
137 case 5:
138 break;
139 }
140 }
141 }
142
143 speakerNpc = script->varTablePtr[12];
146 animID = script->varTable[13];
147 if (animID != -1) {
149 animID = script->varTable[14];
150 }
152 }
153 } else {
155 if (script->varTable[13] != -1) {
157 playerStatus->
anim = script->varTable[13];
158 } else {
159 playerStatus->
anim = script->varTable[14];
160 }
161 }
162 }
163
166 }
167
169 return TRUE;
170 }
171
173 return FALSE;
174 }
175
176 if (script->varTable[13] != -1) {
179 } else {
180 playerStatus->
anim = script->functionTemp[3];
181 }
182 }
184 speakerNpc->
yaw = script->varTable[0xF];
185 }
186 return TRUE;
187}
@ MSG_STATE_FLAG_SPEAKING
@ SPEECH_FACE_LIKE_LISTENER
@ SPEECH_FACE_SPEAKER_ONLY
@ SPEECH_ORIENTATION_MASK
@ SPEECH_FACE_LIKE_SPEAKER
s32 evt_get_variable(Evt *script, Bytecode var)
void set_npc_animation(Npc *npc, u32 animID)
void msg_printer_set_origin_pos(MessagePrintState *msgPrintState, s32 x, s32 y)
void get_screen_coords(s32 camID, f32 x, f32 y, f32 z, s32 *screenX, s32 *screenY, s32 *screenZ)
void close_message(MessagePrintState *msgPrintState)
MessagePrintState * msg_get_printer_for_msg(s32 msgID, s32 *a1)
Npc * resolve_npc(Evt *script, s32 npcIdOrPtr)
s32 msg_printer_load_msg(s32 msgID, MessagePrintState *printer)
s32 ShowMessageScreenOffsetY
MessagePrintState * gCurrentPrintContext
s32 ShowMessageScreenOffsetX
PlayerStatus gPlayerStatus