[Scummvm-git-logs] scummvm master -> 5bcd808db9291ca98165be6c924cfc07a5592cd5
dreammaster
noreply at scummvm.org
Sun Jul 12 12:22:43 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
5bcd808db9 LURE: Fix being unable to talk to characters after a one-sided conversation
Commit: 5bcd808db9291ca98165be6c924cfc07a5592cd5
https://github.com/scummvm/scummvm/commit/5bcd808db9291ca98165be6c924cfc07a5592cd5
Author: Max H. Gerlach (git at maxgerlach.de)
Date: 2026-07-12T22:22:39+10:00
Commit Message:
LURE: Fix being unable to talk to characters after a one-sided conversation
When a conversation consists solely of the other character speaking (I
ran into this talking to Gwyn whilst transformed), the player's
talkDestCharacterId was never cleared. In most other conversations, on
the other hand, the player is also a speaker, and when
Resources::setTalkingCharacter() cycles through him, his
talkDestCharacterId is cleared as a side effect. After a one-sided
conversation, however, this left a guard in Hotspot::doTalkTo()
permanently blocking new conversations.
To resolve this clear talkDestCharacterId in
HotspotTickHandlers::talkEndConversation(), which also subsumes an
earlier workaround specific to the Goewin character (rather than
Gwyn).
Fixes #16944, https://bugs.scummvm.org/ticket/16944
Assisted-by: Claude:claude-opus-4.8
Changed paths:
engines/lure/hotspots.cpp
diff --git a/engines/lure/hotspots.cpp b/engines/lure/hotspots.cpp
index a42338e3b45..081be1a98e7 100644
--- a/engines/lure/hotspots.cpp
+++ b/engines/lure/hotspots.cpp
@@ -3651,13 +3651,6 @@ void HotspotTickHandlers::talkAnimHandler(Hotspot &h) {
responseNumber = Script::execute(_talkResponse->preSequenceId);
debugC(ERROR_DETAILED, kLureDebugAnimations, "Character response new response = %d",
responseNumber);
-
- // FIXME: Fix for resetting the character being talked to
- // after talking to Goewin whilst transformed
- if (_talkResponse->preSequenceId == 10902) {
- HotspotData *character = res.getHotspot(PLAYER_ID);
- character->talkDestCharacterId = 0;
- }
} while (responseNumber != TALK_RESPONSE_MAGIC_ID);
descId = _talkResponse->descId;
@@ -3721,7 +3714,12 @@ void HotspotTickHandlers::talkEndConversation() {
Hotspot *charHotspot = res.getActiveHotspot(talkDestCharacter);
assert(charHotspot);
- res.getActiveHotspot(PLAYER_ID)->setTickProc(PLAYER_TICK_PROC_ID);
+ Hotspot *player = res.getActiveHotspot(PLAYER_ID);
+ player->setTickProc(PLAYER_TICK_PROC_ID);
+
+ // Clear the player's talk destination now that the conversation is over.
+ player->resource()->talkDestCharacterId = 0;
+
charHotspot->setUseHotspotId(0);
charHotspot->resource()->talkerId = 0;
charHotspot->setDelayCtr(24);
More information about the Scummvm-git-logs
mailing list