<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.ryksyll.com/manifold/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kekkou</id>
	<title>Manifold - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ryksyll.com/manifold/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kekkou"/>
	<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php/Special:Contributions/Kekkou"/>
	<updated>2026-05-15T21:20:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=Kekkou&amp;diff=232</id>
		<title>Kekkou</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=Kekkou&amp;diff=232"/>
		<updated>2009-09-20T18:28:48Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: Added Character category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Not too long ago the scientist [[Drool|Dr. Drool]] created a new pet, to play with and learn his idea of social behaviour.&lt;br /&gt;
In his lab he grew the little bioroid to his pleasing. As he is as brilliant in biology and genetics as he is crazy, the result was in his eyes more or less &amp;quot;perfect&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Perfect in this case is maybe an ill-chosen term, but Dr. Drool was quite satisfied with his creation. His goal was to make a sturdy and reliable design that still could pass more or less unnoticed in most situations. Over the three year lifespan, Kekkou has gone through over a dozen enhancements to the first concept. Not much has changed that can be seen externally but quite a few differences are hidden internally. {{WIP|A bit of background needed.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Body ==&lt;br /&gt;
&lt;br /&gt;
Kekkou is more or less a humanoid bioroid with plenty of features taken from rabbits and other rabbit-like species. She is close to six feet long (almost as long as many human males) but is quite lean. Those two factors makes her look quite fragile in some circumstances. That is far from the truth, as she is quite muscular and extremely agile.&lt;br /&gt;
&lt;br /&gt;
=== Muscles and skeleton ===&lt;br /&gt;
&lt;br /&gt;
That brings up one of the enhancements: Her muscles are slightly stronger, per muscle fibre, than a normal human, but they don't use as much energy to function at high stress. They also have more reserves before getting tired and beginning to ache.&lt;br /&gt;
&lt;br /&gt;
One thing that Kekkou was built for is high G movement and combat. Her muscles are very tear-resistant and almost all her tendons are close to ten times as strong as a normal human. Dr. Drool is very keen on keeping that fact a intellectual secret, as it is a very lucrative bio-material he ended up with mostly by accident. Adding a soft and stress-enhanced (tension) skin makes maneuvers in extreme Gs and high impact forces possible, as her muscles flow and bend around the bones and the skin keeps most things in place.&lt;br /&gt;
&lt;br /&gt;
Her bones are slightly stronger but much harder than most mammals, and they are perfectly smooth. All to add to the damage-resistance during high G situations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Circulatory and respiratory systems ===&lt;br /&gt;
&lt;br /&gt;
Under the surface of skin and muscles there has been some serious changing. To accommodate and in some situations keep Kekkou alive, both the blood stream and trachea has multiple connections for the blood and air flow. (More on that later.) The circulatory system is symmetrical and has two hearts to pump the blood. Both sides is perfectly interconnected to create a backup should one side fail.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Genitalia and gastrointestinal tract ===&lt;br /&gt;
&lt;br /&gt;
As most of her tissues are quite elastic, her vagina can accommodate some of the biggest appendages there is. When she was created, Dr. Drool had a clear idea of what he wanted from his construct so he designed her pelvic bones a bit differently from norm. Her pubic bone is actually made up of several separated parts, more like an ancient stone bridge is constructed. That makes her pelvic area able to take insertions up to and above ten time the average.&lt;br /&gt;
&lt;br /&gt;
Her digestive tract is redesigned completely. She now has a very short oesophagus that shortly after neck continues in a combined stomach and intestine tube. It goes in an almost straight line from throat to anus. She usually feeds on a special nourishing paste that gives her all the nutrient and energy she needs, and that paste is completely absorbed through the wall of her combined stomach/intestine. That makes the tract perfectly clean and she can be sustained without problems for months at a time using just the pastes.&lt;br /&gt;
&lt;br /&gt;
A recent discovery is that she actually can live off of semen and that she sometimes on unplanned trips away from her food pastes has come to live from semen alone. Semen has many of the same properties of her specially designed foodstuff, in the regard that she keeps her gastrointestinal tract clean and that she produces no faeces from either one of them.&lt;br /&gt;
&lt;br /&gt;
Another recent discovery, in a purely sexual concept, is that he can take even bigger things &amp;quot;up her ass&amp;quot; or &amp;quot;down her throat&amp;quot; than vaginally. That is from the fact that there is no end, so to speak, as she has been seen take penetrations that &amp;quot;goes right trough her&amp;quot; from anus to mouth. And as her air pipe is redirected on both sides of her neck, she can continue to breath while being deep throated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== External features ===&lt;br /&gt;
&lt;br /&gt;
Her arms and legs are like a common anthro, with big furry hands and feet and digitigrade posture. Her limbs are well defined and lean and gives an athletic aura.&lt;br /&gt;
&lt;br /&gt;
To contrast to the in most parts lean appearance Kekkou is quite wide over the hips, which gives her a nice and curvy shape as her waist is quite trim. Her butt is round and firm and her little rabbits tail is most often raised, unconsciously, showing her butt cheeks in full.&lt;br /&gt;
&lt;br /&gt;
Kekkou has been given a pair of firm, almost hard, breasts that's bouncy rather than jiggly in the size F-to-G range. They are firm enough to not generate a fold beneath the tit and the nipples are pointing slightly upwards. Her nipples are very large, even for her breast size, at over an inch in diameter and almost an inch long. The nipples rest on a pair of puffy areolae, almost as a pair of half spheres, around two inches wide. It is impossible to cover the shape of her tits with clothes alone, as the form shows through the thickest garments.&lt;br /&gt;
&lt;br /&gt;
Her ears are quite long and a bit floppy. They poke through her short boyish honey blond hair and is often tied with a wide red ribbon to try making her look a bit more innocent. &lt;br /&gt;
Her fur is snow white and covers her entire body. The skin is more pink than a rabbits normal skin colour.&lt;br /&gt;
&lt;br /&gt;
She has been, from a previous encounter, shaved around her pussy. The area is heart shaped and just bigger than the area her hands could cover. That makes her pussy show easily as the pink skin contrasts to her otherwise white fur. Dr.Drool liked the idea, so he gave her a lotion that removed all the hair follicles in the shaved area, giving her a permanently smooth crotch. Her areolae has been treated the same way, showing her nipples easily.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current situation==&lt;br /&gt;
&lt;br /&gt;
At the moment she is going through a testing period of the Mecha she's assigned to break in. Her mecha, dubbed &amp;quot;[[Koushin (mecha)|Koushin]]&amp;quot;, is spesially made for Kekkou and is a light reconnaissance and scout platform armed with few weapon systems but rely on stealth and information gathering to get past trouble.&lt;br /&gt;
&lt;br /&gt;
Her free time she mostly spends around town and likes to &amp;quot;infiltrate&amp;quot; different groups and learn their kinks and desires. She is not in any way passive, but enjoys observing and learning new ideas and tricks.&lt;br /&gt;
&lt;br /&gt;
As she is a quick healer, she is in to some kinds of body modifications. Both permanent and semi permanent. Mostly piercings is preferred but a few other things is accepted without any trouble. If anything should go bad, she can always ask Dr.Drool to help her get back in good shape.&lt;br /&gt;
[[Category:Characters]]&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=Kekkou&amp;diff=225</id>
		<title>Kekkou</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=Kekkou&amp;diff=225"/>
		<updated>2009-09-14T22:02:00Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: Continued adding data, filling most parts of the information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Not too long ago the scientist [[Drool|Dr. Drool]] created a new pet, to play with and learn his idea of social behaviour.&lt;br /&gt;
In his lab he grew the little bioroid to his pleasing. As he is as brilliant in biology and genetics as he is crazy, the result was in his eyes more or less &amp;quot;perfect&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Perfect in this case is maybe an ill-chosen term, but Dr. Drool was quite satisfied with his creation. His goal was to make a sturdy and reliable design that still could pass more or less unnoticed in most situations. Over the three year lifespan, Kekkou has gone through over a dozen enhancements to the first concept. Not much has changed that can be seen externally but quite a few differences are hidden internally. {{WIP|A bit of background needed.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Body ==&lt;br /&gt;
&lt;br /&gt;
Kekkou is more or less a humanoid bioroid with plenty of features taken from rabbits and other rabbit-like species. She is close to six feet long (almost as long as many human males) but is quite lean. Those two factors makes her look quite fragile in some circumstances. That is far from the truth, as she is quite muscular and extremely agile.&lt;br /&gt;
&lt;br /&gt;
=== Muscles and skeleton ===&lt;br /&gt;
&lt;br /&gt;
That brings up one of the enhancements: Her muscles are slightly stronger, per muscle fibre, than a normal human, but they don't use as much energy to function at high stress. They also have more reserves before getting tired and beginning to ache.&lt;br /&gt;
&lt;br /&gt;
One thing that Kekkou was built for is high G movement and combat. Her muscles are very tear-resistant and almost all her tendons are close to ten times as strong as a normal human. Dr. Drool is very keen on keeping that fact a intellectual secret, as it is a very lucrative bio-material he ended up with mostly by accident. Adding a soft and stress-enhanced (tension) skin makes maneuvers in extreme Gs and high impact forces possible, as her muscles flow and bend around the bones and the skin keeps most things in place.&lt;br /&gt;
&lt;br /&gt;
Her bones are slightly stronger but much harder than most mammals, and they are perfectly smooth. All to add to the damage-resistance during high G situations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Circulatory and respiratory systems ===&lt;br /&gt;
&lt;br /&gt;
Under the surface of skin and muscles there has been some serious changing. To accommodate and in some situations keep Kekkou alive, both the blood stream and trachea has multiple connections for the blood and air flow. (More on that later.) The circulatory system is symmetrical and has two hearts to pump the blood. Both sides is perfectly interconnected to create a backup should one side fail.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Genitalia and gastrointestinal tract ===&lt;br /&gt;
&lt;br /&gt;
As most of her tissues are quite elastic, her vagina can accommodate some of the biggest appendages there is. When she was created, Dr. Drool had a clear idea of what he wanted from his construct so he designed her pelvic bones a bit differently from norm. Her pubic bone is actually made up of several separated parts, more like an ancient stone bridge is constructed. That makes her pelvic area able to take insertions up to and above ten time the average.&lt;br /&gt;
&lt;br /&gt;
Her digestive tract is redesigned completely. She now has a very short oesophagus that shortly after neck continues in a combined stomach and intestine tube. It goes in an almost straight line from throat to anus. She usually feeds on a special nourishing paste that gives her all the nutrient and energy she needs, and that paste is completely absorbed through the wall of her combined stomach/intestine. That makes the tract perfectly clean and she can be sustained without problems for months at a time using just the pastes.&lt;br /&gt;
&lt;br /&gt;
A recent discovery is that she actually can live off of semen and that she sometimes on unplanned trips away from her food pastes has come to live from semen alone. Semen has many of the same properties of her specially designed foodstuff, in the regard that she keeps her gastrointestinal tract clean and that she produces no faeces from either one of them.&lt;br /&gt;
&lt;br /&gt;
Another recent discovery, in a purely sexual concept, is that he can take even bigger things &amp;quot;up her ass&amp;quot; or &amp;quot;down her throat&amp;quot; than vaginally. That is from the fact that there is no end, so to speak, as she has been seen take penetrations that &amp;quot;goes right trough her&amp;quot; from anus to mouth. And as her air pipe is redirected on both sides of her neck, she can continue to breath while being deep throated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== External features ===&lt;br /&gt;
&lt;br /&gt;
Her arms and legs are like a common anthro, with big furry hands and feet and digitigrade posture. Her limbs are well defined and lean and gives an athletic aura.&lt;br /&gt;
&lt;br /&gt;
To contrast to the in most parts lean appearance Kekkou is quite wide over the hips, which gives her a nice and curvy shape as her waist is quite trim. Her butt is round and firm and her little rabbits tail is most often raised, unconsciously, showing her butt cheeks in full.&lt;br /&gt;
&lt;br /&gt;
Kekkou has been given a pair of firm, almost hard, breasts that's bouncy rather than jiggly in the size F-to-G range. They are firm enough to not generate a fold beneath the tit and the nipples are pointing slightly upwards. Her nipples are very large, even for her breast size, at over an inch in diameter and almost an inch long. The nipples rest on a pair of puffy areolae, almost as a pair of half spheres, around two inches wide. It is impossible to cover the shape of her tits with clothes alone, as the form shows through the thickest garments.&lt;br /&gt;
&lt;br /&gt;
Her ears are quite long and a bit floppy. They poke through her short boyish honey blond hair and is often tied with a wide red ribbon to try making her look a bit more innocent. &lt;br /&gt;
Her fur is snow white and covers her entire body. The skin is more pink than a rabbits normal skin colour.&lt;br /&gt;
&lt;br /&gt;
She has been, from a previous encounter, shaved around her pussy. The area is heart shaped and just bigger than the area her hands could cover. That makes her pussy show easily as the pink skin contrasts to her otherwise white fur. Dr.Drool liked the idea, so he gave her a lotion that removed all the hair follicles in the shaved area, giving her a permanently smooth crotch. Her areolae has been treated the same way, showing her nipples easily.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current situation==&lt;br /&gt;
&lt;br /&gt;
At the moment she is going through a testing period of the Mecha she's assigned to break in. Her mecha, dubbed &amp;quot;[[Koushin (mecha)|Koushin]]&amp;quot;, is spesially made for Kekkou and is a light reconnaissance and scout platform armed with few weapon systems but rely on stealth and information gathering to get past trouble.&lt;br /&gt;
&lt;br /&gt;
Her free time she mostly spends around town and likes to &amp;quot;infiltrate&amp;quot; different groups and learn their kinks and desires. She is not in any way passive, but enjoys observing and learning new ideas and tricks.&lt;br /&gt;
&lt;br /&gt;
As she is a quick healer, she is in to some kinds of body modifications. Both permanent and semi permanent. Mostly piercings is preferred but a few other things is accepted without any trouble. If anything should go bad, she can always ask Dr.Drool to help her get back in good shape.&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=User_talk:Kekkou&amp;diff=221</id>
		<title>User talk:Kekkou</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=User_talk:Kekkou&amp;diff=221"/>
		<updated>2009-09-10T21:15:11Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: WIP template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== WIP template ==&lt;br /&gt;
&lt;br /&gt;
{{WIP|}}&lt;br /&gt;
&lt;br /&gt;
{{WIP|Just for kicks!}}&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=Template:WIP&amp;diff=220</id>
		<title>Template:WIP</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=Template:WIP&amp;diff=220"/>
		<updated>2009-09-10T21:14:00Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: First draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;border:5px maroon double;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Work in Progress: {{{1}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=Kekkou&amp;diff=219</id>
		<title>Kekkou</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=Kekkou&amp;diff=219"/>
		<updated>2009-09-07T21:47:39Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: Genitalia and gastrointestinal tract&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Not too long ago the scientist [[Drool|Dr. Drool]] created a new pet, to play with and learn his idea of social behaviour.&lt;br /&gt;
In his lab he grew the little bioroid to his pleasing. As he is as brilliant in biology and genetics as he is crazy, the result was in his eyes more or less &amp;quot;perfect&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Perfect in this case is maybe an ill-chosen term, but Dr. Drool was quite satisfied with his creation. His goal was to make a sturdy and reliable design that still could pass more or less unnoticed in most situations. Over the three year lifespan, Kekkou has gone through over a dozen enhancements to the first concept. Not much has changed that can be seen externally but quite a few differences are hidden internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Body ==&lt;br /&gt;
&lt;br /&gt;
Kekkou is more or less a humanoid bioroid with plenty of features taken from rabbits and other rabbit-like species. She is close to six feet long (almost as long as many human males) but is quite lean. Those two factors makes her look quite fragile in some circumstances. That is far from the truth, as she is quite muscular and extremely agile.&lt;br /&gt;
&lt;br /&gt;
=== Muscles and skeleton ===&lt;br /&gt;
&lt;br /&gt;
That brings up one of the enhancements: Her muscles are slightly stronger, per muscle fibre, than a normal human, but they don't use as much energy to function at high stress. They also have more reserves before getting tired and beginning to ache.&lt;br /&gt;
&lt;br /&gt;
One thing that Kekkou was built for is high G movement and combat. Her muscles are very tear-resistant and almost all her tendons are close to ten times as strong as a normal human. Dr. Drool is very keen on keeping that fact a intellectual secret, as it is a very lucrative bio-material he ended up with mostly by accident. Adding a soft and stress-enhanced (tension) skin makes maneuvers in extreme Gs and high impact forces possible, as her muscles flow and bend around the bones and the skin keeps most things in place.&lt;br /&gt;
&lt;br /&gt;
Her bones are slightly stronger but much harder than most mammals, and they are perfectly smooth. All to add to the damage-resistance during high G situations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Circulatory and respiratory systems ===&lt;br /&gt;
&lt;br /&gt;
Under the surface of skin and muscles there has been some serious changing. To accommodate and in some situations keep Kekkou alive, both the blood stream and trachea has multiple connections for the blood and air flow. (More on that later.) The circulatory system is symmetrical and has two hearts to pump the blood. Both sides is perfectly interconnected to create a backup should one side fail.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Genitalia and gastrointestinal tract ===&lt;br /&gt;
&lt;br /&gt;
As most of her tissues are quite elastic, her vagina can accommodate some of the biggest appendages there is. When she was created, Dr. Drool had a clear idea of what he wanted from his construct so he designed her pelvic bones a bit differently from norm. Her pubic bone is actually made up of several separated parts, more like an ancient stone bridge is constructed. That makes her pelvic area able to take insertions up to and above ten time the average.&lt;br /&gt;
&lt;br /&gt;
Her digestive tract is redesigned completely. She now has a very short oesophagus that shortly after neck continues in a combined stomach and intestine tube. It goes in an almost straight line from throat to anus. She usually feeds on a special nourishing paste that gives her all the nutrient and energy she needs, and that paste is completely absorbed through the wall of her combined stomach/intestine. That makes the tract perfectly clean and she can be sustained without problems for months at a time using just the pastes.&lt;br /&gt;
&lt;br /&gt;
A recent discovery is that she actually can live off of semen and that she sometimes on unplanned trips away from her food pastes has come to live from semen alone. Semen has many of the same properties of her specially designed foodstuff, in the regard that she keeps her gastrointestinal tract clean and that she produces no faeces from either one of them.&lt;br /&gt;
&lt;br /&gt;
Another recent discovery, in a purely sexual concept, is that he can take even bigger things &amp;quot;up her ass&amp;quot; or &amp;quot;down her throat&amp;quot; than vaginally. That is from the fact that there is no end, so to speak, as she has been seen take penetrations that &amp;quot;goes right trough her&amp;quot; from anus to mouth. And as her air pipe is redirected on both sides of her neck, she can continue to breath while being deep throated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Appendages and extremities ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Head ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current occupation ==&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=User:Kekkou&amp;diff=218</id>
		<title>User:Kekkou</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=User:Kekkou&amp;diff=218"/>
		<updated>2009-09-07T19:20:33Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://nsfw.reuterberg.se/ Kekkou's players site]&lt;br /&gt;
&lt;br /&gt;
== MOO and other tech stuff: ==&lt;br /&gt;
* [[/MOO tutor]]: The Cow Ate My Brain&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=User:Kekkou/MOO_tutor&amp;diff=217</id>
		<title>User:Kekkou/MOO tutor</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=User:Kekkou/MOO_tutor&amp;diff=217"/>
		<updated>2009-09-07T19:03:24Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: Category and a subheading in place&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tutor for MOO I found surfing the net. I hope I don't break any rules by putting it here. It's for my own learning and reference.&lt;br /&gt;
&lt;br /&gt;
                      The Cow Ate My Brain&lt;br /&gt;
                              or&lt;br /&gt;
          A Novice's Guide to MOO Programming, Part I&lt;br /&gt;
                              by &lt;br /&gt;
                   Loyd Blankenship (&amp;quot;Mentor&amp;quot;)&lt;br /&gt;
                 Last Revised: September 3, 1993&lt;br /&gt;
&lt;br /&gt;
This document is copyright 1993 by Illuminati Online (io.com). All rights reserved. You may distribute this electronic document as you wish, provided no fee is charged for doing so, and the text (including this &lt;br /&gt;
disclaimer) is left untouched.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
When I first logged onto a MOO (about 2 months ago from the initial date of writing), I was both intrigued and appalled. Intrigued -- because of the infinite possibilities of a user-extendable, multi-user virtual reality. And appalled -- because of the scarcity of documentation and help for new users.&lt;br /&gt;
&lt;br /&gt;
I came to MOOs as an experienced programmer. I already knew what Object Oriented Programming (OOP) was, and could program in half-a-dozen different languages. And I *still* had a hard time getting off the ground creating interesting places and objects, not to mention writing new verbs. I shudder at the thought of encountering a MOO and not knowing anything about programming and OOP . . .&lt;br /&gt;
&lt;br /&gt;
This file is my attempt, while it's still fresh in my mind, to help teach a beginner how to become a useful MOO programmer. Let me point out right now that I am *not* a MOO programming expert. I've only written a few dozen good verbs at this point. But I feel like I'm now over the hump of the learning curve -- I understand how things work, and I know where to look to find answers to my questions. I want to help get you to this point. &lt;br /&gt;
&lt;br /&gt;
As you go through this document, make frequent use of the `help' command on the MOO itself. For instance, if you don't completely understand the syntax of @create, try `help @create'. It isn't the best help system in the world, but combined with this file, you might get through.&lt;br /&gt;
&lt;br /&gt;
* Part I (this file) talks about MOO basics -- what they are, how they work. It covers building rooms (including exits), creating objects, and such basic topics as verbs, properties, object oriented programming and the like. &lt;br /&gt;
* Part II (which I hope to write in the next few weeks) will cover the basics of verb programming.&lt;br /&gt;
&lt;br /&gt;
I'll continue to revise this file over time. If you have any comments, good or bad, please send them to me at one of the following (in order of preference):&lt;br /&gt;
* mentor@fnordbox.io.com&lt;br /&gt;
* CI$: [73407,515]&lt;br /&gt;
* GEnie: SJGAMES&lt;br /&gt;
&lt;br /&gt;
I can also be found hanging out as &amp;quot;Mentor&amp;quot; on the Metaverse MOO (metaverse.io.com 7777) almost every day, Jay's House MOO once a week or so, and LambdaMOO on a sporadic basis. And if you're really desperate, you can send snail mail to me c/o Steve Jackson Games, PO Box 18957, Austin, TX, 78760.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is a MOO? ==&lt;br /&gt;
&lt;br /&gt;
If you're reading this, you've probably stumbled on to at least one MOO. At the high-concept end of things, a MOO is a multi-user, text-based virtual reality. At the low-concept end of things, think of it as a multi-player Infocom-style game that lets you talk to other players and build new locations and objects.&lt;br /&gt;
&lt;br /&gt;
The MOO is a program running on a Unix-type computer system. The original MOO is LambdaMOO, and was developed by Pavel Curtis at the Xerox Palo Alto Research Center from an initial body of code provided by stephen White at the University of Waterloo. It has been up and running since October 1990.&lt;br /&gt;
&lt;br /&gt;
The main program working the MOO is called the &amp;quot;server.&amp;quot; The server handles all the nitty-gritty details such as input/output between the Internet and the MOO, parsing (figuring out) the lines you enter, and so on. The source code for LambdaMOO's server is freely available via FTP at parcftp.xerox.com. It has been ported to a number of systems, from BSD/I to Linux to Amiga Unix. This isn't intended to be a comprehensive guide to setting up and running a MOO (mainly because I don't know much about it!), so we're going to assume that the reader has logged into someone else's MOO.&lt;br /&gt;
&lt;br /&gt;
The other big duty of the server is to compile and run programs (called &amp;quot;verbs&amp;quot;) written in a language called MOO. MOO is a cross between C++ and LISP. The programming language is thoroughly documented, but the docco is *not* really aimed toward the novice user.&lt;br /&gt;
&lt;br /&gt;
If the server is the heart of a MOO, a giant database called the &amp;quot;core&amp;quot; is the brain. Initially, the core is fairly empty -- it defines basic objects (more on objects later) such as $thing (the generic thing) and $prog (the generic programmer, which is a player-character with the power to add more things). As players build new rooms and create new objects, the core gets bigger. The initial LambdaCore is also available via FTP from parcftp.xerox.com.&lt;br /&gt;
&lt;br /&gt;
Enough technical babble -- from this point on, I'm assuming that you've connected to a MOO and have your own character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is Object Oriented Programming (OOP)? ==&lt;br /&gt;
&lt;br /&gt;
Before you can truly understand MOO programming, you have to be clear on the concept of OOP, especially the idea of objects and inheritance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Object Numbers ===&lt;br /&gt;
&lt;br /&gt;
*Everything* on the MOO is an object. Players are objects, rooms are objects, exits and entrances are objects, editors are objects, and objects are, well, objects. Each object has an &amp;quot;object number&amp;quot;. For instance, the generic thing might be #5. When you're in the MOO, you can substitute an object number for an object's name at any point. If I'm object #433, for &lt;br /&gt;
instance, you could type &amp;quot;give ball to Mentor&amp;quot; or you could type &amp;quot;give ball to #433&amp;quot;. If the ball is #731, you could type &amp;quot;give #731 to #433&amp;quot;. The MOO doesn't care.&lt;br /&gt;
&lt;br /&gt;
Object numbers are different from MOO to MOO -- just because I'm object #433 on Metaverse doesn't mean I'm object #433 on Opal, or on Lambda.&lt;br /&gt;
&lt;br /&gt;
There are only a few basic object types defined in the MOO core. Everything else starts out as a copy -- a &amp;quot;child&amp;quot; -- of these basic objects. For example, there is a basic class called &amp;quot;$thing&amp;quot; (a generic thing). If I wanted to create a Generic Ball, I might make it a child of $thing (by typing `@create $thing named &amp;quot;Generic Ball&amp;quot;' -- more on this later). Then I could create children of the Generic Ball, such as a basketball (by typing `@create &amp;quot;Generic Ball&amp;quot; named &amp;quot;basketball&amp;quot;), or a baseball, or a football, or even a Frisbee! (Think about it -- you do many of the same things with a Frisbee you do with a ball: throw, catch, drop, get, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Examining Objects ===&lt;br /&gt;
&lt;br /&gt;
There are several different ways you can look at an object. The first (and most obvious) is `look'. If you type `look ball', you'll see the description of the ball.&lt;br /&gt;
&lt;br /&gt;
There are several different ways you can look at an object. The first (and most obvious) is `look'. If you type `look ball', you'll see the description of the ball.&lt;br /&gt;
&lt;br /&gt;
Next up, we have `@examine ball'. This shows you the object description, verbs and properties.&lt;br /&gt;
&lt;br /&gt;
Then there's `@show ball'. This tells you the object name and number, the name and number of its parent object, the name and number of the owner, and a list of all visible verbs and properties (see below).&lt;br /&gt;
&lt;br /&gt;
Finally there's `@dump ball'. This gives you a listing of all the things `@show' does, plus shows you the programs for all visible verbs *on that object*. This differs from the `@list' command, which we'll discuss below.&lt;br /&gt;
&lt;br /&gt;
(If you try to do the `@show' command and it doesn't work, you need to change your parent object to the Generic Programmer. This won't allow you to write programs unless the wizards have set your programming bit -- see Quota, below -- but it will give you access to nifty things like `@show'. Just type `@chparent me to $prog' and that will do it. If it doesn't, bug a wizard . . . )&lt;br /&gt;
&lt;br /&gt;
You can get a list of all the messages on an object (see below) with the command `@messages &amp;lt;object&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is a Verb? ==&lt;br /&gt;
&lt;br /&gt;
A verb is, simply, a program that is attached to an object. For example, $thing (our generic thing mentioned above) starts out with a few predefined verbs -- put, take, get, and drop. So you could type &amp;quot;get $thing&amp;quot; and you'd have the generic thing (type `inventory' (abbreviatable to 'i') to see a list of things you're carrying). &lt;br /&gt;
&lt;br /&gt;
When you're programming verbs, you'll almost always refer to them in the form &amp;lt;object #&amp;gt;:&amp;lt;verbname&amp;gt;. So in the case of $thing (object #5), the `put' verb would be `#5:put'. If we had a ball that we could throw, the verb would be called `ball:throw'.&lt;br /&gt;
&lt;br /&gt;
There are two ways to look at the MOO program that is attached to a verb. The first is using the @dump command, described above. The second is using the `@list &amp;lt;object#&amp;gt;:verb' command. The command @list starts by &lt;br /&gt;
checking the object for the verb; if it isn't there, it checks the object's parent. If it isn't there, it checks the parent object's parent. And so on, until it reaches the top. So if you type &amp;quot;@dump ball&amp;quot;, you aren't going to see the program for the `put' verb -- it's defined on the generic thing, not the ball. But if you type `@list ball:put', the server will tell you something like &amp;quot;There is no `put' defined on ball, but it's defined on one of ball's ancestors.&amp;quot; Then it will show you the `put' program. This is our first example of how *inheritance* works. More later . . .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is a Property? ==&lt;br /&gt;
&lt;br /&gt;
A property is a value that is stored on an object. There are certain properties that are built into everything -- the description, for example. Every time you type `look &amp;lt;object&amp;gt;', the server runs the verb `look_self' on the object in question, and shows you the description of the object you looked at. We might also have a property on our Generic Ball called color, that you could set when you create children of the Generic Ball. If we created a football (@create Generic Ball named &amp;quot;football&amp;quot;), we could then set the color using the `@property' command (@property football.color is &amp;quot;brown&amp;quot;). Notice that when you're talking about properties, you use the form &amp;lt;object #&amp;gt;.property (as opposed to &amp;lt;object #&amp;gt;:verb). It's easy to forget which one wants a period and which one wants a colon. Use `@show object' to get a list of all the properties on an object. &lt;br /&gt;
&lt;br /&gt;
A property does not have to be a text string. They can also be lists or numbers. For example, a clubhouse might have a property called &amp;quot;members&amp;quot; as follows:&lt;br /&gt;
 clubhouse.members = (&amp;quot;Bob&amp;quot;, &amp;quot;Carol&amp;quot;, &amp;quot;Ted&amp;quot;, &amp;quot;Alice&amp;quot;)&lt;br /&gt;
Or maybe it's just a number &lt;br /&gt;
 clubhouse.num_members = 4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
&lt;br /&gt;
Messages are special kinds of properties; they are always text descriptions, and they end with `_msg'. For example, `move_msg' might be a message displayed when an object is moved. One of the first ways you'll want to customize your rooms and objects is to edit the messages on them. More on that after we've dealt with creating objects and building rooms.&lt;br /&gt;
&lt;br /&gt;
You can get a list of all the messages on an object with the command&lt;br /&gt;
 `@messages &amp;lt;object&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inheritance ==&lt;br /&gt;
&lt;br /&gt;
We'll come back to creating new verbs and new properties later. Now we're to the most important part of OOP -- inheritance. Simply put, any verb or property on the parent is automatically available on all its children. Any child may have its own version of the verb instead, but if a verb is not specifically defined on a child, the child uses the verb as it is defined on the parent. Let's look at some examples.&lt;br /&gt;
&lt;br /&gt;
Our generic $thing has some basic thing-like verbs on it: put, take, get, drop, etc. When we create our Generic Ball, we'll be adding some new verbs: throw, catch and bounce. But we don't have to worry about writing our own put, take, get and drop for the Generic Ball -- it *inherited* them from $thing. When we make a child of the Generic Ball (say, a basketball), we might add the verbs dribble and shoot. When we did a `@dump basketball', it would only show these two verbs. But we could still catch it and throw it, because it inherited the catch and throw verbs from the Generic Ball. And we could still get and drop the basketball, because it inherited those verbs from the Generic Ball, who in turn inherited them from $thing.&lt;br /&gt;
&lt;br /&gt;
It works the same way with properties. If we made the description of Generic Ball say &amp;quot;This is an ugly green ball&amp;quot;, then when we typed `look football', we'd see &amp;quot;This is an ugly green ball.&amp;quot; You would have to change the description of the football to something more appropriate, thereby writing over the initial value of the inherited property.&lt;br /&gt;
&lt;br /&gt;
Now that that's out of the way, let's start building.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quota ==&lt;br /&gt;
&lt;br /&gt;
When you get your character on a MOO, you start with a certain amount of quota. Each unit of quota allows you to create one object. This number is typically six to eight. You'll need to check with each MOO to find out their policy for giving extra quota. &lt;br /&gt;
&lt;br /&gt;
Initially, you probably won't be allowed to write programs -- just to build new rooms and create new objects. It's usually not hard to convince a wizard to turn on your programmer bit, though.&lt;br /&gt;
&lt;br /&gt;
If you run out of quota, you're stuck. You can always recycle something you created, though. This gives you back the quota. More on recycling later . . .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building a Room ==&lt;br /&gt;
&lt;br /&gt;
The first thing everyone wants to do when they get online is to build a house. This can be anything from an apartment to a Pez dispenser to a dumpster to a cloud castle. My current house is a cardboard box with an opium den in the basement and a programming lab attached (plus various secret passages leading to all sorts of strange things . . . :-)&lt;br /&gt;
&lt;br /&gt;
Start by typing `help @dig'. I'll wait. That does a very good job of explaining how to create your initial room. You won't have any exits or entrances at first -- there's no place to exit or enter *to*.&lt;br /&gt;
&lt;br /&gt;
When you create this room, it isn't `attached' to the rest of the MOO geography. The only way to get to it is to teleport. You teleport around by typing `@move me to &amp;lt;object # of the room you want&amp;gt;'. Different MOOs have different policies about linking new creations into the existing world. This takes a wizard to do.&lt;br /&gt;
&lt;br /&gt;
Now that you've got a home, type `@sethome'. This makes your new room your home -- your character will live here when you're offline, and all you have to do is type `home' from anywhere in the MOO, and you'll be teleported back here.&lt;br /&gt;
&lt;br /&gt;
Next you need to give your room a description. Type `@describe here as &amp;quot;This is my new home! This message is displayed whenever anyone enters here! I better make it good!'&lt;br /&gt;
&lt;br /&gt;
Notice that you don't need a close-quotation mark, just an open one. The `@describe' program assumes that everything after the first &amp;quot; is description.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding Exits ===&lt;br /&gt;
&lt;br /&gt;
Now, suppose you want to add a second room to your fledgling mansion. Do `help @dig' again. Follow the directions. Let's say you wanted to put an exit in the south wall leading from your Living Room (the first room you created) to a porch. You'd type `@dig s,south|n,north named &amp;quot;The Porch&amp;quot;'.&lt;br /&gt;
&lt;br /&gt;
Let's break that down. The first part says to dig an exit that can be accessed by either &amp;quot;south&amp;quot; or &amp;quot;s&amp;quot; going into a new room named &amp;quot;The Porch&amp;quot;. By putting the `|n,north' part in, you tell the program to make *another* exit going from The Porch back into the Living Room, called with &amp;quot;north&amp;quot; or &amp;quot;n&amp;quot;. If you'd just typed `@dig s,south named &amp;quot;The Porch&amp;quot;', you could walk out on the porch, but you couldn't get back.&lt;br /&gt;
&lt;br /&gt;
You can do all sorts of interesting combinations. For instance, if you had described your room as having a rope hanging from the ceiling, you might do a `@dig climb,u,up|climb,descend,d,down named &amp;quot;The Roof&amp;quot;'. Now anyone in your Living Room could type `climb', and they'd be taken to the roof. Once there, they could type `descend' or `down' or `d' or `climb' and come back down.&lt;br /&gt;
&lt;br /&gt;
One thing you'll notice quickly is that every exit is an object. So if you've got a Living Room with a sliding glass door going out to The Porch, you've really got 4 objects: The Living Room, The Porch, the exit The Living Room --&amp;gt; The Porch, and the exit The Porch --&amp;gt; The Living Room. Where'd all my quota go?!?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interior Decorating With Messages ===&lt;br /&gt;
&lt;br /&gt;
Now we're back to messages. (Remember messages? If not, go back up and reread the section on Properties. I'll wait.)&lt;br /&gt;
&lt;br /&gt;
The easiest way to customize your rooms is to edit the messages on the room. You've already done this a little bit when you used `@describe'. But there are a lot more messages on rooms (and especially on exits) that you'll want to play with. You can get a list of all the messages on an object by typing `@messages &amp;lt;object#&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
Any property that ends in `_msg' is displayed by `@messages' and can be edited as follows: Let's say we've got a property on our football called `punt_msg'. This is displayed whenever anyone executes the verb football:punt (they'd do this by typing `punt football', probably). The syntax is `@&amp;lt;property&amp;gt; &amp;lt;object&amp;gt; is &amp;quot;message&amp;quot;'. When you're using this method to edit a message, you *don't* have to include the `_msg' extension. For example, we'd type:&lt;br /&gt;
`@punt football is &amp;quot;You kick the football.'&lt;br /&gt;
&lt;br /&gt;
Another, more concrete example concerns exits. Exits are chock full of messages such as: &lt;br /&gt;
 leave_msg: displayed to a player passing through the exit.&lt;br /&gt;
 oleave_msg: displayed to everyone else in the room when someone uses the exit.&lt;br /&gt;
&lt;br /&gt;
There are many more. Do a `@messages &amp;lt;object # of the exit&amp;gt;' to see them all. To set the leave_msg you'd type `@leave &amp;lt;object#&amp;gt; is &amp;quot;You walk through the glass doors into the sunlight.'. For messages that other people in the room see, the player's name is automatically prefaced. So the oleave_msg might be `@oleave &amp;lt;object#&amp;gt; is &amp;quot;walks through the glass doorway to the porch.'.&lt;br /&gt;
&lt;br /&gt;
In the above example, if I walked from your Living Room to your Porch, I'd see &amp;quot;You walk through the glass doors into the sunlight.&amp;quot; If you were sitting in the Living Room when I walked through the door, you'd see &amp;quot;Mentor walks through the glass doorway to the porch.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interior Decorating With Details ===&lt;br /&gt;
&lt;br /&gt;
If you had to create an object for every little thing in your rooms, you'd quickly run out of quota! While you might want to create a couch, and maybe a TV or Radio or Clock for the Living Room, you probably don't want to create a rug (unless it's covering a trap door) or a fireplace or the coasters on the coffee table. The `@detail' command lets you fake this.&lt;br /&gt;
&lt;br /&gt;
The syntax is `@detail &amp;lt;thing[,thing...]&amp;gt; is &amp;quot;Detail Text&amp;quot;'. Let's flesh out the Living Room by way of illustration. We start by describing the Living Room (this assumes we're inside the room when we're typing this).&lt;br /&gt;
&lt;br /&gt;
 @describe here as &amp;quot;This is Mentor's living room. It is sparsely furnished, with just a couch, a few pillows and a rug. There is a painting hanging on the west wall, and a sliding glass door opens to the porch toward the south.&lt;br /&gt;
&lt;br /&gt;
Pretty basic. Right now, if a player types `look wall' or `l wall' or `l painting', the MOO will respond &amp;quot;You don't see anything special.&amp;quot; Boring. &lt;br /&gt;
&lt;br /&gt;
Let's put a painting on the west wall.&lt;br /&gt;
&lt;br /&gt;
@detail wall,painting is &amp;quot;There is a large Real Musgrave original hanging on the wall, showing a horde of delinquent Pocket Dragons mugging a teddy bear.&lt;br /&gt;
&lt;br /&gt;
Now, when someone walks into the living room, they'll see the basic description. If they're curious enough to type `l painting' or `l wall', they'll see the detailed description of the painting.&lt;br /&gt;
&lt;br /&gt;
You can give clues to other details within a detail. For instance:&lt;br /&gt;
&lt;br /&gt;
 @detail pillows,pillow is &amp;quot;These are groovy purple pillows that were undoubtedly stolen from Zarabeth's place. There is a button pinned to one of the pillows.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 @detail button is &amp;quot;Excuse me, I'm from the BATF. Could you direct me to the Steve Jackson Games compound?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only people looking at the pillows will even know a button exists! If someone does a `@show' on the room, they'll discover it, but most people won't ever do that . . .&lt;br /&gt;
&lt;br /&gt;
As you can see, you can add a lot of neat design elements to rooms without having to spend quota or program a verb!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
An alias is merely a shorthand way of referring to the object that the MOO will understand. For instance, Coffeeman has the alias Cman. For the football, I might type `@create Generic Ball named &amp;quot;Mentor's Magic &lt;br /&gt;
Football:football,ball,mmf'.&lt;br /&gt;
&lt;br /&gt;
Now `l mmf', `l ball', `l Mentor's Magic Football' and `l football' would all be interpreted the same way by the MOO.&lt;br /&gt;
&lt;br /&gt;
You can add aliases to *any* object by using the `@rename' command. Its syntax is `@rename &amp;lt;object#&amp;gt; to &amp;quot;NewName:alias1,alias2,...&amp;quot;. So if we wanted to give the Living Room the alias `lr', we could type `@rename The Living Room to &amp;quot;The Living Room:lr&amp;quot;'.  Another option is to '@addalias alias1,alias2,... to &amp;lt;object&amp;gt;', whic does all the same things, but won't let you accidentally rename the object.&lt;br /&gt;
&lt;br /&gt;
In 99% of the cases, you can use an alias anyplace you can use the proper name. So if you have an object &amp;quot;Sushi Tray:tray&amp;quot;, you'll get the same thing when you type `look tray' as you do when you type `look Sushi Tray'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Objects ==&lt;br /&gt;
&lt;br /&gt;
We've already touched on the `@create' command earlier, when we made our Generic Ball and our football and basketball. Let's get specific.&lt;br /&gt;
&lt;br /&gt;
The syntax for `@create' is `@create &amp;lt;parent object&amp;gt; named &amp;quot;Name:alias1, alias2, etc.'. So we might want to create a flying carpet as follows.&lt;br /&gt;
&lt;br /&gt;
 `@create $thing named &amp;quot;Mentor's Flying Carpet:mfc,carpet'. &lt;br /&gt;
&lt;br /&gt;
Of course, it won't fly yet -- we'd have to add some verbs to make it fly -- but it would at least *look* cool, and that's half the battle. (In a reality based on text, what it says it is, it IS!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Describing Objects ===&lt;br /&gt;
&lt;br /&gt;
Once an object is created, you describe it in much the same way as you do a room. `@describe &amp;lt;object name or #&amp;gt; as &amp;quot;Description'. Now, whenever anyone looks at the object, they'll see the description.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recycling ==&lt;br /&gt;
&lt;br /&gt;
There will come a time, whether from lack of quota or from simple ennui, that you will want to get rid of one of your objects. To do this, you use the command `@recycle &amp;lt;object#&amp;gt;'. Be careful about this, though! Once you do it, it's gone forever.&lt;br /&gt;
&lt;br /&gt;
When you recycle an object, your quota is increased by one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== It's A Wrap ==&lt;br /&gt;
&lt;br /&gt;
That's it for part one. This should be enough to get you started creating and building your own objects and rooms. There's no substitute for actually getting in there and doing it. If you make something you don't like, you can always recycle it!&lt;br /&gt;
&lt;br /&gt;
As I said at the beginning, I'm always interested in feedback (good and bad). Please contact me at one of the addresses or MOOs listed at the beginning of this file. Look for Part II of this tutorial, which will cover programming basics, Real Soon Now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
Special thanks to all the people who've helped me learn one end of the cow from the other: Coffeeman, Zachary and Taylor on Multiverse and Zippy and Joe on Jay's House. Thanks to Pavel for taking time to read this and comment, and yduJ, who I've never met, but who gives great tutorial.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=User:Kekkou/MOO_tutor&amp;diff=216</id>
		<title>User:Kekkou/MOO tutor</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=User:Kekkou/MOO_tutor&amp;diff=216"/>
		<updated>2009-09-07T18:59:40Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: Second pass of editing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tutor for MOO I found surfing the net. I hope I don't break any rules by putting it here. It's for my own learning and reference.&lt;br /&gt;
&lt;br /&gt;
                      The Cow Ate My Brain&lt;br /&gt;
                              or&lt;br /&gt;
          A Novice's Guide to MOO Programming, Part I&lt;br /&gt;
                              by &lt;br /&gt;
                   Loyd Blankenship (&amp;quot;Mentor&amp;quot;)&lt;br /&gt;
                 Last Revised: September 3, 1993&lt;br /&gt;
&lt;br /&gt;
This document is copyright 1993 by Illuminati Online (io.com). All rights reserved. You may distribute this electronic document as you wish, provided no fee is charged for doing so, and the text (including this &lt;br /&gt;
disclaimer) is left untouched.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
When I first logged onto a MOO (about 2 months ago from the initial date of writing), I was both intrigued and appalled. Intrigued -- because of the infinite possibilities of a user-extendable, multi-user virtual reality. And appalled -- because of the scarcity of documentation and help for new users.&lt;br /&gt;
&lt;br /&gt;
I came to MOOs as an experienced programmer. I already knew what Object Oriented Programming (OOP) was, and could program in half-a-dozen different languages. And I *still* had a hard time getting off the ground creating interesting places and objects, not to mention writing new verbs. I shudder at the thought of encountering a MOO and not knowing anything about programming and OOP . . .&lt;br /&gt;
&lt;br /&gt;
This file is my attempt, while it's still fresh in my mind, to help teach a beginner how to become a useful MOO programmer. Let me point out right now that I am *not* a MOO programming expert. I've only written a few dozen good verbs at this point. But I feel like I'm now over the hump of the learning curve -- I understand how things work, and I know where to look to find answers to my questions. I want to help get you to this point. &lt;br /&gt;
&lt;br /&gt;
As you go through this document, make frequent use of the `help' command on the MOO itself. For instance, if you don't completely understand the syntax of @create, try `help @create'. It isn't the best help system in the world, but combined with this file, you might get through.&lt;br /&gt;
&lt;br /&gt;
* Part I (this file) talks about MOO basics -- what they are, how they work. It covers building rooms (including exits), creating objects, and such basic topics as verbs, properties, object oriented programming and the like. &lt;br /&gt;
* Part II (which I hope to write in the next few weeks) will cover the basics of verb programming.&lt;br /&gt;
&lt;br /&gt;
I'll continue to revise this file over time. If you have any comments, good or bad, please send them to me at one of the following (in order of preference):&lt;br /&gt;
* mentor@fnordbox.io.com&lt;br /&gt;
* CI$: [73407,515]&lt;br /&gt;
* GEnie: SJGAMES&lt;br /&gt;
&lt;br /&gt;
I can also be found hanging out as &amp;quot;Mentor&amp;quot; on the Metaverse MOO (metaverse.io.com 7777) almost every day, Jay's House MOO once a week or so, and LambdaMOO on a sporadic basis. And if you're really desperate, you can send snail mail to me c/o Steve Jackson Games, PO Box 18957, Austin, TX, 78760.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is a MOO? ==&lt;br /&gt;
&lt;br /&gt;
If you're reading this, you've probably stumbled on to at least one MOO. At the high-concept end of things, a MOO is a multi-user, text-based virtual reality. At the low-concept end of things, think of it as a multi-player Infocom-style game that lets you talk to other players and build new locations and objects.&lt;br /&gt;
&lt;br /&gt;
The MOO is a program running on a Unix-type computer system. The original MOO is LambdaMOO, and was developed by Pavel Curtis at the Xerox Palo Alto Research Center from an initial body of code provided by stephen White at the University of Waterloo. It has been up and running since October 1990.&lt;br /&gt;
&lt;br /&gt;
The main program working the MOO is called the &amp;quot;server.&amp;quot; The server handles all the nitty-gritty details such as input/output between the Internet and the MOO, parsing (figuring out) the lines you enter, and so on. The source code for LambdaMOO's server is freely available via FTP at parcftp.xerox.com. It has been ported to a number of systems, from BSD/I to Linux to Amiga Unix. This isn't intended to be a comprehensive guide to setting up and running a MOO (mainly because I don't know much about it!), so we're going to assume that the reader has logged into someone else's MOO.&lt;br /&gt;
&lt;br /&gt;
The other big duty of the server is to compile and run programs (called &amp;quot;verbs&amp;quot;) written in a language called MOO. MOO is a cross between C++ and LISP. The programming language is thoroughly documented, but the docco is *not* really aimed toward the novice user.&lt;br /&gt;
&lt;br /&gt;
If the server is the heart of a MOO, a giant database called the &amp;quot;core&amp;quot; is the brain. Initially, the core is fairly empty -- it defines basic objects (more on objects later) such as $thing (the generic thing) and $prog (the generic programmer, which is a player-character with the power to add more things). As players build new rooms and create new objects, the core gets bigger. The initial LambdaCore is also available via FTP from parcftp.xerox.com.&lt;br /&gt;
&lt;br /&gt;
Enough technical babble -- from this point on, I'm assuming that you've connected to a MOO and have your own character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is Object Oriented Programming (OOP)? ==&lt;br /&gt;
&lt;br /&gt;
Before you can truly understand MOO programming, you have to be clear on the concept of OOP, especially the idea of objects and inheritance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Object Numbers ===&lt;br /&gt;
&lt;br /&gt;
*Everything* on the MOO is an object. Players are objects, rooms are objects, exits and entrances are objects, editors are objects, and objects are, well, objects. Each object has an &amp;quot;object number&amp;quot;. For instance, the generic thing might be #5. When you're in the MOO, you can substitute an object number for an object's name at any point. If I'm object #433, for &lt;br /&gt;
instance, you could type &amp;quot;give ball to Mentor&amp;quot; or you could type &amp;quot;give ball to #433&amp;quot;. If the ball is #731, you could type &amp;quot;give #731 to #433&amp;quot;. The MOO doesn't care.&lt;br /&gt;
&lt;br /&gt;
Object numbers are different from MOO to MOO -- just because I'm object #433 on Metaverse doesn't mean I'm object #433 on Opal, or on Lambda.&lt;br /&gt;
&lt;br /&gt;
There are only a few basic object types defined in the MOO core. Everything else starts out as a copy -- a &amp;quot;child&amp;quot; -- of these basic objects. For example, there is a basic class called &amp;quot;$thing&amp;quot; (a generic thing). If I wanted to create a Generic Ball, I might make it a child of $thing (by typing `@create $thing named &amp;quot;Generic Ball&amp;quot;' -- more on this later). Then I could create children of the Generic Ball, such as a basketball (by typing `@create &amp;quot;Generic Ball&amp;quot; named &amp;quot;basketball&amp;quot;), or a baseball, or a football, or even a Frisbee! (Think about it -- you do many of the same things with a Frisbee you do with a ball: throw, catch, drop, get, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Examining Objects ===&lt;br /&gt;
&lt;br /&gt;
There are several different ways you can look at an object. The first (and most obvious) is `look'. If you type `look ball', you'll see the description of the ball.&lt;br /&gt;
&lt;br /&gt;
There are several different ways you can look at an object. The first (and most obvious) is `look'. If you type `look ball', you'll see the description of the ball.&lt;br /&gt;
&lt;br /&gt;
Next up, we have `@examine ball'. This shows you the object description, verbs and properties.&lt;br /&gt;
&lt;br /&gt;
Then there's `@show ball'. This tells you the object name and number, the name and number of its parent object, the name and number of the owner, and a list of all visible verbs and properties (see below).&lt;br /&gt;
&lt;br /&gt;
Finally there's `@dump ball'. This gives you a listing of all the things `@show' does, plus shows you the programs for all visible verbs *on that object*. This differs from the `@list' command, which we'll discuss below.&lt;br /&gt;
&lt;br /&gt;
(If you try to do the `@show' command and it doesn't work, you need to change your parent object to the Generic Programmer. This won't allow you to write programs unless the wizards have set your programming bit -- see Quota, below -- but it will give you access to nifty things like `@show'. Just type `@chparent me to $prog' and that will do it. If it doesn't, bug a wizard . . . )&lt;br /&gt;
&lt;br /&gt;
You can get a list of all the messages on an object (see below) with the command `@messages &amp;lt;object&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is a Verb? ==&lt;br /&gt;
&lt;br /&gt;
A verb is, simply, a program that is attached to an object. For example, $thing (our generic thing mentioned above) starts out with a few predefined verbs -- put, take, get, and drop. So you could type &amp;quot;get $thing&amp;quot; and you'd have the generic thing (type `inventory' (abbreviatable to 'i') to see a list of things you're carrying). &lt;br /&gt;
&lt;br /&gt;
When you're programming verbs, you'll almost always refer to them in the form &amp;lt;object #&amp;gt;:&amp;lt;verbname&amp;gt;. So in the case of $thing (object #5), the `put' verb would be `#5:put'. If we had a ball that we could throw, the verb would be called `ball:throw'.&lt;br /&gt;
&lt;br /&gt;
There are two ways to look at the MOO program that is attached to a verb. The first is using the @dump command, described above. The second is using the `@list &amp;lt;object#&amp;gt;:verb' command. The command @list starts by &lt;br /&gt;
checking the object for the verb; if it isn't there, it checks the object's parent. If it isn't there, it checks the parent object's parent. And so on, until it reaches the top. So if you type &amp;quot;@dump ball&amp;quot;, you aren't going to see the program for the `put' verb -- it's defined on the generic thing, not the ball. But if you type `@list ball:put', the server will tell you something like &amp;quot;There is no `put' defined on ball, but it's defined on one of ball's ancestors.&amp;quot; Then it will show you the `put' program. This is our first example of how *inheritance* works. More later . . .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is a Property? ==&lt;br /&gt;
&lt;br /&gt;
A property is a value that is stored on an object. There are certain properties that are built into everything -- the description, for example. Every time you type `look &amp;lt;object&amp;gt;', the server runs the verb `look_self' on the object in question, and shows you the description of the object you looked at. We might also have a property on our Generic Ball called color, that you could set when you create children of the Generic Ball. If we created a football (@create Generic Ball named &amp;quot;football&amp;quot;), we could then set the color using the `@property' command (@property football.color is &amp;quot;brown&amp;quot;). Notice that when you're talking about properties, you use the form &amp;lt;object #&amp;gt;.property (as opposed to &amp;lt;object #&amp;gt;:verb). It's easy to forget which one wants a period and which one wants a colon. Use `@show object' to get a list of all the properties on an object. &lt;br /&gt;
&lt;br /&gt;
A property does not have to be a text string. They can also be lists or numbers. For example, a clubhouse might have a property called &amp;quot;members&amp;quot; as follows:&lt;br /&gt;
 clubhouse.members = (&amp;quot;Bob&amp;quot;, &amp;quot;Carol&amp;quot;, &amp;quot;Ted&amp;quot;, &amp;quot;Alice&amp;quot;)&lt;br /&gt;
Or maybe it's just a number &lt;br /&gt;
 clubhouse.num_members = 4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
&lt;br /&gt;
Messages are special kinds of properties; they are always text descriptions, and they end with `_msg'. For example, `move_msg' might be a message displayed when an object is moved. One of the first ways you'll want to customize your rooms and objects is to edit the messages on them. More on that after we've dealt with creating objects and building rooms.&lt;br /&gt;
&lt;br /&gt;
You can get a list of all the messages on an object with the command&lt;br /&gt;
 `@messages &amp;lt;object&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inheritance ==&lt;br /&gt;
&lt;br /&gt;
We'll come back to creating new verbs and new properties later. Now we're to the most important part of OOP -- inheritance. Simply put, any verb or property on the parent is automatically available on all its children. Any child may have its own version of the verb instead, but if a verb is not specifically defined on a child, the child uses the verb as it is defined on the parent. Let's look at some examples.&lt;br /&gt;
&lt;br /&gt;
Our generic $thing has some basic thing-like verbs on it: put, take, get, drop, etc. When we create our Generic Ball, we'll be adding some new verbs: throw, catch and bounce. But we don't have to worry about writing our own put, take, get and drop for the Generic Ball -- it *inherited* them from $thing. When we make a child of the Generic Ball (say, a basketball), we might add the verbs dribble and shoot. When we did a `@dump basketball', it would only show these two verbs. But we could still catch it and throw it, because it inherited the catch and throw verbs from the Generic Ball. And we could still get and drop the basketball, because it inherited those verbs from the Generic Ball, who in turn inherited them from $thing.&lt;br /&gt;
&lt;br /&gt;
It works the same way with properties. If we made the description of Generic Ball say &amp;quot;This is an ugly green ball&amp;quot;, then when we typed `look football', we'd see &amp;quot;This is an ugly green ball.&amp;quot; You would have to change the description of the football to something more appropriate, thereby writing over the initial value of the inherited property.&lt;br /&gt;
&lt;br /&gt;
Now that that's out of the way, let's start building.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quota ==&lt;br /&gt;
&lt;br /&gt;
When you get your character on a MOO, you start with a certain amount of quota. Each unit of quota allows you to create one object. This number is typically six to eight. You'll need to check with each MOO to find out their policy for giving extra quota. &lt;br /&gt;
&lt;br /&gt;
Initially, you probably won't be allowed to write programs -- just to build new rooms and create new objects. It's usually not hard to convince a wizard to turn on your programmer bit, though.&lt;br /&gt;
&lt;br /&gt;
If you run out of quota, you're stuck. You can always recycle something you created, though. This gives you back the quota. More on recycling later . . .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building a Room ==&lt;br /&gt;
&lt;br /&gt;
The first thing everyone wants to do when they get online is to build a house. This can be anything from an apartment to a Pez dispenser to a dumpster to a cloud castle. My current house is a cardboard box with an opium den in the basement and a programming lab attached (plus various secret passages leading to all sorts of strange things . . . :-)&lt;br /&gt;
&lt;br /&gt;
Start by typing `help @dig'. I'll wait. That does a very good job of explaining how to create your initial room. You won't have any exits or entrances at first -- there's no place to exit or enter *to*.&lt;br /&gt;
&lt;br /&gt;
When you create this room, it isn't `attached' to the rest of the MOO geography. The only way to get to it is to teleport. You teleport around by typing `@move me to &amp;lt;object # of the room you want&amp;gt;'. Different MOOs have different policies about linking new creations into the existing world. This takes a wizard to do.&lt;br /&gt;
&lt;br /&gt;
Now that you've got a home, type `@sethome'. This makes your new room your home -- your character will live here when you're offline, and all you have to do is type `home' from anywhere in the MOO, and you'll be teleported back here.&lt;br /&gt;
&lt;br /&gt;
Next you need to give your room a description. Type `@describe here as &amp;quot;This is my new home! This message is displayed whenever anyone enters here! I better make it good!'&lt;br /&gt;
&lt;br /&gt;
Notice that you don't need a close-quotation mark, just an open one. The `@describe' program assumes that everything after the first &amp;quot; is description.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding Exits ===&lt;br /&gt;
&lt;br /&gt;
Now, suppose you want to add a second room to your fledgling mansion. Do `help @dig' again. Follow the directions. Let's say you wanted to put an exit in the south wall leading from your Living Room (the first room you created) to a porch. You'd type `@dig s,south|n,north named &amp;quot;The Porch&amp;quot;'.&lt;br /&gt;
&lt;br /&gt;
Let's break that down. The first part says to dig an exit that can be accessed by either &amp;quot;south&amp;quot; or &amp;quot;s&amp;quot; going into a new room named &amp;quot;The Porch&amp;quot;. By putting the `|n,north' part in, you tell the program to make *another* exit going from The Porch back into the Living Room, called with &amp;quot;north&amp;quot; or &amp;quot;n&amp;quot;. If you'd just typed `@dig s,south named &amp;quot;The Porch&amp;quot;', you could walk out on the porch, but you couldn't get back.&lt;br /&gt;
&lt;br /&gt;
You can do all sorts of interesting combinations. For instance, if you had described your room as having a rope hanging from the ceiling, you might do a `@dig climb,u,up|climb,descend,d,down named &amp;quot;The Roof&amp;quot;'. Now anyone in your Living Room could type `climb', and they'd be taken to the roof. Once there, they could type `descend' or `down' or `d' or `climb' and come back down.&lt;br /&gt;
&lt;br /&gt;
One thing you'll notice quickly is that every exit is an object. So if you've got a Living Room with a sliding glass door going out to The Porch, you've really got 4 objects: The Living Room, The Porch, the exit The Living Room --&amp;gt; The Porch, and the exit The Porch --&amp;gt; The Living Room. Where'd all my quota go?!?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interior Decorating With Messages ===&lt;br /&gt;
&lt;br /&gt;
Now we're back to messages. (Remember messages? If not, go back up and reread the section on Properties. I'll wait.)&lt;br /&gt;
&lt;br /&gt;
The easiest way to customize your rooms is to edit the messages on the room. You've already done this a little bit when you used `@describe'. But there are a lot more messages on rooms (and especially on exits) that you'll want to play with. You can get a list of all the messages on an object by typing `@messages &amp;lt;object#&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
Any property that ends in `_msg' is displayed by `@messages' and can be edited as follows: Let's say we've got a property on our football called `punt_msg'. This is displayed whenever anyone executes the verb football:punt (they'd do this by typing `punt football', probably). The syntax is `@&amp;lt;property&amp;gt; &amp;lt;object&amp;gt; is &amp;quot;message&amp;quot;'. When you're using this method to edit a message, you *don't* have to include the `_msg' extension. For example, we'd type:&lt;br /&gt;
`@punt football is &amp;quot;You kick the football.'&lt;br /&gt;
&lt;br /&gt;
Another, more concrete example concerns exits. Exits are chock full of messages such as: &lt;br /&gt;
 leave_msg: displayed to a player passing through the exit.&lt;br /&gt;
 oleave_msg: displayed to everyone else in the room when someone uses the exit.&lt;br /&gt;
&lt;br /&gt;
There are many more. Do a `@messages &amp;lt;object # of the exit&amp;gt;' to see them all. To set the leave_msg you'd type `@leave &amp;lt;object#&amp;gt; is &amp;quot;You walk through the glass doors into the sunlight.'. For messages that other people in the room see, the player's name is automatically prefaced. So the oleave_msg might be `@oleave &amp;lt;object#&amp;gt; is &amp;quot;walks through the glass doorway to the porch.'.&lt;br /&gt;
&lt;br /&gt;
In the above example, if I walked from your Living Room to your Porch, I'd see &amp;quot;You walk through the glass doors into the sunlight.&amp;quot; If you were sitting in the Living Room when I walked through the door, you'd see &amp;quot;Mentor walks through the glass doorway to the porch.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interior Decorating With Details ===&lt;br /&gt;
&lt;br /&gt;
If you had to create an object for every little thing in your rooms, you'd quickly run out of quota! While you might want to create a couch, and maybe a TV or Radio or Clock for the Living Room, you probably don't want to create a rug (unless it's covering a trap door) or a fireplace or the coasters on the coffee table. The `@detail' command lets you fake this.&lt;br /&gt;
&lt;br /&gt;
The syntax is `@detail &amp;lt;thing[,thing...]&amp;gt; is &amp;quot;Detail Text&amp;quot;'. Let's flesh out the Living Room by way of illustration. We start by describing the Living Room (this assumes we're inside the room when we're typing this).&lt;br /&gt;
&lt;br /&gt;
 @describe here as &amp;quot;This is Mentor's living room. It is sparsely furnished, with just a couch, a few pillows and a rug. There is a painting hanging on the west wall, and a sliding glass door opens to the porch toward the south.&lt;br /&gt;
&lt;br /&gt;
Pretty basic. Right now, if a player types `look wall' or `l wall' or `l painting', the MOO will respond &amp;quot;You don't see anything special.&amp;quot; Boring. &lt;br /&gt;
&lt;br /&gt;
Let's put a painting on the west wall.&lt;br /&gt;
&lt;br /&gt;
@detail wall,painting is &amp;quot;There is a large Real Musgrave original hanging on the wall, showing a horde of delinquent Pocket Dragons mugging a teddy bear.&lt;br /&gt;
&lt;br /&gt;
Now, when someone walks into the living room, they'll see the basic description. If they're curious enough to type `l painting' or `l wall', they'll see the detailed description of the painting.&lt;br /&gt;
&lt;br /&gt;
You can give clues to other details within a detail. For instance:&lt;br /&gt;
&lt;br /&gt;
 @detail pillows,pillow is &amp;quot;These are groovy purple pillows that were undoubtedly stolen from Zarabeth's place. There is a button pinned to one of the pillows.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 @detail button is &amp;quot;Excuse me, I'm from the BATF. Could you direct me to the Steve Jackson Games compound?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only people looking at the pillows will even know a button exists! If someone does a `@show' on the room, they'll discover it, but most people won't ever do that . . .&lt;br /&gt;
&lt;br /&gt;
As you can see, you can add a lot of neat design elements to rooms without having to spend quota or program a verb!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aliases ==&lt;br /&gt;
&lt;br /&gt;
An alias is merely a shorthand way of referring to the object that the MOO will understand. For instance, Coffeeman has the alias Cman. For the football, I might type `@create Generic Ball named &amp;quot;Mentor's Magic &lt;br /&gt;
Football:football,ball,mmf'.&lt;br /&gt;
&lt;br /&gt;
Now `l mmf', `l ball', `l Mentor's Magic Football' and `l football' would all be interpreted the same way by the MOO.&lt;br /&gt;
&lt;br /&gt;
You can add aliases to *any* object by using the `@rename' command. Its syntax is `@rename &amp;lt;object#&amp;gt; to &amp;quot;NewName:alias1,alias2,...&amp;quot;. So if we wanted to give the Living Room the alias `lr', we could type `@rename The Living Room to &amp;quot;The Living Room:lr&amp;quot;'.  Another option is to '@addalias alias1,alias2,... to &amp;lt;object&amp;gt;', whic does all the same things, but won't let you accidentally rename the object.&lt;br /&gt;
&lt;br /&gt;
In 99% of the cases, you can use an alias anyplace you can use the proper name. So if you have an object &amp;quot;Sushi Tray:tray&amp;quot;, you'll get the same thing when you type `look tray' as you do when you type `look Sushi Tray'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Objects ==&lt;br /&gt;
&lt;br /&gt;
We've already touched on the `@create' command earlier, when we made our Generic Ball and our football and basketball. Let's get specific.&lt;br /&gt;
&lt;br /&gt;
The syntax for `@create' is `@create &amp;lt;parent object&amp;gt; named &amp;quot;Name:alias1, alias2, etc.'. So we might want to create a flying carpet as follows.&lt;br /&gt;
&lt;br /&gt;
 `@create $thing named &amp;quot;Mentor's Flying Carpet:mfc,carpet'. &lt;br /&gt;
&lt;br /&gt;
Of course, it won't fly yet -- we'd have to add some verbs to make it fly -- but it would at least *look* cool, and that's half the battle. (In a reality based on text, what it says it is, it IS!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Describing Objects ===&lt;br /&gt;
&lt;br /&gt;
Once an object is created, you describe it in much the same way as you do a room. `@describe &amp;lt;object name or #&amp;gt; as &amp;quot;Description'. Now, whenever anyone looks at the object, they'll see the description.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recycling ==&lt;br /&gt;
&lt;br /&gt;
There will come a time, whether from lack of quota or from simple ennui, that you will want to get rid of one of your objects. To do this, you use the command `@recycle &amp;lt;object#&amp;gt;'. Be careful about this, though! Once you do it, it's gone forever.&lt;br /&gt;
&lt;br /&gt;
When you recycle an object, your quota is increased by one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== It's A Wrap ==&lt;br /&gt;
&lt;br /&gt;
That's it for part one. This should be enough to get you started creating and building your own objects and rooms. There's no substitute for actually getting in there and doing it. If you make something you don't like, you can always recycle it!&lt;br /&gt;
&lt;br /&gt;
As I said at the beginning, I'm always interested in feedback (good and bad). Please contact me at one of the addresses or MOOs listed at the beginning of this file. Look for Part II of this tutorial, which will cover programming basics, Real Soon Now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
Special thanks to all the people who've helped me learn one end of the cow from the other: Coffeeman, Zachary and Taylor on Multiverse and Zippy and Joe on Jay's House. Thanks to Pavel for taking time to read this and comment, and yduJ, who I've never met, but who gives great tutorial.&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=User:Kekkou/MOO_tutor&amp;diff=215</id>
		<title>User:Kekkou/MOO tutor</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=User:Kekkou/MOO_tutor&amp;diff=215"/>
		<updated>2009-09-07T18:42:21Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: Original just copied and begun to edit the format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tutor for MOO I found surfing the net. I hope I don't break any rules by putting it here. It's for my own learning and reference.&lt;br /&gt;
&lt;br /&gt;
                      The Cow Ate My Brain&lt;br /&gt;
                              or&lt;br /&gt;
          A Novice's Guide to MOO Programming, Part I&lt;br /&gt;
                              by &lt;br /&gt;
                   Loyd Blankenship (&amp;quot;Mentor&amp;quot;)&lt;br /&gt;
                 Last Revised: September 3, 1993&lt;br /&gt;
&lt;br /&gt;
This document is copyright 1993 by Illuminati Online (io.com). All rights reserved. You may distribute this electronic document as you wish, provided no fee is charged for doing so, and the text (including this &lt;br /&gt;
disclaimer) is left untouched.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
When I first logged onto a MOO (about 2 months ago from the initial date of writing), I was both intrigued and appalled. Intrigued -- because of the infinite possibilities of a user-extendable, multi-user virtual reality. And appalled -- because of the scarcity of documentation and help for new users.&lt;br /&gt;
&lt;br /&gt;
I came to MOOs as an experienced programmer. I already knew what Object Oriented Programming (OOP) was, and could program in half-a-dozen different languages. And I *still* had a hard time getting off the ground creating interesting places and objects, not to mention writing new verbs. I shudder at the thought of encountering a MOO and not knowing anything about programming and OOP . . .&lt;br /&gt;
&lt;br /&gt;
This file is my attempt, while it's still fresh in my mind, to help teach a beginner how to become a useful MOO programmer. Let me point out right now that I am *not* a MOO programming expert. I've only written a few dozen good verbs at this point. But I feel like I'm now over the hump of the learning curve -- I understand how things work, and I know where to look to find answers to my questions. I want to help get you to this point. &lt;br /&gt;
&lt;br /&gt;
As you go through this document, make frequent use of the `help' command on the MOO itself. For instance, if you don't completely understand the syntax of @create, try `help @create'. It isn't the best help system in the world, but combined with this file, you might get through.&lt;br /&gt;
&lt;br /&gt;
* Part I (this file) talks about MOO basics -- what they are, how they work. It covers building rooms (including exits), creating objects, and such basic topics as verbs, properties, object oriented programming and the like. &lt;br /&gt;
* Part II (which I hope to write in the next few weeks) will cover the basics of verb programming.&lt;br /&gt;
&lt;br /&gt;
I'll continue to revise this file over time. If you have any comments, good or bad, please send them to me at one of the following (in order of preference):&lt;br /&gt;
* mentor@fnordbox.io.com&lt;br /&gt;
* CI$: [73407,515]&lt;br /&gt;
* GEnie: SJGAMES&lt;br /&gt;
&lt;br /&gt;
I can also be found hanging out as &amp;quot;Mentor&amp;quot; on the Metaverse MOO (metaverse.io.com 7777) almost every day, Jay's House MOO once a week or so, and LambdaMOO on a sporadic basis. And if you're really desperate, you can send snail mail to me c/o Steve Jackson Games, PO Box 18957, Austin, TX, 78760.&lt;br /&gt;
&lt;br /&gt;
== What is a MOO? ==&lt;br /&gt;
If you're reading this, you've probably stumbled on to at least one MOO. At the high-concept end of things, a MOO is a multi-user, text-based virtual reality. At the low-concept end of things, think of it as a multi-player Infocom-style game that lets you talk to other players and build new locations and objects.&lt;br /&gt;
&lt;br /&gt;
The MOO is a program running on a Unix-type computer system. The original MOO is LambdaMOO, and was developed by Pavel Curtis at the Xerox Palo Alto Research Center from an initial body of code provided by stephen White at the University of Waterloo. It has been up and running since October 1990.&lt;br /&gt;
&lt;br /&gt;
The main program working the MOO is called the &amp;quot;server.&amp;quot; The server handles all the nitty-gritty details such as input/output between the Internet and the MOO, parsing (figuring out) the lines you enter, and so on. The source code for LambdaMOO's server is freely available via FTP at parcftp.xerox.com. It has been ported to a number of systems, from BSD/I to Linux to Amiga Unix. This isn't intended to be a comprehensive guide to setting up and running a MOO (mainly because I don't know much about it!), so we're going to assume that the reader has logged into someone else's MOO.&lt;br /&gt;
&lt;br /&gt;
The other big duty of the server is to compile and run programs (called &amp;quot;verbs&amp;quot;) written in a language called MOO. MOO is a cross between C++ and LISP. The programming language is thoroughly documented, but the docco is *not* really aimed toward the novice user.&lt;br /&gt;
&lt;br /&gt;
If the server is the heart of a MOO, a giant database called the &amp;quot;core&amp;quot; is the brain. Initially, the core is fairly empty -- it defines basic objects (more on objects later) such as $thing (the generic thing) and $prog (the generic programmer, which is a player-character with the power to add more things). As players build new rooms and create new objects, the core gets bigger. The initial LambdaCore is also available via FTP from parcftp.xerox.com.&lt;br /&gt;
&lt;br /&gt;
Enough technical babble -- from this point on, I'm assuming that you've connected to a MOO and have your own character.&lt;br /&gt;
&lt;br /&gt;
== What is Object Oriented Programming (OOP)? ==&lt;br /&gt;
&lt;br /&gt;
Before you can truly understand MOO programming, you have to be clear on the concept of OOP, especially the idea of objects and inheritance.&lt;br /&gt;
&lt;br /&gt;
=== Object Numbers ===&lt;br /&gt;
     *Everything* on the MOO is an object. Players are objects, rooms are &lt;br /&gt;
objects, exits and entrances are objects, editors are objects, and objects &lt;br /&gt;
are, well, objects. Each object has an &amp;quot;object number&amp;quot;. For instance, the &lt;br /&gt;
generic thing might be #5. When you're in the MOO, you can substitute an &lt;br /&gt;
object number for an object's name at any point. If I'm object #433, for &lt;br /&gt;
instance, you could type &amp;quot;give ball to Mentor&amp;quot; or you could type &amp;quot;give ball &lt;br /&gt;
to #433&amp;quot;. If the ball is #731, you could type &amp;quot;give #731 to #433&amp;quot;. The MOO &lt;br /&gt;
doesn't care.&lt;br /&gt;
      Object numbers are different from MOO to MOO -- just because I'm object &lt;br /&gt;
#433 on Metaverse doesn't mean I'm object #433 on Opal, or on Lambda.&lt;br /&gt;
      There are only a few basic object types defined in the MOO core. &lt;br /&gt;
Everything else starts out as a copy -- a &amp;quot;child&amp;quot; -- of these basic objects. &lt;br /&gt;
For example, there is a basic class called &amp;quot;$thing&amp;quot; (a generic thing). If I &lt;br /&gt;
wanted to create a Generic Ball, I might make it a child of $thing (by typing &lt;br /&gt;
`@create $thing named &amp;quot;Generic Ball&amp;quot;' -- more on this later). Then I could &lt;br /&gt;
create children of the Generic Ball, such as a basketball (by typing `@create &lt;br /&gt;
&amp;quot;Generic Ball&amp;quot; named &amp;quot;basketball&amp;quot;), or a baseball, or a football, or even a &lt;br /&gt;
Frisbee! (Think about it -- you do many of the same things with a Frisbee you &lt;br /&gt;
do with a ball: throw, catch, drop, get, etc.).&lt;br /&gt;
&lt;br /&gt;
�&lt;br /&gt;
Examining Objects&lt;br /&gt;
     There are several different ways you can look at an object. The first &lt;br /&gt;
(and most obvious) is `look'. If you type `look ball', you'll see the &lt;br /&gt;
description of the ball.&lt;br /&gt;
     There are several different ways you can look at an object. The first &lt;br /&gt;
(and most obvious) is `look'. If you type `look ball', you'll see the &lt;br /&gt;
description of the ball.&lt;br /&gt;
     Next up, we have `@examine ball'. This shows you the object description, &lt;br /&gt;
verbs and properties.&lt;br /&gt;
     Then there's `@show ball'. This tells you the object name and number, &lt;br /&gt;
the name and number of its parent object, the name and number of the owner, &lt;br /&gt;
and a list of all visible verbs and properties (see below).&lt;br /&gt;
     Finally there's `@dump ball'. This gives you a listing of all the things &lt;br /&gt;
`@show' does, plus shows you the programs for all visible verbs *on that &lt;br /&gt;
object*. This differs from the `@list' command, which we'll discuss below.&lt;br /&gt;
     (If you try to do the `@show' command and it doesn't work, you need to &lt;br /&gt;
change your parent object to the Generic Programmer. This won't allow you to &lt;br /&gt;
write programs unless the wizards have set your programming bit -- see Quota, &lt;br /&gt;
below -- but it will give you access to nifty things like `@show'. Just type &lt;br /&gt;
`@chparent me to $prog' and that will do it. If it doesn't, bug a wizard . . &lt;br /&gt;
. )&lt;br /&gt;
	You can get a list of all the messages on an object (see below) with the &lt;br /&gt;
command `@messages &amp;lt;object&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
What is a Verb?&lt;br /&gt;
     A verb is, simply, a program that is attached to an object. For example, &lt;br /&gt;
$thing (our generic thing mentioned above) starts out with a few predefined &lt;br /&gt;
verbs -- put, take, get, and drop. So you could type &amp;quot;get $thing&amp;quot; and you'd &lt;br /&gt;
have the generic thing (type `inventory' (abbreviatable to 'i') to see a list &lt;br /&gt;
of things you're carrying). &lt;br /&gt;
     When you're programming verbs, you'll almost always refer to them in the &lt;br /&gt;
form &amp;lt;object #&amp;gt;:&amp;lt;verbname&amp;gt;. So in the case of $thing (object #5), the `put' &lt;br /&gt;
verb would be `#5:put'. If we had a ball that we could throw, the verb would &lt;br /&gt;
be called `ball:throw'.&lt;br /&gt;
     There are two ways to look at the MOO program that is attached to a &lt;br /&gt;
verb. The first is using the @dump command, described above. The second is &lt;br /&gt;
using the `@list &amp;lt;object#&amp;gt;:verb' command. The command @list starts by &lt;br /&gt;
checking the object for the verb; if it isn't there, it checks the object's &lt;br /&gt;
parent. If it isn't there, it checks the parent object's parent. And so on, &lt;br /&gt;
until it reaches the top. So if you type &amp;quot;@dump ball&amp;quot;, you aren't going to &lt;br /&gt;
see the program for the `put' verb -- it's defined on the generic thing, not &lt;br /&gt;
the ball. But if you type `@list ball:put', the server will tell you &lt;br /&gt;
something like &amp;quot;There is no `put' defined on ball, but it's defined on one of &lt;br /&gt;
ball's ancestors.&amp;quot; Then it will show you the `put' program. This is our first &lt;br /&gt;
example of how *inheritance* works. More later . . .&lt;br /&gt;
&lt;br /&gt;
What is a Property?&lt;br /&gt;
     A property is a value that is stored on an object. There are certain &lt;br /&gt;
properties that are built into everything -- the description, for example. &lt;br /&gt;
Every time you type `look &amp;lt;object&amp;gt;', the server runs the verb `look_self' on &lt;br /&gt;
the object in question, and shows you the description of the object you &lt;br /&gt;
looked at. We might also have a property on our Generic Ball called color, &lt;br /&gt;
that you could set when you create children of the Generic Ball. If we &lt;br /&gt;
created a football (@create Generic Ball named &amp;quot;football&amp;quot;), we could then set &lt;br /&gt;
�&lt;br /&gt;
the color using the `@property' command (@property football.color is &lt;br /&gt;
&amp;quot;brown&amp;quot;). Notice that when you're talking about properties, you use the form &lt;br /&gt;
&amp;lt;object #&amp;gt;.property (as opposed to &amp;lt;object #&amp;gt;:verb). It's easy to forget &lt;br /&gt;
which one wants a period and which one wants a colon. Use `@show object' to &lt;br /&gt;
get a list of all the properties on an object. &lt;br /&gt;
	A property does not have to be a text string. They can also be lists or &lt;br /&gt;
numbers. For example, a clubhouse might have a property called &amp;quot;members&amp;quot; as &lt;br /&gt;
follows:&lt;br /&gt;
	clubhouse.members = (&amp;quot;Bob&amp;quot;, &amp;quot;Carol&amp;quot;, &amp;quot;Ted&amp;quot;, &amp;quot;Alice&amp;quot;)&lt;br /&gt;
	Or maybe it's just a number -- clubhouse.num_members = 4.&lt;br /&gt;
&lt;br /&gt;
Messages&lt;br /&gt;
     Messages are special kinds of properties; they are always text &lt;br /&gt;
descriptions, and they end with `_msg'. For example, `move_msg' might be a &lt;br /&gt;
message displayed when an object is moved. One of the first ways you'll want &lt;br /&gt;
to customize your rooms and objects is to edit the messages on them. More on &lt;br /&gt;
that after we've dealt with creating objects and building rooms.&lt;br /&gt;
	You can get a list of all the messages on an object with the command &lt;br /&gt;
`@messages &amp;lt;object&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
Inheritance&lt;br /&gt;
     We'll come back to creating new verbs and new properties later. Now &lt;br /&gt;
we're to the most important part of OOP -- inheritance. Simply put, any verb &lt;br /&gt;
or property on the parent is automatically available on all its children. Any &lt;br /&gt;
child may have its own version of the verb instead, but if a verb is not &lt;br /&gt;
specifically defined on a child, the child uses the verb as it is defined on &lt;br /&gt;
the parent. Let's look at some examples.&lt;br /&gt;
     Our generic $thing has some basic thing-like verbs on it: put, take, &lt;br /&gt;
get, drop, etc. When we create our Generic Ball, we'll be adding some new &lt;br /&gt;
verbs: throw, catch and bounce. But we don't have to worry about writing our &lt;br /&gt;
own put, take, get and drop for the Generic Ball -- it *inherited* them from &lt;br /&gt;
$thing. When we make a child of the Generic Ball (say, a basketball), we &lt;br /&gt;
might add the verbs dribble and shoot. When we did a `@dump basketball', it &lt;br /&gt;
would only show these two verbs. But we could still catch it and throw it, &lt;br /&gt;
because it inherited the catch and throw verbs from the Generic Ball. And we &lt;br /&gt;
could still get and drop the basketball, because it inherited those verbs &lt;br /&gt;
from the Generic Ball, who in turn inherited them from $thing.&lt;br /&gt;
     It works the same way with properties. If we made the description of &lt;br /&gt;
Generic Ball say &amp;quot;This is an ugly green ball&amp;quot;, then when we typed `look &lt;br /&gt;
football', we'd see &amp;quot;This is an ugly green ball.&amp;quot; You would have to change &lt;br /&gt;
the description of the football to something more appropriate, thereby &lt;br /&gt;
writing over the initial value of the inherited property.&lt;br /&gt;
     Now that that's out of the way, let's start building.&lt;br /&gt;
&lt;br /&gt;
Quota&lt;br /&gt;
     When you get your character on a MOO, you start with a certain amount of &lt;br /&gt;
quota. Each unit of quota allows you to create one object. This number is &lt;br /&gt;
typically six to eight. You'll need to check with each MOO to find out their &lt;br /&gt;
policy for giving extra quota. &lt;br /&gt;
     Initially, you probably won't be allowed to write programs -- just to &lt;br /&gt;
build new rooms and create new objects. It's usually not hard to convince a &lt;br /&gt;
wizard to turn on your programmer bit, though.&lt;br /&gt;
     If you run out of quota, you're stuck. You can always recycle something &lt;br /&gt;
you created, though. This gives you back the quota. More on recycling later . &lt;br /&gt;
�&lt;br /&gt;
. .&lt;br /&gt;
&lt;br /&gt;
Building a Room&lt;br /&gt;
     The first thing everyone wants to do when they get online is to build a &lt;br /&gt;
house. This can be anything from an apartment to a Pez dispenser to a &lt;br /&gt;
dumpster to a cloud castle. My current house is a cardboard box with an opium &lt;br /&gt;
den in the basement and a programming lab attached (plus various secret &lt;br /&gt;
passages leading to all sorts of strange things . . . :-)&lt;br /&gt;
     Start by typing `help @dig'. I'll wait. That does a very good job of &lt;br /&gt;
explaining how to create your initial room. You won't have any exits or &lt;br /&gt;
entrances at first -- there's no place to exit or enter *to*.&lt;br /&gt;
     When you create this room, it isn't `attached' to the rest of the MOO &lt;br /&gt;
geography. The only way to get to it is to teleport. You teleport around by &lt;br /&gt;
typing `@move me to &amp;lt;object # of the room you want&amp;gt;'. Different MOOs have &lt;br /&gt;
different policies about linking new creations into the existing world. This &lt;br /&gt;
takes a wizard to do.&lt;br /&gt;
     Now that you've got a home, type `@sethome'. This makes your new room &lt;br /&gt;
your home -- your character will live here when you're offline, and all you &lt;br /&gt;
have to do is type `home' from anywhere in the MOO, and you'll be teleported &lt;br /&gt;
back here.&lt;br /&gt;
     Next you need to give your room a description. Type `@describe here as &lt;br /&gt;
&amp;quot;This is my new home! This message is displayed whenever anyone enters here! &lt;br /&gt;
I better make it good!'&lt;br /&gt;
     Notice that you don't need a close-quotation mark, just an open one. The &lt;br /&gt;
`@describe' program assumes that everything after the first &amp;quot; is &lt;br /&gt;
description.&lt;br /&gt;
&lt;br /&gt;
Adding Exits&lt;br /&gt;
     Now, suppose you want to add a second room to your fledgling mansion. Do &lt;br /&gt;
`help @dig' again. Follow the directions. Let's say you wanted to put an exit &lt;br /&gt;
in the south wall leading from your Living Room (the first room you created) &lt;br /&gt;
to a porch. You'd type `@dig s,south|n,north named &amp;quot;The Porch&amp;quot;'.&lt;br /&gt;
     Let's break that down. The first part says to dig an exit that can be &lt;br /&gt;
accessed by either &amp;quot;south&amp;quot; or &amp;quot;s&amp;quot; going into a new room named &amp;quot;The Porch&amp;quot;. By &lt;br /&gt;
putting the `|n,north' part in, you tell the program to make *another* exit &lt;br /&gt;
going from The Porch back into the Living Room, called with &amp;quot;north&amp;quot; or &amp;quot;n&amp;quot;. &lt;br /&gt;
If you'd just typed `@dig s,south named &amp;quot;The Porch&amp;quot;', you could walk out on &lt;br /&gt;
the porch, but you couldn't get back.&lt;br /&gt;
     You can do all sorts of interesting combinations. For instance, if you &lt;br /&gt;
had described your room as having a rope hanging from the ceiling, you might &lt;br /&gt;
do a `@dig climb,u,up|climb,descend,d,down named &amp;quot;The Roof&amp;quot;'. Now anyone in &lt;br /&gt;
your Living Room could type `climb', and they'd be taken to the roof. Once &lt;br /&gt;
there, they could type `descend' or `down' or `d' or `climb' and come back &lt;br /&gt;
down.&lt;br /&gt;
     One thing you'll notice quickly is that every exit is an object. So if &lt;br /&gt;
you've got a Living Room with a sliding glass door going out to The Porch, &lt;br /&gt;
you've really got 4 objects: The Living Room, The Porch, the exit The Living &lt;br /&gt;
Room --&amp;gt; The Porch, and the exit The Porch --&amp;gt; The Living Room. Where'd all &lt;br /&gt;
my quota go?!?&lt;br /&gt;
&lt;br /&gt;
Interior Decorating With Messages&lt;br /&gt;
     Now we're back to messages. (Remember messages? If not, go back up and &lt;br /&gt;
reread the section on Properties. I'll wait.)&lt;br /&gt;
     The easiest way to customize your rooms is to edit the messages on the &lt;br /&gt;
�&lt;br /&gt;
room. You've already done this a little bit when you used `@describe'. But &lt;br /&gt;
there are a lot more messages on rooms (and especially on exits) that you'll &lt;br /&gt;
want to play with. You can get a list of all the messages on an object by &lt;br /&gt;
typing `@messages &amp;lt;object#&amp;gt;'.&lt;br /&gt;
	Any property that ends in `_msg' is displayed by `@messages' and can be &lt;br /&gt;
edited as follows: Let's say we've got a property on our football called &lt;br /&gt;
`punt_msg'. This is displayed whenever anyone executes the verb football:punt &lt;br /&gt;
(they'd do this by typing `punt football', probably). The syntax is &lt;br /&gt;
`@&amp;lt;property&amp;gt; &amp;lt;object&amp;gt; is &amp;quot;message&amp;quot;'. When you're using this method to edit a &lt;br /&gt;
message, you *don't* have to include the `_msg' extension. For example, we'd &lt;br /&gt;
type:&lt;br /&gt;
	`@punt football is &amp;quot;You kick the football.'&lt;br /&gt;
     Another, more concrete example concerns exits. Exits are chock full of &lt;br /&gt;
messages such as: &lt;br /&gt;
                  leave_msg: displayed to a player passing through&lt;br /&gt;
                             the exit.&lt;br /&gt;
                 oleave_msg: displayed to everyone else in the room&lt;br /&gt;
                             when someone uses the exit.&lt;br /&gt;
     There are many more. Do a `@messages &amp;lt;object # of the exit&amp;gt;' to see them &lt;br /&gt;
all. To set the leave_msg you'd type `@leave &amp;lt;object#&amp;gt; is &amp;quot;You walk through &lt;br /&gt;
the glass doors into the sunlight.'. For messages that other people in the &lt;br /&gt;
room see, the player's name is automatically prefaced. So the oleave_msg &lt;br /&gt;
might be `@oleave &amp;lt;object#&amp;gt; is &amp;quot;walks through the glass doorway to the &lt;br /&gt;
porch.'.&lt;br /&gt;
     In the above example, if I walked from your Living Room to your Porch, &lt;br /&gt;
I'd see &amp;quot;You walk through the glass doors into the sunlight.&amp;quot; If you were &lt;br /&gt;
sitting in the Living Room when I walked through the door, you'd see &amp;quot;Mentor &lt;br /&gt;
walks through the glass doorway to the porch.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interior Decorating With Details&lt;br /&gt;
     If you had to create an object for every little thing in your rooms, &lt;br /&gt;
you'd quickly run out of quota! While you might want to create a couch, and &lt;br /&gt;
maybe a TV or Radio or Clock for the Living Room, you probably don't want to &lt;br /&gt;
create a rug (unless it's covering a trap door) or a fireplace or the &lt;br /&gt;
coasters on the coffee table. The `@detail' command lets you fake this.&lt;br /&gt;
     The syntax is `@detail &amp;lt;thing[,thing...]&amp;gt; is &amp;quot;Detail Text&amp;quot;'. Let's flesh &lt;br /&gt;
out the Living Room by way of illustration. We start by describing the Living &lt;br /&gt;
Room (this assumes we're inside the room when we're typing this).&lt;br /&gt;
&lt;br /&gt;
@describe here as &amp;quot;This is Mentor's living room. It is sparsely furnished, &lt;br /&gt;
with just a couch, a few pillows and a rug. There is a painting hanging on &lt;br /&gt;
the west wall, and a sliding glass door opens to the porch toward the south.&lt;br /&gt;
&lt;br /&gt;
	Pretty basic. Right now, if a player types `look wall' or `l wall' or `l &lt;br /&gt;
painting', the MOO will respond &amp;quot;You don't see anything special.&amp;quot; Boring. &lt;br /&gt;
Let's put a painting on the west wall.&lt;br /&gt;
&lt;br /&gt;
@detail wall,painting is &amp;quot;There is a large Real Musgrave original hanging on &lt;br /&gt;
the wall, showing a horde of delinquent Pocket Dragons mugging a teddy bear.&lt;br /&gt;
&lt;br /&gt;
	Now, when someone walks into the living room, they'll see the basic &lt;br /&gt;
description. If they're curious enough to type `l painting' or `l wall', &lt;br /&gt;
they'll see the detailed description of the painting.&lt;br /&gt;
&lt;br /&gt;
�&lt;br /&gt;
	You can give clues to other details within a detail. For instance:&lt;br /&gt;
&lt;br /&gt;
@detail pillows,pillow is &amp;quot;These are groovy purple pillows that were &lt;br /&gt;
undoubtedly stolen from Zarabeth's place. There is a button pinned to one of &lt;br /&gt;
the pillows.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
@detail button is &amp;quot;Excuse me, I'm from the BATF. Could you direct me to the &lt;br /&gt;
Steve Jackson Games compound?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Only people looking at the pillows will even know a button exists! If &lt;br /&gt;
someone does a `@show' on the room, they'll discover it, but most people &lt;br /&gt;
won't ever do that . . .&lt;br /&gt;
&lt;br /&gt;
	As you can see, you can add a lot of neat design elements to rooms without &lt;br /&gt;
having to spend quota or program a verb!&lt;br /&gt;
&lt;br /&gt;
Aliases&lt;br /&gt;
     An alias is merely a shorthand way of referring to the object that the &lt;br /&gt;
MOO will understand. For instance, Coffeeman has the alias Cman. For the &lt;br /&gt;
football, I might type `@create Generic Ball named &amp;quot;Mentor's Magic &lt;br /&gt;
Football:football,ball,mmf'.&lt;br /&gt;
     Now `l mmf', `l ball', `l Mentor's Magic Football' and `l football' &lt;br /&gt;
would all be interpreted the same way by the MOO.&lt;br /&gt;
     You can add aliases to *any* object by using the `@rename' command. Its &lt;br /&gt;
syntax is `@rename &amp;lt;object#&amp;gt; to &amp;quot;NewName:alias1,alias2,...&amp;quot;. So if we wanted &lt;br /&gt;
to give the Living Room the alias `lr', we could type `@rename The Living &lt;br /&gt;
Room to &amp;quot;The Living Room:lr&amp;quot;'.  Another option is to '@addalias &lt;br /&gt;
alias1,alias2,... to &amp;lt;object&amp;gt;', whic does all the same things, but won't let &lt;br /&gt;
you accidentally rename the object.&lt;br /&gt;
	In 99% of the cases, you can use an alias anyplace you can use the proper &lt;br /&gt;
name. So if you have an object &amp;quot;Sushi Tray:tray&amp;quot;, you'll get the same thing &lt;br /&gt;
when you type `look tray' as you do when you type `look Sushi Tray'.&lt;br /&gt;
&lt;br /&gt;
Creating Objects&lt;br /&gt;
     We've already touched on the `@create' command earlier, when we made our &lt;br /&gt;
Generic Ball and our football and basketball. Let's get specific.&lt;br /&gt;
     The syntax for `@create' is `@create &amp;lt;parent object&amp;gt; named &amp;quot;Name:alias1, &lt;br /&gt;
alias2, etc.'. So we might want to create a flying carpet as follows.&lt;br /&gt;
&lt;br /&gt;
`@create $thing named &amp;quot;Mentor's Flying Carpet:mfc,carpet'. &lt;br /&gt;
&lt;br /&gt;
Of course, it won't fly yet -- we'd have to add some verbs to make it fly -- &lt;br /&gt;
but it would at least *look* cool, and that's half the battle. (In a reality &lt;br /&gt;
based on text, what it says it is, it IS!)&lt;br /&gt;
&lt;br /&gt;
Describing Objects&lt;br /&gt;
     Once an object is created, you describe it in much the same way as you &lt;br /&gt;
do a room. `@describe &amp;lt;object name or #&amp;gt; as &amp;quot;Description'. Now, whenever &lt;br /&gt;
anyone looks at the object, they'll see the description.&lt;br /&gt;
&lt;br /&gt;
Recycling&lt;br /&gt;
	  There will come a time, whether from lack of quota or from simple ennui, &lt;br /&gt;
that you will want to get rid of one of your objects. To do this, you use the &lt;br /&gt;
command `@recycle &amp;lt;object#&amp;gt;'. Be careful about this, though! Once you do it, &lt;br /&gt;
�&lt;br /&gt;
it's gone forever.&lt;br /&gt;
     When you recycle an object, your quota is increased by one.&lt;br /&gt;
&lt;br /&gt;
It's A Wrap&lt;br /&gt;
     That's it for part one. This should be enough to get you started &lt;br /&gt;
creating and building your own objects and rooms. There's no substitute for &lt;br /&gt;
actually getting in there and doing it. If you make something you don't like, &lt;br /&gt;
you can always recycle it!&lt;br /&gt;
	As I said at the beginning, I'm always interested in feedback (good and &lt;br /&gt;
bad). Please contact me at one of the addresses or MOOs listed at the &lt;br /&gt;
beginning of this file. Look for Part II of this tutorial, which will cover &lt;br /&gt;
programming basics, Real Soon Now.&lt;br /&gt;
&lt;br /&gt;
Acknowledgements&lt;br /&gt;
     Special thanks to all the people who've helped me learn one end of the &lt;br /&gt;
cow from the other: Coffeeman, Zachary and Taylor on Multiverse and Zippy and &lt;br /&gt;
Joe on Jay's House. Thanks to Pavel for taking time to read this and comment, &lt;br /&gt;
and yduJ, who I've never met, but who gives great tutorial.&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=User:Kekkou&amp;diff=214</id>
		<title>User:Kekkou</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=User:Kekkou&amp;diff=214"/>
		<updated>2009-09-07T18:34:29Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: Created page with '[http://nsfw.reuterberg.se/ Kekkou's players site]'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://nsfw.reuterberg.se/ Kekkou's players site]&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=Kekkou&amp;diff=212</id>
		<title>Kekkou</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=Kekkou&amp;diff=212"/>
		<updated>2009-08-27T19:02:16Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: First paragraphs of text on Kekkou's body, and some headings of things to come.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Not too long ago the scientist [[Drool|Dr. Drool]] created a new pet, to play with and learn his idea of social behaviour.&lt;br /&gt;
In his lab he grew the little bioroid to his pleasing. As he is as brilliant in biology and genetics as he is crazy, the result was in his eyes more or less &amp;quot;perfect&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Perfect in this case is maybe an ill-chosen term, but Dr. Drool was quite satisfied with his creation. His goal was to make a sturdy and reliable design that still could pass more or less unnoticed in most situations. Over the three year lifespan, Kekkou has gone through over a dozen enhancements to the first concept. Not much has changed that can be seen externally but quite a few differences are hidden internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Body ==&lt;br /&gt;
&lt;br /&gt;
Kekkou is more or less a humanoid bioroid with plenty of features taken from rabbits and other rabbit-like species. She is close to six feet long (almost as long as many human males) but is quite lean. Those two factors makes her look quite fragile in some circumstances. That is far from the truth, as she is quite muscular and extremely agile.&lt;br /&gt;
&lt;br /&gt;
=== Muscles and skeleton ===&lt;br /&gt;
&lt;br /&gt;
That brings up one of the enhancements: Her muscles are slightly stronger, per muscle fibre, than a normal human, but they don't use as much energy to function at high stress. They also have more reserves before getting tired and beginning to ache.&lt;br /&gt;
&lt;br /&gt;
One thing that Kekkou was built for is high G movement and combat. Her muscles are very tear-resistant and almost all her tendons are close to ten times as strong as a normal human. Dr. Drool is very keen on keeping that fact a intellectual secret, as it is a very lucrative bio-material he ended up with mostly by accident. Adding a soft and stress-enhanced (tension) skin makes maneuvers in extreme Gs and high impact forces possible, as her muscles flow and bend around the bones and the skin keeps most things in place.&lt;br /&gt;
&lt;br /&gt;
Her bones are slightly stronger but much harder than most mammals, and they are perfectly smooth. All to add to the damage-resistance during high G situations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Circulatory and respiratory systems ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Genitalia and gastrointestinal tract ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Appendages and extremities ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Head ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current occupation ==&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
	<entry>
		<id>https://www.ryksyll.com/manifold/index.php?title=Other_Furries&amp;diff=211</id>
		<title>Other Furries</title>
		<link rel="alternate" type="text/html" href="https://www.ryksyll.com/manifold/index.php?title=Other_Furries&amp;diff=211"/>
		<updated>2009-08-27T17:45:05Z</updated>

		<summary type="html">&lt;p&gt;Kekkou: Added Kekkou to the rabbit list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Rabbits==&lt;br /&gt;
*[[Talnisa]]&lt;br /&gt;
*[[Kekkou]] (at least based on rabbit genes)&lt;/div&gt;</summary>
		<author><name>Kekkou</name></author>
		
	</entry>
</feed>