/* object command, trial out by Turrican for a commands daemon. */ /* obvar stuff -> Ember 12/4/93 */ /* obvar changed slighty by pinkfish... 17/4/93 (New call syntax added) */ #include <creator.h> inherit COMMAND_BASE; mixed cmd(string str) { int i, j, cols; string obvarname, start, end; mixed *names, *objects; if (str) { if (sscanf(str, "%s=%s", obvarname, str) != 2) return notify_fail("USAGE: object ObVarName=ObjectSpec\n"); notify_fail("Can't find object.\n"); objects = WIZ_PRESENT->wiz_present(str, this_player()); if (!sizeof(objects)) return 0; if (sizeof(objects) > 1) write("Only using first object of several matched.\n"); this_player()->set_obvar(obvarname, objects[0]); write("Var "+obvarname+" now attached to "+ WIZ_PRESENT->desc_object(objects[0])+".\n"); return 1; } objects = m_values((mapping)this_player()->get_obvars()); names = m_indices((mapping)this_player()->get_obvars()); j = sizeof(objects); cols = this_player()->query_cols(); for (i=0; i<sizeof(objects); i++) { if (!objects[i]) { j--; this_player()->del_obvar(names[i]); break; } if (objectp(names[i])) start = WIZ_PRESENT->desc_object(names[i]); else start = sprintf("%O", names[i]); if (objectp(objects[i])) end = WIZ_PRESENT->desc_object(objects[i]); else { /* Need to do something cunning... */ end = sprintf("%O", objects[i]); end = replace(end, "\n", ""); } printf("%s; %*-=s\n", start, cols-strlen(start)-2, end); } if (!j) write("No obvars set.\n"); return 1; }