Commit graph

2095 commits

Author SHA1 Message Date
Matthew Duggan
21ac02ab46 ULTIMA8: Remove Crusader elevator hack and fix it properly
Crusader globs sometimes contain items with an odd z value - eg, stripey floors
or elevators.  This is not done in U8 and probably a hack to make the paint
order right in the original, but our scan function was only checking +/-4 and
+/-8 pixels so the avatar would jump 4 pixels up then fall, which was nasty.

Add odd-pixel checks as well when doing a scan in Crusader, and clean up the
old hack.  Also tidied up the scan function to make it more understandable.
2021-05-15 17:06:30 +09:00
Matthew Duggan
f70cb80c30 ULTIMA8: Don't 'land' dead actors in Crusader 2021-05-15 17:06:04 +09:00
Matthew Duggan
4c4b8a6cf5 ULTIMA8: Remove a bit of dead code 2021-05-15 17:06:04 +09:00
Matthew Duggan
edf0797728 ULTIMA8: Wire up more intrinsics for No Regret 2021-05-15 17:06:04 +09:00
Paul Gilbert
f13617f3e3 NUVIE: Add back missing check for skip_intro 2021-05-11 21:41:10 -07:00
Matthew Duggan
f7e07c0eb0 ULTIMA8: Fix uninitialized members identified by Coverity 2021-05-10 14:54:16 +09:00
Matthew Duggan
ebbfb88174 ULTIMA8: Fix array size, thanks Coverity. 2021-05-10 14:51:37 +09:00
Matthew Duggan
b73d04844e ULTIMA8: Avoid small leak on invalid data 2021-05-10 14:51:05 +09:00
Matthew Duggan
f456e268ec ULTIMA8: Avoid potential null reference 2021-05-10 14:50:36 +09:00
Matthew Duggan
927e7ca3b0 ULTIMA8: Add comments about some Remorse intrinsics 2021-05-10 11:47:51 +09:00
Matthew Duggan
4cb6c0a087 ULTIMA8: Add a TODO for No Regret 2021-05-10 11:47:51 +09:00
Matthew Duggan
3febff9639 ULTIMA8: Fix off-by-one glob egg calculation for Crusader
This caused elevator doors to not close properly as the poles either side were
off by 1 pixel and blocked the creation of the door objects.
2021-05-09 17:41:31 +09:00
Matthew Duggan
47d8b281c7 ULTIMA8: Only move Crusader camera if position is valid.
This avoids strange results if you try to move the camera while the avatar has
temporarily been moved to 0,0,0.
2021-05-09 17:41:05 +09:00
Matthew Duggan
cf7ae46475 ULTIMA8: Adjust Crusader step tests to match original 2021-05-09 13:09:08 +09:00
Matthew Duggan
6f5538ab4d ULTIMA8: Fix actor anim speed in Crusader 2021-05-09 12:04:25 +09:00
Matthew Duggan
26f936510f ULTIMA8: Implement "cruStasis", stops some key events
The main bugs that this fixes are when using a remote camera:
* Z should not recenter camera on avatar
* Escape should close remote viewing, not open menu
2021-05-09 09:08:31 +09:00
Matthew Duggan
bda1466e0a ULTIMA8: Fix Crusader items reappearing after exploding 2021-05-09 08:17:01 +09:00
Matthew Duggan
137fa8ea29 ULTIMA8: Implement 'grab' operation for Crusader games
Since it only works on loose items and not for searching boxes etc, it's
actually not so useful, but implemented for completeness.
2021-05-09 07:48:26 +09:00
Matthew Duggan
cf085788c2 ULTIMA8: Add Crusader key for using energy cube
Had to reassign the "paint editor items" debug key because it was using 'e',
which we need.
2021-05-09 07:31:43 +09:00
Matthew Duggan
d83ccb7e9b ULTIMA8: Default to no mouse cursor in Crusader 2021-05-09 07:31:43 +09:00
Matthew Duggan
f5c4374888 ULTIMA8: Refactor so all Crusader movies get subtitles
Previously there was a bit of duplication, and Weasel and the intro movies
didn't get subtitles.  Cleaned up the code a bit and now all are treated
consistently.
2021-05-09 07:31:43 +09:00
Matthew Duggan
531ed6865b ULTIMA8: Add comment about iteration order
This function looks tempting to "optimize", by changing the order, so add a
warning for new adventurers.
2021-05-09 07:31:43 +09:00
Matthew Duggan
6f483eb53b ULTIMA8: Don't reset FIRSTSTEP on non-step animations
Confirmed in both U8 and Crusader, single steps should alternate left foot /
right foot, even when there is a stand animation in-between.
2021-05-07 18:52:16 +09:00
Matthew Duggan
7338e7ab02 ULTIMA8: Fix animations used for Crusader combat rolls 2021-05-07 18:52:11 +09:00
Matthew Duggan
dc8a9487ec ULTIMA8: Return area search items in same order as original
For most situations this should make no difference, but Crusader: No Remorse
has some behavior where it relies on the items being returned in x/y scan
order, not y/x.

