Opened 4 years ago

Last modified 20 months ago

#11432 new defect

SCI: QFG3 - game skips to second encounter with Manu the monkey if there wasn't a first encounter before the conference

Reported by: lwcorp Owned by:
Priority: normal Component: Engine: SCI
Version: Keywords:
Cc: Game: Quest for Glory 3

Description (last modified by lwcorp)

The hero can go any time to the waterfall's overhead map to have a random encounter with Manu.

But if he doesn't, then after the peace conference he can only meet Manu in the jungle's overhead map, which means the first encounter is completely skipped. Nevertheless, Manu recognizes you from the supposed first encounter.

All you have to do is condition the second encounter in the first one. It shouldn't matter if the peace conference already happened or not, just condition to meet Manu in the first encounter first, in order to meet him for the second time.

Current condition for the second encounter:
The peace conference already happened

Requested conditions for second encounter:
1) Meet Manu in the first encounter
2) The peace conference already happened

I've tried it in the latest Windows 64 build, v2.2.0git4593-gf531eba971 (Apr 20 2020 05:59:17)

Attachments (1)

qfg3.001 (72.8 KB ) - added by lwcorp 4 years ago.
Save game in which you go to the jungle and immediatly meet Manu despite never meeting him before

Download all attachments as: .zip

Change History (8)

by lwcorp, 4 years ago

Attachment: qfg3.001 added

Save game in which you go to the jungle and immediatly meet Manu despite never meeting him before

comment:1 by m-kiewitz, 4 years ago

Does this happen when using the original interpreter too?

comment:2 by lwcorp, 4 years ago

Description: modified (diff)

in reply to:  1 comment:3 by lwcorp, 4 years ago

Replying to m-kiewitz:

Does this happen when using the original interpreter too?

Yes, see https://www.youtube.com/watch?v=vSa4Y_iKxRo&start=1196 - this video recorded the entire game from DOSBox with meeting Manu only once (I linked directly to that moment but you can go back and see Manu wasn't there before).

comment:4 by raziel-, 4 years ago

Summary: QFG3: game skips to second encounter with Manu the monkey if there wasn't a first encounter before the conferencesci. QFG3 - game skips to second encounter with Manu the monkey if there wasn't a first encounter before the conference

comment:5 by raziel-, 4 years ago

Summary: sci. QFG3 - game skips to second encounter with Manu the monkey if there wasn't a first encounter before the conferenceSCI: QFG3 - game skips to second encounter with Manu the monkey if there wasn't a first encounter before the conference

comment:6 by lwcorp, 4 years ago

Description: modified (diff)

comment:7 by lwcorp, 20 months ago

If it helps, here's the technical issue:
When you
1) Cross from room 160 (Savannah panorama) to 170 (Jungle panorama).
and
2) Flag 43 (After Conference) is set.
Then you immediately get stopped and move to room 700 (random Jungle room) to meet Manu.

I ask to add:
3) Flag 109 (Manu Released) is also set.

But beware this of course means you'll have to meet Manu at room 180 (Lost City panorama) and then go back to room 170 (Jungle panorama), which the game never anticipated, so this can cause weirdness such as meeting Johari again.

My proposal is to do the following to https://github.com/EricOakford/SCI-Decompilation-Archive/blob/master/qfg3/src/rm170.sc:
1) Add the 109 condition wherever 43 is tested.
2) After saving Manu, treat walking back from Lost City panorama like walking back from the Savannah panorama.

Here's a diff file to that GitHub version of room 170:

168,169c168,172
< 						(= style SCROLLRIGHT)
< 						fromLostCityPanorama
---
> 						(if (and (= style SCROLLRIGHT) (not (Btst fAfterConference)))
> 							fromLostCityPanorama
> 						else
> 							fromSimbaniPanorama
> 						)
510c513
< 					setMotion: MoveTo (if (Btst fAfterConference) 15 else 10) (ego y?) self
---
> 					setMotion: MoveTo (if (and (Btst fAfterConference) (Btst fManuReleased)) 15 else 10) (ego y?) self
514c517
< 				(if (Btst fAfterConference)
---
> 				(if (and (Btst fAfterConference) (Btst fManuReleased))

Here's a diff file to a directly extracted SCICompanion version of room 170:

116,117c116,120
< 						(= style 11)
< 						fromLostCityPanorama
---
> 						(if (and (= style 11) (not (proc0_6 43)))
> 							fromLostCityPanorama
> 						else
> 							fromSimbaniPanorama
> 						)
434c437
< 					setMotion: MoveTo (if (proc0_6 43) 15 else 10) (global0 y?) self
---
> 					setMotion: MoveTo (if (and (proc0_6 43) (proc0_6 109)) 15 else 10) (global0 y?) self
438c441
< 				(if (proc0_6 43)
---
> 				(if (and (proc0_6 43) (proc0_6 109))

Problem is it still makes me (re-)meet Johari (treated like her final encounter) while browsing the Jungle itself (700).
BTW, to test it, I decompiled all scripts in SCICompanion, made the changes, then compiled just this specific script and finally extracted as a patch.

What do you think?

Last edited 20 months ago by lwcorp (previous) (diff)
Note: See TracTickets for help on using tickets.