[Home] [Groups] - Message: [Prev in Group] [Next in Group]

nu.kanga.list.mud-dev

9144: [MUD-Dev] Re: MUD Design doc (long)

[Full Header] [Plain Text]
From: Chris Gray <cg@ami-cg.GraySage.Edmonton.AB.CA>
Newsgroups: nu.kanga.list.mud-dev
Date: Thu, 17 Dec 1998 21:30:30 -0700
Organization: Kanga.Nu
[Mik Clarke:]

 >  if target object not specified, 
 >    emote is in dire need of a bath
 >  else
 >    locate target object
 >    if not found,
 >      send_to_char "Sorry, can't find one of those."
 >    else
 >      if (!object->can_you_be(CMD_SNIFFED)) 
 >        send_to_char "It smells of nothing in particular."
 >      else
 >        object->you_are(CMD_SNIFFED, char)

Big nod here.

This is what I do in my system, and it works fairly well. It is also
possible to write generic code that will do this with lots of verbs,
so the skeleton can be re-used via a function call.

You can get more complex, too:

    - there can be command pre-empts attached to the room and the
	character, which may supercede any attached to the object.

    - to save effort, you can check for simple string responses as
	alternatives to methods - just emit the string.

    - locating the target object can vary a bit. I have two variants, one
	which searches only the character's inventory, and one which
	searches that, then the room's contents. (So far, 'get' is the
	only one that wants to search the room's contents before checking
	in the inventory.)

    - another simplification is to have rooms able to have lists of
	"scenery" words - if no matching object is found, check that
	list of words, and if a match is found, just say something
	generic like "You can't " + verbString + " the " + nounString.

    - there might be other places to sort-of check. For example, items
	for sale in a store might be off-limits to some verbs until
	you have purchased them.

--
Don't design inefficiency in - it'll happen in the implementation. - me

Chris Gray     cg@ami-cg.GraySage.Edmonton.AB.CA