Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gnomes are not talking about the quests #24

Open
Arch91 opened this issue Feb 8, 2025 · 5 comments
Open

Gnomes are not talking about the quests #24

Arch91 opened this issue Feb 8, 2025 · 5 comments

Comments

@Arch91
Copy link

Arch91 commented Feb 8, 2025

Hello. I'd like to create that issue due to the next bug.
I played both that legacy CD version and the current GOG version of the game, Russian localization. In each version, I never saw Gnomes dialog boxes were showing the quests related phrases. You can see those in data\Scripts\text\talk\questtalk_{locale}.tcl

However, I do not know whether it relates to localization or it's a game bug indeed. How is this situation in other localizations? Did you ever see the phrases from that file in the campaign?
I only noticed that in Russian localization, in file questtalk_ru.tcl there is no quotes >"< at the line 104 :

smalltalk add 007 {15 6 0.0 50.0 0.0 0.5 1.0
"Один будет гордится \nнами за то, что мы освободили \nключницу!

must be

smalltalk add 007 {15 6 0.0 50.0 0.0 0.5 1.0
"Один будет гордится \nнами за то, что мы освободили \nключницу!"

however, this do not solves the problem. Started new campaign to check - nope, still no dialog boxes related the searching the hamsters quest...

@saibantes
Copy link

I have to admit, I don't remember if I've ever seen the quest related smalltalk.

I am using the old CD version, and that one doesn't even have a Russian locale. Here is something you can try:
Start the game with console enabled (should be "-console" command line parameter). Load any game and open the console (it is num-lock for me). Then try the command "smalltalk get 007". This should list all the possible conversations from the questtalk_*.tcl for that specific quest. It is possible that the console can't handle Cyrillic characters (it is not showing umlauts for my German locale either, but at least the correct number of lines should be there).

@Arch91
Copy link
Author

Arch91 commented Feb 9, 2025

@saibantes, well, I have a gamesave of a campaign passed right until Fenrir's "battle" :p GOG version.
So, I opened the console (for me it is Scroll Lock button), typed "smalltalk get 071",
and yes, the situation with the in-console locale characters is same like with yours - I see only ?????-??! smth like that, HOWEVER, I can see there are all three related to 071 quest, which matches with those lines I can see in questtalk_{locale}.tcl file.
Those are regarding if the getting ring of Magic issue was solved the peaceful way, like I did. But never saw either those related phrases, or any else.
Totalizing, other words,
questtalk_{locale}.tcl was initiated (I suppose once in the moment of starting a new game)
but the phrases are not showing in the dialog boxes, or rather they are not triggered to be sayed properly (like, quest xxx started - xxx phrases now become available, yyy become forgotten; etc)

@saibantes
Copy link

Oh yeah, scroll-lock, not num-lock.

It would really help if anyone else could tell if these quest-related lines ever occurred, or if it is just a specific bug for one locale, because I can't remember.

I looked into the tcl-code and can't find anything that would cause these talks. Not even a broken line that looks like it was intended for that purpose. There is a lot of stuff in z_spare_talk.tcl:
It looks like sparetime_talk_phrase decides the next line to speak. It gets the "issue" to talk about as a parameter (it checks if it starts with a character, which it wouldn't for the quest talk). It is called by sparetime_talk_tell (that one checks if the "issue" is an integer or not), which gets the "issue" from sparetime_talk_next. Here the "issues" come from "talkissue", which is a command in the Tcl interpreter. I can't find anything that would put a numerical "issue" into "talkissue" and I never saw a numerical value there when I debugged that a long time ago for an unrelated reason. The game creates a file timeline.txt in the Gamesave folder, where it lists all "talkissues" for any gnome at the beginning of their spare time (it is possible though that it needs to be activated first, I don't remember). The file is emptied at the start of the game.

@Arch91
Copy link
Author

Arch91 commented Feb 9, 2025

So looks like those were forgotten to be added by developers and have to be rewised from scratch...

I had timeline.txt in the Gamesave folder, but it disappeared for some reason... Maybe after I started a skirmish game or smth...

I did not find any examples of using talkissue, it is unclear how it choices between those entries among those phrases, and how to choice in dependence of the mood of character (Stimmung: GUT #1/ Simmung: MIES #3) :/

@saibantes
Copy link

The selection of the phrase according to the mood is done in proc sparetime_talk_phrase. There are a whole lot of checks according to gender, relation to the one talking to, ... For mood, it's the two lines:

if {[lindex $entry 5]>$mood+0.01} {continue}
if {[lindex $entry 6]<$mood-0.01} {continue}

I don't think that "talkissue" is the way to implement the quest related talks. It keeps track of what annoys the gnome (not enough sleep, bad equipment, haven't seen partner, ...). They then talk about the most pressing issue at the next occasion.

Instead I think it would go into proc sparetime_talk_next (in z_spare_talk.tcl). There is a "if $cv<1.0", which I guess means that they have nothing to complain about, so they just do small-talk. Then it picks from "smt", which is {yamm wthr ston frgt user elfe} (set in smalltalk_[locale].tcl). Maybe here the quest talk can be inserted. I haven't tested it, but my guess is that if you add "lappend sm_issues 007" after "set sm_issues ...", the gnomes would just randomly talk about the "free the gatekeeper" quest.

Next question is how to check which quest we are on. I don't know how to do that, but it seems like in story.tcl, there is a proc callback. Halfway in that there is "set entry ...", which should be the quest number. It looks like it is used here to set the newsticker.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

2 participants