I little thing, but it stands out a mile...

-=Darchy=-
13 Sept 2018, 09:17Hey guys! been a while. I added a female character in my story (Quest 5) and when I type in 'Speak to Jane", it responds with:
"She saies nothing."
instead of
"She says nothing."
This is within Quest itself and not my coding.
I tested this by just adding a female character with the ASK/TELL feature added to it.
How can I fix this please?
Thanks as always,
-=Darchy=-
J_J
13 Sept 2018, 11:18For me, ASK/TELL is different then Speak to. Speak to is a verb. When I use the verb there isn't a spelling error in my program... but if this is an issue with the new version you could make speak to a command, and put in the objects like this: speak to #object# and then manually put in all the objects through the command. Maybe someone else knows an easier way to change this?

DavyB
13 Sept 2018, 11:22Yes, I noticed this a month ago but reported it quietly as it was a time when everyone was complaining about the new version of Quest failing. I don't think it has been fixed in the latest release but would support your "small, but significant" argument for having it dealt with quickly.
mrangel
13 Sept 2018, 11:29In the Conjugate function (in English.aslx
), the code includes:
if (gender = "it") {
if (EndsWith(verb, "y") and not EndsWith(verb, "ey")) {
return (Mid(verb, 1, Lengthof(verb) - 1) + "ies")
}
else {
return (verb + "s")
}
}
This is pretty rough.
I think it would be better if we had a dictionary of verb endings. Then the code could be:
if (gender = "it") {
foreach (ending, game.conjugations) {
if (ending = verb) {
return (DictionaryItem (game.conjugations, verb))
}
else if (Left (ending, 1) = "@" and EndsWith (verb, Mid (ending, 2))) {
return (Conjugate (obj, Left (verb, LengthOf(verb) - LengthOf(ending) + 1)) + DictionaryItem (game.conjugations, ending))
}
else if (Left (ending, 1) = "*" and EndsWith (verb, Mid (ending, 2))) {
return (Left (verb, LengthOf(verb) - LengthOf(ending) + 1) + DictionaryItem (game.conjugations, ending))
}
}
return (verb + "s")
}
The dictionary could look something like:
<conjugations type="stringdictionary">
<item><key>pass out</key><value>passes out</value></item>
<item><key>@ with</key><value> with</value></item>
<item><key>@ by</key><value> by</value></item>
<item><key>@ on</key><value> on</value></item>
<item><key>@ at</key><value> at</value></item>
<item><key>*ay</key><value>ays</value></item>
<item><key>*oy</key><value>oys</value></item>
<item><key>*ey</key><value>eys</value></item>
<item><key>*y</key><value>ies</value></item>
<item><key>*ss</key><value>sses</value></item>
<item><key>*s</key><value>sses</value></item>
<item><key>*sh</key><value>shes</value></item>
<item><key>*ch</key><value>ches</value></item>
<item><key>*o</key><value>oes</value></item>
<item><key>*x</key><value>xes</value></item>
<item><key>*z</key><value>zes</value></item>
<item><key>*</key><value>s</value></item>
</conjugations>
That way, if there's any obscure verbs that have odd conjugations, a user can just add them to the dictionary rather than having to edit the function (one silly example included - in some cases, especially if you're dealing with NPCs who can do things to each other, it could be beneficial for Conjugate and WriteVerb to handle "verbs" that could appear in displayverbs, even if they're not strictly verbs in the grammatical sense)

-=Darchy=-
13 Sept 2018, 12:31Thanks for the replies. It looks like I will have to 'fudge' it a little. The conversations won't be complex at this point, so maybe not such a big problem for now.
Thanks again,
-=Darchy=-

-=Darchy=-
14 Sept 2018, 14:05@mrangel - Sorry I didn't get back to you sooner.
I have used what you showed me with:
if (gender = "it") {
if (EndsWith(verb, "y") and not EndsWith(verb, "ey")) {
return (Mid(verb, 1, Lengthof(verb) - 1) + "ies")
}
else {
return (verb + "s")
}
}
... and changed the
and not EndsWith(verb, "ey")) {
with
and not EndsWith(verb, "ay")) {
So far it works with "speak to" He,She and It and returns the correct "xxxx says nothing."
Can you see anything in this change, that would cause this to fail in the future or cause problems?
much appreciated,
-=Darchy=-
mrangel
14 Sept 2018, 14:33@Darchy:
That should fix the immediate problem, as I don't think any of the built-in messages use the verbs "obey", "survey", "journey", "key", "convey", "curtsey", "volley", "purvey", "jockey", "prey", "mosey", "parley", or "monkey".
I'd like to see the dictionary method in a future update, though. Would mean that users can depend on WriteVerb() working correctly for all verbs, and not just those that are included in the language file.
Krud
01 Nov 2018, 17:57I'm glad someone has explained what's going on with this, as I was baffled by the seemingly built-in typo for a default command. I was having to create my own error messages just to avoid that.