4.1cBSD/usr/src/games/mpu/verbs

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")
	);