tt_dw  Documentation

This version of these scripts requires TinTin++ 2.02.03 or later


Tintin++ scripts for use on Discworld by Oki.

Desktop screenshot Mobile phone screenshot

All public domain (including the bits I lifted from
Feel free to use/modify whatever you want from these, or even bother me about it ingame or at
This documentation is horribly incomplete, and might be outdated in places, good luck!


For the brave and daring: download into an empty directory and run it. This will download and install:

  • These scripts
  • tt_map in-client map
  • Quow's Item+NPC database

People who don't feel like running arbitrary scripts from the internet: Look at and perform those steps manually.

Discworld options

For best results, set these options:
(The backslashes prevent TinTin++ treating dollar signs as special) * Prompt: \prompt "$hurtcolour$Hp: %^BOLD%^$hp$%^RESET%^$hurtcolour$ ($maxhp$) Gp: $gp$ ($maxgp$) Xp: $xp$ ($align$, $temp$)>" * Combat monitor: \monitor $hurtcolour$Hp: %^BOLD%^$hp$%^RESET%^$hurtcolour$ Gp: $gp$%^RESET%^ * Map: Make sure options output map is not set to "left" (anything else is fine) * Exits: brief exits

Required software

You only need TinTin++ to run these scripts.
But life will be (much) better if you also have:

  • fossil to download/update these scripts.
  • sqlite3 to use Quow's database
  • wget and unzip to download/update Quow's database


  • pico2wave for speech output (in libttspico-utils on Debian)
  • sox + libsox-fmt-all for sound effects




  • ZMP support (mini-map, vitals, surrounding rooms)
  • Mission timers
  • Use Quow`s database to lookup items and NPCs
  • Status bar
  • Stat items
  • Speedwalk to rooms
  • Sound triggers
  • Sound effects
  • Mobile view
  • Much more!


  • Arcane shielding
  • Broomstick charge colouring
  • Spell sizes
  • Quota timer


By default, you get a layout roughly like this:

|mini|         map            |text|
|map |                        |map |
|                         |chat log|
| Discworld!              |        |
|                         |        |
|                         |        |
|                         |        |
| > type here                      |

Drag dividers around to change the various panel sizes (except the mini map).
Click on screen edges to hide/show panels.

Directory layout:

~/tintin/         : root tintin dir
~/tintin/scripts  : these files
~/tintin/settings : personalized settings
~/tintin/logs     : logs will be written here
~/tintin/map      : map from
~/tintin/quow     : _quowmap_database.db from Quow`s plugin[1]



To save per-alt settings: copy scripts/settings/default.tin to settings/global/<altname>.tin and fill in your regen rates (and anything else you might want to change)
Settings files (if they exist) are applied in this order:

  1. scripts/settings/default.tin (comes with these scripts)
  2. settings/global/_shared.tin Note: outside the scripts directory!
  3. settings/local/_shared.tin
  4. settings/global/<altname>.tin
  5. settings/local/<altname>.tin

The idea is that if you play from multiple locations, you can set up some sort of cloud sync for settings/global/, and use settings/global/ for settings on a specific client.
Hint: If you rearrange the panels, use #var ui to export your setup, and copy the output (including #VARIABLE {ui}) into settings/global/_shared.tin.

Look at alias.tin for some useful TinTin++ aliases (more are hidden throughout the code) /alias also gives a list of short aliases.

Your theft quota is shown only if you read/check it using read quota brief/check quota brief


/discworld  connect to discworld
/sound_on /sound_off enable/disable sound effects+speech

While in-game:

/scan <target>   Highlight <target> red in written map list and rooms
/unscan <target> Stop highlighting <target>

Discworld aliases:

alias login frimble #Skills list:;options output skills = list;noalias skills;options output skills = branched
  this will make TinTin++ know your skill levels (put it in afterinventory if using stat items)
alias afterinventory gp brief;shields;inventory;score brief
  for initialization of stuff
alias sn sneak $arg:low$
  mapped to numpad 0
alias hw health wounded all
  mapped to numpad .
alias wrap cols 100$ifarg:;$*$;unwrap$endif$
alias unwrap cols 920
alias skills wrap skills $*$

Sadly, long lines that are cut up won't be handled very well (if at all)
The best solution so far is setting cols to something like 920, and let lines be wrapped client-side.
This does mess up output for some commands, which is where the wrap and unwrap aliases come in: You can use just wrap to temporarily switch to the narrow layout, and unwrap to switch back. Or use alias <command> wrap <command> to make it automatically switch for certain commands.

Item/NPC/Room lookup:

This uses Quow's database.

/room <part of room name> 
  to find room by short name
/npc <part of NPC name>
  to look up a NPC
/item <part of item name>
  to look up an item
/shop <part of item name>
  to only list places where you can buy the item
/loot <part of item name>
  to only list places where you can loot/gather/pickup the item
/item <number>
  to show item details with number from last result list

Use * or ? for wildcard searches.
Use ^ and $ for exact start/end match.
Make your search specific enough to match one item and it will tell you where to find it. If there are multiple item results, press the bracketed number in front to select one. Otherwise, the bracketed numbers in front of room/item/npc locations make you walk there. /p Only highlights the path to a room instead of walking there. If a room has no bracketed number, that usually means there is no way to walk there. (At least not a mapped way)


/item cake
  To find "cake"s, "pancake"s, "cake tin"s, ...
  Now you can press a number to show a specific cake
/item * cake  
  To not find "pancake"s
/item cake$
  To only find items ending in cake, so not e.g. "cake tin"
/item straw*cake
  To find strawberry cakes

/item strawberry cheese cake
/item straw* cake
  Only one match: will show you where to find a "strawberry cheese cake"
  Now you can press the number in front of one of those locations to walk there.

/npc william
  Shows a list of williams
  You can press the number in front of one of those locations to walk there.

/room drum
  Shows a list of rooms around the Mended Drum


Some suggestions for ~/.Xresources:

xterm*termName:       xterm-256color
xterm*faceName:       Dejavu Sans Mono
xterm*faceSize:       12
xterm*boldFont:       Dejavu Sans Mono Bold
xterm*cursorBlink:    true
xterm*leftScrollBar:  true
xterm*scrollBar:      false
xterm*saveLines:      99999
xterm*loginShell:     true
xterm*vt100*geometry: 120x50
xterm*VT100.numLock:  false
xterm*visualBell:     true
xterm*bellIsUrgent:   true
xterm*foreground:     white
xterm*background:     black
xterm*utf8:           true
xterm*utf8Title:      true
xterm*allowTitleOps:  true
xterm*allowWindowOps: true


Movement/commands via keypad (works for me using xterm, with the correct numlock status),

|nlk| / | * | - |
|   | i | k | u |
| 7 | 8 | 9 |   |
| nw| n | ne| + |
+---+---+---+ d |
| 4 | 5 | 6 |   |
| w | l | e |   |
| 1 | 2 | 3 | e |
| sw| s | se| n |
+---+---+---+ t |
| ->| 0 | . | e |
|   | sn| hw| r |

Click (touch it on mobile) on a room in the map to walk there.

Every line is logged to ~/.tintin/log/discworld/<current date>

Most stat items/arcane shielding is shown in the status bar
Some keeping track of missions


  • CTRL-o to toggle "movekeys": now you can use the "vi-keys" to move about:

    • HJKL: are the cardinal directions
      J looks like a down arrow(south), leaving H for north
    • The other keys around J (UINM) are the diagonal directions, going from J
    • YB are left for up/down

      | Y | U | I |
      | u | nw| ne|
        | H | J | K | L |
        | w | s | n | e |
      | B | N | M |
      | d | sw| se|
  • Hint: use /alias to get a list of two and three letter aliases (which are (usually) short for the complete alias)


  • Left-click (touch on mobile) on a room to walk there
  • Drag the map to move it
  • Hold down the right mouse button and move the cursor over a room to show the name+notes in the map title bar
  • Right-click on a room to output its name+notes
  • Middle-click on a room to show the full room info (mostly for mapping/debugging)


This mostly works, but there are lots of caveats, especially when actually mapping new rooms.
Also, merging TinTin++ map files isn't really feasible, so mostly you are encouraged to just use tt_map.