# --- JACL INCLUDE FILE: verbs.library
# Release 15, Copyright (C) Stuart Allen 1990-2002.

filter eine
filter ein
filter der
filter die
filter das
filter den
filter dem

variable COUNTER
variable INDEX
variable TEMP
variable RETURN_VALUE
variable OB1
variable OB2
variable OB3
variable OB4
variable OXYGEN_LEFT
variable WAY
variable DIRECTION
variable DESTINATION

constant NORTH          0
constant SOUTH          1
constant EAST           2
constant WEST           3
constant NORTHEAST      4
constant NORTHWEST      5
constant SOUTHEAST      6
constant SOUTHWEST      7
constant UP             8
constant DOWN           9
constant IN             10
constant OUT            11

synonym im              in
synonym mit             with
synonym mann            man

synonym eins		1
synonym zwei		2
synonym drei		3
synonym vier		4
synonym fünf		5
synonym sechs		6
synonym sieben		7
synonym acht		8
synonym neun		9
synonym zehn		10

{+number_upper
if arg[0] = 0
   write "Null"
   break
endif
if arg[0] = 1
   write "Eins"
   break
endif
if arg[0] = 2
   write "Zwei"
   break
endif
if arg[0] = 3
   write "Drei"
   break
endif
if arg[0] = 4
   write "Vier"
   break
endif
if arg[0] = 5
   write "Fünf"
   break
endif
if arg[0] = 6
   write "Sechs"
   break
endif
if arg[0] = 7
   write "Sieben"
   break
endif
if arg[0] = 8
   write "Acht"
   break
endif
if arg[0] = 9
   write "Neun"
   break
endif
if arg[0] = 10
   write "Zehn"
   break
endif
write arg[0]
}

{+number_lower
if arg[0] = 0
   write "null"
   break
endif
if arg[0] = 1
   write "eins"
   break
endif
if arg[0] = 2
   write "zwei"
   break
endif
if arg[0] = 3
   write "drei"
   break
endif
if arg[0] = 4
   write "vier"
   break
endif
if arg[0] = 5
   write "fünf"
   break
endif
if arg[0] = 6
   write "sechs"
   break
endif
if arg[0] = 7
   write "sieben"
   break
endif
if arg[0] = 8
   write "acht"
   break
endif
if arg[0] = 9
   write "neun"
   break
endif
if arg[0] = 10
   write "zehn"
   break
endif
write arg[0]
}

synonym taek            take
synonym speak           talk
synonym depress         press
synonym w               west
synonym o               east
synonym s               south
synonym so              southeast
synonym sw              southwest
synonym n               north
synonym no              northeast
synonym nw              northwest
synonym u               up
synonym r               down
synonym l               look
synonym beneath         under

{+push_object
if player(parent) = noun4(parent)
   if here hasnt DARK
      write  noun4{The}
      execute +to_direction
   else
      write "Du h&ouml;rst schritte in der N&auml;he.^"
endif
set noun4(parent) = DESTINATION
if player(parent) = noun4(parent)
   if here hasnt DARK
      write  noun4{The}
      execute +from_direction
   else
      write "Du h&ouml;rst schritte in der N&auml;he.^"
   endif
endif
}

{+to_direction
if DIRECTION = NORTH
   write " f&uuml;hrt nach Norden.^"
   break
endif
if DIRECTION = NORTHEAST
   write " f&uuml;hrt nach Nordosten.^"
   break
endif
if DIRECTION = EAST
   write " f&uuml;hrt nach Osten.^"
   break
endif
if DIRECTION = SOUTHEAST
   write " f&uuml;hrt nach S&uuml;dosten.^"
   break
endif
if DIRECTION = SOUTH
   write " f&uuml;hrt nach S&uuml;den.^"
   break
endif
if DIRECTION = SOUTHWEST
   write " f&uuml;hrt nach S&uuml;dwesten.^"
   break
endif
if DIRECTION = WEST
   write " f&uuml;hrt nach Westen.^"
   break
endif
if DIRECTION = NORTHWEST
   write " f&uuml;hrt nach Nordwesten.^"
   break
endif
if DIRECTION = UP
   write " f&uuml;hrt nach oben.^"
   break
endif
if DIRECTION = DOWN
   write " f&uuml;hrt nach unten.^"
}

{+from_direction
if DIRECTION = NORTH
   write " ist s&uuml;dlich von hier.^"
   break
endif
if DIRECTION = NORTHEAST
   write " ist s&uuml;dwestlich von hier.^"
   break
endif
if DIRECTION = EAST
   write " ist westlich von hier.^"
   break
endif
if DIRECTION = SOUTHEAST
   write " ist nordwestlich von hier.^"
   break
endif
if DIRECTION = SOUTH
   write "  ist n&ouml;rdlich von hier.^"
   break
endif
if DIRECTION = SOUTHWEST
   write " ist nord&ouml;stlich von hier.^"
   break
endif
if DIRECTION = WEST
   write " ist &ouml;stlich von hier.^"
   break
endif
if DIRECTION = NORTHWEST
   write " ist s&uuml;d&ouml;stlich von hier.^"
   break
endif
if DIRECTION = UP
   write " ist unter Dir.^"
   break
endif
if DIRECTION = DOWN
   write " ist &uuml;ber Dir.^"
}

object previous_exits : previous exits

variable EXITS_AVAILABLE

{+exits
set COUNTER = 0
repeat
   set previous_exits(COUNTER) = 0
   set COUNTER + 1
until COUNTER = 12

set COUNTER = 0
set INDEX = 0
set EXITS_AVAILABLE = 0
repeat
   if here(COUNTER) != nowhere
      execute "+in_list" here(COUNTER)
      if RETURN_VALUE = false
	 set previous_exits(COUNTER) = here(COUNTER)
         set INDEX + 1
      endif
   endif
   set COUNTER + 1
until COUNTER = 12

set COUNTER = 0
repeat
   set previous_exits(COUNTER) = 0
   set COUNTER + 1
until COUNTER = 12

write "Von hier kann man "
if INDEX = 0 
   write "keinen weiteren Ort erreichen."
   break
else
   set EXITS_AVAILABLE = 1
endif

set COUNTER = 0
repeat
   if here(COUNTER) != nowhere
      execute "+in_list" here(COUNTER)
      if RETURN_VALUE = false
         set noun4 = here(COUNTER)
	 set previous_exits(COUNTER) = noun4
	 execute "+show_link"
         set INDEX - 1
         execute +or_structure
      endif
   endif
   set COUNTER + 1
until COUNTER = 12

if EXITS_AVAILABLE = 1
   write " erreichen"
endif

write .
}

{+in_list
set TEMP = 0
repeat
   if previous_exits(TEMP) = arg[0]
      set RETURN_VALUE = true
      break
   endif
   set TEMP + 1
until TEMP = 12
set RETURN_VALUE = false
}

{+show_link
if COUNTER = 0
   hyperlink noun4{the} "gehe+nord"
   break
endif
if COUNTER = 1
   hyperlink noun4{the} "gehe+süd"
   break
endif
if COUNTER = 2
   hyperlink noun4{the} "gehe+ost"
   break
endif
if COUNTER = 3
   hyperlink noun4{the} "gehe+west"
   break
endif
if COUNTER = 4
   hyperlink noun4{the} "gehe+nordost"
   break
endif
if COUNTER = 5
   hyperlink noun4{the} "gehe+nordwest"
   break
endif
if COUNTER = 6
   hyperlink noun4{the} "gehe+südost"
   break
endif
if COUNTER = 7
   hyperlink noun4{the} "gehe+südwest"
   break
endif
if COUNTER = 8
   hyperlink noun4{the} "gehe+rauf"
   break
endif
if COUNTER = 9
   hyperlink noun4{the} "gehe+runter"
   break
endif
if COUNTER = 10
   hyperlink noun4{the} "gehe+in"
   break
endif
if COUNTER = 11
   hyperlink noun4{the} "gehe+aus"
   break
endif
}

{+list_here
write ""

set INDEX = 0
loop
  if noun3 is *here
     set INDEX + 1
  endif
endloop

if INDEX = 0
  write "Nichts besonderes."
else
  loop
    if noun3 is *here
       option noun3
    endif
  endloop
endif

write ""
}

{+list_held
write ""

set INDEX = 0
loop
  if noun3(parent) = player
     if noun3(mass) != scenery
        set INDEX + 1
     endif
  endif
endloop

if INDEX = 0
  write "Rein gar nichts."
else
  loop
     if noun3(parent) = player
        if noun3(mass) != scenery
           option noun3
        endif
     endif
  endloop
endif
write ""
}

{+darkness
if here has DARKNESS
   execute "+no_light"
   break
endif
break false
}

{+can_talk
if here has UNDER_WATER
  write "Es ist nicht leicht, unter Wasser zu reden.^"
  set TIME = false
  break
endif
if noun4 hasnt ANIMATE
  write "Ich glaube, es nutzt nichts, mit " noun4{the} " zu reden.^"
  set TIME = false
  break
endif
if noun4 has DEAD
  write  noun4{The} " " noun4{is} " ist etwas zu tot, um noch zu antworten.^"
  set TIME = false
  break
endif
if noun4 = player
  write "&auml;hm, k&ouml;nnte dies ein erstes Anzeichen von Wahnsinn sein?^"
  break
endif
break false
}

{+reach
if noun4 has OUT_OF_REACH
  write  noun4{The} " " noun4{is} " nicht zu erreichen.^"
  set TIME = false
  break
endif
break false
}

{+worn
if noun4 has WORN
   write "" noun4{the} " sollte zuerst entfernt werden.^"
   set TIME = false
   break
endif
break false
}

location limbo : limbo

object north_wall: north north wall
 short          the "north wall"

object south_wall: south southern wall
 short          the "south wall"

object east_wall: east eastern wall
 short          the "east wall"

object west_wall: west western wall
 short          the "west wall"

object ground: ground floor
 has            SURFACE
 short          the "ground"

grammar shake *held   >shake
grammar wave *held    >shake

{+shake
write "Kein Thema.^"
}

variable XYZZY	false

grammar sage xyzzy >xyzzy
grammar xyzzy     >xyzzy

