MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / InitializeBaddy

Function InitializeBaddy

TombEngine/Objects/TR4/Entity/tr4_baddy.cpp:211–311  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

209 };
210
211 void InitializeBaddy(short itemNumber)
212 {
213 auto* item = &g_Level.Items[itemNumber];
214
215 InitializeCreature(itemNumber);
216
217 short objectNumber = (Objects[ID_BADDY2].loaded ? ID_BADDY2 : ID_BADDY1);
218
219 if (item->ObjectNumber == ID_BADDY1)
220 {
221 item->SetMeshSwapFlags(MESHSWAPFLAGS_BADDY_GUN);
222 item->MeshBits = 0xFF81FFFF;
223 item->ItemFlags[2] = BADDY_UZI_AMMO;
224 }
225 else
226 {
227 item->SetMeshSwapFlags(MESHSWAPFLAGS_BADDY_SWORD_NINJA);
228 item->MeshBits = ALL_JOINT_BITS;
229 item->ItemFlags[2] = 0;
230 }
231
232 item->ItemFlags[1] = NO_VALUE;
233
234 short ocb = item->TriggerFlags % 1000;
235
236 // To the same things of OCB 1, 2, 3, 4 but also drawing uzis
237 if (ocb > 9 && ocb < 20)
238 {
239 item->ItemFlags[2] += BADDY_UZI_AMMO;
240 item->TriggerFlags -= 10;
241 ocb -= 10;
242 }
243
244 if (!ocb || ocb > 4 && ocb < 7)
245 {
246 item->Animation.AnimNumber = BADDY_ANIM_STAND_IDLE;
247 item->Animation.FrameNumber = 0;
248 item->Animation.TargetState = BADDY_STATE_IDLE;
249 item->Animation.ActiveState = BADDY_STATE_IDLE;
250 return;
251 }
252
253 // OCB: roll right
254 if (ocb == 1)
255 {
256 item->Animation.AnimNumber = BADDY_ANIM_STAND_TO_JUMP_RIGHT;
257 item->Animation.FrameNumber = 0;
258 item->Animation.TargetState = BADDY_STATE_JUMP_RIGHT;
259 item->Animation.ActiveState = BADDY_STATE_JUMP_RIGHT;
260 item->ItemFlags[4] = 1;
261 return;
262 }
263
264 // OCB: roll left
265 if (ocb == 2)
266 {
267 item->Animation.AnimNumber = BADDY_ANIM_STAND_TO_ROLL_LEFT;
268 item->Animation.FrameNumber = 0;

Callers

nothing calls this directly

Calls 4

InitializeCreatureFunction · 0.85
phd_sinFunction · 0.85
phd_cosFunction · 0.85
SetMeshSwapFlagsMethod · 0.80

Tested by

no test coverage detected