Commit 616a3a6 improperly brought in both D1X and D2X copies of the same
loop, but it is a bug for the loop to be run twice. This caused the
game to crash during initialization because the file position was not as
expected and the loader error handling is poor.
SCons rejected building both Windows targets due to conflicting
instructions on how to compile messagebox.c. Restructure the lookup so
that only one set of instructions is issued.
Use it to move the transform_target parameter into the list itself.
Fix the non-OpenGL build, which should have had a transform_target
parameter and did not.
Commit dab702a introduced two undesirable behaviors which can be
mitigated by a heuristic from commit cab78bb and commit 7bed83b. This
heuristic prevents a buffer overread if no weapons are auto-selectable
and prevents the player from being stuck on a single weapon if only one
weapon is auto-selectable and that weapon is the current weapon.
Players would not use cycle in such a case, so skipping the
non-auto-select weapons does not help.
Commit 0ceaaaf introduced two undesirable behaviors which can be
mitigated by a heuristic from commit cab78bb and commit 7bed83b. This
heuristic prevents a buffer overread if no weapons are auto-selectable
and prevents the player from being stuck on a single weapon if only one
weapon is auto-selectable and that weapon is the current weapon.
Players would not use cycle in such a case, so skipping the
non-auto-select weapons does not help.
Hostage doors misbehave after commit 5cc09c9:
5cc09c974a (commitcomment-3037382)
Descent 1 set WALL_BLASTED in blast_blastable_wall, but Descent 2 set
WALL_BLASTED in do_exploding_wall_frame. Commit 5cc09c9 broke exploding
walls because it removed the WALL_BLASTED logic from
blast_blastable_wall, but did not add it to do_exploding_wall_frame.
Reported-by: zico <zico@dxx-rebirth.com>