{+xyzzy
if XYZZY = true
   write "~Schau, dass Du Land gewinnst.~^"
   break
endif
write "~Das ist das Passwort um die geheime T&uuml;r zu &ouml;ffnen!!"
write "~Bist Du sicher?! Die Stimme klingt mir aber fremd.~^^"
write "~Das liegt sicherlich an der T&uuml;re. Die d&auml;mmt den Schall.~^^"
write "Eine bisher unsichtbare T&uuml;re schwingt auf. Durch sie kannst Du "
write "etwas sehen, dass man nur noch als ~Gottes Heimwerkerkeller~ bezeichnen kann...^^" 
write "print ~Scheisse! Ich hab' Dir ja gleich gesagt, das ist nicht *ER*!!~;^"
write "set bouncer_1(panic) + 5;^"
write "print ~Schnell! Schliesst die T&uuml;r.~;^"
write "set poo(parent) = bouncer_2s_trousers;^"
write "ensure magic_door has CLOSED;^"
write "^Die T&uuml;re schlisst sich und verschwindet wieder. Du hast das Ge&uuml;hl es k&ouml;nnte "
write "~einer von diesen Tagen~ werden.^"
set XYZZY = true
}

grammar ausführlich >verbose

{+verbose
if DISPLAY_MODE = 1
  write "Anzeigemodus bereits auf 'ausf&uuml;hrlich' gesetzt.^"
  break
endif
write "Anzeigemodus auf 'ausf&uuml;hrlich' gesetzt.^"
set DISPLAY_MODE = 1
look
}

grammar einfach >brief

{+brief
if DISPLAY_MODE = 0
  write "Anzeigemodus bereists auf 'einfach' gesetzt.^"
  break
endif
write "Anzeigemodus auf 'einfach' gesetzt.^"
set DISPLAY_MODE = 0
}

grammar help *present           >help_other

{+help_other
write "Und inwiefern m&ouml;chtest Du " noun1{the} "helfen?^"
}

grammar hint *present >hint

{+hint
write "F&uuml;hr " noun1{the} " gibt es keine Hilfe.^"
set TIME = false
}

grammar hilfe          >first_hint
grammar hilfe eins      >first_hint

{+first_hint
write "Es gibt zu diesem Raum keine spezielle Hilfe.^"
set TIME = false
}

grammar hilfe zwei      >second_hint

{+second_hint
write "Es gibt keine weitere Hilfe zu diesen Raum.^"
set TIME = false
}

grammar hilfe drei    >third_hint

{+third_hint
write "Auch eine dritte Hilfe gibt es nicht.^"
set TIME = false
}

grammar hilfe vier     >fourth_hint

{+fourth_hint
write "Es gibt ein Maximum an Hilfem&ouml;glichkeiten. Dieses Maximum betr&auml;gt drei.^"
set TIME = false
}

grammar hilfe spiel >help_games

{+help_games
write "`SPIEL' BEZIEHT SICH AUF SIMULATIONEN UND SPIELE WELCHE TAKTISCHE UND "
write "STRATEGISCHE APPLIKATIONEN BEINHALTEN.^"
}

grammar knuddel *present >hug
grammar drücke *present >hug

{+hug
break +darkness
break +reach noun1
override
if noun1 hasnt ANIMATE
  write "Komisch.^"
  break
endif
write "Ich bin sicher, " noun1{the} " f&uuml;hlt " noun1{s} " jetzt viel besser.^"
}

grammar küsse *present >kiss

{+kiss
break +darkness
break +reach noun1
override
write "Hmmmmmm...^"
}

grammar hacke *present with *held >pick_with

{+pick_with
break +darkness
break +reach noun1
override
write "Du kannst " noun1{the} " nicht mit " noun2{the} " bearbeiten.^"
}

grammar reibe *present    >rub
grammar klopfe *present    >rub

{+rub
break +darkness 
break +reach noun1
override
write "Ich bin sicher " noun1{the} " f&uuml;hlt " noun1{is} " jetzt viel besser.^"
}

grammar reibe *held an *present         >rub_on

{+rub_on
break +darkness
override
proxy "reibe " noun2 " mit " noun1
}

grammar reibe *present mit *held    >rub_with

{+rub_with
break +darkness
break +reach noun1
override
write "Es entsteht ein bischen Reibungsw&auml;rne.^"
}

grammar lecke *present  >lick
grammar schmecke *present >lick

{+lick
break +darkness
break +reach noun1
override
write "W&uuml;rg!^"
}

grammar ziehe *present >pull

{+pull
break +darkness
break +reach noun1
override
write "Du kannst " noun1{the} " nicht ziehen.^"
}

grammar schneide *present  >cut
grammar schnipple *present >cut

{+cut
write "Womit willst Du " noun1{the} " schneiden?^"
set TIME = false
}

grammar steche *present >steche

{+steche
write "Womit willst Du " noun1{the} " stechen?^"
set TIME = false
}

grammar schneide *present mit *held       >cut_with
grammar schnipple *present mit *held      >cut_with

{+cut_with
break +darkness
break +reach noun1
override
if noun1 has ANIMATE
  proxy "attackiere " noun1 " mit " noun2
  break
endif
write "Vandale!^"
set TIME = false
}

grammar steche *present mit *held      >steche_mit

{+steche_mit
break +darkness
break +reach noun1
override
if noun1 has ANIMATE
  proxy "attackiere " noun1 " mit " noun2
  break
endif
write "Vandale!^"
set TIME = false
}


grammar breche *present          >break
grammar trete *present           >break
grammar schlage *present          >break
grammar zertrümmer *present          >break
grammar zerstöre *present        >break
grammar zerbreche *present          >break
grammar zerreisse*present          >break

{+break
break +darkness
break +reach noun1
override
write "Sei doch nicht so destruktiv.^"
set TIME = false
}

grammar säubere *present        >clean
grammar putze *present         >clean
grammar wische *present        >clean
grammar schrubbe *present      >clean
grammar poliere *present       >clean

{+clean
break +darkness
break +reach noun1
override
if noun1 has LIQUID
  write "Wie willst Du eine Fl&uuml;ssigkeit s&auml;ubern?^"
  set TIME = false
  break
endif
override
write "Das ist sehr nett von Dir.^"
}

grammar säubere *present mit *held   >clean_with
grammar wische *present  mit *held   >clean_with
grammar schrubbe *present mit *held  >clean_with
grammar bürste *present mit *held    >clean_with

{+clean_with
break +darkness
break +reach noun1
override
if noun1 has LIQUID
  write "Wie willst Du eine Fl&uuml;ssigkeit s&auml;ubern?^"
  set TIME = false
  break
endif
override
write "Du kannst " noun1{the} " nicht mit " noun2{the} "s&aumln;ubern.^"
set TIME = false
}

grammar schreie *present an     >yell_at
grammar brülle *present an  >yell_at

{+yell_at
write "Ooohh, gef&auml;hrlich...^"
}

grammar bezahle *present       >pay

{+pay
write "Du kannst " noun1{the} " nicht bezahlen.^"
}

grammar bestelle *carried          >order
grammar kaufe    *carried          >order
grammar bestelle *anywhere         >order
grammar kaufe    *anywhere         >order

{+order
write "Deine Bestellung scheint auf taube Ohren zu stossen.^"
}

grammar klopfe auf *present     >knock_on
grammar klopfe an *present      >knock_on

{+knock_on
break +darkness
break +reach noun1
override
if noun1 has LIQUID
  write "Eine feuchte Hand ist das einzige, was Du davon hast.^"
  break
endif
write "Unglaublich produktiv...^"
}

grammar rauche *present >smoke

{+smoke
break +darkness
break +reach noun1
override
write "Du kannst " noun1{the} " nicht rauchen.^"
set TIME = false
}

grammar spiele *present >play
grammar spiel *present >play

{+play
break +darkness
break +reach noun1
override
write "Du kannst " noun1{the} " nicht spielen.^"
set TIME = false
}

grammar pumpe *present >pump

{+pump
break +darkness
break +reach noun1
override
write "Du kannst " noun1{the} " nicht pumpen.^"
set TIME = false
}

grammar entnehme *here mit *held      >take_with
grammar entnimm *here mit *help       >take_with
grammar nehme *here mit *held         >take_with
grammar nimm *here mit *held          >take_with
grammar entferne *present mit *held   >take_with
grammar leere *present mit *held      >take_with

{+take_with
proxy "fülle " noun2 " mit " noun1
}

grammar fülle *held von *present      >fill_from
grammar fülle *held vom *present      >fill_from
grammar fülle *held an  *present      >fill_from

{+fill_from
break +darkness
execute +liquid noun2
if INDEX = false
  write  noun2{The} " " noun2{doesnt} " genug Fl&uuml;ssigkeit, um " noun1{the}
  write " zu f&uuml;llen.^"
  set TIME = false
  break
endif
proxy "fülle " noun1 " mit " noun3
}

grammar fülle *held mit *present >fill_with

{+fill_with
break +darkness
break +reach noun2
if noun1 hasnt CONTAINER
  write  noun1{The} " " noun1{isnt} " f&uuml;r solche Zwecke konzipiert und kann somit "
  write "nicht gef&uuml;llt werden.^"
  break
endif
if noun1 has CLOSED
  write "Du kannst " noun1{the} " nicht f&uuml;llen solange "
  if noun1 has PLURAL
    write "sie geschlossen sind."
    set TIME = false
    break
  else
    write "er/sie/es"
    write " geschlossen ist.^"
    set TIME = false
    break
  endif
endif
if noun2 hasnt LIQUID
  write "Du kannst " noun1{the} " nur mit Fl&uuml;ssigkeit f&uuml;llen.^"
  break
endif
execute +liquidwrite noun1
if INDEX = true
  write  noun1{The} " ist bereits mit " noun3{the} " gef&uuml;llt. W&uuml;rdest Du "
  write "nun " noun2{the} " hinzuf&uuml;gen w&uuml;rden sie sich vermischen.^"
  set TIME = false
  break
endif
if noun1(quantity) < noun2(mass)
  write  noun1{The} " " noun1{isnt} " ist nicht gross genug um " 
  write noun2{the} " aufzunehmen.^"
  set TIME = false
  break
endif
override
write "Du f&uuml;llst " noun1{the} " mit " noun2{the} ".^"
move noun2 to noun1
}

{+liquid?
set INDEX = false
loop
  if noun3(parent) = noun4
    if noun3 has LIQUID
      set INDEX = true
      break
    endif
  endif
endloop
}

