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

Hey 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

For 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?


Yes, 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.


In 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)


Thanks 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=-


@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=-


@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.


I'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.


This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums