Subject: hello?

From: Brennan Underwood <[email-masked]>
Date: Mon, 8 Jun 92 16:50:05 MDT

Is any traffic going on here or am I missing it?

Anyway, here's my ideas: (they keep changing, I admit)

----------------------------------------------------------------
info file for KLUGE. last updated. june 8, 1992
written by Brennan Underwood. Copyright Brennan Underwood 1992
Hellaciously messy notes.
----------------------------------------------------------------

KLUGE interprets each incoming line according to the first character:

Prefix  What it's for  
---------------------------------------------------
  >     Marks a room name (for a title above the view)
  <     Sets clear color for screen buffer
  * 	exit coordinates
  !     Marks piece's name for further operations
  $     gives room dimensions (maybe)
  #     Remark--ignore
(..)    anything between ()'s is a comment (for stuff like object(#12) )
  :     end of line
If it's A-Z, it gets printed in the text window, unless it has a '_' and
no spaces, in which case it's probably a attribute name and can be discarded.

When a player enters a room, the following command is issued:
kping -- command to fetch desc_ attributes and @emit them to player. Fetches
the name of the room too and @emits it with a >.
Since kping is a global command (or will on graphic MUSHes), all this
stuff is 'hidden' under the text things. Of course, The text stuff can
be entirely omitted. This is good, I think, as existing MUSHes could
just start adding graphics to existing areas.
Attributes used:
desc_
xmode_  (whether this is a graphic client (on/off) )
parent_ (needed for people who enter a room 'late', so to speak)
loc_	( ditto ... )

So as the client reads along, it deals with each prefix.
>  change title bar of window
< change color of rectangle used to clear the screen at each refresh
* shows what location a player has to be at to auto execute the exit name
$ gives room dimensions
# will be ignored
:  is treated the same as end-of-line. this lets more info be crammed
   onto one line, like:
&desc_ here=<clearcolor stuff:Some text about the room...:!^here/map

Put '!^objtoexamine/key' somewhere in your desc_ line.
Clients will issue 'examine objtoexamine/key*' command.
So any attributes starting with "key" will be echoed at the client for
processing.
Note that object info can be attached to any VISUAL-set object, not necessarily
the object being looked at. This is how you can be carrying a sword:
If you have sword(#20):
kemit !^#20/sword and have all the
swords desc-attributes start with sword...like sword_1,sword_2..etc
kemit is a global command that needs to be installed. It will send the
text to everyone with their xmode_ set to "on". Useful for getting along
with text-only players.

(By the way, base means the piece of an object that all other pieces
depend on)

Object desc format:
!groupname.piecename par parentname obj objname pos XxYxZ rot XxYxZ\
shi XxYxZ sca XxYxZ col CCI mod MM.
Example:
!joe.chest par joe.base obj cube pos 0x0x0 rot 0x0x0 shi -1x1x1 sca 2x1x3 col\
45 mod 00.
If a keyword is left out, a default is assumed...
Parent: root
Object: cube
Position: 0x0x0
Shift: 0x0x0
Scale: 1x1x1
Color: 000
Mode: 00
If you pick up something, it will do something like '@emit !itsname:base
(using @osucc and @succ or something)
par yourname.hand' which will reparent it to you, searching for a piece
named yourname.hand...so be sure to use the right names for your pieces
suggested:
base (but use it as an invisible object to build off of--important)
head
neck
chest
rightupperarm
leftupperarn
rightlowerarm
leftlowerarm
righthand
lefthand
pelvis
rightthigh
leftthigh
rightcalve
leftcalve
rightfoot
leftfoot
---------
...so most objects can reparent themselves correctly. We don't want
hats stuck to our feet, now do we? :) Of cource, if you WANTed it
that way....kemit-ing '!hat.base par myname.rightfoot' would do the trick.
If an object can't find something on you that matches to reparent to, the
reparenting is aborted. This is a feature. (I swear! :) ) This lets you
do stuff like having a sword try first for the pelvis, then for the belt,
then for any scabbard. it will 'snag' on the latest one...so put them
in order.
!sword.base par name.hand par name.pelvis par name.belt par name.scabbard

It will nuke everything but yourself and what you're carrying
when you go enter another room.

Hopefully the gods on the MUSH will be nice and set the
Move attribute to hidden. when you connect, your client will send
'@move me=REFRESH_KEY' so it will know when it reset your world db.
This should help world_resets to be non-spoofable.

I am planning on having an /attach command so you can attach your view
(to your head object, normally).

I have a vanilla MUSH 2.0 running right now for me to experiment. Mail me
if you want a character to use it with. (It only has a few rooms right
now, but I'm still playing with it.) Type 'xyzzy' to pop into the master
room, and examine the MCP (shades of Tron :) to see how I did 'kping'
and 'kemit'.
--------------------------------------------------------------------------
-- 
[email-masked]