grammar fülle *present >fill

{+fill
break +darkness
override
write "Womit willst Du " noun1{the} " f&uuml;llen?^"
set TIME = false
}

grammar stehe         >stand
grammar stehe auf     >stand
grammar aufstehen     >stand

{+stand
if player has SITTING
  write "Du st&ouml;sst Dich mit Deinen Armen ab und stehst.^"
  ensure player hasnt SITTING
  break
endif
write "Du stehst bereits.^"
}

grammar schlafe         >sleep
grammar penne           >sleep

{+sleep
write "Dazu hast Du sp&auml;ter noch genug Zeit...^"
set TIME = false
}

grammar liege auf *present       >lie_on
grammar hinlegen auf *present    >lie_on
grammar schlafe auf *present     >lie_on
grammar schlafe in *present      >lie_on
grammar schlafe im *present      >lie_on

{+lie_on
break +darkness
break +reach noun1
override
write  noun1{The} " " noun1{doesnt} " sieht nicht gerade wie ein gem&uuml;tliches Pl&auml;tzchen zum "
write "schlafen aus.^"
}

grammar sitz		>sit
grammar sitze           >sit
grammar hinsetzen	>sit
grammar setzen          >sit

{+sit
set TIME = false
if player has SITTING
  write "Du sitzt bereits.^"
  break
endif
if here has UNDER_WATER
  write "W&auml;hrend du unterwasser bist?!?^"
  break
endif
if here has ON_WATER
  write "W&auml;hrend Du im Wasser bist?^"
  break
endif
write "Du setzt Dich für einen kurzen Moment nieder.^"
ensure player has SITTING
}

grammar sitz auf  *here  >sit_on
grammar sitze auf *here  >sit_on
grammar sitz in   *here  >sit_on
grammar sitze in  *here  >sit_on
grammar sitz im   *here  >sit_on
grammar sitze im  *here	 >sit_on

{+sit_on
break +darkness
break +reach noun1
override
write  noun1{The} " " noun1{doesnt} " gerade einen gem&uuml;tlichen Eindruck.^"
}

grammar lege alles                  >drop_all
grammar lege alles hin              >drop_all
grammar lege alles ab               >drop_all
grammar verliere alles              >drop_all
grammar verliere alle gegenstände   >drop_all

{+drop_all
set TIME = false
if here has MID_WATER : here has ON_WATER
  write "Alles, was Du mit Dir tr&auml;gst ins Wasser zu werfen scheint"
  write "mir keine gute Idee zu sein.^"
  break
endif
set INDEX = 0
loop
if noun3(parent) = player
  if noun3 hasnt WORN
    if noun3(mass) < heavy
      if TIME = true
	set TOTAL_MOVES + 1
      endif
      write "Du legst " noun3{the} " hin.^"
      move noun3 to here
      set TIME = true
      set INDEX + 1
    endif
  else
    write "Du musst erst " noun3{the} " ablegen.^"
    set TIME = false
    set INDEX + 1
  endif
endif
endloop
if INDEX = 0
  write "Du tr&auml;gst keine Gegenst&auml;nde mit Dir.^"
  break
}

grammar wirf *held	>throw
grammar werfe *held	>throw
grammar schleuder *held	>throw
grammar schmeiss *held	>throw
grammar schmeisse *held	>throw

{+throw
if noun1 has WEARABLE
  if noun1 has WORN
    write "Du musst erst " noun1{the} " ablegen.^"
    set TIME = false
    break
  endif
endif
if noun1(mass) >= heavy : noun1 has LOCATION
  execute +move_scenery
  break
endif
override
if here has MID_WATER : here has ON_WATER
  write noun1{the} " versinkt rapide im Wasser." 
  write " Und ist damit f&uuml; immer verschwunden.^"
  move noun1 to limbo
  break
endif
write "Du wirfst " noun1{the} .^
move noun1 to here
}

grammar verliere *held	>drop
grammar lege *held      >drop
grammar lege *held ab	>drop

{+drop
if noun1 has WEARABLE
  if noun1 has WORN
    write "Du musst erst " noun1{the} " ablegen.^"
    set TIME = false
    break
  endif
endif
if noun1(mass) >= heavy : noun1 has LOCATION
  execute +move_scenery
  break
endif
override
if here has MID_WATER : here has ON_WATER
  write noun1{the} " versinkt rapide im Wasser." 
  write " Und ist somit f&uuml;r immer verschwunden.^"
  move noun1 to limbo
  break
endif
write "Du legst " noun1{the} " ab.^"
move noun1 to here
}

grammar nimm alles aus *present		      >take_all_from
grammar nehme alles aus *present              >take_all_from
grammar nimm alles von *present               >take_all_from
grammar nehme alles von *present              >take_all_from
grammar nimm alles auf *present               >take_all_from
grammar nehme alles auf *present              >take_all_from
grammar nimm alles in *present               >take_all_from
grammar nehme alles in *present              >take_all_from
grammar nimm alles im *present               >take_all_from
grammar nehme alles im *present              >take_all_from

{+take_all_from
set TIME = false
break +darkness
break +reach noun1
override
if noun1 has ANIMATE
   write "Du solltest zuerst " noun1{the} 
   write "fragen.^"
   break
endif
if noun1 hasnt CONTAINER
   if noun1 hasnt SURFACE
      write "" noun1{The} " gibt nicht mehr her.^"
      break
   endif
endif
if noun1 has CLOSED
   write "Das d&uuml;rft etwas schwierig sein,"
   write " solange " noun1{the} " " noun1{is} " geschlossen ist.^"
   break
endif
set INDEX = 0
loop
   if noun3(parent) = noun1
      if noun3(mass) < heavy
         if noun3 hasnt LIQUID
            if noun3(mass) <= player(quantity)
	       if TIME = true
	          set TOTAL_MOVES + 1
	       endif
	       execute +take_routine
	       set INDEX + 1
            else
	       write "Du tr&auml;gst bereits zu viele Gegenst&auml;nde mit Dir herum. " 
	       write noun3{the} " w&auml;re nun wirklich zu viel.^"
	       set INDEX + 1
            endif
         else
            write "" noun3{The} " fliesst durch Deine Finger.^"
            set INDEX + 1
         endif
      endif
   endif
endloop
if INDEX = 0
   write "Ich verstehe nicht, was Du meinst.^"
}

grammar nimm alles            >take_all
grammar nehme alles           >take_all
grammar nimm alles auf        >take_all
grammar nehme alles auf       >take_all

{+take_all
break +darkness
set TIME = false
set INDEX = 0
loop
if noun3(parent) = here
  if noun3(mass) < heavy
    if noun3 hasnt LIQUID
      if TIME = true
	set TOTAL_MOVES + 1
      endif
      execute +take_routine
      set INDEX + 1
    else
      write "" noun3{The} " fliesst durch Deine Finger.^"
      set INDEX + 1
    endif
  endif
endif
endloop
if INDEX = 0
  write "Ich verstehe nicht, was Du meinst.^"
}

{+take_routine
break +reach noun3
if noun3(mass) > player(quantity)
   write "Du tr&auml;gst bereits zu viele Gegenst&auml;nde mit Dir herum.^"
   write noun3{the} " w&auml;re nun wirklich zu viel.^"
   set TIME = false
   break
endif
break noun3.take
override
write "Du nimmst " noun3{the} ".^"
set TIME = true
move noun3 to player
ensure noun3 has TOUCHED
}

grammar nimm *here       >take
grammar nehme *here      >take
grammar nimm *here auf   >take
grammar nehme *here auf  >take

{+take
break +darkness
break +reach noun1
if player has SITTING
  write "Du solltest zun&auml;chst mal aufstehen.^"
  set TIME = false
  break
endif
if noun1(mass) >= heavy : noun1 has LOCATION
  execute +move_scenery
  break
endif
if noun1(mass) > player(quantity)
   write "Du tr&auml;gst bereits zu viele Gegenst&auml;nde mit Dir herum.^"
   write noun3{the} " w&auml;re nun wirklich zu viel.^"
  set TIME = false
  break
endif
if noun1 has LIQUID
  write "" noun3{The} " fliesst durch Deine Finger.^"
  break
endif
override
write "Du nimmst " noun1{the} ".^"
move noun1 to player
ensure noun1 has TOUCHED
}

{+move_scenery
set TIME = false
if noun1 has LOCATION
   write "Das w&uuml;rde von beeindruckender Kraft zeugen.^"
   break
endif
set noun3 = noun1(parent)
set INDEX = noun3
if noun3 has LOCATION
  write  noun1{The} " ist ein Gegenstand, den man nicht aufnehmen kann.^"
  break
endif
write  noun1{The} " " noun1{is} " mit " noun3{the} " fest verbunden.^"
}

grammar *held auf *present legen	>insert_on
grammar lege *held auf *present		>insert_on

{+insert_on
break +darkness
break +reach noun2
if noun2 = noun1
  write "" noun1{The} " auf "
  if noun1 has PLURAL
    write "sich selber legen?"
  else
    write "sich selber legen?"
  endif
  write " Ich glaube kaum.^"
  set TIME = false
  break
endif
if noun2(parent) = noun1
  write "Ich f&uuml;rchte, das ist nicht m&ouml;glich.^"
  set TIME = false
  break
endif
if noun1(mass) >= heavy : noun1 has LOCATION
  execute +move_scenery
  break
endif
break +worn noun1
if noun2 hasnt SURFACE
  write "" noun2{the} " besitzt keine geeignete Fl&auml;che daf&uuml;r.^"
  set TIME = false
  break
endif
if noun2(quantity) < noun1(mass)
  write "" noun2{the} " hat nicht genug Platz f&uuml;r " noun1{the} ".^"
  set TIME = false
  break
endif
override
write "Du legst " noun1{the} " auf " noun2{the} ".^"
move noun1 to noun2
}

grammar füge *held in *present ein	>insert_in
grammar lege *held in *present		>insert_in

