mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-04-28 12:47:58 +03:00
room: test sector range for Torso boss (#1497)
This provides an option to test a range of sectors around the one on which a large and heavy item dies. It ultimately resolves the potential softlock when killing Torso boss in Great Pyramid. Resolves #1236.
This commit is contained in:
parent
858f13dab1
commit
c4de1a2daf
3 changed files with 29 additions and 2 deletions
|
@ -14,6 +14,7 @@
|
|||
- fixed `/tp` console command reporting teleport fails as success (#1484, regression from 4.1)
|
||||
- fixed console commands causing improper ring shutdown with selected inventory item (#1460, regression from 3.0)
|
||||
- fixed console input immediately ending demo (#1480, regression from 4.1)
|
||||
- fixed a potential softlock when killing the Torso boss in Great Pyramid (#1236)
|
||||
- changed `/tp` console command to look for the closest place to teleport to when targeting items (#1484)
|
||||
- improved appearance of textures around edges when bilinear filter is off (#1483)
|
||||
Since this removes the seams on pushblocks, this was made optional.
|
||||
|
|
|
@ -516,6 +516,7 @@ Not all options are turned on by default. Refer to `TR1X_ConfigTool.exe` for det
|
|||
- fixed looking forward too far causing an upside down camera frame
|
||||
- fixed the Scion being extremely difficult to shoot with the shotgun
|
||||
- fixed collision issues with drawbridges, trapdoors, and bridges when stacked over each other, over slopes, and near the ground
|
||||
- fixed a potential softlock when killing the Torso boss in Great Pyramid
|
||||
|
||||
#### Cheats
|
||||
- added a fly cheat
|
||||
|
|
|
@ -40,6 +40,8 @@ static int16_t Room_GetCeilingTiltHeight(
|
|||
const SECTOR_INFO *sector, const int32_t x, const int32_t z);
|
||||
static SECTOR_INFO *Room_GetSkySector(
|
||||
const SECTOR_INFO *sector, int32_t x, int32_t z);
|
||||
static void Room_TestSectorTrigger(
|
||||
const ITEM_INFO *item, const SECTOR_INFO *sector);
|
||||
|
||||
static void Room_TriggerMusicTrack(int16_t track, const TRIGGER *const trigger)
|
||||
{
|
||||
|
@ -736,11 +738,34 @@ void Room_PopulateSectorData(
|
|||
|
||||
void Room_TestTriggers(const ITEM_INFO *const item)
|
||||
{
|
||||
const bool is_heavy = item->object_id != O_LARA;
|
||||
int16_t room_num = item->room_num;
|
||||
const SECTOR_INFO *const sector =
|
||||
const SECTOR_INFO *sector =
|
||||
Room_GetSector(item->pos.x, MAX_HEIGHT, item->pos.z, &room_num);
|
||||
|
||||
Room_TestSectorTrigger(item, sector);
|
||||
if (item->object_id != O_TORSO) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int32_t dx = -1; dx < 2; dx++) {
|
||||
for (int32_t dz = -1; dz < 2; dz++) {
|
||||
if (!dx && !dz) {
|
||||
continue;
|
||||
}
|
||||
|
||||
room_num = item->room_num;
|
||||
sector = Room_GetSector(
|
||||
item->pos.x + dx * WALL_L, MAX_HEIGHT,
|
||||
item->pos.z + dz * WALL_L, &room_num);
|
||||
Room_TestSectorTrigger(item, sector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Room_TestSectorTrigger(
|
||||
const ITEM_INFO *const item, const SECTOR_INFO *const sector)
|
||||
{
|
||||
const bool is_heavy = item->object_id != O_LARA;
|
||||
if (!is_heavy && sector->is_death_sector && Lava_TestFloor(item)) {
|
||||
Lava_Burn(g_LaraItem);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue