Opened 6 months ago

Closed 5 months ago

#14680 closed defect (fixed)

REMORSE: Game-breaking bugs in Mission 12

Reported by: MadmanLegion Owned by: mduggan
Priority: high Component: Engine: Ultima
Version: Keywords:
Cc: Game: Crusader: No Remorse

Description

I found two issues while playing mission 12.

Firstly after activating the door near avatar position (13454,34086,96) with the keycard, a force field activated and the door opens and immediately closes (to get through, I had to blow up the door instead). This happens irrespective of whether the alarm is on.

Secondly the keypad near the lift (17022,34942,96) doesn't open in response to the passcode given on the computer (5454,35334,0).

These bugs seemed to be repeatable.

Attachments (2)

remorse.021 (184.7 KB ) - added by MadmanLegion 6 months ago.
remorse.022 (182.8 KB ) - added by MadmanLegion 6 months ago.

Download all attachments as: .zip

Change History (13)

comment:1 by mduggan, 6 months ago

Thanks for the report! Do you have a save game handy that reproduces these? I can warp directly to the locations but sometimes these sorts of bugs are really dependant on game state which may be different.

by MadmanLegion, 6 months ago

Attachment: remorse.021 added

by MadmanLegion, 6 months ago

Attachment: remorse.022 added

comment:2 by MadmanLegion, 6 months ago

Attached two, but i think i managed to overwrite my original one by accident, so one of these i teleported back through the forcefield after initially blowing the door, and then activating the keypad.

comment:3 by tag2015, 6 months ago

Summary: breaking bugs in Mission 13 of Crusader No RemorseULTIMA: Crusader No Remorse: Game-breaking bugs in Mission 13

comment:4 by tag2015, 6 months ago

Summary: ULTIMA: Crusader No Remorse: Game-breaking bugs in Mission 13REMORSE: Game-breaking bugs in Mission 13

comment:5 by mduggan, 6 months ago

I was able to reproduce both these issues by warping to the map directly in a new game (For reference, MainActor::teleport 19 250 gets to the debug egg for the level).

I just pushed a fix for the keypad issue which was pretty straight forward, but the door + force field is a bit weirder - it will need more investigation.

You can see this section played in the original in this video, and it should leave the door open and turn off the field: https://youtu.be/_lIhglWXk9g?t=1087

comment:6 by mduggan, 6 months ago

Summary: REMORSE: Game-breaking bugs in Mission 13REMORSE: Game-breaking bugs in Mission 12

comment:7 by somaen, 6 months ago

Priority: normalhigh

comment:8 by mduggan, 6 months ago

I spent quite a while trying to work out what's wrong here, but it's pretty tricky. This door has a fairly complex trigger setup (keycard -> door -> barrier) and that leads to quite a lot of usecode getting run to open it. Everything initially works correctly, but then it gets retriggered at the end and puts the door back again. The key question is how it gets triggered again to close, which I have tried to trace through but it will take a while.

I *think* it's the same subtle process execution order difference that led to the nasty hack I put in the kernel. I've tracked down some of the possible reasons for that, but after fiddling with them none seem to make a difference to this door.

Will keep looking at it, but if I can't figure it out I might just need another nasty hack :(

comment:9 by mduggan, 5 months ago

I fixed the door opening, but now that has just revealed another layer of issue - once you enter the correct code and get into the elevator, the avatar gets stuck when the elevator arrives on the new map. This one should be *slightly* easier to fix I hope.

comment:10 by mduggan, 5 months ago

Owner: set to mduggan
Resolution: fixed
Status: newpending

I've made some more fixes which should now allow the elevator change to happen correctly. Please feel free to file a new ticket if there are more issues - I may well have caused other problems but it should be closer to the right behaviour now.

Note that if you take the latest nightly, there is a change in the engine id because of this change so the engine=ultima line for the game will need to be changed to engine=ultima8 in scummvm.ini. Some code will be added later to make it backward-compatible for older games.

EDIT: Ignore my above comment about the engine name - my local build was bad, it should work fine as-is.

Last edited 5 months ago by mduggan (previous) (diff)

comment:11 by mduggan, 5 months ago

Status: pendingclosed
Note: See TracTickets for help on using tickets.