The player and the other characters. Each but the player runs a script from a slot in CHARACTERS (CHARACTERS), the orders it will take at once are byte 6 of that slot (DO_TALK, DO_TALK), and its reactions are the entries of its script table keyed by an action (REACT, REACT). Carrying capacity is byte 3 of the record.

No.CharacterStartsSideStrDefCarriesScript slotOrdersReacts toOwn handlers
$00youtunnel like hallthe player's646464---EAT: DO_EAT
after EAT: PLAYER_DIES
$3Cred golden dragonlower halls-19219296RED_GOLDEN_DRAGON_SLOT0ATTACK WITHnone
$3Dnasty goblindark stuffy passagethe goblins'729648NASTY_GOBLIN_SLOT0ATTACK WITHATTACK WITH: DO_ATTACK
after ATTACK WITH: GOBLIN_RETURNS
$3Egandalftunnel like hallthe player's11213696CHARACTERS5GIVE TO, CAPTURE, ATTACK WITHnone
$3Fthorintunnel like hallthe player's10412080THORIN_SLOT6GIVE TO, ATTACK WITHATTACK WITH: DO_ATTACK
after ATTACK WITH: THORIN_KILLED
$40wood elflevelled elvish clearingthe elves'6448255WOOD_ELF_SLOT1ATTACK WITH, GIVE TOnone
$41elrondrivendellthe player's, the elves'646448ELROND_SLOT5ATTACK WITH, GIVE TOnone
$42butlerelvenkings cellarthe elves'3211248BUTLER_SLOT1ATTACK WITH, GIVE TOnone
$43vicious wargtreeless opening-555548VICIOUS_WARG_SLOT0-none
$44gollumdeep dark lakethe goblins'32645GOLLUM_SLOT3ATTACK WITHnone
$45hideous goblindark stuffy passagethe goblins'729648HIDEOUS_GOBLIN_SLOT0ATTACK WITHATTACK WITH: DO_ATTACK
after ATTACK WITH: GOBLIN_RETURNS
$46bardlake townthe player's969616BARD_SLOT3ATTACK WITHnone
$47hideous trolltrolls clearing-160160144HIDEOUS_TROLL_SLOT1ATTACK WITHnone
$48vicious trolltrolls clearing-160160144VICIOUS_TROLL_SLOT1ATTACK WITHnone
$49horrible goblindark winding passagethe goblins'729648HORRIBLE_GOBLIN_SLOT0ATTACK WITHATTACK WITH: DO_ATTACK
after ATTACK WITH: GOBLIN_RETURNS
$4Amean goblindark stuffy passagethe goblins'729648MEAN_GOBLIN_SLOT0ATTACK WITHATTACK WITH: DO_ATTACK
after ATTACK WITH: GOBLIN_RETURNS
$4Bvicious goblindark stuffy passagethe goblins'729648VICIOUS_GOBLIN_SLOT0ATTACK WITHATTACK WITH: DO_ATTACK
after ATTACK WITH: GOBLIN_RETURNS
$4Cdisgusting goblinbig goblins cavernthe goblins'729648DISGUSTING_GOBLIN_SLOT0ATTACK WITHATTACK WITH: DO_ATTACK
after ATTACK WITH: GOBLIN_RETURNS

The scripts

Each character works through a script a step at a time, each step an action it tries as if it had typed it (CHARACTERS_ACT, CHARACTERS_ACT). A step that names no object acts on whatever fits. "Switch to one of its first N scripts at random" is how a character wanders: its ordinary scripts are often one list entered at different places. The reactions are the scripts REACT (REACT) sends a character to when something is done to it.

nasty goblin, hideous goblin -- NASTY_GOBLIN_SCRIPTS

At the start: NASTY_GOBLIN_A

An ordinary script: NASTY_GOBLIN_A

  1. OPEN: small insignificant crack
  2. CAPTURE -- if refused, GOBLINS_B
  3. Go to GOBLINS_A

On ATTACK WITH: GOBLINS_ON_ATTACK_WITH

  1. CAPTURE
  2. Back to its first script

