Help building and help gen-index will give you a list of topics that might interest you. The command @classes generics will give you a list of all the built-in generic objects available for parenting.
To see a list of the objects that you have, along with their ID number and current location, type @audit me.
You can only create a certain number of objects. This is your quota. Once you create this many objects, you cannot create any more without getting rid of some of the ones you have. To get rid of an object, type @recycle object. If you can’t see the object, you’ll have to use its object number. Once you recycle an object, it is gone. You cannot get it back. Don’t recycle an object that’s important to you.
If you ask a wizard nicely, you can get your quota increased.
It helps to know how Valhalla interprets what you type. The simplest way to do something is to type a single verb, such as home. ‘Home’ is a verb that only works on yourself, so it doesn’t need to know any more. A verb is the word you use to tell Valhalla that you want to do something.
You can also have direct objects, indirect objects, and prepositions. For example, in
give chocolate to Garm
the chocolate is the direct object, and Garm is the indirect object of the verb give. Valhalla first attempts to find a verb. ‘Give’ is the verb in this case, and the verb is always the first single word typed. Then, it looks for a preposition (in this case, ‘to’), and assumes that what is on the left (chocolate) is the direct object, and what is on the right (Garm) is the indirect object. If one of your objects contains a preposition, you can confuse Valhalla. To keep Valhalla from looking at the prepositions inside your object, enclose the object text in quotation marks. For example:
show "Like Water For Chocolate" to Garm
If you keep in mind how Valhalla works, you’ll be better able to phrase things when you try to do something.
If there is no preposition, everything after the verb is the direct object.
Verbs can only be found on objects. You are an object, and you have quite a few verbs on you. So, most likely, does the room that you are in. When Valhalla looks for a verb, it looks on the player who typed the verb first. If it doesn't find a matching verb there, it looks in the room that the player is in. If it still doesn't find a matching verb, it looks on the direct object of the sentence, if there is one, and finally on the indirect object of the sentence, if there is one.
If it hasn't found any verb at all, you will be told something to the effect of “Valhalla doesn't have any idea what you're trying to do.” Sometimes, however, Valhalla will find the verb that you typed, but with a different sentence structure. If so, Valhalla will suggest a different way of typing your sentence to get the desired results.
Every player (and most objects) have a home. For players, your home is where you go when you sleep. When you @quit Valhalla, your player is whisked away to home. You can also teleport home by typing home.
By default, your ‘home’ is The Fields of Valhalla. If you create your own room, or find another place you’d rather call home, go there and type:
@sethome
Balder's Hall is your new home.
From now on, this is your home.
home
You click your heels three times.
Balder's Hall
The ceiling is made of huge vaulting oak beams. The walls are the hide of some great scaled lizard, and its scales glisten in the light of the flickering fire in the stone fireplace at the hall's north end.
Clicking your heels three times may not be appropriate for a great warrior of Valhalla. You can change this. It’s what is called a message. Type
@home me is "You smash your boots to the ground and the earth opens up.
You set the "home" message of Balder (#78).
and your ‘home’ message is changed.
You can (and should regularly) change your password. Use:
@password old-password new-password
For example,
@password iqoqoj LoveSexy
New password set.
You should choose a password that is easy for you to remember, and hard for anyone else to guess. Your password keeps other people from using your player when you’re not looking.
Home is an example of a message. Your player has many messages that you can change. To see a list of the messages that you can change, type @messages me. Many people commonly change the page messages, page_absent, page_origin, and page_echo. Page_absent is the message other people get when they try to page you but you’re asleep. Page_origin is the message other people get when you page them, and page_echo is the message other people get when they page you.
The syntax for changing a message on yourself is
@message me is "New Message.
For example,
@page_absent me is "%N is sleeping in %l, dreaming of pillaging the European countryside.
You set the "page_absent" message of Balder (#78).
When someone else pages you and you’re not in, they’ll see:
page balder "Hey, Balder, what's up?
Balder is sleeping in Balder's Hall, dreaming of pillaging the European countryside.
The “%N” and “%l” are pronoun substitutes. I’ll talk more about those later. For the moment, use %N to refer to your name when it appears at the beginning of a sentence, and %n when it appears inside of a sentence. The same goes for %L, which is the location of the person who owns the message. Use %l (lowercase L) when it appears inside a sentence, and %L at the beginning of a sentence. Pronoun substitutes only work with certain verbs (of which page, obviously, is one).
‘Pronoun subs’ are ways to make your messages more personal. They are ‘place-holders’ for the name of the person using an object, the location of the object, or whatever personal or possessive pronoun the person using the object needs. For a full description of how to use pronouns, type @help pronouns.
Pronouns come in two flavors: capitalized and uncapitalized. Use capitalized pronouns at the beginning of sentences, and uncapitalized ones inside of sentences. You’ve already seen “%L” and “%l” for location. It’s the location of the object that the message is on. All pronouns are preceded by a “%” sign. If you really want a “%” sign, use “%%”.
Let’s say we’ve got a drinking fountain, and once in a while it sprays the drinker embarrassingly. We could use the message:
@oembarrass fountain is "%N sprays water all over %r, and a puddle forms around %o and the %t on the floor of %l.
@embarrass fountain is "The %t sprays water all over you. %L grows quiet as everyone turns to look at you.
This is overdoing it a just a bit. Let's say the drinking fountain is in “the Fields of Valhalla”, and Balder takes a drink, triggering the embarrassing message. Balder sees:
The drinking fountain sprays water all over you. The Fields of Valhalla grows quiet as everyone turns to look at you.
Everyone else sees:
Balder sprays water all over himself, and a puddle forms around him and the drinking fountain on the floor of the Fields of Valhalla.
Here are the commonly used pronoun substitutions. Each one also has a capitalized version.
%n the player
%t this object (i.e., the object that holds the message,... usually)
%d the direct object from the verb line
%i the indirect object from the verb line
%l the location of the object
%s subject pronoun, either ´he', ´she', or ´it'
%o object pronoun, either ´him', ´her', or ´it'
%p posessive pronoun (adj), either ´his', ´her', or ´its'
%q posessive pronoun (noun), either ´his', ´hers', or ´its'
%r reflexive pronoun, either ´himself', ´herself', or ´itself'
Objects can require keys in order to ‘use’ them. The player who attempts to use the object must either be or have the key.
Object Class Key required for:
$thing taking
$note/$letter taking or reading
$container taking or opening
$exit leaving
$room entering
If you @lock an object with yourself as the key, then you are the only person who can use that object. If you want to specify more complex keys, you have to understand the ‘language’ of keys, which is a bit weird. It’s sort of like saying “let Bob or Jo or Bill but not anyone carrying my donut use this object”. But you have to say it in computer talk:
@lock here with (Bob || Jo || Bill) && !donut
It’s like that logic stuff you got from algebra. Use ‘||’ to say ‘or’, ‘&&’ to say ‘and’, and ‘!’ to say ‘not’. And you can group parts together with parentheses. In the above example, if it’s Bob, Jo, or Bill trying to get in, the part between parentheses comes out true. And as long as none of them are carrying your donut, !donut comes out true as well (because donut comes out false, and not donut is the opposite). Which lets them in. If anyone besides Bob, Jo, or Bill tries to come in, that part turns out false, and the room doesn’t let them in. Likewise, if anyone is carrying your donut, that part comes out false and the room doesn't let them in, even if they are Bob, Bill, or Jo. At least, until they drop your donut.
Truth Table
English Computerese Result
true and true true && true true
true and false true && false false
true or true true || true true
true or false true || false true
not true !true false
not false !false true
Example:
(Bob || (Jo && Balder's Key) || me) && !#13
Anyone who is carrying whatever object has number #13 is locked out., even me: suppose I’m carrying object #13 and Balder’s Key:
(false || (false && true) || true) && !true
(false || false || true) && false
true && false
false
Bob can come in as long as he’s not carrying #13, and Jo can only come in if she’s carrying my key. No one else can come in at all. Let’s say Fred, who is carrying my key but not object #13, tries to come in:
(false || (false && true) || false) && !false
(false || false || false) && true
false && true
false
More commonly, you’ll probably use simple things like only allow yourself into the room:
@lock here with me
or only allow your friends and yourself into the room:
@lock here with me && CapVideo && Thor && Jenni
or lock a particular obnoxious person out of your room:
@lock here with !Fred
You can also use keys to make it so that only certain people can read notes and letters. I’ll talk about that in a moment. Type help keys for more detailed information about keys.
To see a list of messages on an object, type @messages object-name. You can get a list of some of the verbs and properties on an object by using @examine object-name.
If you @lock a thing, people who don’t meet the criteria you specify cannot take the object. The message they’ll see when they try to take it is take_failed. The message that everyone else sees when they try to take it is otake_failed. When a message is exactly the same as another message, but begins with o, the first message is for the player, or the person using the verb, and the second message (with the o) is for everyone else in the same room.
@take_failed Platter of Stale Donuts is "You pick up the entire %t, but your guilty conscience forces you to put it back. How about just eating a single donut?
@otake_failed Platter of Stale Donuts is "%N tries to hoard the %t, but %p conscience gets the better of %o.
@take_succeeded "Sword in the Stone" is "You pull the sword from the stone. Everyone else is looking at you *awfully* funny.
@otake_succeeded "Sword in the Stone" is "With a majestic flourish, %n jerks the sword from the stone. A shaft of light from the sky illuminates %o with a divine glow.
You can also set the drop messages, which the player (drop_succeeded, drop_failed) and others (odrop_succeeded and odrop_failed) see when the player drops or throws an object.
A container is a thing that can hold other things.
@create $container named steamer trunk,steamer,trunk
put staff in trunk
You put the staff in the steamer trunk.
Containers normally have an opacity of 1, which means that you can see into them when they’re open, but not when they’re closed. You can use
@opaque container is 0
to make a clear container, and
@opaque container is 2
to make a container that is opaque even when it is open. Containers can be opened and closed. If you want to restrict who can open a container, you can use keys, with:
@lock_for_open container with key
Unlock a container with @unlock_for_open. Since containers are $things, @lock works the same for containers as for other things, restricting who can and cannot take the container.
A note is a thing you can write on. A letter is a note that can be given to someone and then burned (thus saving your quota).
You can encrypt a note or letter with a key, so that only you or people you specify can read the note:
encrypt Balder's Notepad with me || CapVideo
allows only me (Balder) or Captain Video to read Balder’s Notepad. See the part about keys, on page 22, for more information about ‘constructing’ encryption keys. To make it so that anyone can read the note, use:
decrypt object
This erases the keys you’ve constructed for the object. @Locking a note or letter is the same as @locking a thing.
To see a list of messages that you can change for your room, go into the room and type @messages here. For a list of messages on an exit, type @messages exit-name.
Entrances and exits are normally quiet. When a player goes through a door, the door simply plops the player out the other side. In some cases, you’ll want an entrance to say something, either to the player or to the other players in the room that the player is leaving or entering. Here are the messages for exits (which, on the other side, are entrances):
leave What the player sees when he leaves the room.
oleave What the other players see when the player leaves.
arrive What the player sees when he enters the room.
oarrive What the other players see when the player enters.
For example, I might want to set the leave and arrive messages on the fire (that leads to the chimney of Balder’s Hall) as:
@leave fire is "No fear of getting burned, eh, %n?
You set the "leave" message of fireplace (#83).
@arrive fire is "The flame burns your butt as you hang in %l.
You set the "arrive" message of fireplace (#83).
go fire
No fear of getting burned, eh, Balder?
Balder's Chimney
The stone chimney is smokey and warm, and a bit cramped for anyone of normal size. Dirty elfs skitter about as they see you coming.
The flame burns your butt as you hang in Balder's Chimney.
And, so that people in the room see what’s going on, I might:
@oleave fire is "takes leave of %p senses and crawls into the burning fire.
You set the "oleave" message of fireplace (#83).
@oarrive fire is "climbs up out of the fire, smoke rising from %p eyebrows.
You set the "oarrive" message of fireplace (#83).
Note that I did not use “%N”. The oleave and oarrive messages automatically put the player’s name in front of the message, whether you want it or not, so you’ll have to want it. When I go up the chimney, the people in Balder’s Hall see:
Balder takes leave of his senses and crawls into the burning fire.
If there’s already someone in the chimney, they see:
Balder climbs up out of the fire, smoke rising from his eyebrows.
Note the use of “%p” for possessive pronoun. This takes care of whether or not the player using the exit is a him, a her, or an it.
When people are in your room, your room is listed whenever anyone does @who. How it appears depends on the rooms who_location message. Normally, it is simply “%T”, and that’s recommended. But you can change it:
@who
Player name Connected Idle time Location
Balder (#78) 11 minutes 0 seconds Balder's Hall
Total: 1 player, who has been active recently.
@who_location here is "By the fire in %t.
You set the "who_location" message of Balder's Hall (#81).
@who
Player name Connected Idle time Location
Balder (#78) 11 minutes 0 seconds By the fire in Balder's Hall.
Total: 1 player, who has been active recently.
Normally, the rooms you create will allow anyone to make it their home.[2] You can lock people out by setting the property free_home to 0. (In computer talk, ‘zero’ is often used for no or false. ‘One’ is used for yes or true.) If you have free_home set to 0, the @resident verb will allow specific players to use your room as their home.
@set here.free_home to 0
@resident Carol, Bob, Ted, Alice
Now, the players Carol, Bob, Ted, and Alice can set your current location as their home. You can only do set properties and residents for rooms that you own.
You can restrict access to your room to certain people, or restrict specific people from your room. For example,
@lock here with me
will make it so that only you can get into your room.
@lock here with !capvideo && !thor
will lock both CapVideo and Thor out of your room.
@Lock here with me || (bible && cross)
will lock everyone out except you or someone carrying your bible and your cross. See page 22 for more information about making keys to lock your rooms up with. Use
@unlock here
to unlock a room so that anyone can get in. @Unlock erases your key requirements, so if you want to remember them, write them down.
Messages (properties) get transferred through children. So, if you want a new object with similar messages to an object you already have, make the new object a child of the other object, either with
@create other object named new object
or by using
@chparent new object to other object
on an object you’ve already created. If you can’t currently see the other object or the new object, you’ll need to refer to them by object number. Only you can create children from objects that you’ve made, unless you make the object fertile:
@chmod object to +f
Fertile objects can be used in @creates by anyone.
Objects in Valhalla can have ‘URLs’ attached to them. If someone looks at the object and has the correct client software (such as HyperMU* for the Macintosh), the URL will be displayed at their computer. A URL can be any standard Internet service that is covered under the World Wide Web.
[2]This is a feature of Valhalla. In other MOOs, the default is usually that rooms will not allow others to make it their home.