{+insert_in
break +darkness
break +reach noun2
if noun1(mass) >= heavy : noun1 has LOCATION
  execute +move_scenery
  break
endif
if noun2 = noun1
  write "Du willst" noun1{the} " in "
  if noun1 has PLURAL
    write "sich selber packen?"
  else
    write "sich selber packen?"
  endif
  write "Ich glaube nicht.^"
  set TIME = false
  break
endif
if noun2(parent) = noun1
  write "'Ich bef&uuml;rchte, das wird nicht m&ouml;glich sein.^"
  set TIME = false
  break
endif
break +worn noun1
if noun2 = player
  write "Mich w&uuml;rde interessieren, wie Du das bewerkstelligen willst, aber etwas"
  write "sagt mir, das ich das besser nicht fragen sollte.^"
  set TIME = false
  break
endif
if noun2 hasnt CONTAINER
  write  noun2{The} " " noun2{isnt} " ist nicht in der Lage " noun1{the} " aufzunehmen.^"
  set TIME = false
  break
endif
if noun2 has CLOSED
  write  noun2{The} " " noun2{is} " geschlossen.^"
  set TIME = false
  break
endif
if noun2(quantity) < noun1(mass)
  write noun2{the} "hat nicht genug Platz um " noun1{the} " aufzunehmen.^"
  set TIME = false
  break
endif
override
write "Du packst" noun1{the} " in " noun2{the} ".^"
move noun1 to noun2
}

grammar füge alles in *present ein >insert_all_in
grammar lege alles in *present    >insert_all_in

{+insert_all_in
break +darkness
if noun1 hasnt CONTAINER
  write  noun1{The} " " noun1{isnt} " dazu beschaffen.^"
  set TIME = false
  break
endif
break +reach noun1
if noun1 has CLOSED
  write  noun1{The} " " noun1{is} " geschlossen.^"
  set TIME = false
  break
endif
set INDEX = 0
loop
  if noun3(parent) <> player : noun3(mass) >= heavy : noun3 = noun1
    endloop
    execute +encumbered
    break
  endif
  if noun1 has WORN
    write "Du musst erst " noun3{the} " ablegen.^"
    set INDEX + 1
    endloop
    break
  endif
  set OB1 = noun1
  set OB2 = noun3
  proxy "lege" noun3 " in " noun1
  set noun1 = OB1
  set noun3 = OB2
  set INDEX + 1
endloop
}

grammar packe alles auf *present    >insert_all_on
grammar lege alles auf  *present    >insert_all_on
grammar lege alles aufs *present    >insert_all_on

{+insert_all_on
break +darkness
if noun1 hasnt SURFACE
   write "" noun1{The} " bietet daf&uuml;r keine geeignete Fl&auml;che.^"
   set TIME = false
   break
endif
break +reach noun1
set INDEX = 0
loop
  if noun3(parent) <> player : noun3(mass) >= heavy : noun3 = noun1
     endloop
     execute +encumbered
     break
  endif
  if noun1 has WORN
     write "Du musst zuerst " noun3{the} " ablegen.^"
     set INDEX + 1
     endloop
     break
  endif
  set OB1 = noun1
  set OB2 = noun3
  proxy "lege" noun3 " auf " noun1
  set noun1 = OB1
  set noun3 = OB2
  set INDEX + 1
endloop
}

{+encumbered
if INDEX = 0
   write "Du tr&auml;gst nichts mit Dir.^"
}

grammar frage *present nach *carried             >ask_for
grammar bete *present mir *carried zu geben      >ask_for
grammar bitte *present mir *carried zu geben     >ask_for

{+ask_for
break +can_talk noun1
if noun1 !grandof noun2
  write  noun1{The} " " noun1{doesnt} " seem to have " noun2{the} .^
  set TIME = false
  break
endif
if noun2(mass) > player(quantity)
  write "With your current load you would be unable to accept"
  write noun2{the} .^
  set TIME = false
  break
endif
override
if noun1 has POSSESSIVE
   write  noun1{The} " refuses to give you " noun2{the} .^
   break
endif
move noun2 to player
if noun2 has WORN
  write  noun1{The} " remove" noun1{s} " " noun2{the} " then hand" noun1{s}
  if noun2 has PLURAL
    write " them"
  else
    write " it"
  endif
  write " to you.^" 
  ensure noun2 hasnt WORN
  break
endif
write  noun1{The} " hands you " noun2{the} .^
}

grammar tell *present about *carried          >tell_about
grammar talk to *present about *carried       >tell_about
grammar talk with *present about *carried       >tell_about
grammar tell *present about *anywhere         >tell_about
grammar talk to *present about *anywhere      >tell_about
grammar talk with *present about *anywhere      >tell_about

{+tell_about
break +can_talk noun1
override
write  noun1{The} " seem" noun1{s} " fascinated by your story about "
write noun2{the} .^
}

grammar ask *present about *carried   >ask_about
grammar ask *present about *anywhere  >ask_about

{+ask_about
break +can_talk noun1
override
if noun2 = noun1
  write noun1(The}
  if noun1 has PLURAL
    write " are too shy to say much.^"
  else
    write " is too shy to say much.^"
  endif
  break
endif
write  noun1{The} " reluctantly admit" noun1{s} " to knowing little about "
write noun2{the} .^
}

grammar offer *held to *present     >give_to
grammar give *held to *present      >give_to

{+give_to
if noun2 hasnt ANIMATE
  write "You can't give " noun1{the} " to " noun2 .^
  set TIME = false
  break
endif
if noun2 = player
  write "I think it might be time to take a break and get a cup of tea.^"
  break
endif
break +reach noun2
if noun1(mass) >= heavy : noun1 has LOCATION
  execute +move_scenery
  break
endif
break +worn noun1
override
move noun1 to noun2
write "You give " noun1{the} " to " noun2{the} .^
}

grammar move *present >move
grammar push *present >move

{+move
break +darkness
break +reach noun1
if player has SITTING
   write "You will have to stand up first.^"
   set TIME = false
   break
endif
if noun1(mass) >= heavy : noun1 has LOCATION
  execute +move_scenery
  break
endif
if noun1 has LIQUID
  write  noun1{The} " run" noun1{s} " through your fingers.^"
  break
endif
break +worn noun1
if noun1(parent) = player
   override
   write "You juggle " noun1{the} " in your hands.^"
   break
endif
override
write "You move " noun1{the} " a short distance to one side.^"
ensure noun1 has TOUCHED
}

grammar read *present >read

{+read
break +darkness
write "There is nothing on " noun1{the} " to read.^"
}

grammar look down >look_down

{+look_down
break +darkness
if here has TIGHT_ROPE : here has MID_AIR
  write "You see the ground far below.^"
  break
endif
if here has ON_WATER
  write "You can't see beyond the surface of the water.^"
  break
endif
write "You take a moment to admire your investigating feet.^"
}

grammar look up *anywhere in *present         >look_up_in
grammar look for *anywhere in *present        >look_up_in

{+look_up_in
break +darkness
write "You don't find any reference to " noun1{the} " in " noun2{the} .^
}

grammar consult *present about *anywhere      >consult
grammar consult *present re *anywhere         >consult
grammar consult *present on *anywhere         >consult

{+consult
break +darkness
proxy "look up " noun2 " in " noun1
}

grammar feel *present  >feel
grammar touch *present >feel

{+feel
break +reach noun1
if noun1 has ANIMATE
  write "I'm not so sure that would be polite.^"
  break
endif
write "Feels just like " noun1{list} .^
}

grammar smell >smell
grammar sniff >smell

{+smell
write "Nothing strikes you as out of the ordinary.^"
}

grammar smell *present        >sniff
grammar sniff *present        >sniff

{+sniff
if noun1 has ANIMATE
  write "I'm not so sure that would be polite.^"
  break
endif
write "Smells an awful lot like " noun1{list} .^
}

grammar taste *present >taste
grammar lick *present  >taste

{+taste
break +reach noun1
if noun1 has ANIMATE
  write "You are one sick puppy.^"
  break
endif
write "Tastes just like you would expect " noun1{list} " to taste.^"
}

grammar look in *present      >look_in

{+look_in
break +darkness
if noun1 hasnt CONTAINER
  write "There is nothing in " noun1{the} .^
  break
endif
if noun1 has CLOSED
  write  noun1{The} " " noun1{is} " currently closed.^"
  break
endif
set INDEX = 0
loop
  if noun3(parent) = noun1
     set INDEX + 1
  endif
endloop
if INDEX = 0
   write "There is nothing in " noun1{the} .^
   break
endif
execute +details
write "^"
}

grammar betrachte *present         >examine
grammar schaue *present an         >examine
grammar schaue auf *present        >examine
grammar untersuche *present        >examine
grammar x *present                 >examine
grammar durchsuche *present        >examine
grammar beobachte *present         >examine

{+examine
break +darkness
override
if noun1 hasnt CLOSABLE
  if noun1 hasnt CONTAINER
    if noun1 hasnt SURFACE
      write "There is nothing special about " noun1{the} .^
      break
endall
if noun1 has CLOSABLE
  execute +details
  write "^"
  break
endif
set INDEX = 0
loop
  if noun3(parent) = noun1
     if noun3(mass) != scenery
        set INDEX + 1
     endif
  endif
endloop
if INDEX = 0
  write "There is nothing special about " noun1{the} .^
  break
endif
execute +details
write "^"
}

{+details
if noun1 has CLOSABLE
  if noun1 hasnt CLOSED
    write  noun1{The} " " noun1{is} " offen"
  else
    write  noun1{The} " " noun1{is} " geschlossen."
    break
  endif
endif
if noun1 has CONTAINER : noun1 has SURFACE
  execute +contents
  break
endif
write .
}

{+contents
set INDEX = 0
loop
  if noun3(parent) = noun1
    if noun3(mass) != scenery
      set INDEX + 1
    endif
  endif
endloop
if INDEX = 0
  if noun1 has CLOSABLE
    if noun1 has CONTAINER
      write .^
      break
endall
if INDEX = 0 : noun1 has CONCEALING
  break
endif
if noun1 has ANIMATE
  write  noun1{The} " " noun1{is} " carrying "
endif
if noun1 has SURFACE
  write "On " noun1{the} " is "
endif
if noun1 has CONTAINER
  if noun1 has CLOSABLE
    write " and contains "
  else
    write  noun1{The} " contains "
  endif
endif
loop
  if noun3(parent) = noun1
    if noun3(mass) != scenery
      set INDEX - 1
      write noun3{list}
      execute +object_info
      execute +list_structure
      if INDEX = 0
	write .
	break
      endif
    endif
  endif
endloop
}

