Monster Maker #138

Parent #8Owner #36Flags read, fertileSource RPG Core/rpgcore-patched.db

Aliases: Monster Maker, breeder

8 verbs · 45 properties · 1 children

Verbs

VerbSpecFlagsDefinerLines
acceptablethis none thisrxd#1384
breedthis none thisrxd#13826
cullthis none thisrxd#13822
tellthis none thisrxd#1384
group_boogunsthis none thisrxd#13835
resetthis none nonerd#1385
init_for_corethis none thisrxd#13817
announce_all_butthis none thisrxd#1380

Properties

PropertyDefinerFlagsOwnerValue
rooms_to_check#138rc#36{}
breeding#138r#20
my_tell#138r#21
cull_task#138r#20
pause#138rc#3615
monster_owner#138rc#36#36
oclose_msg#8rc#36<clear>
close_msg#8rc#36<clear>
oopen_msg#8rc#36<clear>
open_msg#8rc#36<clear>
oput_fail_msg#8rc#36<clear>
put_fail_msg#8rc#36<clear>
opaque#8r#2<clear>
dark#8r#2<clear>
oremove_fail_msg#8rc#36<clear>
oremove_msg#8rc#36<clear>
remove_fail_msg#8rc#36<clear>
remove_msg#8rc#36<clear>
oput_msg#8rc#36<clear>
put_msg#8rc#36<clear>
oopen_fail_msg#8rc#36<clear>
open_fail_msg#8rc#36<clear>
empty_msg#8rc#36<clear>
opened#8r#2<clear>
open_key#8c#36<clear>
drop_failed_msg#5rc#36<clear>
drop_succeeded_msg#5rc#36<clear>
odrop_failed_msg#5rc#36<clear>
odrop_succeeded_msg#5rc#36<clear>
otake_succeeded_msg#5rc#36<clear>
otake_failed_msg#5rc#36<clear>
take_succeeded_msg#5rc#36<clear>
take_failed_msg#5rc#36<clear>
value_base#102r#2<clear>
damage_base#102r#2<clear>
x_loc#102r#36<clear>
y_loc#102r#36<clear>
ansi_title#102r#36<clear>
obvious#102r#36<clear>
build_help#102rc#36
list of 4{"Put replicating monsters in this item to have them randomly generated for use in player encounters.", "This object is triggered by a breeder relay. See \"help $breeder_relay\" and \"help replicating_monster\" for more details.", "@set breeder.rooms_to_check to a list of room #'s to check for activity. If the rooms are empty, the breeder will begin recycling the monsters.", "@set breeder.monster_owner to a builder character with a high quota. IF THE BREEDER STOPS WORKING, THE MONSTER_OWNER MAY BE OVER QUOTA."}
key#1c#360
aliases#1rc#36{"Monster Maker", "breeder"}
description#1rc#36<clear>
object_size#1r#36{6593, -1090650497}
html#1rc#36<clear>

Ancestry

Ancestors (nearest first): #8 generic container#5 generic thing#102 subthing#1 Root Class

Children: #160 a gaping hole in the fabric of space

Call graph

calls n138_0 #138:acceptable n52_5 #52:isa n138_0->n52_5 n138_1 #138:breed n63_2 #63:_create n138_1->n63_2 n99_4 #99:valid_task n138_1->n99_4 n99_17 #99:schedule n138_1->n99_17 n138_2 #138:cull n138_2->n99_4 n138_2->n99_17 n138_3 #138:tell n138_3->n138_1 n1_12 #1:tell n138_3->n1_12 n138_4 #138:group_booguns n138_4->n52_5 n55_16 #55:slice n138_4->n55_16 n20_6 #20:english_list n138_4->n20_6 n138_5 #138:reset n6_18 #6:tell n138_5->n6_18 n138_6 #138:init_for_core n102_1 #102:init_for_core n138_6->n102_1

Source

acceptable

Spec this none thisFlags rxdOwner #2Definer #138

Referenced by

none

Source

1if ($object_utils:isa(args[1], $replicating_monster))
2return 1;
3endif
4return 0;

breed

Spec this none thisFlags rxdOwner #2Definer #138

Referenced by

Source

