Dump of #86 (RPG Mirror) @create $thing named a full-length mirror:Mirror,full-length mirror,myself,a full-length mirror ;;#86.("odrop_failed_msg") = "% to drop %t but fails!" ;;#86.("odrop_succeeded_msg") = "% %t." ;;#86.("otake_succeeded_msg") = "% up %t." "#86.("key") => E_PERM (Permission denied) ;;#86.("aliases") = {"Mirror", "full-length mirror", "myself", "a full-length mirror"} ;;#86.("description") = {"mirror"} ;;#86.("object_size") = {9595, 1141286565} @verb #86:"look_self" this any none rxd @program #86:look_self rpg = $local.rpg; if (player.location != this.location) player:tell("The mirror is too far away for you to see from here."); return; elseif (!(this.owner in rpg.gms)) player:tell("Please don't be selfish/lazy. There are two perfectly fine mirrors for your use by the Academy. If you feel you NEED to have another mirror, go bug your personal GM about installing one nearby--FOR PUBLIC USE."); return; endif player:tell("In the mirror you see someone who looks a bit like you."); ps = player.ps; po = player.po; pr = player.pr; pp = player.pp; psc = player.psc; poc = player.poc; ppc = player.ppc; prc = player.prc; loc = player in rpg.pcs; if (loc) doll = rpg.dolls[loc]; strngth = doll.str; app = doll.app; intel = doll.int; agl = doll.agl; emp = doll.emp; pot = doll.pot; pcn = doll.pcn; dex = doll.dex; wil = doll.wil; end = doll.end; inj = doll.inj; if (app > 15) text = psc + " is stunningly attractive,"; elseif (app > 12) text = psc + " is pleasant to look at,"; elseif (app > 8) text = psc + " is of average attractiveness,"; elseif (app > 5) text = psc + " is quite plain and homely,"; else text = psc + " is hideously repulsive,"; endif if (strngth > 15) text = text + " well muscled"; elseif (strngth > 12) text = text + " fairly solidly built"; elseif (strngth > 8) text = text + " of average build"; elseif (strngth > 5) text = text + " lightly built"; else text = text + " very scrawny"; endif if (emp > 15) text = ((text + ", with a friendly, caring expression on ") + pp) + " face."; elseif (emp > 12) text = text + " and looks quite friendly."; elseif (emp > 8) text = text + " and looks moderately trustworthy."; elseif (emp > 5) text = ((text + ", with a sly, shifty look to ") + pp) + " eyes."; else text = ((text + ", with a predatory, used-car salesman look in ") + pp) + " eyes."; endif if (pcn > 15) text = text + " fnord "; endif if (intel > 15) text = ((text + " The clear light of intellect shines keenly from ") + pp) + " eyes."; elseif (intel > 12) text = ((text + " This is no Einstein, but ") + ps) + " looks reasonably bright."; elseif (intel > 8) elseif (intel > 5) text = ((text + " ") + psc) + " doesn't exactly look stupid, but is clearly no great intellect."; else text = ((text + " ") + ppc) + " face displays a dull look of vacancy."; endif if (pcn > 12) text = text + " fnord "; endif if (agl > 15) text = ((text + " ") + psc) + " walks lithely, with a minimum of effort."; elseif (agl > 12) text = ((text + " ") + psc) + " looks reasonably well-coordinated."; elseif (agl > 8) elseif (agl > 5) text = ((text + " ") + psc) + " occasionally steps awkwardly and stumbles."; else text = ((text + " ") + psc) + " stumbles or trips with every second step."; endif if (wil > 15) text = ((text + " ") + psc) + " fixes you with a gaze of steely determination,"; elseif (wil > 12) text = ((text + " ") + psc) + " looks quite determined,"; elseif (wil > 8) text = (text + " ") + psc; elseif (wil > 5) text = ((text + " ") + psc) + " gazes timidly at you,"; else text = ((text + " ") + psc) + " gives you a nervous, vacillating, stare,"; endif if (end > 15) text = text + " glows with a look of robust vigour"; elseif (end > 12) text = text + " seems to be in good health"; elseif (end > 8) text = text + " looks healthy enough"; elseif (end > 5) text = text + " looks a bit anaemic"; else text = text + " is constantly puffing and out of breath"; endif if (dex > 15) text = text + " and is continually tossing objects from one hand to the other, performing various impressive tricks on the way, seemingly without conscious effort."; elseif (dex > 12) text = text + " and from time to time idly transfers things from one hand to the other, seemingly with little effort."; elseif (dex > 8) text = ((text + " and seems able to hold things in ") + pp) + " hands without too much difficulty."; elseif (dex > 5) text = ((((text + " and when ") + ps) + " moves ") + ps) + " sometimes drops things."; else text = ((((text + " and seems to spend half of ") + pp) + " time picking up things that ") + ps) + " has dropped."; endif if (pcn > 8) text = text + " fnord "; endif if (pot > 100) text = ((text + " You can tell that ") + ps) + " has huge potential for self-improvement."; elseif (pot > 30) text = ((text + " You get the feeling that ") + ps) + " has some potential for self-improvement."; elseif (pot > 0) text = ((text + " You get the impression that ") + ps) + " still has a little room for improvement."; else text = ((((text + " ") + psc) + " appears to have reached ") + pp) + " full potential."; endif if (inj > (3 * end)) text = ((text + " ") + player.name) + " is severely wounded and may be close to death."; elseif (inj > 0) text = ((text + " ") + player.name) + " has some wounds."; endif player:tell(text); else player:tell(psc, " looks completely unsuitable for adventuring, and should consider joining the Bovine Illuminati to remedy the situation."); endif . @verb #86:"g*et t*ake" this any none rxd @program #86:get player:tell("You can't, it's too heavy."); . @verb #86:"tell" this none this @program #86:tell pass(@args); rpg = $local.rpg; text = tostr(@args); if (index(text, this.snow_white)) app = 0; whobe = {}; gms = {@rpg.gms, @rpg.object_db.second_characters}; for t in (rpg.dolls) char = t.character; if (char in gms) elseif ((t.app > app) && is_player(char)) app = t.app; whobe = {char}; elseif ((t.app == app) && is_player(char)) whobe = setadd(whobe, char); endif endfor if (whobe) fork (rpg.gm_lag) rpg:rpg_announce_all_but(this.location, {}, "The Mirror intones, \"", $string_utils:title_list(whobe), (length(whobe) > 1) ? " are" | " is", " the Fairest in the Land.\""); endfork endif return; endif found = "N"; for alias in (this.aliases) ms1 = ((player.name + " says, \"") + alias) + "*"; ms2 = ((player.name + " [to ") + alias) + "]:*"; if ((msg = $string_utils:match_string(text, ms1)) || (msg = $string_utils:match_string(text, ms2))) found = "Y"; break; endif endfor if (found == "N") return; endif fork (1 + rpg.gm_lag) if ($string_utils:match_string(toliteral(msg), "*guid*")) if (player.location != this.location) player:tell(this.diff_loc_msg); return; endif doll = rpg:get_doll(player); if (doll == $nothing) player:tell(this.not_bovine_msg); return; endif {pot, strn, end, dex, agl, intl, emp, wil, pcn, app} = doll:get_unmod_atts("pot", "str", "end", "dex", "agl", "int", "emp", "wil", "pcn", "app"); player:tell(this.intro_msg); player:tell(this.intro2_msg); count = 0; for attl in ({{"strn", strn}, {"end", end}, {"dex", dex}, {"agl", agl}, {"intl", intl}, {"emp", emp}, {"wil", wil}, {"pcn", pcn}, {"app", app}}) {att, attv} = attl; if (pot >= rpg.costs[min(attv, 25) + 1]) player:tell(this.(att + "_imp_msg")); count = count + 1; endif endfor cref = ((count + 1) / 2) * 2; player:tell(this.(("le" + tostr(cref)) + "_imp_msg")); endif endfork "THX (#105941) - Mon Apr 3, 2000 - Added a \"Mirror, Mirror, on the wall. Who's the fairest of them all?\" gag. What the hell, hunh?"; . "***finished***