a full-length mirror #86

Parent Owner Flags Source rpg_march_2006/mirror.txt

Aliases: Mirror, full-length mirror, myself, a full-length mirror

3 verbs · 7 properties · 0 children

Verbs

VerbSpecFlagsDefinerLines
look_selfthis any nonerxd#86144
g*et t*akethis any nonerxd#861
tellthis none this#8663

Properties

PropertyDefinerFlagsOwnerValue
odrop_failed_msg#86"%<tries> to drop %t but fails!"
odrop_succeeded_msg#86"%<drops> %t."
otake_succeeded_msg#86"%<picks> up %t."
key#86not readable (E_PERM)
aliases#86{"Mirror", "full-length mirror", "myself", "a full-length mirror"}
description#86{"mirror"}
object_size#86{9595, 1141286565}

Ancestry

Ancestors (nearest first): none

Children: none

Source

look_self

Spec this any noneFlags rxdDefiner #86

Referenced by

none

Source

1rpg = $local.rpg;
2if (player.location != this.location)
3  player:tell("The mirror is too far away for you to see from here.");
4  return;
5elseif (!(this.owner in rpg.gms))
6  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.");
7  return;
8endif
9player:tell("In the mirror you see someone who looks a bit like you.");
10ps = player.ps;
11po = player.po;
12pr = player.pr;
13pp = player.pp;
14psc = player.psc;
15poc = player.poc;
16ppc = player.ppc;
17prc = player.prc;
18loc = player in rpg.pcs;
19if (loc)
20  doll = rpg.dolls[loc];
21  strngth = doll.str;
22  app = doll.app;
23  intel = doll.int;
24  agl = doll.agl;
25  emp = doll.emp;
26  pot = doll.pot;
27  pcn = doll.pcn;
28  dex = doll.dex;
29  wil = doll.wil;
30  end = doll.end;
31  inj = doll.inj;
32  if (app > 15)
33    text = psc + " is stunningly attractive,";
34  elseif (app > 12)
35    text = psc + " is pleasant to look at,";
36  elseif (app > 8)
37    text = psc + " is of average attractiveness,";
38  elseif (app > 5)
39    text = psc + " is quite plain and homely,";
40  else
41    text = psc + " is hideously repulsive,";
42  endif
43  if (strngth > 15)
44    text = text + " well muscled";
45  elseif (strngth > 12)
46    text = text + " fairly solidly built";
47  elseif (strngth > 8)
48    text = text + " of average build";
49  elseif (strngth > 5)
50    text = text + " lightly built";
51  else
52    text = text + " very scrawny";
53  endif
54  if (emp > 15)
55    text = ((text + ", with a friendly, caring expression on ") + pp) + " face.";
56  elseif (emp > 12)
57    text = text + " and looks quite friendly.";
58  elseif (emp > 8)
59    text = text + " and looks moderately trustworthy.";
60  elseif (emp > 5)
61    text = ((text + ", with a sly, shifty look to ") + pp) + " eyes.";
62  else
63    text = ((text + ", with a predatory, used-car salesman look in ") + pp) + " eyes.";
64  endif
65  if (pcn > 15)
66    text = text + " fnord ";
67  endif
68  if (intel > 15)
69    text = ((text + " The clear light of intellect shines keenly from ") + pp) + " eyes.";
70  elseif (intel > 12)
71    text = ((text + " This is no Einstein, but ") + ps) + " looks reasonably bright.";
72  elseif (intel > 8)
73  elseif (intel > 5)
74    text = ((text + " ") + psc) + " doesn't exactly look stupid, but is clearly no great intellect.";
75  else
76    text = ((text + " ") + ppc) + " face displays a dull look of vacancy.";
77  endif
78  if (pcn > 12)
79    text = text + " fnord ";
80  endif
81  if (agl > 15)
82    text = ((text + " ") + psc) + " walks lithely, with a minimum of effort.";
83  elseif (agl > 12)
84    text = ((text + " ") + psc) + " looks reasonably well-coordinated.";
85  elseif (agl > 8)
86  elseif (agl > 5)
87    text = ((text + " ") + psc) + " occasionally steps awkwardly and stumbles.";
88  else
89    text = ((text + " ") + psc) + " stumbles or trips with every second step.";
90  endif
91  if (wil > 15)
92    text = ((text + " ") + psc) + " fixes you with a gaze of steely determination,";
93  elseif (wil > 12)
94    text = ((text + " ") + psc) + " looks quite determined,";
95  elseif (wil > 8)
96    text = (text + " ") + psc;
97  elseif (wil > 5)
98    text = ((text + " ") + psc) + " gazes timidly at you,";
99  else
100    text = ((text + " ") + psc) + " gives you a nervous, vacillating, stare,";
101  endif
102  if (end > 15)
103    text = text + " glows with a look of robust vigour";
104  elseif (end > 12)
105    text = text + " seems to be in good health";
106  elseif (end > 8)
107    text = text + " looks healthy enough";
108  elseif (end > 5)
109    text = text + " looks a bit anaemic";
110  else
111    text = text + " is constantly puffing and out of breath";
112  endif
113  if (dex > 15)
114    text = text + " and is continually tossing objects from one hand to the other, performing various impressive tricks on the way, seemingly without conscious effort.";
115  elseif (dex > 12)
116    text = text + " and from time to time idly transfers things from one hand to the other, seemingly with little effort.";
117  elseif (dex > 8)
118    text = ((text + " and seems able to hold things in ") + pp) + " hands without too much difficulty.";
119  elseif (dex > 5)
120    text = ((((text + " and when ") + ps) + " moves ") + ps) + " sometimes drops things.";
121  else
122    text = ((((text + " and seems to spend half of ") + pp) + " time picking up things that ") + ps) + " has dropped.";
123  endif
124  if (pcn > 8)
125    text = text + " fnord ";
126  endif
127  if (pot > 100)
128    text = ((text + " You can tell that ") + ps) + " has huge potential for self-improvement.";
129  elseif (pot > 30)
130    text = ((text + " You get the feeling that ") + ps) + " has some potential for self-improvement.";
131  elseif (pot > 0)
132    text = ((text + " You get the impression that ") + ps) + " still has a little room for improvement.";
133  else
134    text = ((((text + " ") + psc) + " appears to have reached ") + pp) + " full potential.";
135  endif
136  if (inj > (3 * end))
137    text = ((text + " ") + player.name) + " is severely wounded and may be close to death.";
138  elseif (inj > 0)
139    text = ((text + " ") + player.name) + " has some wounds.";
140  endif
141  player:tell(text);
142else
143  player:tell(psc, " looks completely unsuitable for adventuring, and should consider joining the Bovine Illuminati to remedy the situation.");
144endif