vicious goblin -- VICIOUS_GOBLIN_SCRIPTS

At the start: VICIOUS_GOBLIN_A

An ordinary script: VICIOUS_GOBLIN_A

  1. GO NORTHWEST
  2. CAPTURE -- if refused, GOBLINS_J
  3. Go to GOBLINS_I

On ATTACK WITH: GOBLINS_ON_ATTACK_WITH

  1. CAPTURE
  2. Back to its first script

horrible goblin, mean goblin, disgusting goblin -- HORRIBLE_GOBLIN_SCRIPTS

At the start: HORRIBLE_GOBLIN_A

An ordinary script: HORRIBLE_GOBLIN_A

  1. RUN
  2. ATTACK WITH
  3. CAPTURE
  4. Go to HORRIBLE_GOBLIN_A

On ATTACK WITH: GOBLINS_ON_ATTACK_WITH

  1. CAPTURE
  2. Back to its first script

gandalf -- GANDALF_SCRIPTS

At the start: GANDALF_F

An ordinary script: GANDALF_A

  1. RUN
  2. TAKE -- if refused, GANDALF_B
  3. Call GANDALF_WHATS_THIS
  4. CLOSE
  5. GIVE TO
  6. then on as GANDALF_B

An ordinary script: GANDALF_B

  1. RUN
  2. DROP
  3. then on as GANDALF_C

An ordinary script: GANDALF_C

  1. RUN
  2. Call GANDALF_CHATTER
  3. then on as GANDALF_D

An ordinary script: GANDALF_D

  1. RUN
  2. GIVE TO
  3. then on as GANDALF_E

An ordinary script: GANDALF_E

  1. OPEN
  2. Switch to one of its first 4 scripts at random

On GIVE TO: ON_GIVE_TO

  1. Call GIVEN_SOMETHING
  2. Back to its first script

On CAPTURE: GANDALF_ON_CAPTURE

  1. GO THROUGH -- if refused, HIDEOUS_TROLL_E
  2. RUN
  3. Back to its first script

On ATTACK WITH: ON_ATTACK_WITH

  1. ATTACK WITH (an order cannot interrupt it) -- if refused, HIDEOUS_TROLL_C
  2. ATTACK WITH (an order cannot interrupt it) -- if refused, HIDEOUS_TROLL_D
  3. RUN (an order cannot interrupt it)
  4. Go to ON_ATTACK_WITH

Where it starts: GANDALF_F

  1. GIVE TO: curious map, the player
  2. OPEN: round green door
  3. then on as GANDALF_A

thorin -- THORIN_SCRIPTS

At the start: THORIN_A

An ordinary script: THORIN_A

  1. FOLLOW: the player -- if refused, THORIN_B
  2. Go to THORIN_A

On GIVE TO: ON_GIVE_TO

  1. Call GIVEN_SOMETHING
  2. Back to its first script

On ATTACK WITH: ON_ATTACK_WITH

  1. ATTACK WITH (an order cannot interrupt it) -- if refused, HIDEOUS_TROLL_C
  2. ATTACK WITH (an order cannot interrupt it) -- if refused, HIDEOUS_TROLL_D
  3. RUN (an order cannot interrupt it)
  4. Go to ON_ATTACK_WITH

wood elf -- WOOD_ELF_SCRIPTS

At the start: WOOD_ELF_A

An ordinary script: WOOD_ELF_A

  1. CAPTURE
  2. RUN
  3. Go to WOOD_ELF_A

On ATTACK WITH: WOOD_ELF_A

  1. CAPTURE
  2. RUN
  3. Go to WOOD_ELF_A

On GIVE TO: ON_GIVE_TO

  1. Call GIVEN_SOMETHING
  2. Back to its first script

vicious warg -- VICIOUS_WARG_SCRIPTS

At the start: VICIOUS_WARG_A

An ordinary script: VICIOUS_WARG_A

  1. ATTACK WITH -- if refused, VICIOUS_WARG_B
  2. Go to VICIOUS_WARG_A

butler -- BUTLER_SCRIPTS

At the start: BUTLER_A

