[Scummvm-tracker] [ScummVM :: Bugs] #17092: DIRECTOR: QTVR mouseOver command discards hotspot result

ScummVM :: Bugs trac at scummvm.org
Sun Aug 23 04:48:19 UTC 2026


#17092: DIRECTOR: QTVR mouseOver command discards hotspot result
------------------------+------------------------------
Reporter:  stephend999  |      Owner:  (none)
    Type:  patch        |     Status:  new
Priority:  normal       |  Component:  Engine: Director
 Version:               |   Keywords:
    Game:               |
------------------------+------------------------------
 == Game and environment ==

 * Game: Star Trek: The Next Generation Interactive Technical Manual
 * Game version: English Windows CD-ROM
 * OS: Windows 11 64-bit
 * ScummVM: 2026.3.1git31220-g437002af599 (Aug 22 2026), SDL 2.26.2
 * Engine: Director
 * Source: legally owned original disc/ISO

 == Reproduction ==

 1. Open a panoramic location containing an inspectable object.
 2. Move over an object with a QTVR hotspot.
 3. Click the object.

 == Actual result ==

 The hotspot does not open the object's close-up. ScummVM detects the
 hotspot and calculates the expected XObject result, but the builtin
 command dispatcher drops it:

 {{{
 WARNING: Builtin 'mouseOver' dropping return value: "undf,165"!
 WARNING: Builtin 'mouseOver' dropping return value: "jump,14"!
 WARNING: Builtin 'mouseOver' dropping return value: "pan ,0"!
 }}}

 The title invokes the QTVR `mouseOver` method as a command and reads `the
 result`. Handler return values already update `the result` when called
 without a return-value context, but builtin command return values are
 popped in `Lingo::call` without updating it.

 == Expected result ==

 The XObject result remains available through `the result`, allowing the
 game script to select and open the close-up.

 == Proposed fix ==

 In `engines/director/lingo/xlibs/q/qtvr.cpp`, set `g_lingo->_theResult` to
 the calculated QTVR result before pushing it. The attached patch scopes
 this behavior to the legacy QTVR `mouseOver` method instead of changing
 all builtin command semantics.

 The patch applies cleanly to source commit `ec424f1b` and passes `git diff
 --check`. Runtime validation needs an official Windows build because
 locally built MinGW executables rendered a black frame even without this
 gameplay patch, while the official daily build rendered correctly.
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/17092>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list