Particularly, in Mission 2 there is a camera which searches for an event
trigger with qlo == 5.  There are 2 triggers on the map with that qlo, but the
code previously returned them in the wrong order so the correct event would not
be triggered and the game could not be continued.

This may have previously caused other subtle bugs too.
2021-05-07 12:41:51 +09:00
Matthew Duggan
a00ec35068 ULTIMA8: Fix Crusader detpac usage. 2021-05-07 10:56:37 +09:00
Matthew Duggan
014ad8f23a ULTIMA8: Avoid possible assertion on avatar death 2021-05-07 10:56:37 +09:00
Matthew Duggan
764f310f8a ULTIMA8: Crusader camera centre button improvement
The "centre on avatar" button should use the centre of the avatar, not his
feet.
2021-05-07 10:56:37 +09:00
Matthew Duggan
a1880b8220 ULTIMA8: Remove text from inventory gump when Crusader dies 2021-05-07 10:56:37 +09:00
Matthew Jimenez
866a010880 UlTIMA8: Rename sort item method for clarity and improve documentation 2021-05-06 17:42:00 -05:00
Matthew Duggan
2b4785f262 ULTIMA8: Fix Crusader animated flames, steam, etc. 2021-05-05 20:57:46 +09:00
Matthew Duggan
12f8e8679e ULTIMA8: Make loading work with different path configurations 2021-05-05 20:57:46 +09:00
Matthew Duggan
02a5a1e2c6 ULTIMA8: Wire up Crusader: No Remorse isFalling intrinsic 2021-05-05 14:31:58 +09:00
Matthew Duggan
0b9afc4a52 ULTIMA8: Correct parameter mixup writing usecode globals 2021-05-05 14:31:58 +09:00
Matthew Duggan
f30c74ed12 ULTIMA8: More savegame integrity checks 2021-05-05 14:31:58 +09:00
Matthew Duggan
ca2226caa0 ULTIMA8: Fix location of Crusader bullet splash shapes 2021-05-05 14:31:58 +09:00
Matthew Duggan
f3f5aca83d ULTIMA8: Fix assert in reshowing Crusader status gump 2021-05-05 14:31:58 +09:00
Matthew Duggan
bf9af9abc1 ULTIMA8: Ignore invalid parent objects on destruction
This probably shouldn't happen, but if it does then handle it gracefully for
now.
2021-05-04 22:50:59 +09:00
Matthew Duggan
fab43f51a4 ULTIMA8: Destroy contents earlier in Cru death 2021-05-04 22:50:49 +09:00
Matthew Duggan
878331b074 ULTIMA8: Tweak process start order for Crusader 2021-05-04 22:50:09 +09:00
Matthew Duggan
92fe6afa24 ULTIMA8: Check bytes read when loading savegames 2021-05-04 22:42:44 +09:00
Matthew Duggan
8eeb19c53d ULTIMA8: Small consistency fixes for Crusader gumps 2021-05-04 21:37:50 +09:00
Matthew Duggan
28db99d779 ULTIMA8: Add various checks for expected ranges of save data 2021-05-04 21:37:16 +09:00
Matthew Duggan
ec26584d04 ULTIMA8: Add Vargas shield for Crusader: No Remorse
This is handled as a special case in the original game.
Breaks save compatibility one more time..
2021-05-04 21:37:15 +09:00
Matthew Duggan
321222cf6e ULTIMA8: Save some Crusader fields which were previously missed
Breaks save compatibility again but game is still unstable.
2021-05-04 21:37:15 +09:00
Matthew Duggan
8aabf2dce1 ULTIMA8: Fix Crusader deaths getting stuck sometimes 2021-05-04 21:37:15 +09:00
Matthew Duggan
54f67f02cc ULTIMA8: Add more weapons and ammo to Crusader testing hack 2021-05-04 21:37:15 +09:00
Matthew Duggan
7709c9b94c ULTIMA8: Add detection entry for fan Spanish translation No Remorse 2021-05-04 21:37:15 +09:00
Matthew Duggan
dc2c801b20 ULTIMA8: Clean up some constants 2021-05-04 21:37:15 +09:00
Matthew Duggan
20bb32503f ULTIMA8: Don't allow jump on Cru NPCs that can't jump 2021-05-04 21:37:15 +09:00