phantasmal_dgd_v1/
phantasmal_dgd_v1/bin/
phantasmal_dgd_v1/doc/
phantasmal_dgd_v1/mud/doc/
phantasmal_dgd_v1/mud/doc/api/
phantasmal_dgd_v1/mud/doc/kernel/
phantasmal_dgd_v1/mud/doc/kernel/hook/
phantasmal_dgd_v1/mud/doc/kernel/lfun/
phantasmal_dgd_v1/mud/include/
phantasmal_dgd_v1/mud/include/kernel/
phantasmal_dgd_v1/mud/kernel/lib/
phantasmal_dgd_v1/mud/kernel/lib/api/
phantasmal_dgd_v1/mud/kernel/obj/
phantasmal_dgd_v1/mud/kernel/sys/
phantasmal_dgd_v1/mud/tmp/
phantasmal_dgd_v1/mud/usr/System/
phantasmal_dgd_v1/mud/usr/System/keys/
phantasmal_dgd_v1/mud/usr/System/obj/
phantasmal_dgd_v1/mud/usr/System/open/lib/
phantasmal_dgd_v1/mud/usr/common/data/
phantasmal_dgd_v1/mud/usr/common/lib/parsed/
phantasmal_dgd_v1/mud/usr/common/obj/telopt/
phantasmal_dgd_v1/mud/usr/common/obj/ustate/
phantasmal_dgd_v1/mud/usr/game/
phantasmal_dgd_v1/mud/usr/game/include/
phantasmal_dgd_v1/mud/usr/game/obj/
phantasmal_dgd_v1/mud/usr/game/object/
phantasmal_dgd_v1/mud/usr/game/object/stuff/
phantasmal_dgd_v1/mud/usr/game/sys/
phantasmal_dgd_v1/mud/usr/game/text/
phantasmal_dgd_v1/mud/usr/game/users/
phantasmal_dgd_v1/src/host/
phantasmal_dgd_v1/src/host/beos/
phantasmal_dgd_v1/src/host/mac/
phantasmal_dgd_v1/src/host/unix/
phantasmal_dgd_v1/src/host/win32/res/
phantasmal_dgd_v1/src/kfun/
phantasmal_dgd_v1/src/lpc/
phantasmal_dgd_v1/src/parser/
#include <phantasmal/lpc_names.h>

#include <type.h>

inherit USER_STATE;

private int    init;

private string func_name;
private object obj_to_set;
private int    locale;

static void create(varargs int clone) {
  ::create();
  if(clone) {
    init = 0;
  }
}

void set_up_func(varargs object obj, string desctype, int desc_loc) {
  obj_to_set = obj;
  func_name = desctype;
  locale = desc_loc;
  init = 1;
}

int from_user(string output) {
  error("From_user called in set_obj_desc func!");
}

void pass_data(mixed data) {
  object phr;

  if(typeof(data) == T_NIL) {
    ::pass_data(nil);   /* Request user obj to print prompt */
    pop_state();
    return;
  }

  if(!typeof(data) == T_STRING) {
    error("Incorrect data type in set_obj_desc user state!");
  }

  data = STRINGD->trim_whitespace(data);
  phr = call_other(obj_to_set, "get_" + func_name);

  if(!phr || (func_name == "examine" && phr == obj_to_set->get_look())) {
    phr = PHRASED->new_simple_english_phrase("CHANGE ME!");
    call_other(obj_to_set, "set_" + func_name, phr);
  }
  phr->set_content_by_lang(locale, data);

  send_string("Set " + func_name + " description.\n");

  pop_state();
}