generic container (#8)(an instance of generic thing made by The_Mayor)VERB SOURCE CODE: p*ut in*sert d*rop:
if ((this.location != player) && (this.location != player.location))
player:tell("You can't get at ", this.name, ".");
elseif (dobj == $nothing)
player:tell("What do you want to put ", prepstr, " ", this.name, "?");
elseif ($command_utils:object_match_failed(dobj, dobjstr))
elseif ((dobj.location != player) && (dobj.location != player.location))
player:tell("You don't have ", dobj.name, ".");
elseif (!this.opened)
player:tell(this.name, " is closed.");
else
set_task_perms(callers() ? caller_perms() | player);
dobj:moveto(this);
if (dobj.location == this)
player:tell(this:put_msg());
if (msg = this:oput_msg())
player.location:announce(player.name, " ", msg);
endif
else
player:tell(this:put_fail_msg());
if (msg = this:oput_fail_msg())
player.location:announce(player.name, " ", msg);
endif
endif
endif
.
re*move ta*ke g*et:
if (!this.opened)
player:tell(this.name, " is not open.");
elseif (this.dark)
player:tell("You can't see into ", this.name, " to remove anything.");
elseif ((dobj = this:match_object(dobjstr)) == $nothing)
player:tell("What do you want to take from ", this.name, "?");
elseif ($command_utils:object_match_failed(dobj, dobjstr))
elseif (!(dobj in this:contents()))
player:tell(dobj.name, " isn't in ", this.name, ".");
else
dobj:moveto(player);
if (dobj.location == player)
player:tell(this:remove_msg());
if (msg = this:oremove_msg())
player.location:announce(player.name, " ", msg);
endif
else
dobj:moveto(this.location);
if (dobj.location == this.location)
player:tell(this:remove_msg());
if (msg = this:oremove_msg())
player.location:announce(player.name, " ", msg);
endif
player:tell("You can't pick up ", dobj.name, ", so it tumbles onto the
floor.");
else
player:tell(this:remove_fail_msg());
if (msg = this:oremove_fail_msg())
player.location:announce(player.name, " ", msg);
endif
endif
endif
endif
.
look_self:
pass();
if (!this.dark)
this:tell_contents();
endif
.
acceptable: return !is_player(args[1]); . open:
perms = (callers() && (caller != this)) ? caller_perms() | player;
if (this.opened)
player:tell("It's already open.");
"elseif (this:is_openable_by(player))";
elseif (this:is_openable_by(perms))
this:set_opened(1);
player:tell(this:open_msg());
if (msg = this:oopen_msg())
player.location:announce(player.name, " ", msg);
endif
else
player:tell(this:open_fail_msg());
if (msg = this:oopen_fail_msg())
player.location:announce(player.name, " ", msg);
endif
endif
.
@lock_for_open:
set_task_perms(player);
key = $lock_utils:parse_keyexp(iobjstr, player);
if (typeof(key) == STR)
player:tell("That key expression is malformed:");
player:tell(" ", key);
else
res = this.open_key = key;
if (typeof(res) == ERR)
player:tell(res, ".");
else
player:tell("Locked opening of ", this.name, " with this key:");
player:tell(" ", $lock_utils:unparse_key(key));
endif
endif
.
is_openable_by: return (this.open_key == 0) || $lock_utils:eval_key(this.open_key, args[1]); . close:
if (!this.opened)
player:tell("It's already closed.");
else
this:set_opened(0);
player:tell(this:close_msg());
if (msg = this:oclose_msg())
player.location:announce(player.name, " ", msg);
endif
endif
.
@unlock_for_open:
set_task_perms(player);
res = dobj.open_key = 0;
if (typeof(res) == ERR)
player:tell(res, ".");
else
player:tell("Unlocked ", dobj.name, " for opening.");
endif
.
tell_contents:
if (this.contents)
player:tell("Contents:");
for thing in (this.contents)
player:tell(" ", thing:title());
endfor
elseif (msg = this:empty_msg())
player:tell(msg);
endif
.
set_opened:
if (!$perm_utils:controls(caller.owner, this))
return E_PERM;
else
this.opened = opened = !(!args[1]);
this.dark = this.opaque > opened;
return opened;
endif
.
@opacity:
if (!$perm_utils:controls(player, this))
player:tell("Can't set opacity of something you don't own.");
elseif ((iobjstr != "0") && (!tonum(iobjstr)))
player:tell("Opacity must be an integer (0, 1, 2).");
else
player:tell("Opacity changed: Now " + {"transparent.", "opaque.", "a black hole."}[1
+ this:set_opaque(tonum(iobjstr))]);
endif
.
set_opaque:
if (!$perm_utils:controls(caller.owner, this))
return E_PERM;
elseif (typeof(number = args[1]) != NUM)
return E_INVARG;
else
number = (number < 0) ? 0 | ((number > 2) ? 2 | number);
this.dark = number > this.opened;
return this.opaque = number;
endif
.
oclose_msg close_msg oopen_msg open_msg oput_fail_msg put_fail_msg oremove_fail_msg oremove_msg remove_fail_msg remove_msg oput_msg put_msg oopen_fail_msg open_fail_msg empty_msg: return (msg = this.(verb)) ? $string_utils:pronoun_sub(msg) | ""; . PROPERTY DATA:       oclose_msg       close_msg       oopen_msg       open_msg       oput_fail_msg       put_fail_msg       opaque       dark       oremove_fail_msg       oremove_msg       remove_fail_msg       remove_msg       oput_msg       put_msg       oopen_fail_msg       open_fail_msg       empty_msg       opened       open_key CHILDREN: wooden box shelf of candles paper bag smorgasbord red vinyl backpack Steamer Trunk cage leather knapsack suitcase a stage trunk little yellow bucket Coffee Machine peepshow Basket a small desk pint_glass pint_glass toybox an empty pizza box envelope a reflective black cabinet Big Box O' Numbers cabinet chamber Test a painting or sense a SOUND Sack of Potatoes oread's niche Birthday Box! envelope |