g*et t*ake

Spec this any noneFlags rxdDefiner #86

Referenced by

none

Source

1player:tell("You can't, it's too heavy.");

tell

Spec this none thisDefiner #86

Referenced by

none

Source

1pass(@args);
2rpg = $local.rpg;
3text = tostr(@args);
4if (index(text, this.snow_white))
5  app = 0;
6  whobe = {};
7  gms = {@rpg.gms, @rpg.object_db.second_characters};
8  for t in (rpg.dolls)
9    char = t.character;
10    if (char in gms)
11    elseif ((t.app > app) && is_player(char))
12      app = t.app;
13      whobe = {char};
14    elseif ((t.app == app) && is_player(char))
15      whobe = setadd(whobe, char);
16    endif
17  endfor
18  if (whobe)
19    fork (rpg.gm_lag)
20      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.\"");
21    endfork
22  endif
23  return;
24endif
25found = "N";
26for alias in (this.aliases)
27  ms1 = ((player.name + " says, \"") + alias) + "*";
28  ms2 = ((player.name + " [to ") + alias) + "]:*";
29  if ((msg = $string_utils:match_string(text, ms1)) || (msg = $string_utils:match_string(text, ms2)))
30    found = "Y";
31    break;
32  endif
33endfor
34if (found == "N")
35  return;
36endif
37fork (1 + rpg.gm_lag)
38  if ($string_utils:match_string(toliteral(msg), "*guid*"))
39    if (player.location != this.location)
40      player:tell(this.diff_loc_msg);
41      return;
42    endif
43    doll = rpg:get_doll(player);
44    if (doll == $nothing)
45      player:tell(this.not_bovine_msg);
46      return;
47    endif
48    {pot, strn, end, dex, agl, intl, emp, wil, pcn, app} = doll:get_unmod_atts("pot", "str", "end", "dex", "agl", "int", "emp", "wil", "pcn", "app");
49    player:tell(this.intro_msg);
50    player:tell(this.intro2_msg);
51    count = 0;
52    for attl in ({{"strn", strn}, {"end", end}, {"dex", dex}, {"agl", agl}, {"intl", intl}, {"emp", emp}, {"wil", wil}, {"pcn", pcn}, {"app", app}})
53      {att, attv} = attl;
54      if (pot >= rpg.costs[min(attv, 25) + 1])
55        player:tell(this.(att + "_imp_msg"));
56        count = count + 1;
57      endif
58    endfor
59    cref = ((count + 1) / 2) * 2;
60    player:tell(this.(("le" + tostr(cref)) + "_imp_msg"));
61  endif
62endfork
63"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?";