Bovine Familiar FO #15870

Parent #77399Owner Flags Source rpg_march_2006/Features/Bovine Familiar FO.txt

Aliases: Bovine Familiar FO, dcf

11 verbs · 11 properties · 0 children

Verbs

VerbSpecFlagsDefinerLines
sc*ore health ht co*nditionany none nonerxd#158706
@rpgany any anyrxd#1587044
ins*pectany any anyrx#1587030
@gms @GMS @G_Msany none nonerxd#1587018
notify tellthis none this#158703
graph abbr_timethis none this#158701
combatantsthis none this#158701
pot*entialany none nonerxd#1587010
@claimedany none nonerxd#1587029
active_playersthis none this#1587024
@rpg-oldany any anyrxd#1587040

Properties

PropertyDefinerFlagsOwnerValue
notify_task#15870r0
notify_tasks#15870r{661168078}
gm_utils#15870rc#27326
quinn_utils#15870r#34283
help_msg#15870"Some magick words bestowed upon faithful Bovine Illuminati, to help them in their quests."
feature_verbs#15870{"score", "inspect", "pot", "@rpg", "@gms", "@claimed"}
guest_ok#158701
key#15870not readable (E_PERM)
aliases#15870{"Bovine Familiar FO", "dcf"}
description#15870"A small cow with draconic wings. It moos happily to you, ready to help make LambdaMOO a better place for gamers."
object_size#15870{11991, 1141286591}

Ancestry

Ancestors (nearest first): none

Children: none

Call graph

calls n15870_1 #15870:@rpg n15870_6 #15870:combatants n15870_1->n15870_6 n15870_5 #15870:graph n15870_1->n15870_5 n15870_9 #15870:active_players n15870_9->n15870_6 n15870_10 #15870:@rpg-old n15870_10->n15870_6 n15870_10->n15870_5

Source

sc*ore health ht co*ndition

Spec any none noneFlags rxdDefiner #15870

Referenced by

none

Source

1"sc*ore [<character>]       => health & readied equipment";
2this:update_usage(verb, player, args);
3if ($object_utils:has_callable_verb(player.location, verb))
4  return player.location:(verb)(@args);
5endif
6this.gm_utils:score();

@rpg

Spec any any anyFlags rxdDefiner #15870

Referenced by

none

Source

