+VERB Debug;
+VERB n,s,e,w,ne,se,nw,sw;
+VERB up,down;
+u=up; d=down;
+north=n; south=s; east=e; west=w;
+Looks = ($setg LOOKP TRUE)(($dobj): ($say "Huh?\n")($exit 1));
+
+
+n (PREACT) = Looks;
+s (PREACT) = Looks;
+e (PREACT) = Looks;
+w (PREACT) = Looks;
+
+nw(PREACT) = Looks;
+ne(PREACT) = Looks;
+sw(PREACT) = Looks;
+se(PREACT) = Looks;
+
+u (PREACT) = Looks;
+d (PREACT) = Looks;
+
+VERB take; VERB drop;
+get=take; carry=take;
+take(PREACT) = (Avail ($dobj));
+drop(PREACT) = (Avail ($dobj));
+ROUTINE ctake; ROUTINE cdrop;
+
+VERB save;
+VERB shell;
+VERB restore;
+save(ACTION) = ($spec 4 0 0 0 0);
+shell(ACTION) = ($spec 6 "/bin/csh" "-i" 0 0);
+restore(ACTION) = ($spec 5 0 0 0 0) ($say "Restored.\n");
+
+DWIMD = (($not (See ($dobj) ($cont ($loc .ME)))):
+ ($rtrn 0)
+ )
+ (($not (Reach ($dobj) ($cont ($loc .ME)))):
+ ($rtrn 0)
+ )
+ (($and ($eq ($verb) take) ($eq ($loc ($dobj)) .ME)):
+ ($rtrn 0)
+ )
+ (($and ($eq ($verb) drop) ($ne ($loc ($dobj)) .ME)):
+ ($rtrn 0)
+ )
+ ($rtrn 1)
+;
+
+DWIMI = (($not (See ($iobj) ($cont ($loc .ME)))):
+ ($rtrn 0)
+ )
+ (($not (Reach ($iobj) ($cont ($loc .ME)))):
+ ($rtrn 0)
+ )
+ (($and ($eq ($verb) take) ($eq ($loc ($iobj)) .ME)):
+ ($rtrn 0)
+ )
+ (($and ($eq ($verb) drop) ($ne ($loc ($iobj)) .ME)):
+ ($rtrn 0)
+ )
+
+ ($rtrn 1)
+;
+
+
+
+
+
+take(ACTION) = (ctake);
+ctake =
+ (($ge ($plus ($prop .ME HAS)
+ ($prop ($dobj) WEIGH))
+ ($prop .ME HOLDS)):
+ ($say "You can't take that!\n")
+ ($exit 0)
+ )
+ ($setp .ME HAS ($plus ($prop .ME HAS) ($prop ($dobj) WEIGH) ) )
+ ($say "Taken.\n") ($move ($dobj) .ME)
+ ;
+
+drop(ACTION) = (cdrop);
+cdrop = (($ne ($loc ($dobj)) .ME) :
+ ($say "You don't have it with you.\n")($exit 1))
+ ($say "Dropped.\n") ($move ($dobj) ($loc .ME))
+ ($setp .ME HAS ($minus ($prop .ME HAS)($prop ($dobj) WEIGH)))
+ ;
+
+VERB put;
+put (PREACT) =
+ (($ne ($loc ($dobj)) .ME) :
+ ($say "You don't have it with you.\n")($exit 1))
+ (Avail ($iobj));
+put(ACTION) =
+ (($not ($and ($prop ($iobj) OPEN)
+ ($prop ($iobj) OPENS))):
+ ($say "You can't seem to manage that trick.\n")($exit 0))
+ (($gt ($plus ($prop ($iobj) HAS)
+ ($prop ($dobj) WEIGH))
+ ($prop ($iobj) HOLDS)):
+ ($say "It won't fit!\n")($exit 0))
+ ($say "OK\n") ($move ($dobj) ($iobj))
+ ($setp ($iobj) HAS ($plus ($prop ($iobj) HAS) ($prop ($dobj) WEIGH)))
+ ;
+
+
+
+
+
+
+
+
+
+VERB open; VERB close;
+open(PREACT) = (Avail ($dobj))(($iobj):(Avail ($iobj)));
+close(PREACT) = (Avail ($dobj))(($iobj):(Avail ($iobj)));
+open(ACTION) =
+ (($not ($prop ($dobj) OPENS)):
+ ($say "I don't know how to open that!\n")($exit 0))
+ (($and ($prop ($dobj) LOCKS)
+ ($prop ($dobj) LOCKD)):
+ ($say "I can't open it, it's locked!\n")($exit 0))
+ (($prop ($dobj) OPEN):
+ ($say "It's already open!\n")($exit 0))
+ ($setp ($dobj) OPEN TRUE)
+ ($say "Opened.\n")
+ (($and ($ne 0 ($cont ($dobj))) ($not ($prop ($dobj) TRANS))):
+ (Llook 1 ($cont ($dobj)))
+ )
+ ;
+
+close (ACTION) =
+ (($not ($prop ($dobj) OPENS)):
+ ($say "I don't know how to close that!\n")($exit 0))
+ (($not ($prop ($dobj) OPEN)):
+ ($say "It's already closed!\n")($exit 0))
+ ($setp ($dobj) OPEN FALSE)
+ ($say "Closed\n")
+ ;
+
+
+VERB lock; VERB unlock;
+lock(PREACT) = (Avail ($dobj))(($iobj):(Avail ($iobj)));
+unlock(PREACT) = (Avail ($dobj))(($iobj):(Avail ($iobj)));
+
+Lockact =
+ (($prop ($dobj) LOCKS) :
+ ($say "Hm, you don't seem to have the right key.\n")
+ {else}:
+ ($say "I don't know how to lock or unlock such a thing.\n")
+ );
+
+lock(ACTION) = Lockact;
+unlock(ACTION) = Lockact;
+
+Lockup =
+ (($prop %1 OPEN):
+ ($say "You must close it first.\n")($exit 1))
+ (($prop %1 LOCKD):
+ ($say "It's already locked!\n")($exit 1))
+ (($not ($prop %1 LOCKS)):($exit 0))
+ (($eq ($loc %2) .ME):
+ ($say %3)
+ ($setp %1 LOCKD TRUE)
+ ($exit 1))
+ ;
+Ulock =
+ (($not($prop %1 LOCKD)):
+ ($say "It's already unlocked!\n")($exit 1))
+ (($not ($prop %1 LOCKS)):($exit 0))
+ (($eq ($loc %2) .ME):
+ ($say %3)
+ ($setp %1 LOCKD FALSE)
+ ($exit 1))
+ ;
+
+
+
+
+VERB move;
+move(PREACT) = (Avail ($dobj));
+move(ACTION) =
+($say "Nothing seems to happen.\n");
+push=move;
+pull=move;
+lift=move;
+
+VERB break;
+break(PREACT) = (Avail ($dobj));
+break(ACTION) =
+($say "It seems to be unbreakable.\n");
+
+VERB strike; hit=strike; kill=strike;
+strike(PREACT) = (Avail ($dobj))
+ (($iobj):
+ (($ne ($loc ($iobj)) .ME):
+ ($say "You don't have it with you.\n")
+ ($exit 1)
+ )
+ );
+strike(ACTION) = ($say "Hitting ")(($sdisc ($dobj)))($say
+ " doesn't seem to do anything.");
+
+VERB touch; feel=touch;
+touch(PREACT) = (Avail ($dobj))
+ (($iobj):
+ (($ne ($loc ($iobj)) .ME):
+ ($say "You don't have it with you.\n")
+ ($exit 1)
+ )
+ );
+touch(ACTION) = ($say "Touching ")(($sdisc ($dobj)))
+ ($say " doesn't seem too useful.\n");
+
+
+
+
+
+
+VERB rub;
+rub(PREACT) = (Avail ($dobj));
+rub(ACTION) = ($say "Nothing happens when you rub ")
+ (($sdisc ($dobj)))($say ".\n");
+
+VERB cut;
+cut(PREACT) = (($not ($iobj)): ($say "You need tools to do that.\n")
+ ($exit 1))
+ (Avail ($iobj));
+
+VERB pry;
+pry(PREACT) = (Avail ($dobj))
+ (($not ($iobj)): ($say "You need tools to do that.\n")
+ ($exit 1))
+ (Avail ($iobj));
+
+pry(ACTION) = ($say "I can't seem to manage that.\n");
+
+VERB BEAM; BEAM(ACTION)=($setg LOOKP TRUE)($move .ME ($dobj));
+VERB JOIN; JOIN(ACTION) = ($setg LOOKP TRUE)($move .ME ($loc ($dobj)));
+
+
+VERB GRAB;
+GRAB(ACTION) = ($move ($dobj) .ME)
+ ($say "You have the ")($name ($dobj))($say ", boss!\n");
+
+VERB throw;
+throw(PREACT) = (($ne ($loc ($dobj)) .ME): ($say "You aren't holding it!\n")
+ ($exit 1));
+throw(ACTION) = ($move ($dobj) ($loc .ME))
+ ($say "Thrown.\n");
+
+VERB wake;
+wake(PREAC) = (Avail ($dobj));
+wake(ACTION) = ($say "I don't know how to wake ")(($sdisc ($dobj)))
+ ($say ".\n");
+VERB read;
+read(PREAC) = (Avail ($dobj));
+read(ACTION) = ($say "It doesn't have anything on it to read.\n");
+
+VERB light;
+light(PREACT) = (Avail ($dobj));
+
+cg = ($say "Can't go that way.
+");
+ny = ($say "That exit seems impassable today!?\n");
+
+die = ($say "You are dead. Better luck next time.\n")
+ ($spec 3 0 0 0 0);
+
+tress = ($say "You were warned about trespassing! The fence is electrified!\n")
+ (die);
+
+
+VERB look;
+VERB quit;
+VERB inven;
+VERB score;
+
+look(ACTION) = (Llook 0 ($loc .ME))
+ ;
+inven(ACTION) = (($not ($cont .ME)):
+ ($say "You are empty-handed.\n")
+ ($exit 1))
+ ($setp .ME CONTS TRUE)
+ ($say "You are carrying:\n")
+ (Slook 1 ($cont .ME))
+ ;
+quit(ACTION) = ($spec 3 0 0 0 0);
+
+score(ACTION) =
+ (($eq ($loc .ME) town5):
+ ($say
+"A mysterious glowing network of lights appears, and you can
+just make out the words:
+ Your account is now at $")
+ ($num @SCORE)
+ ($say ".
+ Thank you for letting Arpa-Citizen's be your host.\n")
+ ($say
+"The network then disappears.\n")
+ {else}:
+ ($say
+"Hmm, you'll have to check at the local bank.\n")
+ );
+