An ordinary script: BUTLER_A

  1. UNLOCK WITH: red door, red key
  2. OPEN: red door
  3. CLOSE: red door
  4. LOCK WITH: red door, red key
  5. then on as BUTLER_ON_ATTACK_WITH

On ATTACK WITH: BUTLER_ON_ATTACK_WITH

  1. CAPTURE -- if refused, BUTLER_B
  2. Go to BUTLER_ON_ATTACK_WITH

On GIVE TO: ON_GIVE_TO

  1. Call GIVEN_SOMETHING
  2. Back to its first script

elrond -- ELROND_SCRIPTS

At the start: ELROND_B

An ordinary script: ELROND_A

  1. Call ELROND_GIVES_LUNCH
  2. Pause: nothing this turn
  3. Pause: nothing this turn -- if refused, ELROND_B
  4. then on as ELROND_ON_ATTACK_WITH

On ATTACK WITH: ELROND_ON_ATTACK_WITH

  1. ATTACK WITH -- if refused, ELROND_B
  2. Go to ELROND_ON_ATTACK_WITH

On GIVE TO: ON_GIVE_TO

  1. Call GIVEN_SOMETHING
  2. Back to its first script

Where it starts: ELROND_B

  1. Call ELROND_HELLO -- if refused, ELROND_C
  2. then on as ELROND_A

red golden dragon -- RED_GOLDEN_DRAGON_SCRIPTS

At the start: RED_GOLDEN_DRAGON_A

An ordinary script: RED_GOLDEN_DRAGON_A

  1. Call DRAGON_HUNTS -- if refused, RED_GOLDEN_DRAGON_B
  2. Go to RED_GOLDEN_DRAGON_A

On ATTACK WITH: RED_GOLDEN_DRAGON_ON_ATTACK_WITH

  1. BURN
  2. Go to RED_GOLDEN_DRAGON_A

bard -- BARD_SCRIPTS

At the start: BARD_A

An ordinary script: BARD_A

  1. Call BARD_TAKES_ORDER (an order cannot interrupt it)
  2. TAKE: wooden chest (an order cannot interrupt it)
  3. Go to BARD_A

On ATTACK WITH: BARD_ON_ATTACK_WITH

  1. SHOOT (an order cannot interrupt it) -- if refused, ON_ATTACK_WITH
  2. Go to BARD_ON_ATTACK_WITH

gollum -- GOLLUM_SCRIPTS

At the start: GOLLUM_A

An ordinary script: GOLLUM_A

  1. Call GOLLUM_ASKS -- if refused, GOLLUM_C
  2. Call GOLLUM_HEARS_ANSWER (an order cannot interrupt it)
  3. DROP: valuable golden ring
  4. GO NORTH -- if refused, GOLLUM_E
  5. TAKE: valuable golden ring
  6. Go to GOLLUM_A

On ATTACK WITH: GOLLUM_ON_ATTACK_WITH

  1. WEAR: valuable golden ring
  2. RUN
  3. Go to GOLLUM_A

hideous troll, vicious troll -- HIDEOUS_TROLL_SCRIPTS

At the start: HIDEOUS_TROLL_B

An ordinary script: HIDEOUS_TROLL_A

  1. Call TROLLS_EAT
  2. Pause: nothing this turn
  3. Call TROLLS_EAT
  4. Pause: nothing this turn
  5. Call TROLLS_EAT
  6. Pause: nothing this turn
  7. Call TROLLS_EAT
  8. Call TROLLS_TURN_TO_STONE
  9. Go to HIDEOUS_TROLL_A

On ATTACK WITH: ON_ATTACK_WITH

  1. ATTACK WITH (an order cannot interrupt it) -- if refused, HIDEOUS_TROLL_C
  2. ATTACK WITH (an order cannot interrupt it) -- if refused, HIDEOUS_TROLL_D
  3. RUN (an order cannot interrupt it)
  4. Go to ON_ATTACK_WITH

Where it starts: HIDEOUS_TROLL_B

  1. Call TROLLS_TALK -- if refused, HIDEOUS_TROLL_B
  2. then on as HIDEOUS_TROLL_A