Up to Main Index Up to Journal for January, 2017 JOURNAL FOR THURSDAY 19TH JANUARY, 2017 ______________________________________________________________________________ SUBJECT: What are vetoes anyway? DATE: Thu 19 Jan 21:59:31 GMT 2017 I’ve had a couple of emails asking what are vetoes and how are they used. This I can understand, veto is kind of a strange word you don’t use every day. Veto is Latin for ‘I forbid’. If you veto something you are prohibiting or voting against it. In WolfMUD vetoes are used to prohibit actions (commands). For example, any object can usually be put into a container with the PUT command. Suppose we have a pet rock that is afraid of the dark - and why not: %% Ref: PET1 Name: a pet rock Aliases: PET ROCK This is a smooth, flat, rock slightly tapered at one end. It's about three inches wide tapering to about an inch, five inches long and an inch thick. On one of the flat sides there are two slight depressions side by side near the tapered end. At the tip of the tapered end is a light green fuzz of what appears to be moss. %% We don’t want players to put our poor nyctophobic pet rock inside anything - because it will be dark inside! This is where vetoes come in. We can veto the PUT command and ‘forbid’ it from being used just on the pet rock: %% Ref: PET1 Name: a pet rock Aliases: PET ROCK Vetoes: PUT→You get the strong impression that the pet rock does no want to be put inside anything! How strange... This is a smooth, flat, rock slightly tapered at one end. It's about three inches wide tapering to about an inch, five inches long and an inch thick. On one of the flat sides there are two slight depressions side by side near the tapered end. At the tip of the tapered end is a light green fuzz of what appears to be moss. %% Now if we try to put the pet rock inside anything we get: Fireplace You are in the corner of the common room in the dragon's breath tavern. A fire burns merrily in an ornate fireplace, giving comfort to weary travellers. The fire causes shadows to flicker and dance around the room, changing darkness to light and back again. To the south the common room continues and east the common room leads to the tavern entrance. You see a pet rock here. You see a curious brass lattice here. You see a small green ball here. You see a small red ball here. You see an iron bound chest here. You can see exits east, southeast and south. >get pet You get a pet rock. >put pet chest You get the strong impression that the pet rock does no want to be put inside anything! How strange... > At the moment vetoes are not as useful as they could be. The reason for this is that they are static - they either veto a command or they do not. For example we couldn’t add a veto to stop our pet rock from being put into a container if it already contained another pet rock. In the above example we cannot even refer to the object it is being put into (yet!). Dynamic vetoes are planned but will be coded initially. For example the GET command could be vetoed if you are carrying too much. The PUT command could be vetoed if the container was already full. Why would we use dynamic vetoes instead of plugging the logic into the GET or PUT command code directly? Vetoes allow us to prohibit commands based on a type - a container - or per object - our pet rock - basis. Instead of hard coding checks into commands we can delegate to the specific objects in question. Even hierarchies of vetoes are possible. For example conside putting item A into container B. Item A could veto being put into container B - as in our rock example. But container B might also veto having item A put into it. There are also indirect vetoes to be considered. For example suppose there is a strong room. The strong room contains a glass case with a jewel in it. The strong room also contains a guardian. The guardian should be able to indirectly veto the TAKE command on the glass case. If you want to take the jewel you must first kill or remove the guardian. If the guardian is gone the veto would no longer be applicable and you can take the jewel. For a simple idea vetoes can - or will be - quite a powerful feature. Now, should I add a veto to players so that you cannot GET another player and carry them around anymore? >:) -- Diddymus Up to Main Index Up to Journal for January, 2017