Fix Trigger Triggerer (#1565)

* Fix

* Update CHANGELOG.md

* Update trigger.cpp

---------

Co-authored-by: Stranger1992 <84292688+Stranger1992@users.noreply.github.com>
This commit is contained in:
TrainWrack 2025-02-06 02:09:53 -05:00 committed by GitHub
parent 8316062e3a
commit 89d5b74298
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 1 deletions

View file

@ -6,6 +6,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
## [Version 1.7.X] (link to release) - yyyy-mm-dd
### Bug fixes
* Fixed Trigger_Triggerer not working.
* Fixed display pickup numeric string not being interpolated in high framerate mode.
* Fixed two block platform room portal traversal failing in some cases.
* Fixed incorrect handling of dynamic light shadows.

View file

@ -429,6 +429,10 @@ void TestTriggers(int x, int y, int z, FloorInfo* floor, Activator activator, bo
if (!data)
return;
// Don't process legacy triggers if Triggerer flag was used in editor and Trigger_Triggerer wasn't activated or used.
if (floor->Flags.MarkTriggerer && !floor->Flags.MarkTriggererActive)
return;
short triggerType = (*(data++) >> 8) & TRIGGER_BITS;
short flags = *(data++);
short timer = flags & TIMER_BITS;
@ -842,6 +846,10 @@ void TestTriggers(ItemInfo* item, bool isHeavy, int heavyFlags)
short roomNumber = item->RoomNumber;
auto floor = GetFloor(item->Pose.Position.x, item->Pose.Position.y, item->Pose.Position.z, &roomNumber);
// Don't process legacy triggers if Triggerer flag was used in editor and Trigger_Triggerer wasn't activated or used.
if (floor->Flags.MarkTriggerer && !floor->Flags.MarkTriggererActive)
return;
TestTriggers(item->Pose.Position.x, item->Pose.Position.y, item->Pose.Position.z, floor, (Activator)short(item->Index), isHeavy, heavyFlags);
}
@ -850,7 +858,7 @@ void TestTriggers(int x, int y, int z, short roomNumber, bool heavy, int heavyFl
auto roomNum = roomNumber;
auto floor = GetFloor(x, y, z, &roomNum);
// Don't process legacy triggers if trigger triggerer wasn't used
// Don't process legacy triggers if Triggerer flag was used in editor and Trigger_Triggerer wasn't activated or used.
if (floor->Flags.MarkTriggerer && !floor->Flags.MarkTriggererActive)
return;