{+first_child
set INDEX = false
loop
   if noun3(parent) = noun4 
      set INDEX = true
      break
   endall
endloop
}

{+children?
set INDEX = false
loop
  if noun3(parent) = noun4
    set INDEX = true
    break
  endif
endloop
}

grammar inv   >list_inventory
grammar list  >list_inventory

{+list_inventory
set INDEX = 0
loop
  if noun3(parent) = player
    if noun3(mass) != scenery
      set INDEX + 1
    endif
  endif
endloop
if INDEX = 0
  write "You are empty-handed.^"
  break
endif
write "You are carrying:^"
loop
  if noun3(parent) = player
    if noun3(mass) != scenery
      write "  " noun3{list}
      execute +object_info
      write "^"
      if noun3 has CONTAINER
	if noun3 hasnt CLOSED
	  execute +object_children noun3
	endif
      endif
    endif
  endif
endloop
write ""
}

{+object_children
loop
  if noun3(parent) = noun4
    write " -- " noun3{list}
    execute +object_info
    write "^"
  endif
endloop
set noun3 = noun4
}

grammar inventory     >inventory
grammar i             >inventory

{+inventory
set INDEX = 0
loop
  if noun3(parent) = player
    if noun3(mass) != scenery
      set INDEX + 1
    endif
  endif
endloop
if INDEX = 0
   write "You are empty handed.^"
   break
endif
write "You are carrying "
loop
  if noun3(parent) = player
    if noun3(mass) != scenery
      set INDEX - 1
      write noun3{list}
      execute +object_info
      execute +list_structure
      if INDEX = 0
	write .^
	break
      endif
    endif
  endif
endloop
}

{+or_structure
if INDEX > 1
  write ", "
endif
if INDEX = 1
  write " oder "
}

{+list_structure
if INDEX > 1
  write ", "
endif
if INDEX = 1
  write " und "
}

{+object_info
if noun3 has WORN
  write " (being worn)"
endif
if noun3 has LUMINOUS
  write " (providing light)"
endif
if noun3 has ON
  write " (on)"
endif
if noun3 has CLOSABLE
  if noun3 hasnt CLOSED
    write " (open)"
}

grammar sorry >sorry

{+sorry
write "That's quite all right.^"
}

grammar thanks        >thankyou
grammar thank you     >thankyou

{+thankyou
write "You're welcome.^"
}

grammar score >score_command
grammar points >score_command

{+score_command
write ""
execute "+score"
}

{+score
set TIME = false
if TOTAL_MOVES = 1
  write "Punktzahl: " SCORE "% in einem Spielzug.^"
else
  write "Punktzahl: " SCORE "% in " TOTAL_MOVES " Spielz&uuml;gen.^"
}

grammar open *present >open

{+open
break +darkness
break +reach noun1
if noun1 has LOCKED
  write  noun1{The} " " noun1{is} " verschlossen.^"
  set TIME = false
  break
endif
if noun1 hasnt CLOSABLE
  write "" noun1{the} "kannst Du nicht &ouml;ffnen.^"
  set TIME = false
  break
endif
if noun1 hasnt CLOSED
  write  noun1{The} " " noun1{is} " bereits offen.^"
  set TIME = false
  break
endif
override
ensure noun1 hasnt CLOSED
if noun1 has CONTAINER
  execute +revealing
  break
endif
write "Du &ouml;ffnest " noun1{the} ".^"
}

{+revealing
set INDEX = 0
loop
  if noun3(parent) = noun1
    set INDEX + 1
  endif
endloop
write "You open " noun1{the}
if INDEX = 0
   write ", which" noun1{is} " empty.^"
   break
endif
write " revealing "
loop
  if noun3(parent) = noun1
    set INDEX - 1
    write noun3{list}
    execute +object_info
    execute +list_structure
    if INDEX = 0
      write .^
      break
    endif
  endif
endloop
}

grammar close *present        >close
grammar shut *present         >close

{+close
break +darkness
break +reach noun1
if noun1 hasnt CLOSABLE
  write "You can't close " noun1{the} .^
  set TIME = false
  break
endif
break +reach noun1
if noun1 has CLOSED
  write  noun1{The} " " noun1{is} " already closed.^"
  set TIME = false
  break
endif
override
write "You close " noun1{the} .^
ensure noun1 has CLOSED
}

grammar lock *present >lock

{+lock
break +darkness
break +reach noun1
if noun1 has LOCKABLE
  if noun1 has LOCKED
    write  noun1{The} " " noun1{is} " already locked.^"
    break
  endif
endif
if noun1 has CLOSABLE
  if noun1 hasnt CLOSED
    write "You can't lock " noun1{the} " while "
    if noun1 has PLURAL
      write "they are"
    else
      write "it is"
    endif
    write " open.^"
    set TIME = false
    break
  endif
endif
if noun1 hasnt LOCKABLE
  write "You can't lock " noun1{the} .^
  break
endif
override
write "What did you want to lock " noun1{the} " with?^"
}

grammar lock *present with *held >lock_with

{+lock_with
break +darkness
if noun1 hasnt LOCKABLE
  write "You can't lock " noun1{the} .^
  set TIME = false
  break
endif
break +reach noun1
if noun1 has LOCKED
  write  noun1{The} " " noun1{is} " already locked.^"
  break
endif
if noun1 has CLOSABLE
  if noun1 hasnt CLOSED
    write "You can't lock " noun1{the} " while "
    if noun1 has PLURAL
      write "they are"
    else
      write "it is"
    endif
    write " open.^"
    set TIME = false
    break
endif
override
write "You can't lock " noun1{the} " with " noun2{the} .^
set TIME = false
}

grammar unlock *present >unlock

{+unlock
break +darkness
if noun1 hasnt LOCKABLE
  write "You can't unlock " noun1{the} .^
  set TIME = false
  break
endif
break +reach noun1
if noun1 hasnt LOCKED
  write  noun1{The} " " noun1{is} " already unlocked.^"
  set TIME = false
  break
endif
override
write "What did you want to unlock " noun1{the} " with?^"
}

grammar unlock *present with *held    >unlock_with
grammar open *present with *held      >unlock_with

{+unlock_with
if noun1 hasnt LOCKABLE
  write "You can't unlock " noun1{the} .^
  set TIME = false
  break
endif
break +reach noun1
if noun1 hasnt LOCKED
  write  noun1{The} " " noun1{is} " already unlocked.^"
  break
endif
override
write "You can't unlock " noun1{the} " with " noun2{the} .^
set TIME = false
}

grammar show *held to *present        >show_to

{+show_to
break +darkness
if noun1 = noun2
  write "You can't show " noun1{the} " to "
  if noun1 has PLURAL
    write "themselves."
  else
      write "itself.^"
  endif
  set TIME = false
  break
endif
override
write  noun2{The} " " noun2{doesnt} " seem overly impressed by " noun1{the} .^
}

grammar untie *present        >untie
grammar free *present         >untie
grammar undo *present         >untie

{+untie
break +darkness
write  noun1{The} " " noun1{is} " not tied to anything.^"
set TIME = false
}

grammar tie *held     >tie
grammar attach *held  >tie

{+tie
break +darkness
write "What do you want to tie " noun1{the} " to?^"
set TIME to false
}

grammar tie *held to *present         >tie_to
grammar fix *held to *present         >tie_to
grammar attach *held to *present      >tie_to

{+tie_to
break +darkness
break +reach noun2
override
write "You can't tie " noun1{the} " to " noun2{the} .^
set TIME = false
}

grammar attack *present       >attack
grammar hit *present          >attack
grammar fight *present        >attack
grammar kill *present         >attack
grammar murder *present       >attack
grammar punch *present        >attack

{+attack
break +darkness
break +reach noun1
if noun1 has ANIMATE
  if noun1 has DEAD
    write  noun1{The} " " noun1{is} " already dead.^"
    set TIME = false
    break
  endif
endif
override
write "Attacking " noun1{the} " with your hands would have little effect.^"
set TIME = false
}

grammar attack *present with *held    >attack_with
grammar hit *present with *held       >attack_with
grammar fight *present with *held     >attack_with
grammar kill *present with *held      >attack_with
grammar murder *present with *held    >attack_with
grammar punch *present with *held     >attack_with
grammar stab *present with *held      >attack_with
grammar poke *present with *held      >attack_with

{+attack_with
break +darkness
break +reach noun1
if noun2 has LIQUID
  write  noun2{The} " run" noun2{s} " through your fingers.^"
  break
endif
break +worn noun1
if noun1 has ANIMATE
  if noun1 has DEAD
    write  noun1{The} " " noun1{is} " already dead.^"
    set TIME = false
    break
  endif
endif
override
write "Attacking " noun1{the} " with " noun2{the} " would have little "
write "effect.^"
set TIME = false
}

grammar wave  >wave

{+wave
write "You wave your arms around a bit.^"
}

grammar wave to *present      >wave_to

{+wave_to
break +darkness
if noun1 hasnt ANIMATE
  write "Not surpisingly, you get no response.^"
  break
endif
write  noun1{The} " barely raises an eye brow.^"
}

grammar jump on to *here >jump_on
grammar jump on *here    >jump_on
grammar hop on *here     >jump_on
grammar stand on *here   >jump_on

{+jump_on
break +darkness
set TIME = false
if noun1 hasnt SURFACE
  write "You can't jump on " noun1{the} .^
  break
endif
write "This would achieve little.^"
}

grammar jump over *here       >jump_over

{+jump_over
break +darkness
write "You can't jump over " noun1{the} .^
set TIME = false
}

grammar jump             >jump

{+jump
if here has MID_AIR
  write "Not likely."
  break
endif
if here has TIGHT_ROPE
  write "Something tells me that might be a bit too dangerous, not to "
  write "mention totally unnecessary.^"
  break
endif
if here has UNDER_WATER : here has ON_WATER
  write "While underwater?^"
  break
endif
if player has SITTING
  write "You would have to get up first.^"
  break
endif
write "Consider it done.^"
}

grammar yes   >yes
grammar okay  >yes
grammar yeah  >yes

{+yes
write "That was a rhetorical question.^"
set TIME = false
}

grammar no >no

{+no
write "That was a rhetorical question.^"
set TIME = false
}

grammar why   >why
grammar why?  >why

