Die4Ever / deus-ex-randomizer

Randomizer for Deus Ex
https://mods4ever.com
GNU General Public License v3.0
111 stars 12 forks source link

Various base game issues in Hong Kong, related to Gordon Quick, Tracer Tong, and the Luminous Path compound #17

Closed theastropath closed 4 years ago

theastropath commented 4 years ago

There are a few inter-related issues here that maybe could be fixed as part of this mod.

In my playthrough, I used grenades to climb over the wall and break into the Luminous Path compound. This makes all the Luminous Path guys in the area hostile. While you can kill all the regular people, Gordon Quick is invincible (since he is plot relevant).

Issue 1: Gordon Quick NEVER returns to being friendly after breaking in, which means you can never talk to him again to continue the mission he gives you (retrieving the Dragons Tooth Sword).

This could maybe be corrected by setting him to be friendly again or unsetting whatever flag makes everyone hostile if you break in (or probably both), any time you re-enter the map

Issue 2: Hacking the keypad in the basement of the Luminous Path compound doesn't actually cause the painting to move aside. Do keypads really trigger differently if interacted with after being hacked than they do after entering a correct code? Luckily, you can blow up the door to get through...

Issue 3: Everyone in Tracer Tong's area is still hostile to you if you break in via the second issue, and Tracer Tong, Alex Jacobson, etc (key characters) don't seem to spawn. Presumably they are hidden by some sort of flag that only gets set once you've satisfied Gordon Quick (or hidden if you broke into the compound?) I think if it's possible to break into the compound and blow up the door to the basement, it should probably be possible to talk to Tracer Tong and friends for your efforts.

Die4Ever commented 4 years ago

I believe your 1 and 3 are issues in the original game, but I might look at doing something for them

2 is because that keypad isn't supposed to be hackable, strange because most of the keypads work fine, I'll check it out, it's gonna require some specific fix for just that keypad

theastropath commented 4 years ago

Yeah, I would consider these extremely low priority

Die4Ever commented 4 years ago

I bet 1 and 3 are because they originally planned for you to be able to stay with UNATCO for longer, so you would've went to Hong Kong with some different mission

Die4Ever commented 4 years ago

for your issue 2, I looked in the map editor and found the funniest thing

the actor with the name "Keypad0" is hidden by default and is the one that actually works image

the actor with the name "Keypad9" is shown by default and it isn't linked to any door at all, the event tag is "DummyKeypad01" image

I'm guessing Keypad9 was supposed to be if you stayed with UNATCO instead of joining the NSF

theastropath commented 4 years ago

WOOOOWWWWWWWW, that is hilarious to me! That definitely explains why it wasn't working...

theastropath commented 4 years ago

Rather than sleeping, I've been reading through your code and combing over some of the levels in UnrealEd. I think the path forward to fixing these kind of issues is a Per-Level fixup routine.

Based on your architecture of the mod, this could probably be fairly easily implemented as a new module (Something like "Fixup") that really only runs on first entry to each level. It would then run through a list of actions specific to the level to "fix" it.

For 1 and 3, some easy fixes would be to just delete a few FlagTriggers:

For issue 2, there could be a further fix up for adjusting the bHidden value for a list of actors. We'd want to make the real keypad visible and the fake one invisible.

I'm sure there are other spots throughout the game where little fixups could be made like this also, so keeping it fairly generic would be ideal

I'm going to try to implement this myself in the next few days...

Die4Ever commented 4 years ago

doing it as a separate "DXRFixup" module is a good idea

only thing I really want to avoid in fixing this issues, is intentionally making the speedrun faster, it just seems disingenuous

so we still need to require the player to unlock the dragoon's tooth sword before unhiding Tong, otherwise the fastest speedrun is now just gonna jump over the wall and blow up the door to Tong and go straight to versalife

maybe a good fix would be to have Gordon Quick forgive the player on AnyEntry, and unhide actors as needed on AnyEntry when the correct flags are set for retrieving the sword

theastropath commented 4 years ago

In that case, this should probably have a toggle on the startup options screen, but default to off (like the "disable invisible walls" option). Whether that options would apply to ALL the fixes or not is another question

The issue with Tong and the other important characters there is that they aren't actually hidden, they are outright despawned. If the "QuickLetPlayerIn" flag is not set when entering Tong's Lab, those characters get their "Orders" set to "Leaving". The "Leaving" state destroys the pawns once they are out of sight (And since they are all out of sight when those orders are given, they are immediately despawned). I just ran a quick test, and if you enter the lab without the flag, leave, and come back with the flag turned on, the characters are still missing.

Fixing alliances on entry is probably a good thing to do anyway. I think it's dumb that those get changed permanently in Wan Chai.

Another fix that I can think of (for casual play, rather than speedrunning) is making sure all the skill point triggers are only triggerable once. There are two spots that I can think of where you can reuse keypads to get infinite skill points (Vandenberg and the A51 Bunker), which eliminates the challenge of the randomized skill points.

Die4Ever commented 4 years ago

can we delete the triggers for deleting tong and stuff? or change the event tag on them? aren't those triggers some kind of actor? then we can do our own code for hiding him instead

theastropath commented 4 years ago

Yeah, those are three of the FlagTriggers that I mentioned at the start of Tong's Lab. It would definitely be possible to get rid of those and then combine that with code to hide them ourselves.

theastropath commented 4 years ago

Along the same lines as issue 2, it turns out there are actually two overlapping keypads at the entrance to the compound as well, with exactly the same DummyKeypad naming to make sure you can't get in until Gordon lets you in.

If that front door and the fake painting in the basement are both destroyable anyway, the doors might as well be hackable too. Do you think we should just delete the dummy keypads and make the real ones visible?

Die4Ever commented 4 years ago

yea I don't see any reason to keep the dummy keypads