diff --git a/TombEngine/Objects/Generic/puzzles_keys.cpp b/TombEngine/Objects/Generic/puzzles_keys.cpp index 0a833ae81..47c12cb43 100644 --- a/TombEngine/Objects/Generic/puzzles_keys.cpp +++ b/TombEngine/Objects/Generic/puzzles_keys.cpp @@ -230,6 +230,10 @@ void PuzzleDoneCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* co // NOTE: Only execute code below if Triggertype is switch trigger. auto triggerIndex = GetTriggerIndex(&receptacleItem); + + if (triggerIndex == 0) + return; + int triggerType = (*(triggerIndex++) >> 8) & 0x3F; if (triggerType != TRIGGER_TYPES::SWITCH) @@ -326,6 +330,10 @@ void PuzzleDoneCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* co void PuzzleDone(ItemInfo* item, short itemNumber) { auto triggerIndex = GetTriggerIndex(item); + + if (triggerIndex == 0) + return; + short triggerType = (*(triggerIndex++) >> 8) & 0x3F; if (triggerType == TRIGGER_TYPES::SWITCH) @@ -437,6 +445,10 @@ void KeyHoleCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll) auto* player = GetLaraInfo(laraItem); short* triggerIndexPtr = GetTriggerIndex(keyHoleItem); + + if (triggerIndexPtr == 0) + return; + short triggerType = (*(triggerIndexPtr++) >> 8) & 0x3F; bool isActionReady = (IsHeld(In::Action) || g_Gui.GetInventoryItemChosen() != NO_ITEM);