{+why
write "Because.^"
set TIME = false
}

grammar blow *held at *here   >blow_at
grammar blow *held to *here   >blow_at

{+blow_at
break +darkness
write "You can't blow " noun1{the} " at " noun2{the} .^
set TIME = false
}

grammar throw *held in *here	>throw_at
grammar hurl *held in *here	>throw_at
grammar pitch *held in *here	>throw_at
grammar cast *held in *here	>throw_at
grammar throw *held on *here	>throw_at
grammar hurl *held on *here	>throw_at
grammar pitch *held on *here	>throw_at
grammar cast *held on *here	>throw_at
grammar throw *held at *here	>throw_at
grammar throw *held to *here	>throw_at
grammar cast *held to *here	>throw_at
grammar cast *held at *here	>throw_at
grammar pitch *held to *here	>throw_at
grammar pitch *held at *here	>throw_at
grammar lob *held to *here	>throw_at
grammar lob *held at *here	>throw_at
grammar hurl *held to *here	>throw_at
grammar hurl *held at *here	>throw_at

{+throw_at
break +darkness
if noun2 has ANIMATE
  write "I don't think " noun2{the} " would really appreciate you throwing "
  write noun1{the} " at "
  if noun2 has FEMALE
    write "her.^"
  else
    write "him.^"
  endif
  set TIME = false
  break
endif
break +worn noun1
if noun2(parent) hasnt LOCATION
  write "You can't throw " noun1{the} " at " noun2{the} " while "
  if noun2 has PLURAL
    write "they are"
  else
    write "it is"
  endif
  write " in something else.^"
  set TIME = false
  break
endif
if noun1(mass) >= heavy : noun1 has LOCATION
  execute +move_scenery
  break
endif
override
if noun1(mass) => 20
  write  noun1{The}
  if noun1 has PLURAL
    write " are "
  else
    write " is "
  endif
  write "a bit too heavy to go throwing around.^"
  set TIME = false
  break
endif
if here has UNDER_WATER
  write "Throwing things underwater is never as easy as you might think.^"
  set TIME = false
  break
endif
if here has ON_WATER
  write "You throw " noun1{the} " at " noun2{the} " which "
  if noun1 has PLURAL
    write "they bounce"
  else
    write "it bounces"
  endif
  write " off, landing in the water where "
  if noun1 has PLURAL
    write "they"
  else
    write "it"
  endif
  write " rapidly sink" noun1{s} ", disappearing from sight.^"
  move noun1 to limbo
  break
endif
write  noun1{The} " bounce" noun1{s} " off " noun2{the} " and land" noun1{s}
write " on the ground.^"
move noun1 to here
}

grammar remove *present from *present         >remove_from
grammar take *present from *present           >remove_from
grammar get *present from *present            >remove_from
grammar take *present out of *present         >remove_from
grammar get *present out of *present          >remove_from
grammar take *present on *present             >remove_from
grammar get *present on *present              >remove_from

{+remove_from
break +darkness
if noun1(parent) <> noun2
  write  noun1{The} " " noun1{is} " not in " noun2{the} .^
  set TIME = false
  break
endif
proxy "take" noun1
}

grammar remove *present       >remove
grammar take off *present     >remove
grammar doff *present         >remove

{+remove
if noun1 hasnt WORN
  if noun1(parent) = player
    write "You are not wearing " noun1{the} .^
    set TIME = false
    break
  endif
endif
if noun1 hasnt WORN
  proxy "take" noun1
  break
endif
if noun1(mass) > player(quantity)
  write "You are carrying too much to remove " noun1{the} .^
  set TIME = false
  break
endif
override
set player(quantity) - noun1(mass)
ensure noun1 hasnt WORN
write "You remove " noun1{the} .^
}

grammar wear *held    >wear
grammar put on *held  >wear
grammar put *held on  >wear
grammar don *held     >wear

{+wear
if noun1 hasnt WEARABLE
  write "You can't wear " noun1{the} .^
  set TIME = false
  break
endif
if noun1 has WORN
  write "You are already wearing " noun1{the} .^
  set TIME = false
  break
endif
override
set player(quantity) + noun1(mass)
ensure noun1 has WORN
write "You put " noun1{the} " on.^"
}

grammar talk to *present >talk_to
grammar talk with *present >talk_to

{+talk_to
break +can_talk noun1
override
write  noun1{The} " " noun1{doesnt} " appear very interested in a "
write "conversation.^"
}

grammar eat *present          >eat

{+eat
break +darkness
write "You can't eat " noun1{the} .^
set TIME = false
}

grammar drink from *present   >drink_from
grammar sip from *present     >drink_from

{+drink_from
break +darkness
execute +liquidwrite noun1
if INDEX = true
  proxy "drink " noun3
  set TIME = false
  break
endif
write "There is nothing to drink in " noun1{the} .^
set TIME = false
}

grammar drink *present        >drink
grammar sip *present          >drink

{+drink
break +darkness
break +reach noun1
if noun1 hasnt LIQUID
  write "You can't drink " noun1{the} .^
  set TIME = false
  break
endif
override
write "You drink " noun1{the} .^
move noun1 to limbo
}

grammar flick *present >flick

{+flick
break +darkness
break +reach noun1
if noun1 has LIQUID
  write "A wet hand is your only reward.^"
  break
endif
override
write "Flicking " noun1{the} " achieves nothing more than causing a sharp "
write "pain in your index finger.^"
}

grammar press *present        >press
grammar poke *present         >press

{+press
break +darkness
break +reach noun1
if noun1 has LIQUID
  write "A wet hand is your only reward.^"
  break
endif
override
write "Pressing " noun1{the} " has no discernible effect.^"
}

grammar light *present with *held     >light_with
grammar burn *present with *held      >light_with
grammar ignite *present with *held    >light_with
grammar set fire to *present with *held >light_with

{+light_with
if here has UNDER_WATER
  write "I don't think you are going to be lighting anything under water.^"
  set TIME = false
  break
endif
break +reach noun1
if noun1 hasnt FLAMMABLE
  write  noun1{The} " " noun1{is} " not at all flammable.^"
  set TIME = false
  break
endif
if noun2 hasnt IGNITABLE
  write "I don't see how you can light " noun1{the} " using " noun2 .^
  set TIME = false
  break
endif
if noun1(quantity) = 0
  write  noun1{The} " has run out.^"
  break
endif
if noun1 has BURNING
  write  noun1{The} " " noun1{is} " already lit.^"
  set TIME = false
  break
endif
override
write "You light " noun1{the} " using " noun2 .^
ensure noun1 has BURNING
ensure noun1 has LUMINOUS
}

grammar burn *present         >light
grammar light *present        >light
grammar ignite *present       >light
grammar set fire to *present  >light

{+light
if here has UNDER_WATER
  write "I don't think you are going to be lighting anything under water.^"
  set TIME = false
  break
endif
break +reach noun1
if noun1 has IGNITABLE
   override
   write "You produce a brief flame.^"
   break
endif
if noun1 hasnt FLAMMABLE
  write  noun1{The} " " noun1{is} " not at all flammable.^"
  set TIME = false
  break
endif
if noun1 has BURNING
  write  noun1{The} " " noun1{is} " already alight.^"
  set TIME = false
  break
endif
write "What did you intent to light " noun1{the} " with?^"
set TIME = false
}

grammar extinguish *present   >extinguish
grammar put out *present      >extinguish
grammar put *present out      >extinguish

{+extinguish
if noun1 hasnt BURNING
  write  noun1{The} " " noun1{is} " not lit.^"
  set TIME = false
  break
endif
break +reach noun1
override
write "You put out " noun1{the} .^
ensure noun1 hasnt BURNING
ensure noun1 hasnt LUMINOUS
}

grammar schwimme westen   >swim_west
grammar schwimme west     >swim_west

