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

Function KillItem

TombEngine/Game/items.cpp:292–372  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

290}
291
292void KillItem(short const itemNumber)
293{
294 if (itemNumber < 0 || itemNumber >= g_Level.Items.size())
295 {
296 TENLog(fmt::format("Attempted to moveable item with invalid index {}.", itemNumber), LogLevel::Error);
297 return;
298 }
299
300 if (InItemControlLoop)
301 {
302 ItemNewRooms[2 * ItemNewRoomNo] = itemNumber | 0x8000;
303 ItemNewRoomNo++;
304 }
305 else// if (NextItemActive != NO_VALUE)
306 {
307 auto* item = &g_Level.Items[itemNumber];
308
309 DetatchSpark(itemNumber, SP_ITEM);
310 item->Active = false;
311
312 if (NextItemActive == itemNumber)
313 {
314 NextItemActive = item->NextActive;
315 }
316 else
317 {
318 short linkNumber;
319 for (linkNumber = NextItemActive; linkNumber != NO_VALUE; linkNumber = g_Level.Items[linkNumber].NextActive)
320 {
321 if (g_Level.Items[linkNumber].NextActive == itemNumber)
322 {
323 g_Level.Items[linkNumber].NextActive = item->NextActive;
324 break;
325 }
326 }
327 }
328
329 if (item->RoomNumber != NO_VALUE)
330 {
331 if (g_Level.Rooms[item->RoomNumber].itemNumber == itemNumber)
332 {
333 g_Level.Rooms[item->RoomNumber].itemNumber = item->NextItem;
334 }
335 else
336 {
337 short linkNumber;
338 for (linkNumber = g_Level.Rooms[item->RoomNumber].itemNumber; linkNumber != NO_VALUE; linkNumber = g_Level.Items[linkNumber].NextItem)
339 {
340 if (g_Level.Items[linkNumber].NextItem == itemNumber)
341 {
342 g_Level.Items[linkNumber].NextItem = item->NextItem;
343 break;
344 }
345 }
346 }
347 }
348
349 if (item == Lara.TargetEntity)

Callers 15

SmallSpiderControlFunction · 0.85
ControlBartoliFunction · 0.85
SyncDragonBackSegmentFunction · 0.85
ControlDragonFunction · 0.85
ControlTrainFunction · 0.85
ControlTwinAutoGunFunction · 0.85
ControlCentaurFunction · 0.85
GiantMutantControlFunction · 0.85
ControlDartFunction · 0.85
FallingBlockControlFunction · 0.85
EarthquakeControlFunction · 0.85

Calls 7

TENLogFunction · 0.85
DetatchSparkFunction · 0.85
GameScriptHandleKilledFunction · 0.85
IsBridgeMethod · 0.80
formatFunction · 0.50
sizeMethod · 0.45
DisableMethod · 0.45

Tested by

no test coverage detected