FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

rewrote Tourist quest text for more Pratchetty feel by robindouglasjohnson · Pull Request #1596 · NetHack/NetHack · GitHub

rewrote Tourist quest text for more Pratchetty feel - #1596

Open
robindouglasjohnson wants to merge 8 commits into
NetHack:NetHack-5.0from
robindouglasjohnson:tourist-quest
Open

rewrote Tourist quest text for more Pratchetty feel#1596
robindouglasjohnson wants to merge 8 commits into
NetHack:NetHack-5.0from
robindouglasjohnson:tourist-quest

Conversation

Copy link
Copy Markdown

This is a rewrite of most of the Tourist quest text. Previously it read like fairly standard generic fantasy, with Twoflower's lines seeming more like those of a priest or mystical leader than a Tourist. It now (I hope) reads something like the gently whimsical voice of Discworld, without overdoing it, and characterises Twoflower more like he appears in DW (optimistic, native, sees the best in everyone), and the Master of Thieves more like he appears in the Thief quest (wisecracking mob boss.)

robindouglasjohnson changed the title rewrote Tourist quest text more Pratchetty feel rewrote Tourist quest text for more Pratchetty feel Jun 19, 2026

Copy link
Copy Markdown
Contributor

While I am generally in favor of making quest text messages less generic-sounding, I don't think these changes quite hit the mark tonally.

Twoflower's dialogue: Sounds too casual for someone originally from the Agatean Empire. "Ah heck", "or whatever", "stuff", "be jazzed", etc don't sound like things he would say. It comes across more like he's trying to do the "how do you do, fellow kids" meme. He can be optimistic and naive without resorting to this.

The Master of Thieves's dialogue: Pretty much aligns with his diction in the Rogue quest, so I don't have an issue with it. It's "complimentary cement shoes", not "complementary", though.

Continuity errors:

  • Ankh-Morpork doesn't have aldermen, and why isn't Lord Vetinari in the picture? (The assignquest premise is IMO an opportunity to tweak the story. I am in favor of making it lower-stakes: the theft of the Card is not important enough for higher-up city politics to take notice of; it only threatens the burgeoning tourist industry. However, Vetinari should at least get a mention, even if it's that he has declined to help - though his usual modus operandi would be to not help openly but quietly manipulate things to help resolve the problem.)
  • Ploughing up and down the river would be an unusual sight as the river Ankh is repeatedly referenced as being so polluted it can be walked on.
  • Air miles aren't a thing in Discworld (one could make a Pratchettian joke referring to the flying machine in The Last Hero, but I don't think there is enough space in this one message to do it without it taking over the point of the message).
  • Similarly, transferring a credit card account implies that is widespread and normal, which isn't really the case in Discworld. Possibly this could be saved if Twoflower at some point expresses admiration of this newfangled thing, like "Such wonders they have here in the city, to record your ledgers on such a small thing..."
  • On the other hand, the reference to the Mastercard ad campaign is exactly the sort of real world allusion Pratchett liked to make.

Technical issues:

  • Some lines are going to be overly long when the % format strings in them are expanded.
  • "Town is peaceful and quiet - all wrong!" is not grammatical. Another continuity note, I don't believe it would be possible for Ankh-Morpork to be this desolate unless a large portion of its population has fled, which I don't think the rest of the text is implying.

robindouglasjohnson commented Jun 19, 2026
edited
Loading

Copy link
Copy Markdown
Author