1"wiz-owned";
2this.my_tell = 1;
3mama = this.contents[random($)];
4total_chirrens = length(children(mama));
5make = ((q = mama.child_limit - total_chirrens) > 0) ? random(q) | 0;
6if (make)
7this.breeding = 1;
8for n in [1..make]
9monster = $recycler:_create(mama, this.monster_owner);
10monster.home = this.location;
11monster.name = mama.name;
12monster.aliases = mama.aliases;
13monster.x_loc = this.x_loc;
14monster.y_loc = this.y_loc;
15monster:birth();
16suspend(this.pause);
17monster.countdown_til_stop = random(10) + 10;
18monster.wander_ok = 1;
19monster:plan_next_move();
20endfor
21endif
22if (!$scheduler:valid_task(this.cull_task))
23this.cull_task = $scheduler:schedule(mama.lifespan, this, "cull");
24endif
25this.breeding = 0;
26this.my_tell = 0;

cull

Spec this none thisFlags rxdOwner #2Definer #138

Referenced by

none

Source

1"wiz-owned";
2this.my_tell = 1;
3for p in (connected_players())
4if (p.location in this.rooms_to_check)
5if ($scheduler:valid_task(this.cull_task))
6$scheduler:kill_task(this.cull_task);
7endif
8return this.cull_task = $scheduler:schedule(60, this, "cull");
9endif
10endfor
11for mama in (this.contents)
12all_chirrens = children(mama);
13if (all_chirrens)
14for c in (all_chirrens)
15if ((!c.f) && c.alive)
16c:die();
17endif
18suspend(5);
19endfor
20endif
21endfor
22this.my_tell = 0;

tell

Spec this none thisFlags rxdOwner #2Definer #138

Referenced by

none

Source

1if ((((!this.my_tell) && (!this.breeding)) && (player.location == this.location)) && (player in connected_players()))
2this:breed();
3endif
4pass(@args);

group_booguns

Spec this none thisFlags rxdOwner #2Definer #138

Referenced by

Source

1players = args[1];
2booguns = {};
3normals = players;
4for p in (players)
5if ($object_utils:isa(p, $replicating_monster))
6if (i = p.plural_name in $list_utils:slice(booguns))
7booguns[i][2] = booguns[i][2] + 1;
8else
9booguns = {@booguns, {p.plural_name, 1}};
10endif
11endif
12endfor
13(ticks_left() < 6000) && suspend(0);
14for p in (players)
15if ($object_utils:isa(p, $replicating_monster))
16if ((i = p.plural_name in $list_utils:slice(booguns)) && (booguns[i][2] > 1))
17normals = setremove(normals, p);
18else
19booguns = setremove(booguns, booguns[i]);
20endif
21endif
22endfor
23(ticks_left() < 4000) && suspend(0);
24if (booguns)
25theps = {};
26for t in (booguns)
27theps = {@theps, (tostr(t[2]) + " ") + t[1]};
28endfor
29for t in (normals)
30theps = {@theps, t:title()};
31endfor
32return $string_utils:english_list(theps) + " are here.";
33else
34return tostr($string_utils:title_listc(players), (length(players) == 1) ? " " + $gender_utils:get_conj("is", players[1]) | " are", " here.");
35endif

reset

Spec this none noneFlags rdOwner #2Definer #138

Referenced by

none

Source

1if (player.programmer || (player == this.owner))
2this.my_tell = 0;
3this.breeding = 0;
4player:tell("Reset.");
5endif

init_for_core

Spec this none thisFlags rxdOwner #2Definer #138

Referenced by

none

Source

1if (caller_perms().wizard)
2if (this == $breeder)
3this.rooms_to_check = {};
4this.breeding = 0;
5this.my_tell = 1;
6this.cull_task = 0;
7this.pause = 15;
8this.monster_owner = $hacker;
9else
10for p in (properties($breeder))
11if ((!p) in {"build_help", "help_msg"})
12clear_property(this, p);
13endif
14endfor
15endif
16return pass(@args);
17endif

announce_all_but

Spec this none thisFlags rxdOwner #36Definer #138

Referenced by

none

Source

No program (verb defined but unprogrammed).