1"@rpg [limiter]";
2"Lists all Bovine Illuminati online and either wounded, fatigued, or in an RPG-room.";
3"`limiters' should be one of `here' or a list of player names.";
4"An asterisk (*) by a room name means it's an RPG room.";
5people = data = {};
6RPG = $local.rpg;
7gms = $set_utils:difference(RPG.gms, RPG.private_gms);
8dungeon = RPG.dungeon;
9if (!args)
10  people = $set_utils:intersection(connected_players(), RPG.pcs);
11else
12  if (here = "here" in args)
13    args = listdelete(args, here);
14  endif
15  if (args && (!(people = listdelete($command_utils:player_match_result($string_utils:match_player(args), args), 1))))
16    return;
17  endif
18  if (here)
19    people = $set_utils:union(people, player.location:contents());
20  endif
21endif
22if (!people)
23  player:tell("Nobody matches the given limiters.");
24  return E_NONE;
25endif
26for dude in (people)
27  if (valid(doll = RPG:get_doll(dude)))
28    class = (gm = dude in gms) ? "GM" | "PC";
29    where = valid(room = dude.location) ? (dr = (room.owner in gms) && $object_utils:isa(room, dungeon)) ? tostr("* ", room:title(dude)) | tostr("  ", room:title(dude)) | "-- limbo --";
30    status = {doll:get_att("inj") ? "wounded" | "", doll:get_att("ins") ? "fatigued" | ""};
31    try
32      position = $code_utils:verb_or_property(room, "resting", dude) ? "resting" | ($code_utils:verb_or_property(room, "sleeping", dude) ? "sleeping" | "");
33    except (ANY)
34      position = "???";
35    endtry
36    status = {@status, (((agg = this:combatants(dude)) && (doll:get_att("last_action") > (time() - 30))) ? tostr("fighting ", agg[1].name, " ") | "") || position};
37    if (((status = $list_utils:setremove_all(status, "")) || dr) || gm)
38      data = {@data, {class, dude.name, where, ((idletime = `idle_seconds(dude) ! ANY => -1') >= 0) ? this:abbr_time(idletime) | "gone", $string_utils:english_list(status, "")}};
39    endif
40  endif
41  $command_utils:suspend_if_needed(1);
42endfor
43head = {"Cls", "Name", "Location", "Idle", "Status"};
44player:tell_lines(this:graph(head, data, 3, {0, 0, 24}));

ins*pect

Spec any any anyFlags rxDefiner #15870

Referenced by

none

Source

1"ins*pect <character> -- Shows `mirror stats' on given character, plus a list of possible commands executable upon them.";
2this:update_usage(verb, player, args);
3what = dobjstr ? player:my_match_object(dobjstr) | player;
4if ($command_utils:object_match_failed(what, dobjstr))
5  return E_INVARG;
6elseif (!(player in what.location:contents()))
7  player:tell($string_utils:pronoun_sub("You must be in the same room as %n in order to inspect %o.", what));
8  return E_NACC;
9endif
10addb = $local.rpg;
11player:tell(" ", what:title());
12if (valid(addb:get_doll(what)))
13  this.gm_utils:mirror(what);
14  addb:look_health(what);
15  if ((!$object_utils:isa(what, addb.monster)) || (!what.animal))
16    addb:look_gear(what);
17  endif
18else
19  player:tell("( Not of the Bovine Illuminati )");
20endif
21verbs = {};
22v = -1;
23while ((info = verb_info(what, tostr(v = v + 1))) != E_VERBNF)
24  if (((vargs = verb_args(what, tostr(v))) && (vargs != {"this", "none", "this"})) && ("this" in vargs))
25    verbs = {@verbs, tostr("\"", info[3], "\"")};
26  endif
27endwhile
28if (verbs)
29  player:tell("Possible Commands: ", $string_utils:english_list(verbs, "None"));
30endif

@gms @GMS @G_Ms

Spec any none noneFlags rxdDefiner #15870

Referenced by

none

Source

1"@gms      => all connected Game-Masters of the Bovine Illuminati";
2"@gms all  => all Game-Masters";
3"@g_ms     => all connected Grand_Masters: elders of the Bovine Illuminati.";
4"@g_ms all => all Grand_Masters.";
5"@GMS (capitalised) will also show Grand_Masters.";
6this:update_usage(verb, player, args);
7set = strcmp(verb, "@gms") ? (mode = #2693) || $local.rpg.grand_masters | ((mode = #46) || #46.gms);
8if ((!args) || (args[1] != "all"))
9  set = $set_utils:intersection(connected_players(), set);
10endif
11if (set)
12  this.notify_tasks = setadd(this.notify_tasks, task_id());
13  $code_utils:show_who_listing(set);
14  this.notify_tasks = setremove(this.notify_tasks, task_id());
15else
16  player:tell((mode == #2693) ? "None of Grand_Master's incarnations" | "No Game-Masters", " are currently logged in.");
17  player:tell("Use `@G_Ms all' to get the full list.");
18endif

notify tell

Spec this none thisDefiner #15870

Referenced by

none

Source

1if (task_id() in this.notify_tasks)
2  return player:tell(@args);
3endif

graph abbr_time

Spec this none thisDefiner #15870

Referenced by

Source

1return this.quinn_utils:(verb)(@args);

combatants

Spec this none thisDefiner #15870

Referenced by

Source

1return this.gm_utils:(verb)(@args);

pot*ential

Spec any none noneFlags rxdDefiner #15870

Referenced by

none

Source

1"pot";
2"Show your potential for improving random physical and mental attributes.";
3if (!dobjstr)
4  who = player;
5else
6  who = player:my_match_object(dobjstr);
7  if ($match_utils:object_match_failed(who, dobjstr, player.location:contents()))
8  endif
9endif
10this.gm_utils:look_potential(who);

@claimed

Spec any none noneFlags rxdDefiner #15870

Referenced by

none

Source

1"@claimed <character>";
2"Show all RPG objects claimed by the given character.";
3RPG = $local.rpg;
4matched = RPG:match_character(dobjstr || player.name);
5if (RPG:character_match_failed(matched, dobjstr))
6  return;
7endif
8char = matched[1];
9doll = matched[2];
10claimed = doll:claimed_objects();
11if (!claimed)
12  player:tell($string_utils:pronoun_sub("%N %<claims> nothing.", (player == char) ? $you | char));
13  return E_NONE;
14endif
15player:tell($string_utils:pronoun_sub("Objects %n %<has> claimed include:", (player == char) ? $you | char));
16weapon = RPG.weapon;
17armour = RPG.armour;
18for c in (claimed)
19  parents = $object_utils:ancestors(c);
20  if (weapon in parents)
21    flags = "W";
22  elseif (armour in parents)
23    flags = "A";
24  else
25    flags = " ";
26  endif
27  player:tell(tostr("  ", flags, ": ", c:title(), " (", c, ")"));
28endfor
29player:tell(("Total of " + tostr(length(claimed))) + " object(s).");

active_players

Spec this none thisDefiner #15870

Referenced by

Source

1":active_players()";
2"Return a list of active RPG players.  'Active' is defined as a user with a valid RPG doll who is:";
3" wounded, insane, or fatigued, OR";
4" in an RPG dungeon room, OR";
5" fighting within the past 30 seconds";
6rpg = $local.rpg;
7obu = $object_utils;
8dun = rpg.dungeon;
9gms = rpg.gms;
10tim = time() - 30;
11pcs = {};
12for u in (connected_players())
13  if (!valid(doll = rpg:get_doll(u)))
14  elseif (u in gms)
15    pcs = {@pcs, u};
16  elseif (obu:isa(u.location, dun))
17    pcs = {@pcs, u};
18  elseif ((doll:get_att("inj") || doll:get_att("ins")) || doll:get_att("fat"))
19    pcs = {@pcs, u};
20  elseif ((agg = this:combatants(u)) && (doll:get_att("last_action") > tim))
21    pcs = {@pcs, u};
22  endif
23endfor
24return pcs;

@rpg-old

Spec any any anyFlags rxdDefiner #15870

Referenced by

none

Source

1"@rpg [limiter]";
2"Lists all Bovine Illuminati online and either wounded, fatigued, or in an RPG-room.";
3"`limiters' should be one of `here' or a list of player names.";
4"An asterisk (*) by a room name means it's an RPG room.";
5this:update_usage(verb, player, args);
6people = data = {};
7head = {"Cls", "Name", "Location", "Idle", "Status"};
8rpg = $local.rpg;
9gms = rpg.gms;
10if (!args)
11  people = connected_players();
12else
13  if (here = "here" in args)
14    args = listdelete(args, here);
15  endif
16  if (args && (!(people = listdelete($command_utils:player_match_result($string_utils:match_player(args), args), 1))))
17    return;
18  endif
19  if (here)
20    people = $set_utils:union(people, player.location:contents());
21  endif
22endif
23if (!people)
24  player:tell("Nobody matches the given limiters.");
25  return E_NONE;
26endif
27for dude in (people)
28  if (valid(doll = rpg:get_doll(dude)))
29    class = (gm = dude in gms) ? "GM" | "PC";
30    where = valid(room = dude.location) ? (dr = $object_utils:isa(room, rpg.dungeon)) ? tostr("* ", room:title(dude)) | tostr("  ", room:title(dude)) | "-- limbo --";
31    status = {doll:get_att("inj") ? "wounded" | "", doll:get_att("ins") ? "fatigued" | ""};
32    position = $code_utils:verb_or_property(room, "resting", dude) ? "resting" | ($code_utils:verb_or_property(room, "sleeping", dude) ? "sleeping" | "");
33    status = {@status, (((agg = this:combatants(dude)) && (doll:get_att("last_action") > (time() - 30))) ? tostr("fighting ", agg[1].name, " ") | "") || position};
34    if (((status = $list_utils:setremove_all(status, "")) || dr) || gm)
35      data = {@data, {class, dude.name, where, this:abbr_time(idle_seconds(dude)), $string_utils:english_list(status, "")}};
36    endif
37  endif
38  $command_utils:suspend_if_needed(1);
39endfor
40player:tell_lines(this:graph(head, data, 3, {0, 0, 24}));