Thank you! I would like to have another go over this with your feedback in mind. I'll update this PR when I've done so (unless you'd rather I closed it and submitted a new one.) A few replies to particular points, all of which broadly agree with you:

  • You're right about 'complimentary'; I had it in my head that, e.g., a pub would supply "complementary peanuts" to complement your beer, but that appears to be my own personal false etymology. Thanks.
  • "Ploughing up and down the river" was supposed to be an Ankh joke, as most rivers do not require ploughing, but I'll find something better. I've also remembered just now that the US spelling is 'plow'.
  • "Town is peaceful and quiet" looks grammatical to me, but using 'town' without an article may be another Britishism (it refers to whatever town or city you're currently in/talking about), unless the problem is something else. Attaching "-- all wrong" like that isn't exactly grammatical, but I thought I'd get away with it. I'll change it. (I take it that even though Discworld is British-created, NetHack and therefore the Tourist quest are written in US English, so I'll stick to that, but I may occasionally miss things.)
  • I'll try adding a short bit about the new technology the Royal Mint is trialling, which would lampshade not only the "transferred the account" line, but the existence of credit cards themselves, as well as a nod to the Making Money storyline.

EDIT: Oh, and I think there are Aldermen mentioned in one of the Watch books, but I can't cite chapter and verse. In any case, I agree about lowering the stakes.

ANOTHER EDIT: It's in Sourcery (at least). When the wizards have just lizarded the Patrician and are realising that they're crossing a line it will be hard to uncross: "Out there was the council of aldermen, the city watch, the Guild of Thieves, the Guild of Merchants, the priesthoods... and none of them knew what was about to hit them."

Thanks again for your quick and detailed feedback!

nhmall commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

I'll update this PR when I've done so (unless you'd rather I closed it and submitted a new one.)

That's exactly the sort of thing "Convert to draft" is for. Then, when you feel like you're finished tinkering, bring it out of draft.

robindouglasjohnson marked this pull request as draft June 19, 2026 20:53

nhmall commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Are you sure it was "per nhmall's" feedback? All I mentioned was "convert to draft."

robindouglasjohnson commented Jun 19, 2026
edited
Loading

Copy link
Copy Markdown
Author

Oops, that should be "per copperwater's feedback", of course. I'm going to leave this as a draft at least overnight, so that I can check it over with fresh eyes tomorrow.

Copy link
Copy Markdown
Author
  • some further tweaks to dialogue
  • sprinkled some Discworld flavor on Home level: named the watchmen, added some peaceful NPCs, statues of 'hippos' (wumpuses) on the bridge

robindouglasjohnson marked this pull request as ready for review June 20, 2026 13:44

Copy link
Copy Markdown
Contributor

some bits on the new commits:

  • There are still some lines that look like they would be overly long when % expressions are expanded.
  • Is the literal "Master of Thieves" in assignquest (versus %n) intentional? I can see why it may have been done that way.
  • The feminine pronouns for The Lady should be replaced with %dh / %di / %dj formatters (what if the hero goes on the quest and converts alignment to Blind Io or Offler before returning the Card to Twoflower? I double checked in wizard mode and this is possible.)
  • "I appealed to the Patrician and he said the matter fell under the doctrine of detectores custodes" - perfect, no notes
  • If we're changing more than just text, I'd take the opportunity to make the Master of Thieves leave a normal corpse rather than crumbling into dust, because I don't really see him as supernatural in any way. But that's a personal opinion.
  • Trespassers not Tresspassers (but the formal name of the organization is the "Ankh-Morpork Trespassers' Guild"? seems a little odd)
  • Another personal opinion of mine is the word "henchling" should be excised from NetHack, not that you added it, but I notice it's still present in unchanged text. It just sounds so dumb.
  • Providing a barbarian and rogue as they appear in this PR means they will each be carrying d3 of offensive, defensive, and miscellaneous items, which might create an incentive for players to kill them for that gear. They will not have the full Astral Plane loadout, but 3-9 useful items is not nothing. If you want them to be purely flavor and generate with no random gear, they need to have keep_default_invent=false specified.
  • Arguably, peaceful monsters inserted for flavor would be better spread out throughout the (top 3 levels of the) quest rather than all in the home level.

robindouglasjohnson marked this pull request as draft June 21, 2026 09:54

robindouglasjohnson commented Jun 21, 2026
edited
Loading

Copy link
Copy Markdown
Author

Great, thank you. I've put this PR back into draft while I work those through.

Arguably, peaceful monsters inserted for flavor would be better spread out throughout the (top 3 levels of the) quest rather than all in the home level.

@copperwater, I agree that would be better but is it possible? I'd need to specify that, say, a rock troll named Detritus appeared on exactly one of the upper filler levels, but they all use the same lua file, so how would I stop it generating each monster on every level? (I'm more of a writer than a coder these days...)

Is the literal "Master of Thieves" in assignquest (versus %n) intentional? I can see why it may have been done that way.

Yes it is, because Twoflower says "a new Master of Thieves", not "a new the Master of Thieves", unless I've missed a better way to do that.

There are still some lines that look like they would be overly long when % expressions are expanded.

I thought I had counted all of these and left no lines past 78 characters inclusive (allowing about 10 for %p), but I'll check again. (edit: nope, I missed some.)

copperwater commented Jun 21, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

I agree that would be better but is it possible? I'd need to specify that, say, a rock troll named Detritus appeared on exactly one of the upper filler levels, but they all use the same lua file, so how would I stop it generating each monster on every level? (I'm more of a writer than a coder these days...)

That is a valid concern, but I believe there is only ever one upper filler level due to how the quest dungeon is defined (5-6 levels, start level is number 1, locate level is number 3). If you're concerned that the quest might one day be extended, I think it'd be fine to use just the start and locate levels.

Actually, come to think of it, the filler level isn't even recognizable as a city; it's generic cavern filler. I intend to change that in xNetHack when I get around to redesigning the Tourist quest. But here and now, I agree it would make Ankh-Morpork characters feel oddly out of place in the filler level.

Edited to add: they could also generate inside an if percent(xyz) then des.monster(...) endif block, so they're not guaranteed every game. Flavor can sometimes get stale if you experience it every time.

Yes it is, because Twoflower says "a new Master of Thieves", not "a new the Master of Thieves", unless I've missed a better way to do that.

I don't believe I've ever used it, but there is a format suffix for stripping a leading "the": the "t" in %nt. This is used in the Rogue quest dialogue to refer to the Master of Thieves: "Did you perhaps mistake me for some other %lt?" which obviously doesn't render as "some other the Master of Thieves".

I thought I had counted all of these and left no lines past 78 characters inclusive (allowing about 10 for %p), but I'll check again. (edit: nope, I missed some.)

Technically the player's name can run up to 32, but I usually treat 16 as a reasonable max.

When rewriting quest dialogue my usual process is to type out all the text as it will be rendered with no % specifiers (using XXXXXXXXXXXXXXXX for the player's name), wrap it accordingly, and then when I'm happy with it, make a final pass to replace the hardcoded strings with % specifiers. But I understand that might not be as easy in a pull request where the text might change any time in response to feedback.

Copy link
Copy Markdown
Author

There are still some lines that look like they would be overly long when % expressions are expanded.

I've checked over all the lines, I THINK they are all correctly wrapped now.

The feminine pronouns for The Lady should be replaced with %dh / %di / %dj formatters (what if the hero goes on the quest and converts alignment to Blind Io or Offler before returning the Card to Twoflower? I double checked in wizard mode and this is possible.)

Done. It's not clear I can capitalise these (I don't see any other % formatters with more than one modifier), so I also rearranged some sentences to get the "she's" away from the beginning.

If we're changing more than just text, I'd take the opportunity to make the Master of Thieves leave a normal corpse rather than crumbling into dust, because I don't really see him as supernatural in any way. But that's a personal opinion.

I didn't want to go crazy on changing more than text, but I took a look at this, and I noticed that the Master of Thieves already doesn't have G_NOCORPSE in mon.h (as most quest nemeses do, but not all) - so maybe the reference to his crumbling to dust was an error? I'm not sure if there's something in hard code somewhere that stops nemeses leaving corpses. I've changed the text to draw less attention to it, anyway.

Trespassers not Tresspassers (but the formal name of the organization is the "Ankh-Morpork Trespassers' Guild"? seems a little odd)

Spelling corrected, and phrasing changed to "the Ankh-Morpork Guild of Trespassers", if that's what you mean. The joke in DW canon (as you likely know) is that it used to be the Explorers' Guild but Vetinari made them change the name.

Another personal opinion of mine is the word "henchling" should be excised from NetHack, not that you added it, but I notice it's still present in unchanged text. It just sounds so dumb.

Changed to "flunkies", which has a nice TCOM-era Thieves' Guild-ey feel to it, I think.

Providing a barbarian and rogue as they appear in this PR means they will each be carrying d3 of offensive, defensive, and miscellaneous items, which might create an incentive for players to kill them for that gear. They will not have the full Astral Plane loadout, but 3-9 useful items is not nothing. If you want them to be purely flavor and generate with no random gear, they need to have keep_default_invent=false specified.

Done.

Arguably, peaceful monsters inserted for flavor would be better spread out throughout the (top 3 levels of the) quest rather than all in the home level.

I don't know how to do this without duplicating the characters, as commented above, but I did put some peaceful dwarves and rock trolls into the upper filler level, where I think they fit despite/because of it being a cavern level. They have default inventories, which may mean the dwarves destroy the walls, but I think that's fine in a cavern level.

For the Locate level I added 10 possible NPC-monsters each with a 10% chance of appearing; if I'm getting the maths right, this gives a ~65% chance of one or more of them appearing, with an overall ~39% chance of exactly one, ~19% of exactly two, then tailing off.

robindouglasjohnson marked this pull request as ready for review June 22, 2026 11:22

copperwater left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I had actually forgotten the Guild of Trespassers was a thing, so carry on with that.

You capitalize the pronouns by making the suffix capital - i.e. while %dh is "he/she", %dH is "He/She". The code for this if you're interested in seeing the full array is convert_arg and convert_line in questpgr.c.

Comment thread dat/quest.lua Outdated
Take it with you on your quest for the Amulet of Yendor, and you'll travel in
good company.
"%pC, while you were away, %d appeared to me, and suggested I
transfer %oe platinum yendorian express card to you. Carry it with you on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

missed conversion to a format string here?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

thanks, fixed for next commit

Comment thread dat/quest.lua Outdated
Comment on lines +2661 to +2662
text = [[You are back at %H. Things are looking so dire, you're afraid that
there may soon be no %H to return to.]],

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I know this is more or less unchanged, but if the stated stakes of the quest are "stop the Master of Thieves before he runs up a huge bill", this line no longer makes sense. Ankh-Morpork itself will be fine even if you fail.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Right. I changed the assignquest text to make it about saving the tourist industry - still below "save the city" stakes, but explains a visibly bad situation on arrival (the Thieves Guild are ascendent, people are frightened), and changed this text accordingly.

Comment thread dat/Tou-loca.lua Outdated
Comment on lines +170 to +172
if percent(10) then
des.monster({id="wizard", name="Granny Weatherwax", female=1, peaceful=1, keep_default_invent=false})
end

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Equal Rites establishes that there can be female wizards, but that witches and wizards are not two names for the same thing (as opposed to, say, Harry Potter). Granny Weatherwax is certainly not a wizard, and I feel if she appears in the game as a wizard and not a witch lots of people are going to complain. IMO, better just to leave her out since there is no "witch" monster in NetHack.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

She'd be referred to by her experience rank, but apart from maybe "enchantress" those are more wizardy than witchy, so fair enough - Granny excised. (She doesn't like Ankh-Morpork anyway.)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

(added 10% chance of Dorfl to keep the numbers up, though.)

Comment thread dat/Tou-strt.lua Outdated
Comment on lines +126 to +127
des.monster("barbarian", peaceful=1, name="Bravd", male=1, keep_default_invent=false)
des.monster("rogue", peaceful=1, name="the Weasel", male=1, keep_default_invent=false)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

These lines are going to throw a Lua error when the level loads; they need the table ({ ... }) syntax.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Ah, thanks. Changed.

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants


Back | FazBrowse Home | New Git URL