Tintin++ scripts for use on Discworld by Oki.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Richard de Boer 5663cec7a2 Fix?? tindir 4 weeks ago
bash Fiddle with terminal window title 1 month ago
faith Minor fixes 2 months ago
items Fix prayer_beads status display 1 month ago
magic %a -> %* 1 month ago
map Optimize @sort_rooms{} a bit for non-reachable rooms 1 month ago
missions Only listen for Werks talking to you 5 months ago
mobile Mapper: no more autosaving 7 months ago
quow Map/quow: also list unreachable rooms, add /map to show local map 1 month ago
settings Whoops: load vault when we know $altname 7 months ago
sound Another burnning door sound 1 month ago
sound_files Sounds for parch, rain 10 months ago
util Fiddle with terminal window title 1 month ago
vault Vault: fix room id function 6 months ago
zmp Fiddle with terminal window title 1 month ago
.gitignore Get rid of status_alts, add /settings/ 1 year ago
README.md Bump tt++ version requirement 1 month ago
UNLICENSE Add unlicense 3 years ago
alias.tin Map/quow: also list unreachable rooms, add /map to show local map 1 month ago
chat.tin %a -> %* 1 month ago
combat.tin %a -> %* 1 month ago
discworld.tin Fix?? tindir 4 weeks ago
global.tin Show map on mobile: it's worth the screen space because we can move on it nowadays. 3 months ago
hands.tin Status: show inside tintin++ 7 months ago
high.tin Highlight last fire bunny 1 month ago
misc.tin %a -> %* 1 month ago
mobile.tin mobile improvements 1 year ago
quota.tin Nicer status prompt 7 months ago
skills.tin Update regexes to no longer use %+ 1 month ago
status.tin Refactor stat items (and gp light) into separate files, plus some consistification 1 month ago


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


Tintin++ scripts for use on Discworld by Oki.

All public domain (including the bits I lifted from tintin.sourceforge.net)

Feel free to use/modify whatever you want from these, or even bother me about it ingame or at oki@tubul.net



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


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


This documentation is horribly incomplete, and might be outdated in places, good luck!

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

For use on Android, see MOBILE below.

Using tmux, run ./bash/discworld.sh to get a layout roughly like this:

|<map> |<discworld>         |<chat>|
|      |                    |      |
|      |                    |      |
|      |                    |      |
|      |                    |      |
|      |                    |      |
|      |                    |      |
|      +---------------------------+
|      |<status>                   |

Directory layout:

~/tintin/        : root tintin dir
~/tintin/scripts : these files
~/tintin/logs    : logs will be written here
~/tintin/maps    : map from https://git.tubul.net/richard/tt_maps
                   `git clone https://git.tubul.net/richard/tt_maps ~/tintin/maps`
~/tintin/quow    : extract _quowmap_database.db from Quow`s plugin[1] and put it here

[1] http://quow.co.uk/minimap.php

Copy settings/default.tin to settings/global/<altname>.tin and fill in your regen rates
Look at [alias.tin] for some useful aliases (more are hidden throughout the code)

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 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 77$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:

/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
/appraise <part of item name>
  to see item appraise info instead

Use * 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


You can add custom settings under the settings/ directory:
default.tin : default settings for everyone (don’t modify this file or git will complain)

Add your own settings under global/ or local/
global/: “global” settings: files in here are loaded first
global/_shared.tin: custom settings shared between all alts
global/<altname>.tin: custom settings applied when logging in as

local/: “local” settings: files in here are loaded after “global”
local/_shared.tin: custom settings shared between all alts
local/<altname>.tin: custom settings applied when logging in as

The idea is that you can put your own settings under “global” and setup some cloud sync to share them across devices.
You can then add device-specific tweaks in “local”.


This mostly works, but there are lots of caveats, especially when actually mapping new rooms.


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 |

Some chats/tells get logged to /tmp/tintin/chat
When looking in a room, map is written to /tmp/tintin/map
Your current status is continuously written to /tmp/tintin/status
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


Recommended setup for Android:

  • Termux: (Linux environment on android, you can install git and tintin++ inside)
  • Hackers’ keyboard: (For keyboard layout with more keys)

Instead of bash/discworld.sh, run bash/mobile.sh. This uses a layout without any extra panels.

  • CTRL-l to Look at the map
  • 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)