Attachment 'building-class-3-log-cleaned.txt'

Download

   1 BunnyHugger writes, "I. Zombies, II. The Nature of Rooms, III. Room Basics, IV. Using Environment Rooms (if time)."
   2 J.P. wavies to Beltrami.
   3 Claude purr! Nuzzles Joshua.
   4 Beltrami smiles to J.P.
   5 J.P. chitters!
   6 BunnyHugger says, "Welcome class!"
   7 Airborn says, "Welcome BunnyHugger"
   8 Claude earperks.
   9 BunnyHugger says, "The homework from last time was to put an @action on an object that allowed it to have some interactive element, as well as setting the succ/fail/drop on the object.  Did anyone bring in a completed homework for us to poke?"
  10 Joshua runs his bacth commands to see if he does...
  11 Claude raises a paw.
  12 BunnyHugger says, "Great, Claude!  Can you demonstrate your homework?"
  13 You say, "Certainly!"
  14 You carefully set down the House of Cats. It rattles a little.
  15 Joshua does now.
  16 You say, "Care to do the honors?"
  17 Joshua ruffs, "Who, me?"
  18 BunnyHugger says, "I think he meant me?"
  19 You say, "Anyone."
  20 Joshua ruffs, "Go for it :)"
  21 BunnyHugger inspects the clock.  It's cool!
  22 You say, "Thank you!"
  23 BunnyHugger says, "What's the command for using it?"
  24 Royce steps off of the floating disk that carried him up.
  25 Royce has arrived.
  26 You say, "It's hidden. :P"
  27 J.P. fuzzles Royce!
  28 You say, "Seriously, press spring. I should highlight it."
  29 Beltrami waves to Royce!
  30 Royce snugs J.P.!
  31 You say, "Hello, Royce."
  32 BunnyHugger says, "Ah!  I tried 'press' and 'press clock' -- I would've gotten it third try, I'm sure.  >;)"
  33 BunnyHugger fiddles with the House of Cats until they find the hidden spring and press it. The cats come to life in a concert of of whirring noises and cheerful musical chimes. In the backyard, a kitten bounces around in circles, tail in the air; the one in the top floor window is licking her paws, while the tom on the roof swishes his tail, watching a bird. Next to him, the weather vane sways back and forth with a tick-tock noise, while on the side of the building the water wheel turns. The entire show lasts less than a minute, then it all winds down neatly.
  34 Message set.
  35 BunnyHugger says, "Wow, that was neat."
  36 You say, "Oops, I "fixed" the typo on another message."
  37 Claude blushes. ^o^
  38 J.P. grins.
  39 J.P. says, "Cool."
  40 Joshua pulls a refrigerator out of his pants and installs it here.
  41 Chitter can't seem to figure out how best to pick up the House of Cats.
  42 BunnyHugger says, "Chitter, what are you doing trying to pick up the House?"
  43 Chitter says, "I dunno, it seemed like a good idea."
  44 Message set.
  45 BunnyHugger can't seem to figure out how best to pick up the House of Cats.
  46 BunnyHugger says, "I see the house is locked so Chitter and I can't pick it up.  Is the lock to yourself, Claude?"
  47 You say, "Yes. Let me unlock it."
  48 Unlocked.
  49 You say, "There!"
  50 Chitter carefully picks up the House of Cats after a few attempts.
  51 Chitter teeters under the heavy thing.
  52 Chitter carefully sets down the House of Cats. It rattles a little.
  53 BunnyHugger says, "Good job!  You set all the messages on your object, I can see."
  54 You say, "You're very kind."
  55 BunnyHugger says, "Of course it's a good idea to lock stuff so it doesn't get carried off.  n.n  Though you can always retrieve a lost object via @teleport if it does get 'stolen,' so long as you own the object."
  56 You say, "Oh, I trust the present company."
  57 Joshua nuzzles Claude.
  58 BunnyHugger says, "Anyone else have homework to show?"
  59 Joshua gestures to his fridge here.
  60 Claude licks Joshua. :3
  61 Joshua ruffs, "I installed it in the room already."
  62 BunnyHugger says, "I see!"
  63  
  64     This cooler of foods is highly stylish. It has a sleek, brushed aluminum 
  65 look with an LCD display that catalogs stored food, when it will expire, and 
  66 gives alerts on what is short in its stock. It is also able to tabulate most 
  67 frequently used items and look up the closest stores which have them on sale. 
  68 You might be able to 'open' it.
  69  
  70 BunnyHugger says, "Anyone want to 'open' the fridge?"
  71 Airborn opens the fridge and retrieves a cupcake.
  72 PatchO'Black's cat basket appears and Patchy hops out!
  73 PatchO'Black has arrived.
  74 You say, "Hello, Patchy."
  75 Airborn looks at the cupcake and offers it to Patchy, "Hi".
  76 BunnyHugger tries to open the fridge, but before she can, a gloved paw slips out of it to slap her paw away.
  77 BunnyHugger says, "Hey!"
  78 Joshua smirks.
  79 Joshua opens the fridge and retrieves a cupcake.
  80 Joshua hands it to BunnyHugger.
  81 PatchO'Black takes the cupcake, "Hi, Airborn!
  82 Claude giggles at the fridge.
  83 Joshua fixes something on it..
  84 BunnyHugger says, "Thanks."
  85 Joshua pulls a refrigerator out of his pants and installs it here.
  86 BunnyHugger giggles.
  87 Joshua picks up the refrigerator and shoves it into his pants.
  88 J.P. blinks.
  89 Joshua pulls a refrigerator out of his pants and installs it here.
  90 BunnyHugger grabs hold of the fridge and grunts, trying to pick it up, but it's far too heavy!
  91 BunnyHugger says, "Aw."
  92 BunnyHugger smiles.
  93 Joshua grins.
  94 Claude laughs! "And I thought my pockets were big."
  95 BunnyHugger says, "I see you have your various messages including your failure ones set."
  96 PatchO'Black meows...
  97 Joshua mhmms!
  98 BunnyHugger says, "Good job!"
  99 Joshua ruffs, "Thank you, professor."
 100 Claude boops Patchy's nose.
 101 BunnyHugger says, "Anyone else got a widget?"
 102 Austin says, "I have, yes."
 103 BunnyHugger says, "Go ahead and show it, Austin."
 104 Austin says, "Now, this is fully untested, but, what the heck."
 105 Austin puts the record player down.
 106 BunnyHugger says, "Ooh."
 107 Beltrami grins.
 108         It's a fairly small turntable, barely more than a foot on each side, with a ridged rubber platter, a thin tone arm, a speed and an on switch.  
 109 Claude peeks at it curiously.
 110 Austin says, "You should be able to 'play record', although, of course, it's fully coon-proof."
 111 BunnyHugger starts the record; it's 'Adventures in Modern Recording'.  
 112 BunnyHugger turns her ear toward it.
 113 Austin grins.
 114 BunnyHugger sings, o/~ Every day my metal friend / Shakes my bed at 6 a.m. o/~
 115 You say, "Hee!"
 116 J.P. grins.
 117 Austin says, "I know how to get in good with the teacher."
 118 J.P. giggles.
 119 BunnyHugger grabs the record player.
 120 Chitter says, "Hey!"
 121 BunnyHugger puts the record player down.
 122 BunnyHugger says, "OK, sorry."
 123 Joshua grabs the record player.
 124 PatchO'Black ums...
 125 Joshua puts the record player down.
 126 Joshua snickers at the @drop message.
 127 BunnyHugger says, "Now you say it's coon proof..."
 128 J.P. grins.
 129 BunnyHugger says, "Did you lock it against the species property, or just against a list of known raccoons?"
 130 Royce tries to open the record player's plastic shell, but can't get at it, and so gives up on starting the record player.  
 131 J.P. grins.
 132 Austin says, "Actually, just against Royce."
 133 Royce meh.  No foods in there, anyway.
 134 J.P. giggles.
 135 J.P. offers Royce some sugar cookies?
 136 Royce yay!
 137 Coon-Bot steps off of the floating disk that carried it up.
 138 Coon-Bot has arrived.
 139 BunnyHugger says, "Oh no!!!"
 140 J.P. giggles.
 141 Room: Classroom 1
 142 -Stat-Name----------------Sex---------Species---------------------------------
 143       >Coon-Bot           neuter      Raccoon robot               |BunnyHugger
 144 ---[ Found 1 character. ( 1 Zombie ) ]----------------------------------------
 145 Austin says, "See, I didn't think Skyler was going to be here, so ... oh, hi there."
 146 Royce ooh.
 147 Beltrami grins and waves to Coon-Bot?
 148 Coon-Bot lumbers in, sparking worryingly and with flashing eyes....
 149 Coon-Bot starts the record; it's 'Adventures in Modern Recording'.  
 150 A shiny, silver, mechanical raccoon with glowing green eyes.  It clanks slightly as it moves.
 151 Carrying: a coon cookie
 152 J.P. offers Austin a record of the Star Wars theme?
 153 Coon-Bot takes the record off the platter and starts trying to eat it with metal jaws...
 154 BunnyHugger says, "Arghhh!!!!"
 155 J.P. frowns.
 156 BunnyHugger gets a ruler and starts chasing Coon-Bot.
 157 J.P. tries to steal the record from the Coon-Bot.
 158 Coon-Bot drops the record because it isn't food.
 159 J.P. hands it to BunnyHugger.
 160 Coon-Bot lumbers away, making freakish {{{*cCHiIrRr*}}} sounds.
 161 Coon-Bot has left.
 162 J.P. giggles.
 163 BunnyHugger ahems.
 164 Claude climbs on the refrigerator and watches the mayhem.
 165 PatchO'Black mews, "Has the class already begun? I don't want to interrupt."
 166 BunnyHugger says, "Sorry, that's, uh, a robot I built that's kind of gone rogue and appears when there's food around or someone says something about 'coon proof.'"
 167 You say, "You just said it again. :P And it's all right, Patchy."
 168 BunnyHugger says, "Well, we're showing our homework, so this is class, I think!  I hope so anyway.  At least, I have lots of class."
 169 BunnyHugger tugs on her tie.
 170 BunnyHugger says, "All right, any other homework assignments?"
 171 J.P. grins.
 172 Joshua blinks, and scratches his head at all the antics.
 173 BunnyHugger says, "I originally created Coon-Bot to get around a lock on Jaxen's coon-proof cookie jar."
 174 PatchO'Black will save his question, which is unrelated to BunnyHugger's class.
 175 BunnyHugger says, "Then things got out of hand."
 176 You say, "Ironic, isn't it?"
 177 BunnyHugger says, "Jaxen fixed the lock, and then Morticon brought in Coon-Bot Pro and got in that way."
 178 BunnyHugger says, "But Coon-Bot got tossed into the fountain and went haywire and now stalks the world ignoring my remote control."
 179 J.P. grins.
 180 BunnyHugger says, "And actually is an example of a simple zombie, so it's totally relevant.  I whipped him up fast to annoy Jaxen.  n.n"
 181 Joshua has some ideas on how coons could be properly locked out.
 182 SquirrelPlushie grins.
 183 BunnyHugger says, "Jaxen just created the lock so that it locked out a list of 'coons that he knew."
 184 Joshua ruffs, "A very simple MUF program could do a quick smatch on both the name and species field of the attempting character, and produce a false value if they matched."
 185 BunnyHugger says, "I wondered about that, and that's why I sent in Coon-Bot.  He could have locked out folks with the species 'raccoon' or 'coon' or similar instead... but it would be hard to do without a program."
 186 BunnyHugger says, "As Joshua is saying, a program could do it easily."
 187 BunnyHugger says, "You can lock against species properties, but if you locked against 'raccoon' my 'raccoon robot' would still get in."
 188 You say, "So you can't do partial matches with just the lock syntax?"
 189 BunnyHugger says, "As far as I know you can't, but Joshua might know better...?"
 190 Joshua ruffs, "I've not tried. Only way to know is to try. I /do/ know that properties can be searched for with smatch syntax."
 191 Joshua ex me=_*
 192 BunnyHugger says, "The help file for @lock does not suggest that it works... and * at the start of something, at least, will cause it to look for a player."
 193 BunnyHugger says, "But, I haven't tested fully!"
 194 BunnyHugger says, "It will accept Boolean syntax, so you could do 'coon or raccoon or coati or...' but you'd still miss lots of partials that are likely to come up."
 195 Joshua nods.
 196 BunnyHugger says, "Let's see..."
 197 Claude grins. "The problem with word filters online."
 198 BunnyHugger carefully sets down her stereo camera.
 199 BunnyHugger decides not to pick up the stereo camera.
 200 Chitter picks up the stereo camera.
 201 BunnyHugger says, "Aha!"
 202 BunnyHugger says, "It works."
 203 BunnyHugger smiles.
 204 BunnyHugger says, "You can use * for wildcard!  A new discovery for me."
 205 BunnyHugger says, "I locked to 'species:*uirre*' and Chitter got it OK!"
 206 Austin says, "Hooray!"
 207 You say, "Cool!"
 208 BunnyHugger says, "So what Jaxen could have done was locked against 'species:*coon*' though that might have gotten a few false hits."
 209 Joshua ruffs, "Wonderful!"
 210 Austin says, "The procyonids would get him yet."
 211 Chitter carefully sets down her stereo camera.
 212 Chitter decides not to pick up the stereo camera.
 213 BunnyHugger says, "OK, I got this.  Cool."
 214 BunnyHugger says, "'@lock <action>=!species:*coon*' would have done it.  He would've excluded both Royce and my raccoon robot that way."
 215 Royce churrs, "Oh, yes.  We will.  We are just waiting for him to go grocery shopping, first."
 216 BunnyHugger says, "Neat!  I learned something."
 217 BunnyHugger says, "OK!  Let's see here."
 218 BunnyHugger says, "Beltrami, is your 'You Are Here' Map completed?"
 219 Beltrami's ears flicker and she looks, embarrassed, down.  She shakes no.
 220 BunnyHugger says, "That's OK.  You can bring it next time."
 221 Beltrami touches her chin.
 222 BunnyHugger says, "All right, if there's no other homework to demonstrate we'll move on to today's topic: ZOMBIES."
 223 PatchO'Black eeps!
 224 PatchO'Black go and hides!
 225 PatchO'Black is glommed down and swept away by a plastic hippopotamus mouth.
 226 PatchO'Black has left.
 227 BunnyHugger says, "In MUCK terms, what's a zombie?  Anyone?"
 228 Claude raises a paw.
 229 BunnyHugger says, "Claude?"
 230 You say, "It's a Thing."
 231 BunnyHugger says, "That's right!"
 232 BunnyHugger says, "And what makes a Thing a Zombie?"
 233 Claude looks around.
 234 BunnyHugger says, "Don't worry about saying it in front of Chitter, he's used to it."
 235 You say, "Having the Z flag set."
 236 BunnyHugger says, "Yep, the Z flag on a thing makes it into a Zombie.  Aaaaaand.... who knows what is special about a Zombie?"
 237 BunnyHugger looks around to see if anyone else wants to answer.
 238 Joshua knows. But lets someone else answer if they would like to :)
 239 Chitter says, "No voting rights."
 240 BunnyHugger says, "Chitter, you're getting dangerously close to being out of character."
 241 Chitter says, "It's out of character for me to complain?"
 242 Austin says, "Sometimes you just poke BunnyHugger instead."
 243 BunnyHugger says, "All right, Professor Joshua, what's a Zombie do?"
 244 Joshua ruffs, "A zombie relies any notifications it receives back to the player who owns it."
 245 Joshua relays
 246 BunnyHugger says, "Yep!"
 247 BunnyHugger says, "It listens for you and reports what it hears, essentially.  I was having Chitter pick up and drop stuff earlier because then I saw both the @succ, through his eyes, and the @osucc, through mine."
 248 BunnyHugger says, "Fortunately, it doesn't repeat everything that's going on in a room you're already in.  But for a room you're not in, it will.  So when Chitter goes off on his own, which believe it or not he does sometimes, I see what's going on with him, prepended by his name."
 249 BunnyHugger says, "I have my own MU* client configured so that stuff with Chitter's name in the front is colored differently so I can separate it from everything else that's going on."
 250 Claude hmm!
 251 BunnyHugger says, "Now, to be really useful, you're also going to want to be able to direct your zombie -- tell it where to go, actions to perform, and so on.  In other words, act sort of like a substitute player.  The Z flag doesn't actually allow you to do that.  You have to set a second flag for your zombie to be 'forcible.'"
 252 SquirrelPlushie chitters.
 253 BunnyHugger says, "J.P., what other flag did you have to set on your Plushie so you could use it?  Do you know?"
 254 Joshua drops Kelketek'.
 255 BunnyHugger says, "Oh no!"
 256 Kelketek' looks confused.
 257 Claude blinks!
 258 J.P. says, "Not off the top of my head."
 259 Kelketek' sniffsniffsniffs all over Claude.
 260 J.P. says, "It was a while ago."
 261 Claude schlurp! the fox.
 262 BunnyHugger says, "OK!  Well, I would bet your Plushie also has the X flag."
 263 SquirrelPlushie pulls a digital piano out of his pocket and starts playing The Pawpet Song.
 264 BunnyHugger says, "X is the flag for 'Xforcible.'  Which... is a sign they were really running out of flags."
 265 J.P. says, "Yup."
 266 J.P. says, "Heh."
 267 Kelketek' merps, and fuzzles the cat. "We in school now, Professor Farstrike?"
 268 Joshua nods to Kel, and sends him to a seat.
 269 BunnyHugger says, "Hi Kelketek Jr.!"
 270 Claude purrs!
 271 BunnyHugger says, "They couldn't use F since that's the flag for a Forth program (MUF)."
 272 BunnyHugger says, "Xforcible is a flag that can be set on either a player or a thing.  It has no meaning for other kinds of objects."
 273 Kelketek' makes a face at being called 'Junior', but takes a seat, his tail flitting back and forth.
 274 Niny'ah steps off of the floating disk that carried her up.
 275 Niny'ah has arrived.
 276 BunnyHugger says, "It states that the object is permitted to be 'forced.'  Forcing is a way to make an object carry out some command."
 277 J.P. bats at Kelketek''s tail.
 278 BunnyHugger says, "Hi Niny'ah!"
 279 Sonja has teleported in.
 280 Sonja has arrived.
 281 Kelketek' bops a silly squirrel with it! Also, waves to Niny'ah.
 282 Beltrami smiles to Niny'ah and Sonja.
 283 You say, "Hello, Niny'ah."
 284 Niny'ah ruffles Claude
 285 Claude purr!
 286 Niny'ah says, "how much did I miss? aside from the announcement"
 287 You say, "And Sonja."
 288 BunnyHugger says, "The basic syntax for forcing something is: '@force <thing>=<what you want it to do>'.  <thing> can be the name of thing or its DBREF#."
 289 BunnyHugger says, "Well, you missed folks demonstrating their homework assignments, but we're just getting started on the main lesson."
 290 Joshua ruffs, "Niny'ah, we went over homework and we've gone over the basics of what a zombie is and how forcing works."
 291 Chitter scratches his head.
 292 BunnyHugger says, "I just entered '@force chitter=:scratches his head.'"
 293 BunnyHugger says, "In order to do that, Chitter had to be set X.  And, he also had to be force-locked to me.  So what I want to do first, to make sure everyone knows all the nuts and bolts of stuff here on the MUCK, is to talk to you a little about locks.  I'm going to hit both chown-lock and force-lock at this point, because they both kind of work the same way."
 294 Sonja makes a face at Chitter
 295 BunnyHugger says, "Now, you all already know about @lock, or at least folks who were here last time do.  The lock on an object does different things depending on what type of object, but in general, it sets who can 'use' that object, including go through an exit.  We were talking about the coon lock earlier.  n.n"
 296 BunnyHugger says, "With @lock-s, if something has NO lock on it, that actually means anyone can use it.  An unlocked exit is usable by anyone; but if I @lock something to me, it means only I can use it, or lock it to Austin, or whomever.  Once you lock something, the lock says who's permitted to use it or not."
 297 Claude nodnods and scribbles.
 298 BunnyHugger says, "OK, so there are a couple of special kinds of locks.  The first is chown-lock, and the command for setting it is '@chlock <object>=<lock>'."
 299 BunnyHugger says, "For instance if I want to chown-lock Chitter to me: '@chlock chitter=me'"
 300 BunnyHugger says, "If there is NO chown-lock set, then it is unlocked for chowning, and anyone can use @chown to take possession of the object PROVIDED the C flag is also set.  C means 'Chown_OK'."
 301 BunnyHugger says, "So an object set C but with no chown-lock can be @chowned by anyone.  An object set C and with a chown-lock set can only be chowned by those who pass the lock.  And an object without C cannot be chowned at all, regardless of the lock."
 302 BunnyHugger says, "This is the careful way to transfer ownership.  If you have a thing you want to give your friend, you can leave it in your friend's room with C set on it but @chlock-ed to your friend so no one else can nab it."
 303 BunnyHugger says, "It's also a useful way to transfer ownership back and forth during a building project.  You can @chlock a room to multiple people, such as 'me|*Austin', so the two of you can pass ownership back and forth when needed."
 304 BunnyHugger says, "(Or any object, room is just an example there.)"
 305 Niny'ah drops Trinket.
 306 You see nothing special.
 307 Claude peeks!
 308 BunnyHugger says, "So that's everything I think you need to know about @chlock.  Any questions on that?  Oh, and it can be removed with '@chlock <object>=' with nothing after that."
 309 You say, "Seems pretty clear to me."
 310 BunnyHugger says, "OK!  Now, I told you this to contrast it with force-locks, which work somewhat differently and somewhat the same."
 311 BunnyHugger says, "Force-locks are set with @flock; the syntax is the same as with other locks."
 312 BunnyHugger says, "Now, if something has no force-lock set on it, who can @force it?  Anyone?"
 313 Austin says, "I believe that's so, yes."
 314 BunnyHugger says, "Actually, that's not the case!  If no force-lock is set on something, NO ONE can force it."
 315 Joshua ruffs, "Right. It's a security feature default."
 316 BunnyHugger says, "This works differently from other locks so is worth noting.  It's because forcing is so dangerous."
 317 BunnyHugger says, "Even the owner of something can't force it without a @flock."
 318 BunnyHugger says, "So when you set up a zombie, the easiest thing to forget to do is @flock it to yourself.  At least, I always forget that."
 319 BunnyHugger says, "Even if it's set X, it can't be @forced until you '@flock zombie=me' or whatever."
 320 BunnyHugger says, "Now, because force-locks can take Boolean syntax, it's possible to write a force-lock that amounts to 'everyone can force it.'  But you have to at least take that step.  It's also a crazy thing to do."
 321 BunnyHugger says, "GreenKai once, as a parlor trick, force-locked herself to 'me or not-me' or something similar to that, allowing everyone to @force her."
 322 BunnyHugger says, "This is craaaaaaaaazy dangerous.  Can anyone see why?"
 323 You say, "Well... anyone can @force you to do anything... such as change your password."
 324 BunnyHugger says, "Right.  @force can be used to force any action you can take.  Someone could delete all your stuff or worse."
 325 Austin says, "I would think they'd need your old password to change it, but that's about all that has going for you."
 326 BunnyHugger says, "This is also why you have to be VERY CAREFUL with the @flock on your zombie.  Your zombie has your permissions."
 327 Joshua ruffs, "They would. Same with your name, if I recall."
 328 BunnyHugger says, "Someone forcing your zombie could cause it to mess with your stuff."
 329 BunnyHugger says, "Right.  But they could read your mail, at least, and destroy all your worldly possessions, and anything else you can think of."
 330 BunnyHugger says, "Zombies can't @create objects because they have no builder bit.  But they can do stuff like set descriptions, remove flags, and recycle things!"
 331 You say, "So you can recycle even without a builder bit?"
 332 BunnyHugger says, "So yeah, be careful!  Always @flock your zombie to yourself -- and leave the force-lock on anything you don't need to @force unset."
 333 BunnyHugger says, "Yes, you can.  Weird, huh?"
 334 You say, "Indeed."
 335 BunnyHugger says, "Only stuff you own, or your owner owns if it's a zombie."
 336 Joshua ruffs, "Your zombie can recycle itself."
 337 BunnyHugger says, "I guess the idea is that if someone's builder bit has been taken away, there's no harm in letting them delete their stuff."
 338 Joshua ruffs, "And if you've ever wanted to feel like a tyrant, try it sometime."
 339 BunnyHugger says, "True.  I also sometimes have my zombie remove its own Z flag to stop listening."
 340 Joshua ruffs, "You'll find an interesting... side effect."
 341 BunnyHugger says, "A zombie can also set itself dark but can't remove the dark flag because once something is dark it can't be @forced.  n.n"
 342 BunnyHugger says, "One last security note about @flocks."
 343 BunnyHugger says, "The force-lock on something is NOT changed or removed when the object is @chowned."
 344 BunnyHugger says, "I'm working on a 'ChownPlus' program that will avoid this danger, if the wizards decide to let me install it here."
 345 You say, "Interesting."
 346 Joshua ruffs, "That means if someone gives you a zombie to chown, they have your permissions."
 347 Joshua ruffs, "And can act as you."
 348 BunnyHugger says, "But!  The built in @chown doesn't change that property.  So be careful!  When someone @chowns an object to you, if the object is set X, make sure there's no force-lock set on it."
 349 BunnyHugger says, "Right."
 350 You say, "The Trojan Zombie."
 351 BunnyHugger says, "I think this is a big danger for inexperienced players because it allows someone to give them a Trojan Horse."
 352 BunnyHugger nods.
 353 BunnyHugger says, "Exactly."
 354 Joshua ruffs, "The worst part of that is that the @flock cannot be changed by you until /after/ you chown it, so there's always a gap of insecure time with the built-in commands."
 355 BunnyHugger says, "Right."
 356 Royce has been here 14 years or so, and didn't know that.
 357 BunnyHugger says, "So, be very careful with @flocks and things set X!"
 358 BunnyHugger says, "That's the big lesson for today really!  But, let's move on and finish learning to make a zombie."
 359 Beltrami nods.
 360 BunnyHugger says, "OK, so the basic things you would need to do to make a very basic zombie from scratch are: @create <object name>, @set <object name>=Z, @set <object name>=X, @flock <object name>=me .  At that point you have a zombie.  You could then make your zombie do stuff with @force <zombie name or DBREF#>=<do something>."
 361 BunnyHugger says, "Like, '@force Chitter=:rolls his eyes.'"
 362 Chitter rolls his eyes.
 363 BunnyHugger says, "Your zombie can carry out all the in-built commands and can also use many of the global commands (programs)."
 364 fluffy polishs Beltrami, from afar!  
 365 BunnyHugger says, "Whether or not it can use a program is dependent largely on whether the program writer thought to, or bothered to, or was practically able to, allow zombies to use it."
 366 J.P. pets Beltrami.
 367 BunnyHugger says, "My pet peeve is programs that are denied to zombies for no good reason, because the person had the program check for 'player' rather than 'player or zombie'."
 368 BunnyHugger says, "But you didn't come to hear about my MUF pet peeves.  n.n"
 369 Joshua ruffs, "If you're going to allow zombies, easier just not to check for either player or zombie."
 370 Joshua ruffs, "Just let it run."
 371 BunnyHugger says, "It used to be the case that zombies couldn't use 'mumble' and this annoyed me so much I eventually pestered Austin into fixing the MUF."
 372 Joshua ruffs, "Unless you think a room is going to be running a program..."
 373 Claude chuckles.
 374 Joshua ruffs, "Which it could."
 375 BunnyHugger says, "Well, if it's something you want to limit to plausible 'people', it's easy, because there's a macro .person? you can use instead of player?"
 376 Joshua ruffs, "But I'd be more like 'Why not?' rather than preemptively banning it :P"
 377 BunnyHugger says, "My sternlooker will only aim at 'persons' because it gives you a message telling you you're silly if you point it at other stuff.  n.n"
 378 Joshua nodnods.
 379 BunnyHugger says, "Anyway!  So you can now all build and force a zombie from scratch.  But who the blazes wants to enter a @force command every time you want your zombie to do something?"
 380 BunnyHugger says, "That's be a huge pain in the tail."
 381 Claude swishes his.
 382 Austin says, "Well, it improves your skill at typing @ marks."
 383 BunnyHugger says, "So just about everyone who uses a zombie, uses an @action to command it.  This includes if you use the zombie-hammer or other zombie programs to automate this stuff."
 384 BunnyHugger says, "So if you want to make a shortcut to command your zombie, and you will, the best thing to do is to start by making an @action with a short name that you won't mind typing over and over.  Chitter's control command is 'chi'."
 385 BunnyHugger says, "It used to be 'ch' in the days of yore, but that conflicted with global exits around here."
 386 BunnyHugger says, "So that's a good reason not to make it TOO short."
 387 Claude grins.
 388 BunnyHugger says, "So where do you think you would want to attach your zombie-controlling action?"
 389 You say, "On me."
 390 BunnyHugger says, "Yep!  If you want it always accessible, on your own fur makes the most sense."
 391 BunnyHugger says, "Er, or scales, or whatever."
 392 You say, "Since I can't forget myself at home."
 393 BunnyHugger says, "And as you know from last time, the way you create and attach an action to yourself is like this: @action <name of action>=me ."
 394 BunnyHugger says, "So in my example, '@action chi=me' would make 'chi' and attach it to me."
 395 BunnyHugger says, "So here's where it gets hard."
 396 BunnyHugger says, "Now we need to make it so the @action forces Chitter to do something.  Anyone know how to do that?"
 397 Claude looks around the classroom again.
 398 Joshua does.
 399 BunnyHugger says, "Anyone besides Claude and Joshua want to get a chance to talk?  >:)"
 400 Austin says, "By pure action or by way of interloper muf?"
 401 BunnyHugger says, "For this demonstration, I'd like to just use an action that anyone can make without MUF assistance, Austin."
 402 BunnyHugger says, "Although as Austin notes, if the @action were attached to a zombie-controlling MUF, you could do that.  There is at least one such MUF in the public library."
 403 BunnyHugger says, "Er, @linked I mean, not attached."
 404 Kelketek' leans forward and listens.
 405 BunnyHugger says, "Well, Claude, have you got an answer?"
 406 Austin says, "OK.  Well, without MUF, then I'd fall back on the {force: } mpi acommand."
 407 You say, "I don't know by heart, but since I have such an action I can always take a peek."
 408 BunnyHugger says, "Ah, Austin's got it."
 409 BunnyHugger nods.
 410 BunnyHugger says, "So, that leads to another topic related to our exploration of zombies: MPI."
 411 BunnyHugger says, "MPI either stands for 'Message Parsing Interpreter' or 'My Personal Insanity.'"
 412 BunnyHugger says, "I'm not good with it at all, and my understanding is that when building class is complete and you all graduate, Prof. Joshua is going to run an MPI class, which I will attend."
 413 Joshua nods.
 414 Joshua ruffs, "Would you like to see the MPI I use for this purpose?"
 415 Beltrami nodnods.
 416 BunnyHugger says, "MPI is a programming language that doesn't require a MUCKER bit or any sort of bit at all (except, indirectly, a builder bit) to run.  It lurks in properties on objects, triggered when those properties are retrieved (e.g. when a @succ is run)."
 417 BunnyHugger says, "Sure!"
 418 Joshua's @fail message for yonder fox is: {with:puppet,$kel,{if:{&arg},{force:{&puppet}, {&arg}},You must enter something for {name:{&puppet}} to do.}}
 419 Joshua ruffs, "This also relies on a @reg name. Have we gone over those?"
 420 BunnyHugger says, "I haven't yet.  Do you want to explain it for folks briefly?"
 421 Joshua ruffs, "Sure. Most of you may not be familiar with the command @register."
 422 Joshua ruffs, "@register is the first program and first command a wizard sets up on a standard MUCK installation."
 423 BunnyHugger turns her ears toward Joshua.
 424 Joshua ruffs, "It is used to create 'registered names' for objects which need to be referenced. Consider the following scenario:"
 425 Joshua ruffs, "You have a room that you're building. Once you create it, you have its DBREF. Let's say you create 'Kitchen', and it comes back with #23453."
 426 Niny'ah has disconnected.
 427 Sonja falls asleep.
 428 Joshua ruffs, "That's difficult to remember. BUt you can do it if you keep scrolling up, copying and pasting. You make your little exits with @act (O) Out;out;o=#23453, or what have you. But it's hard to keep track of that random number,"
 429 Joshua ruffs, "Why not instead, be able to refer to it by its name?"
 430 Joshua ruffs, "@register lets you do that."
 431 BunnyHugger nodsQ
 432 Joshua ruffs, "If you're a wizard, you can do @register #23453=kitchen, and then everyone could reference it as $kitchen across the whole MUCK. But in our case, we usually want to use @register #me #23453=kitchen"
 433 Joshua ruffs, "Since that will make it to where it's on our local registry instead."
 434 BunnyHugger says, "And, you've all actually seen an example last week when I explained about setting the @success on your actions to $nothing .  $nothing is the regname of do-nothing.muf, pretty universal across MUCKs."
 435 Joshua ruffs, "If you want to look up what things have been registered on the MUCK, you can type @register"
 436 Joshua ruffs, "There are a lot of things there :)
 437 
 438 [Connection froze here.]
 439 
 440 Claude looks from Joshua to BunnyHugger. Tick tock.
 441 BunnyHugger says, "Now MPI can be on the @succ, or the @osucc, or the @fail, or... etc., etc.  Mine for Coon-Bot is on @succ, and I have the @action @linked to $nothing, just like with the actions I taught you about last week."
 442 Joshua ruffs, "That contains all of the libraries, which is what @register is most useful for, when getting down to the architecture of a MUCK. After all, if a hundred programs rely on your program, and your program is accidentally recycled, you're in trouble if you have to refer to it by DBREF, but that DBREF is not what your program gets next time you create it."
 443 BunnyHugger nods.
 444 Joshua ruffs, "Any object can have a registered name, and all the creation command have the ability to register on creation"
 445 Joshua @CREATE <object> [=<cost>[=<regname>]]
 446 Joshua ruffs, "If you use @archive, you'll see that @archive does this."
 447 Joshua ruffs, "Also, you can use @reg #me to see what items are registered on you."
 448 BunnyHugger says, "Thank you, Professor."
 449 BunnyHugger says, "All right.  Now, my zombie command is much simpler (and less nice) than Joshua's.  Mine doesn't give a nice message if you forget to enter an argument, for instance; it just gives a failure message (i.e. it crashes), and I'm fine with that, since this was just something I made quick and dirty to bother Jaxen.  So let me show you how simple this can be and still work..."
 450 Claude earperks.
 451 BunnyHugger says, "Coon-bot's action is 'cbt.'  So I just did: @link cbt=$nothing , meaning that the action is linked to do-nothing.muf and thus will 'succeed' when I perform it, and then when the success triggers, this bit of MPI 'goes off': @succ cbt={force:#24019,{&arg}}"
 452 ck(#20218E)  Owner: Claude
 453 Type: EXIT/ACTION
 454 Key: Claude(#19879PBCJM1)
 455 Chown_OK Key: *UNLOCKED*
 456 Container Key: *UNLOCKED*
 457 Force Key: *UNLOCKED*
 458 Success: {null:{force:#20219,{&arg}}}
 459 Created:  Tue Feb 23 00:50:47 PST 2010
 460 Modified: Tue May  4 08:57:22 PDT 2010
 461 Lastused: Tue Sep 18 00:36:57 PDT 2012
 462 Usecount: 1873
 463 [ Use 'examine <object>=/' to list root properties. ]
 464 Memory used: 234 bytes
 465 Source: Claude(#19879PBCJM1)
 466 Destination: do-nothing.muf(#108FLVM3)
 467 BunnyHugger says, "Force: is the MPI force command, and &arg tells it 'the argument that was entered,' meaning whatever I put in after 'cbt'.  The number is, of course, Coon-Bot's DBREF#."
 468 BunnyHugger says, "So I do get an angry message if I forget to enter an argument."
 469 You say, "Mine is wrapped in a call to {null}."
 470 BunnyHugger says, "If I just type 'cbt' I get an MPI exception: '(@Succ) {FORCE}: Null command string. (arg2)'"
 471 Joshua nods, "Even with that simple command, though, I would lock the action me&!me, and then set the MPI on @fail. This is because @suc launches do-nothing, and while do-nothing does do nothing, it still bothers to launch a program.
 472 BunnyHugger says, "But you still link it to $nothing, correct?"
 473 Joshua ruffs, "Or rather, the action launches do-nothing when successful."
 474 BunnyHugger says, "Because it has to be linked to something, of course."
 475 Joshua ruffs, "Certainly. You don't want someone chowning your unlinked action"
 476 BunnyHugger says, "Right."
 477 BunnyHugger says, "In any case, you'll all learn lots more about MPI from the Professor here.  It really is not my strong suit."
 478 BunnyHugger says, "But you will run across it everywhere.  Anytime you see those tell-tale curly braces you're probably looking at MPI.  You probably have some in your desc, I'd bet.  Most folks do."
 479 You say, "{list:redesc} is used for any desc longer than a couple of lines, I bet."
 480 Joshua nods, "And most users also have the looknotify+ macro.
 481 Joshua {looknotify+}{eval:{muf:$mpi-color,{list:redesc}}}
 482 BunnyHugger says, "Yes, descriptions are one place you can have it."
 483 Joshua ruffs, "I don't really remember $mpi-color being in there, but maybe that's a relatively recent addition."
 484 BunnyHugger says, "Then it runs when someone looks at the thing/room/you.  >:)"
 485 BunnyHugger says, "I wrote my Bugglizer using it, which is the most MPI I've ever written."
 486 BunnyHugger says, "It alters my description based on randomly selecting clothing from a few lists."
 487 BunnyHugger says, "And it also uses that to create a message so folks know what I changed into."
 488 BunnyHugger says, "But I gotta say, I like MUF loads better."
 489 Joshua nods, "I do as well."
 490 BunnyHugger says, "OK!  So, that's my little lesson about zombies and their nature and how to command them.  You have a couple of examples of MPI that can be used on them, and an explanation of why it might be less system intensive to use the @fail rather than @succ to run your zombie MPI, even though to be honest I was taught to use @succ and, er, always have."
 491 BunnyHugger ahems.
 492 BunnyHugger says, "Hopefully from this you've also learned some stuff about force-locks, chown-locks, and a little bit about what MPI is."
 493 BunnyHugger says, "As well as the Z and X flag.  So that was kind of my list of goals for this lesson."
 494 Joshua nodnods.
 495 Claude nod nod nods!
 496 Beltrami nods.
 497 Claude noses Beltrami.
 498 BunnyHugger says, "If we had time I'd have gone on to talking a bit about rooms, but our time is up.  So, my homework assignment for you for next time is to build a zombie without using the zombie-hammer program.  In other words, taking the steps to build a zombie from scratch."
 499 You say, "What if we already did that?"
 500 BunnyHugger says, "Well!  Then you're ahead of the game and you can just bring your friend with you.  n.n"
 501 Beltrami nods.
 502 BunnyHugger says, "Next time, we'll begin learning stuff about making structures, i.e. rooms.  This is a big topic because a lot of people really don't understand it as well as they could, and thus don't get the most out of the environment rooms."
 503 Claude giggles.
 504 BunnyHugger says, "I did building stuff for years before I realized what environment rooms really are."
 505 BunnyHugger closes her notes.  "Class is dismissed for now!  We will meet again next week."

New Attachment

File to upload
Rename to
Overwrite existing attachment of same name
What is the Admin password?

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2021-02-19 01:04:17, 41.9 KB) [[attachment:building-class-1-log-cleaned.txt]]
  • [get | view] (2021-02-19 01:04:41, 55.2 KB) [[attachment:building-class-2-log-cleaned.txt]]
  • [get | view] (2021-02-19 01:04:46, 36.2 KB) [[attachment:building-class-3-log-cleaned.txt]]
  • [get | view] (2021-02-19 01:04:51, 29.4 KB) [[attachment:building-class-4-log-cleaned.txt]]
  • [get | view] (2021-02-19 01:04:57, 49.7 KB) [[attachment:building-class-5-log-cleaned.txt]]
 All files | Selected Files: delete move to page copy to page