{+swim_west
if here has UNDER_WATER
  set WAY = WEST
  travel west
  break
endif
if here has ON_WATER
   set WAY = WEST
   travel west
   break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar westen             >west
grammar gehe nach westen   >west
grammar gehe west          >west

{+west
set WAY = WEST
travel west
}

grammar schwimme osten >swim_east
grammar schwimme ost   >swim_east

{+swim_east
if here has UNDER_WATER
  set WAY = EAST
  travel east
  break
endif
if here has ON_WATER
  set WAY = EAST
  travel east
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar osten            >east
grammar gehe nach osten  >east
grammar gehe ost         >east

{+east
set WAY = EAST
travel east
}

grammar schwimme nach süden >swim_south
grammar schwimme süd        >swim_south

{+swim_south
if here has UNDER_WATER
  set WAY = SOUTH
  travel south
  break
endif
if here has ON_WATER
  set WAY = SOUTH
  travel south
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar süden             >south
grammar gehe nach süden   >south
grammar gehe süd          >south

{+south
set WAY = SOUTH
travel south
}

grammar swim southeast >swim_southeast

{+swim_southeast
if here has UNDER_WATER
  set WAY = SOUTHEAST
  travel southeast
  break
endif
if here has ON_WATER
  set WAY = SOUTHEAST
  travel southeast
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar südosten              >southeast
grammar gehe nach südosten    >southeast
grammar gehe südosten         >southeast

{+southeast
set WAY = SOUTHEAST
travel southeast
}

grammar swim southwest >swim_southwest

{+swim_southwest
if here has UNDER_WATER
  set WAY = SOUTHWEST
  travel southwest
  break
endif
if here has ON_WATER
  set WAY = SOUTHWEST
  travel southwest
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar südwest               >southwest
grammar gehe nach südwesten   >southwest
grammar gehe südwesten        >southwest

{+southwest
set WAY = SOUTHWEST
travel southwest
}

grammar schwimme norden >swim_north
grammar schwimme nord   >swim_north

{+swim_north
if here has UNDER_WATER
  set WAY = NORTH
  travel north
  break
endif
if here has ON_WATER
  set WAY = NORTH
  travel north
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar norden              >north
grammar gehe nach norden    >north
grammar gehe nord           >north

{+north
set WAY = NORTH
travel north
}

grammar schwimme nach nordosten >swim_northeast
grammar schwimme nordost   >swim_northeast

{+swim_northeast
if here has UNDER_WATER
  set WAY = NORTHEAST
  travel northeast
  break
endif
if here has ON_WATER
  set WAY = NORTHEAST
  travel northeast
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar nordosten                    >northeast
grammar gehe nach nordosten          >northeast
grammar gehe nordost                 >northeast

{+northeast
set WAY = NORTHEAST
travel northeast
}

grammar schwimme nach nordwesten >swim_northwest
grammar schwimme nordwest        >swim_northwest

{+swim_northwest
if here has UNDER_WATER
  set WAY = NORTHWEST
  travel northwest
  break
endif
if here has ON_WATER
  set WAY = NORTHWEST
  travel northwest
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar nordwesten                    >northwest
grammar gehe nach nordwesten          >northwest
grammar gehe nordwest                 >northwest

{+northwest
set WAY = NORTHWEST
travel northwest
}

grammar climb up *here        >climb_up
grammar walk up *here         >climb_up
grammar go up *here           >climb_up

{+climb_up
write "" noun1{the} " kannst Du nicht hinaufklettern.^"
set TIME = false
}

grammar climb down *here      >climb_down
grammar walk down *here       >climb_down
grammar go down *here         >climb_down

{+climb_down
write "" noun1{the} " kannst Du nicht herabklettern.^"
set TIME = false
}

grammar enter *here		>enter
grammar go *here		>enter
grammar go through *here	>enter
grammar go in *here		>enter
grammar climb on *here		>enter
grammar climb in *here		>enter
grammar get in *here		>enter
grammar get on *here		>enter
grammar jump in *here		>enter

{+enter
break +reach noun1
write "" noun1{the} " kannst Du nicht betreten.^"
set TIME = false
}


grammar enter *anywhere		>enter_location
grammar go *anywhere		>enter_location
grammar go through *anywhere	>enter_location
grammar go to *anywhere		>enter_location
grammar go in *anywhere		>enter_location
grammar climb on *anywhere	>enter_location
grammar climb in *anywhere	>enter_location
grammar get in *anywhere	>enter_location
grammar jump in *anywhere	>enter_location
grammar get on *anywhere	>enter_location

{+enter_location
break +reach noun1
set INDEX = 0
repeat
   if here(INDEX) = noun1
      execute "+go_direction" INDEX
      break
   endif
   set INDEX + 1
until INDEX = 12
write "" noun1{the} " ist von hier nicht erreichbar.^"
set TIME = false
}

{+go_direction
if arg[0] = NORTH
   proxy "go north"
   break
endif
if arg[0] = NORTHEAST
   proxy "go northeast"
   break
endif
if arg[0] = EAST
   proxy "go east"
   break
endif
if arg[0] = SOUTHEAST
   proxy "go southeast"
   break
endif
if arg[0] = SOUTH
   proxy "go south"
   break
endif
if arg[0] = SOUTHWEST
   proxy "go southwest"
   break
endif
if arg[0] = WEST
   proxy "go west"
   break
endif
if arg[0] = NORTHWEST
   proxy "go northwest"
   break
endif
if arg[0] = UP
   proxy "go up"
   break
endif
if arg[0] = DOWN
   proxy "go down"
}

grammar climb *here >climb
grammar scale *here >climb

{+climb
write "You can not climb up " noun1{the} .^
set TIME = false
}

grammar swim in >swim_in

{+swim_in
if here has UNDER_WATER
  set WAY = IN
  travel in
  break
endif
if here has ON_WATER
  set WAY = IN
  travel in
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar get in        >in
grammar climb in      >in
grammar in            >in
grammar enter         >in
grammar walk in       >in

{+in
set WAY = IN
travel in
}

grammar swim out >swim_out

{+swim_out
if here has UNDER_WATER
  set WAY = OUT
  travel out
  break
endif
if here has ON_WATER
  set WAY = OUT
  travel out
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar get out       >out
grammar out           >out
grammar exit          >out
grammar leave         >out
grammar climb out     >out
grammar walk out      >out
grammar go out        >out

{+out
set WAY = OUT
travel out
}

grammar surface >swim_up
grammar swim up >swim_up

{+swim_up
if here has UNDER_WATER
  set WAY = UP
  travel up
  break
endif
if here has ON_WATER
  set WAY = UP
  travel up
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar up            >up
grammar climb         >up
grammar climb up      >up
grammar jump up       >up
grammar go up         >up
grammar walk up       >up

{+up
set WAY = UP
travel up
}

grammar swim down     >swim_down
grammar dive down     >swim_down
grammar dive          >swim_down

{+swim_down
if here has UNDER_WATER
  set WAY = DOWN
  travel down
  break
endif
if here has ON_WATER
  set WAY = DOWN
  travel down
  break
endif
write "Wie willst Du schwimmen, wenn Du nicht im Wasser bist?^"
set TIME = false
}

grammar down          >down
grammar climb down    >down
grammar jump down     >down
grammar go down       >down
grammar walk down     >down

{+down
set WAY = DOWN
travel down
}

grammar look  >look_around
grammar watch >look_around

{+look_around
break +darkness
look
}

grammar schaue unter *present >look_under

{+look_under
break +darkness
if noun1(mass) >= heavy : noun1 has LOCATION
  write "You can't see under " noun1{the} .^
  set TIME = false
  break
endif
write "There is nothing unusual under " noun1{the} .^
}

grammar look behind *present >look_behind

{+look_behind
break +darkness
if noun1(mass) >= heavy : noun1 has LOCATION
  write "You can't see behind " noun1{the} .^
  set TIME = false
  break
endif
write "There is nothing unusual behind " noun1{the} .^
}

grammar look through *present >look_through
grammar look out *present     >look_through

{+look_through
break +darkness
write "You can't look through " noun1{the} .^
set TIME = false
}

grammar look through *held at *present        >look_through_at

{+look_through_at
break +darkness
proxy "look at " noun2 " through " noun1
}

grammar look at *present through *held        >look_at_through
grammar look at *present with *held           >look_at_through

{+look_at_through
break +darkness
if noun1 = noun2
  write "You can't look at " noun1{the} " through "
  if noun1 has PLURAL
    write "themselves.^"
  else
    write "itself.^"
  set TIME = false
  break
endif
override
write "You can't look at " noun1{the} " through " noun2{the} .^
set TIME = false
}

grammar wait  >wait
grammar z     >wait

{+wait
write "Time passes...^"
}

grammar listen        >listen

{+listen
write "You don't hear anything out of the ordinary.^"
}

grammar listen to *present    >listen_to
grammar listen at *present    >listen_to

{+listen_to
write "You don't hear anything out of the ordinary.^"
}

grammar use *present          >use
grammar work *present         >use
grammar operate *present      >use

{+use
break +darkness
if noun1 has ANIMATE
  write "I acknoweledge that I probably don't want to know the answer to "
  write "this question, but in what way did you want to use " noun1{the} .^
  set TIME = false
  break
endif
write "I'm afraid you are going to have to be a bit more specific.^"
}

grammar rotate *present               >turn
grammar turn *present                 >turn
grammar twist *present                >turn
grammar spin *present                 >turn

{+turn
break +darkness
break +reach noun1
write "You can't turn " noun1{the} .^
set TIME = false
}

grammar schalte *present an     >turn_on
grammar turn *present on      >turn_on
grammar switch on *present    >turn_on
grammar switch *present on    >turn_on

{+turn_on
if noun1 hasnt SWITCHABLE
  write "You can't turn " noun1{the} " on.^"
  set TIME = false
  break
endif
break +reach noun1
if noun1 has ON
  write  noun1{The} " " noun1{is} " already on.^"
  set TIME = false
  break
endif
override
write "You switch on " noun1{the} .^
ensure noun1 has ON
}

grammar schalte *present ab  >turn_off
grammar turn *present off   >turn_off
grammar switch off *present >turn_off
grammar switch *present off >turn_off

{+turn_off
if noun1 hasnt SWITCHABLE
  write "You can't turn " noun1{the} " off.^"
  set TIME = false
  break
endif
break +reach noun1
if noun1 hasnt ON
  write  noun1{The} " " noun1{is} " already off.^"
  set TIME = false
  break
endif
override
write "You switch off " noun1{the} .^
ensure noun1 hasnt ON
}

grammar pour *present         >pour

{+pour
break +darkness
if noun1 hasnt LIQUID
   write "You can't pour " noun1{the} .^
   set TIME = false
   break
endif
set noun3 = noun1(parent)
if noun3 = false : noun3(parent) <> player
  write "You don't have " noun1{the} .^
  set TIME = false
  break
endif
if noun3 has CLOSED
  write "I don't see " noun1{the} " here.^"
  set TIME = false
  break
endif
break +reach noun1
override
write "You pour " noun1{the} " all over the ground.^"
move noun1 to limbo
}

grammar list objects >list_objs

{+list_objs
select noun3(mass) > 0 
   write noun3{The} 
next
}

grammar diag *anywhere	>diag

{+diag
set INDEX = noun1
write  noun1{The} ":^"
write "MASS: " noun1(mass) ^
write "NUMBER: " INDEX ^
write "QUANTITY: " noun1(quantity) ^
set noun4 = noun1(parent)
write "PARENT: " noun4{The} ^
write "HAS DARK?: "
if noun1 has DARK
   write YES^
else
   write NO^
endif
write "HAS DARKNESS?: "
if noun1 has DARKNESS
   write YES^
else
   write NO^
endif
}

grammar tip *present on *present      >pour_on
grammar tip *present down *present    >pour_on
grammar tip *present in *present      >pour_on
grammar tip *present over *present    >pour_on
grammar pour *present down *present   >pour_on
grammar pour *present on *present     >pour_on
grammar pour *present in *present     >pour_on
grammar pour *present over *present   >pour_on

{+pour_on
break +darkness
if noun1 hasnt LIQUID
  write "You can't pour " noun1{the} .^
  set TIME = false
  break
endif
break +reach noun1
set noun3 = noun1(parent)
if noun3 = false : noun3(parent) <> player
  write "You do not have " noun1{the} .^
  set TIME = false
  break
endif
if noun3 has CLOSED
  write "I can't see " noun1{the} " here.^"
  set TIME = false
  break
endif
break +reach noun2
override
execute +liquidwrite noun2
if INDEX = true
  write  noun2{The} " already contain" noun2{s} " " noun3{the} ". If you "
  write "were to also add " noun1{the} " they would mix together.^"
  set TIME = false
  break
endif
if noun2 has CONTAINER
  if noun2 hasnt CLOSED
    override
    write "You pour " noun1{the} " into " noun2{the} .^
    move noun1 to noun2
    break
  endif
endif
if noun2(parent) > max_objects
  set noun3 = noun2(parent)
  if noun3 has CONTAINER
    if noun3 hasnt CLOSED
      write  noun1{the} " run" noun1{s} " off " noun2{the} " and goes into "
      write noun3 .^
      move noun1 to noun3
      break
    endif
  endif
endif
write  noun1{The} " runs off " noun2{the} " and goes all over the ground.^"
move noun1 to limbo
}

grammar blankjacl >blankjacl

{+blankjacl
write "A fiendishly clever move.^"
}

grammar instructions	>instructions
grammar help		>instructions

{+instructions
write "Interactive fiction involves the reader in a way that static stories "
write "do not. Rather than reading sequentially from beginning to end, you "
write "control the actions of the main character by typing commands in the "
write "form of simple English sentences. Before setting out on your adventure "
write "there are a few concepts that must be explained in order for you to "
write "interact successfully with the virtual world created by the author."
write "The physical space that you will be exploring is divided up into "
write "discrete units called locations. Locations may be travelled between "
write "using the "You can go:" hyperlinks or the following commands...^"
write ""
write "CommandTo travelCommandTo travel
write ""

write "NNorthSSouth"
write ""

write "EEastWWest"
write ""

write "NENortheastNWNorthwest"
write ""

write "SESoutheastSWSouthwest"
write ""

write "UUpDDown"
write ""

write "INInOUTOut"
write ""

write "The description of each location will tell you which way you can "
write "travel from it. Be aware however that some exits may only be "
write "available under certain circumstances such as while a door is open "
write "or a bridge lowered.^"

write "Within these locations you will find many objects that you may "
write "manipulate. These objects may be referred to by as few "
write "or as many of their names as is required to uniquely identify it."
write "For example, if the story informs you that ~There is a silver key "
write "resting here.~ Then it may be referred to as either ~silver~, ~key~ or "
write "~silver key~. If your reference is ambiguous, such as using ~key~ "
write "when there is both a silver and a gold key in the current location "
write "then you will be prompted to be more specific.^"

write "
write "The next major concept of interactive fiction to understand is the "
write "way in which you interact with these objects within "
write "the locations. The main aspect of the command interface "
write "to come to grips with is the scale, in other words, how much can be "
write "achieved with a single command. As you have seen earlier, moving from "
write "one location to another requires a single command. Commands such as "
write "~find dave~ or ~go to the library~ are not valid. You must manually "
write "move around the available world to achieve these tasks yourself. For "
write "this reason, making a map as you go is highly recommended.^"

write "The basic sentence structures understood by the game are...^"
write ""
write "actioneg. scream"
write ""
write "action objecteg. take book"
write ""
write "action object preposition objecteg. unlock door with key"
write ""
write ""

write "An action does not necessarily have to be a single word. For instance, "
write "~examine rock through magnifying glass~, an example of the last "
write "syntax, may also be expressed as ~look at rock through magnifying "
write "glass~.^"
write "To further illustrate how much can be achieved in a single turn, "
write "consider the following list (being just some of the valid actions)...^"
write ""
write "turnreadpullpusheatcut"
write ""
write "lockunlockrubattacktastedrink"
write ""
write "breaksmelllistenpourmovelight"
write ""
write "attackblowthrowwearopenclose"
write ""
write "takedropinsertremove"
write ""
write "The words ~it,~ ~them,~ ~him~ and ~her~ may be used to indicate the "
write "last appropriate object referred to in one of your commands. "
write "The words ~itself,~ ~themselves,~ ~himself~ and ~herself~ may be used "
write "to refer to the subject of the current command such as, ~ask dan about "
write "himself~.^"
write "The word ~all~ or ~everything~ may be used in place of an object "
write "when using one of the verbs in the bottom row of the table above.^"

write ""
write "However, a task such as defusing a bomb would generally not be achieved by "
write "typing ~defuse bomb~. The following is a sample transcript to give "
write "you a better idea of how this task such as this might be achieved.^"
write "&gt;examine bomb"
write "The bomb is about a foot square and has a small panel in its upper "
write "surface. The panel is currently closed.^"
write "&gt;listen to bomb" 
write "The bomb is making an ominous ticking sound.^"
write "&gt;open panel"
write "You open the panel to reveal a red wire, a green wire, a blue wire, "
write "a clock and some dynamite.^"
write "&gt;i"
write "You are carrying a bomb manual, an insurance policy and some wire "
write "cutters.^"
write "&gt;read manual"
write "Leafing through the book you come to the page on diffusing. Seems "
write "straight forward enough, just cut the blue wire then the red one.^"
write "&gt;cut blue wire with cutters"
write "Reaching carefully in to the bomb's casing you cut the blue wire. So "
write "far so good.^"
write "&gt;cut red wire with cutters" 
write "Holding you breath you snip the red wire." ^
write "&gt;listen to bomb" 
write "The bomb, thankfully, is now silent." ^
write "As you can see, each task you wish to achieve must be broken down "
write "into its component actions.^"

write ""
write "During the course of the story you may encounter other computer "
write "controlled characters. These characters may be interacted with using "
write "the following commands...^"
write "TALK TO &lt;character&gt;" 
write "GIVE &lt;object&gt; TO &lt;character&gt;" 
write "SHOW &lt;object&gt; TO &lt;character&gt;" 
write "ASK &lt;character&gt; FOR &lt;object&gt;" 
write "ASK &lt;character&gt; ABOUT &lt;object&gt;" 
write "TELL &lt;character&gt; ABOUT &lt;object&gt;" ^

write "There are also some special commands for interacting with the "
write "program rather than the world it simulates...^"
write "
write "CommandAction"
write ""
write "VERBOSEalways describe locations"
write ""
write "BRIEFonly describe new locations"
write ""
write "RESTARTstart from the beginning"
write ""
write "SCOREdisplay your score and rank"
write ""
write "LOOKdescribe the current location"
write ""
write "SAVEsave the current position"
write ""
write "RESTORErestore a saved position"
write ""
write "Ihorizontal list of possessions"
write ""
write "INVvertical list of possessions"
write ""
write "UNDOtake back last command"
write ""
write "AGAINrepeat the last command"
write ""
write "INFOdisplay version information"
write ""
write "ABOUTdisplay game information"
write ""
write "NOTE: If you are looking for a clue relevant to a specific location, "
write "type ~hint~, ~first hint~ or ~hint one~ in that location. The first "
write "hint will be a subtle clue with ~hint two~ being more blatant and "
write "~hint three~ being exact commands to type.^"

write ""
write "You are now ready to embark on your first adventure into the "
write "world of interactive fiction."
write " Remember to make a map as you go and read each "
write "part carefully as vital clues may be hidden in the descriptions of the "
write "locations and objects you come across. Examining every object you can "
write "refer to is a good idea, as is saving your position often. Well, good "
write "luck, and above all have fun!^"
set TIME = false
}

;                                                    SPEAKING TO OTHER OBJECTS
; ----------------------------------------------------------------------------
; Grammar statements beginning with an object must be defined last in the game
; to avoid confusion with verbs that may also be objects such as "drink drink"

grammar *here press *present		>tell_to_press
grammar *here push *present		>tell_to_press

{+tell_to_press
break +can_talk noun1
write "~You press it,~ " noun1{the} " replies.^"
}

grammar *present give myself *carried		>ask_for
grammar *present give *carried to myself	>ask_for
grammar *present give *carried to me		>ask_for
grammar *present give myself *anywhere		>ask_for
grammar *present give *anywhere to myself	>ask_for
grammar *present give *anywhere to me		>ask_for

grammar *present tell myself about *carried		>ask_about
grammar *present tell myself all about *carried		>ask_about
grammar *present what do you know about *carried	>ask_about
grammar *present tell myself about *anywhere		>ask_about
grammar *present tell myself all about *anywhere	>ask_about
grammar *present what do you know about *anwhere	>ask_about

grammar *present who are you		>who?
grammar *present what is your name	>who?
grammar *present what is your name?	>who?

{+who?
proxy "ask " noun1 " about " noun1
}

grammar *present sorry		>apologise
grammar *present im sorry	>apologise
grammar *present i am sorry	>apologise
grammar apologise to *present	>apologise

{+apologise
if noun1 hasnt ANIMATE
   write "Kooky.^"
   break
endall
write  noun1{the} " assure" noun1{s} " you that no apology is necessary.^"
}

grammar *present thanks		>thank
grammar *present thank you	>thank
grammar thank *present		>thank

{+thank
if noun1 hasnt ANIMATE
   write "Kooky.^"
   break
endall
write "~Don't mention it,~ "  noun1{the} " replies.^"
}

grammar hi *present			>greet
grammar hello *present		>greet
grammar greet *present		>greet
grammar *present hello		>greet
grammar *present hi there	>greet
grammar *present dr			>greet
grammar *present doctor		>greet
grammar *present hi			>greet

{+greet
if here has UNDER_WATER
   write "Talking under water isn't very easy.^"
   set TIME = false
   break
endall
if noun1 hasnt ANIMATE
   write "I don't think talking to " noun1{the} " is going to help somehow.^"
   set TIME = false
   break
endall
if noun1 has DEAD 
   write  noun1{The} " " noun1{is} " a bit too dead to respond.^"
   set TIME = false
   break
endall
if noun1 = player
   write "It's the first sign of madness you know...^"
   break
endall
override
write  noun1{The}
if noun1 has PLURAL
   write " nod.^"
else
   write " nods.^"
}
 
grammar *present yes	>say_yes
grammar *present okay	>say_yes
grammar *present yeah	>say_yes

{+say_yes
write  noun1{The} " appear" noun1{s} " to pay no attention.^"
}

grammar *present no	>say_no

{+say_no
write  noun1{The} " appears to pay no attention.^"
}

grammar *present *carried	>say_object
grammar *present *anywhere	>say_object

{+say_object
proxy "say " noun2 " to " noun1
}

grammar *anywhere >noun_only

{+noun_only
if noun1 isnt *present
   write "You don't see any such thing.^"
   set TIME = false
   break
endif
write "There is no verb in that sentence.^"
set TIME = false
}
