Jump to content

AR0333 Guard Barracks


Smoketest

Recommended Posts

As specified in the title, AR0333 has its exits and transition triggers reversed.

 

You leave AR0332 by a northeastern exit, but appear on the northeastern side of AR0333. If you try to leave AR0333 by the southwestern doorway, you'll end up outside. One could try to justify this by the odd layout of the building in the Docks District, but for that matter the rooms are rotated 90 degrees so it still doesn't quite fit. I went for the optical fix.

 

I left the structures alone and switched the names as well as the target areas in each transition. This allows me to leave AR0332 by the NE doorway and arrive in AR0333 by the SW doorway. I can then go back outside by taking the NE doorway in AR0333, or I can return to AR0332 (NE side) by taking the SW doorway of AR0333.

 

Again, this may or may not be viewed as a bug. The transitions certainly work, but it made me think I was in Watcher's Keep again.

Link to comment

If they were simply off by a minor rotation instead of completely reversed, I might think otherwise--but this is definitely a bug.

 

// ar0333.are entry/exit points are reversed; undoing the Escher architecture
COPY_EXISTING ~ar0333.are~ ~override~
 READ_SHORT 0x5a "info_num"
 READ_LONG  0x5c "info_off"
 READ_LONG 0x68 "enter_off"
 READ_LONG 0x6c "enter_num"
 FOR (index = 0; index < info_num; index = index + 1) BEGIN // swap transition (exit) points
READ_ASCII ("%info_off%" + 0x38 + (0xc4 * "%index%")) "area"
PATCH_IF ("ar0300" STRING_COMPARE_CASE "%area%" = 0) BEGIN
  WRITE_ASCII ("%info_off%" +		(0xc4 * "%index%")) "Tran0332" #32 // transition point name
  WRITE_ASCII ("%info_off%" + 0x38 + (0xc4 * "%index%")) "ar0332" #8	// destination area
  WRITE_ASCII ("%info_off%" + 0x40 + (0xc4 * "%index%")) "Exit0333" #8  //  exit point
END ELSE
PATCH_IF ("ar0332" STRING_COMPARE_CASE "%area%" = 0) BEGIN
  WRITE_ASCII ("%info_off%" +		(0xc4 * "%index%")) "Tran0300" #32 // transition point name
  WRITE_ASCII ("%info_off%" + 0x38 + (0xc4 * "%index%")) "ar0300" #8	// destination area
  WRITE_ASCII ("%info_off%" + 0x40 + (0xc4 * "%index%")) "Exit0333" #8  //  exit point
END
 END
 FOR (index = 0; index < enter_num; index = index + 1) BEGIN // swap entry points
READ_ASCII ("%enter_off%" +		("%index%" * 0x68)) "name"
PATCH_IF ("%name%" STRING_COMPARE_CASE "Exit0300" = 0) BEGIN
  WRITE_ASCII ("%enter_off%" +		("%index%" * 0x68)) "Exit0332"
END ELSE
PATCH_IF ("%name%" STRING_COMPARE_CASE "Exit0332" = 0) BEGIN
  WRITE_ASCII ("%enter_off%" +		("%index%" * 0x68)) "Exit0300"
END 
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...