final_realms_fluffos_v1/
final_realms_fluffos_v1/bin/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/ChangeLog.old/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/Win32/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/compat/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/compat/simuls/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/include/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/clone/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/command/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/data/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/etc/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/include/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/inherit/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/inherit/master/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/log/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/compiler/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/efuns/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/operators/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/u/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/tmp/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/windows/
final_realms_fluffos_v1/lib/baseobs/guilds/
final_realms_fluffos_v1/lib/baseobs/misc/
final_realms_fluffos_v1/lib/baseobs/races/shadows/
final_realms_fluffos_v1/lib/cmds/god/
final_realms_fluffos_v1/lib/cmds/handlers/
final_realms_fluffos_v1/lib/cmds/handlers/cmds/
final_realms_fluffos_v1/lib/d/heaven/
final_realms_fluffos_v1/lib/d/heaven/heaven/ave/
final_realms_fluffos_v1/lib/d/mudlib/
final_realms_fluffos_v1/lib/d/newbie/
final_realms_fluffos_v1/lib/d/newbie/docs/
final_realms_fluffos_v1/lib/d/newbie/drow/armour/
final_realms_fluffos_v1/lib/d/newbie/drow/items/
final_realms_fluffos_v1/lib/d/newbie/drow/mobs/
final_realms_fluffos_v1/lib/d/newbie/drow/oldmobs/
final_realms_fluffos_v1/lib/d/newbie/drow/weapons/
final_realms_fluffos_v1/lib/d/newbie/duergar/weapons/
final_realms_fluffos_v1/lib/d/newbie/dwarf/weapons/
final_realms_fluffos_v1/lib/d/newbie/elf/cafe/
final_realms_fluffos_v1/lib/d/newbie/elf/chars/equip/
final_realms_fluffos_v1/lib/d/newbie/elf/items/armours/
final_realms_fluffos_v1/lib/d/newbie/elf/items/obj/
final_realms_fluffos_v1/lib/d/newbie/elf/items/weapons/
final_realms_fluffos_v1/lib/d/newbie/elf/quick_fix/
final_realms_fluffos_v1/lib/d/newbie/gnome/armour/
final_realms_fluffos_v1/lib/d/newbie/gnome/buildings/
final_realms_fluffos_v1/lib/d/newbie/gnome/items/
final_realms_fluffos_v1/lib/d/newbie/gnome/npcs/clones/
final_realms_fluffos_v1/lib/d/newbie/gnome/rooms/northrooms/
final_realms_fluffos_v1/lib/d/newbie/gnome/weapons/
final_realms_fluffos_v1/lib/d/newbie/goblin/armour/
final_realms_fluffos_v1/lib/d/newbie/goblin/items/
final_realms_fluffos_v1/lib/d/newbie/grads/log/
final_realms_fluffos_v1/lib/d/newbie/grads/npcs/
final_realms_fluffos_v1/lib/d/newbie/grads/rooms/
final_realms_fluffos_v1/lib/d/newbie/grads/rooms/cave1/
final_realms_fluffos_v1/lib/d/newbie/grads/temp/
final_realms_fluffos_v1/lib/d/newbie/guests/weapons/
final_realms_fluffos_v1/lib/d/newbie/half-elf/items/
final_realms_fluffos_v1/lib/d/newbie/half-elf/newroomss/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/castle/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/drows/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/savannah/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/secret/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/town/
final_realms_fluffos_v1/lib/d/newbie/halfling/
final_realms_fluffos_v1/lib/d/newbie/halfling/misc/
final_realms_fluffos_v1/lib/d/newbie/halfling/rooms/cave/
final_realms_fluffos_v1/lib/d/newbie/human/
final_realms_fluffos_v1/lib/d/newbie/human/armour/
final_realms_fluffos_v1/lib/d/newbie/human/monsters/
final_realms_fluffos_v1/lib/d/newbie/human/obj/
final_realms_fluffos_v1/lib/d/newbie/human/weapons/
final_realms_fluffos_v1/lib/d/newbie/lizard/armour/
final_realms_fluffos_v1/lib/d/newbie/lizard/items/
final_realms_fluffos_v1/lib/d/newbie/lizard/underwater/
final_realms_fluffos_v1/lib/d/newbie/lizard/weapons/
final_realms_fluffos_v1/lib/d/newbie/logs/
final_realms_fluffos_v1/lib/d/newbie/new_halfelf/
final_realms_fluffos_v1/lib/d/newbie/new_halfelf/npcs/
final_realms_fluffos_v1/lib/d/newbie/newdrow/npcs/
final_realms_fluffos_v1/lib/d/newbie/newdrow/rooms/
final_realms_fluffos_v1/lib/d/newbie/newelf/
final_realms_fluffos_v1/lib/d/newbie/newelf/chars/
final_realms_fluffos_v1/lib/d/newbie/newelf/npcs/
final_realms_fluffos_v1/lib/d/newbie/newelf/npcs/recopied/
final_realms_fluffos_v1/lib/d/newbie/newelf/obj/
final_realms_fluffos_v1/lib/d/newbie/newelf/quest_docs./
final_realms_fluffos_v1/lib/d/newbie/newken/
final_realms_fluffos_v1/lib/d/newbie/newken/chars/
final_realms_fluffos_v1/lib/d/newbie/newken/misc/
final_realms_fluffos_v1/lib/d/newbie/newken/npcs/
final_realms_fluffos_v1/lib/d/newbie/newken/obj/
final_realms_fluffos_v1/lib/d/newbie/newliz/
final_realms_fluffos_v1/lib/d/newbie/newliz/cave/
final_realms_fluffos_v1/lib/d/newbie/newliz/npcs/
final_realms_fluffos_v1/lib/d/newbie/orc/items/misc/
final_realms_fluffos_v1/lib/d/newbie/orc/items/weapons/
final_realms_fluffos_v1/lib/d/newbie/orc/tower/
final_realms_fluffos_v1/lib/d/vehicle/
final_realms_fluffos_v1/lib/doc/
final_realms_fluffos_v1/lib/doc/driver/
final_realms_fluffos_v1/lib/doc/driver/concepts/
final_realms_fluffos_v1/lib/doc/driver/driver/
final_realms_fluffos_v1/lib/doc/driver/efuns/arrays/
final_realms_fluffos_v1/lib/doc/driver/efuns/bitstrings/
final_realms_fluffos_v1/lib/doc/driver/efuns/communication/
final_realms_fluffos_v1/lib/doc/driver/efuns/core/
final_realms_fluffos_v1/lib/doc/driver/efuns/debugging/
final_realms_fluffos_v1/lib/doc/driver/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/driver/efuns/interactive/
final_realms_fluffos_v1/lib/doc/driver/efuns/mappings/
final_realms_fluffos_v1/lib/doc/driver/efuns/objects/
final_realms_fluffos_v1/lib/doc/driver/efuns/security/
final_realms_fluffos_v1/lib/doc/driver/efuns/strings/
final_realms_fluffos_v1/lib/doc/driver/efuns/system/
final_realms_fluffos_v1/lib/doc/driver/efuns/types/
final_realms_fluffos_v1/lib/doc/driver/lpc/constructs/
final_realms_fluffos_v1/lib/doc/driver/lpc/types/
final_realms_fluffos_v1/lib/doc/driver/platforms/
final_realms_fluffos_v1/lib/doc/lpc/
final_realms_fluffos_v1/lib/doc/mail/
final_realms_fluffos_v1/lib/doc/man/
final_realms_fluffos_v1/lib/doc/man/html/
final_realms_fluffos_v1/lib/doc/man/html/applies/
final_realms_fluffos_v1/lib/doc/man/html/applies/parsing/
final_realms_fluffos_v1/lib/doc/man/html/driver/
final_realms_fluffos_v1/lib/doc/man/html/efuns/
final_realms_fluffos_v1/lib/doc/man/html/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/html/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/html/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/html/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/html/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/html/efuns/general/
final_realms_fluffos_v1/lib/doc/man/html/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/html/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/local/
final_realms_fluffos_v1/lib/doc/man/local/applies/
final_realms_fluffos_v1/lib/doc/man/local/applies/interactive/
final_realms_fluffos_v1/lib/doc/man/local/applies/master/
final_realms_fluffos_v1/lib/doc/man/local/concepts/
final_realms_fluffos_v1/lib/doc/man/local/defines/
final_realms_fluffos_v1/lib/doc/man/local/driver/
final_realms_fluffos_v1/lib/doc/man/local/efuns/
final_realms_fluffos_v1/lib/doc/man/local/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/local/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/local/efuns/calls/
final_realms_fluffos_v1/lib/doc/man/local/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/local/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/man/local/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/local/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/local/efuns/general/
final_realms_fluffos_v1/lib/doc/man/local/efuns/interactive/
final_realms_fluffos_v1/lib/doc/man/local/efuns/internals/
final_realms_fluffos_v1/lib/doc/man/local/efuns/mappings/
final_realms_fluffos_v1/lib/doc/man/local/efuns/mudlib/
final_realms_fluffos_v1/lib/doc/man/local/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/local/efuns/objects/
final_realms_fluffos_v1/lib/doc/man/local/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/local/efuns/sockets/
final_realms_fluffos_v1/lib/doc/man/local/efuns/strings/
final_realms_fluffos_v1/lib/doc/man/local/efuns/system/
final_realms_fluffos_v1/lib/doc/man/local/historical/
final_realms_fluffos_v1/lib/doc/man/local/lfun/QC/
final_realms_fluffos_v1/lib/doc/man/local/lfun/events/
final_realms_fluffos_v1/lib/doc/man/local/lfun/monster/
final_realms_fluffos_v1/lib/doc/man/local/lfun/properties/
final_realms_fluffos_v1/lib/doc/man/local/lpc/
final_realms_fluffos_v1/lib/doc/man/local/lpc/constructs/
final_realms_fluffos_v1/lib/doc/man/local/lpc/types/
final_realms_fluffos_v1/lib/doc/man/local/standards/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/basic/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/intermediate/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/interactive/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/parsing/
final_realms_fluffos_v1/lib/doc/man/mudos/concepts/
final_realms_fluffos_v1/lib/doc/man/mudos/driver/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/calls/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/general/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mappings/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mixed/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mudlib/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/mudos/lpc/constructs/
final_realms_fluffos_v1/lib/doc/man/mudos/lpc/types/
final_realms_fluffos_v1/lib/doc/races/
final_realms_fluffos_v1/lib/doc/races/old_race/
final_realms_fluffos_v1/lib/global/virtual/
final_realms_fluffos_v1/lib/global/wiz_backup/
final_realms_fluffos_v1/lib/net/config/
final_realms_fluffos_v1/lib/net/daemon/chars/
final_realms_fluffos_v1/lib/net/inherit/
final_realms_fluffos_v1/lib/net/intermud3/
final_realms_fluffos_v1/lib/net/intermud3/cmds/
final_realms_fluffos_v1/lib/net/intermud3/save/
final_realms_fluffos_v1/lib/net/intermud3/services/
final_realms_fluffos_v1/lib/net/obj/
final_realms_fluffos_v1/lib/net/old/
final_realms_fluffos_v1/lib/net/old/intermud/
final_realms_fluffos_v1/lib/net/old/intermud/adm/
final_realms_fluffos_v1/lib/net/old/intermud/services/
final_realms_fluffos_v1/lib/net/old/intermud/udp/
final_realms_fluffos_v1/lib/net/virtual/
final_realms_fluffos_v1/lib/obj/b_day/
final_realms_fluffos_v1/lib/obj/chars/
final_realms_fluffos_v1/lib/obj/handlers/lists/
final_realms_fluffos_v1/lib/obj/handlers/useless/
final_realms_fluffos_v1/lib/obj/monsters/
final_realms_fluffos_v1/lib/obj/roomgen/
final_realms_fluffos_v1/lib/obj/soul/
final_realms_fluffos_v1/lib/obj/vegetation/
final_realms_fluffos_v1/lib/obj/weapons/oldsys/
final_realms_fluffos_v1/lib/open/
final_realms_fluffos_v1/lib/players/g/
final_realms_fluffos_v1/lib/releasefiles/d/heaven/
final_realms_fluffos_v1/lib/releasefiles/d/mudlib/
final_realms_fluffos_v1/lib/releasefiles/d/newbie/
final_realms_fluffos_v1/lib/releasefiles/doc/
final_realms_fluffos_v1/lib/releasefiles/players/g/
final_realms_fluffos_v1/lib/releasefiles/save/
final_realms_fluffos_v1/lib/releasefiles/save/environ/
final_realms_fluffos_v1/lib/releasefiles/save/roomgen/
final_realms_fluffos_v1/lib/releasefiles/secure/
final_realms_fluffos_v1/lib/releasefiles/w/
final_realms_fluffos_v1/lib/releasefiles/w/god/
final_realms_fluffos_v1/lib/room/
final_realms_fluffos_v1/lib/save/
final_realms_fluffos_v1/lib/save/environ/
final_realms_fluffos_v1/lib/save/roomgen/
final_realms_fluffos_v1/lib/scripts/
final_realms_fluffos_v1/lib/secure/crerem/
final_realms_fluffos_v1/lib/secure/dom/
final_realms_fluffos_v1/lib/secure/log/
final_realms_fluffos_v1/lib/secure/misc/
final_realms_fluffos_v1/lib/std/adnd/
final_realms_fluffos_v1/lib/std/commands/shadows/
final_realms_fluffos_v1/lib/std/creator/
final_realms_fluffos_v1/lib/std/curses/
final_realms_fluffos_v1/lib/std/curses/old_sys/
final_realms_fluffos_v1/lib/std/curses/shadows/
final_realms_fluffos_v1/lib/std/dom/
final_realms_fluffos_v1/lib/std/effects/
final_realms_fluffos_v1/lib/std/effects/healing/
final_realms_fluffos_v1/lib/std/effects/other/
final_realms_fluffos_v1/lib/std/effects/poisons/
final_realms_fluffos_v1/lib/std/environ/
final_realms_fluffos_v1/lib/std/guilds/
final_realms_fluffos_v1/lib/std/guilds/priests/samples/
final_realms_fluffos_v1/lib/std/guilds/wizards/
final_realms_fluffos_v1/lib/std/living/baldy/
final_realms_fluffos_v1/lib/std/living/divstuff/
final_realms_fluffos_v1/lib/std/paran/
final_realms_fluffos_v1/lib/std/poisons/
final_realms_fluffos_v1/lib/std/poisons/shadows/
final_realms_fluffos_v1/lib/std/poisons/weapons/
final_realms_fluffos_v1/lib/std/race_groups/
final_realms_fluffos_v1/lib/std/room/
final_realms_fluffos_v1/lib/std/room/old/
final_realms_fluffos_v1/lib/std/rooms/
final_realms_fluffos_v1/lib/std/shadows/
final_realms_fluffos_v1/lib/std/shadows/test_shad/
final_realms_fluffos_v1/lib/std/socket/
final_realms_fluffos_v1/lib/std/spells/
final_realms_fluffos_v1/lib/std/vaults/
final_realms_fluffos_v1/lib/tmp/
final_realms_fluffos_v1/lib/w/
final_realms_fluffos_v1/lib/w/god/
final_realms_fluffos_v1/old/
final_realms_fluffos_v1/win32/
#include "weapon.h"
#include "armory.h"
inherit "/std/object";

#define CHECK if (!str || str == "") {\
                write("Aborted.\n");\
                do_next(); \
                return 1;\
              }

int do_next();
int edit_array();

int in_add,
    up_to,
    weapon;
string add_id,
       array_name,
       kind;
string thing_name, end_command;
mixed *data_array,
      tmp,
      *desc_array;

void setup() {
  reset_drop();
  set_name("adder");
  set_short("armory adder");
  add_adjective("armory");
  set_main_plural("armory adders");
  add_plural("adders");
  set_weight(40);
}

void setup_array()
{
  desc_array = ({
"What name do you want your "+kind+" to be called in the armory?\n"+
"Id : ", "get_id", 0,
"What name do you want to give your "+kind+" (NB: used the tables) ?\n"+
"Name : ", "get_name", 0,
"Please add any aliases you want.  Return on a blank line to end.\n"+
"Alias : ", "get_alias", "edit_alias",
"Please add any plurals you want.  Return on a blank line to end.\n"+
"Plural : ", "get_plural", "edit_plural",
"Please add any adjectives you want for your "+kind+".\n"+
"Adjective : ", "get_adjective", "edit_adjective",
"What is the short description of the "+kind+" ?\n"+
"Short : ", "get_short", 0,
"Just press return on the next line.  Input to it is ignored.\n"+
"What is the long description of the object (Entering ed)?\n",
"get_long", 0,
});
} /* setup_array */

void init() {
::init();
add_action("add", "add");
add_action("edit", "edit");
}

int add(string str) 
{
  kind = str;
  if (str != "weapon" && str != "armor") 
  {
     notify_fail("Usage: add <armor|weapon>\n");
     return 0;
  }
  setup_array();
  weapon = (str == "weapon");
  if(weapon)
     data_array = allocate(WEAP_A_SIZE + 1);
  else
     data_array = allocate(ARM_A_SIZE + 1);
  in_add = 1;
  up_to = -1;
/* I put the new improved method of handling it in here. */
  do_next();
  return 1;
}

int edit(string str) 
{
  if (str != "weapon" && str != "armor") 
  {
     notify_fail("Usage: edit <armor|weapon>\n");
     return 0;
  }
  weapon = (str == "weapon");
  write("What id of "+str+" do you wish to edit ? ");
  input_to("get_id");
  in_add = 0;
  data_array = 0;
  return 1;
}

int print_menu() {
string menu;
menu =  "a : Id\nb : Object Name\nc : Name\nd : Alias\ne : Plural\n"+
  "f : Adjective\ng : Short\nh : Long\n";
printf("%#*-s\n", this_player()->query_cols(), menu+"Quit\nSave\nMenu\n");
}

int do_next() 
{
  up_to ++;
  if (!data_array)
    if (in_add) 
    {
      write("Serious error.\n");
      return 1;
    } 
  else 
  {
      if (weapon)
        data_array = (mixed *)ARMORY->query_weapon(add_id);
      else
        data_array = (mixed *)ARMORY->query_armor(add_id);
      if (!data_array) 
      {
        write("Invalid armor/weapon name "+add_id+"\n");
        return 1;
      }
  }
  
  if (up_to >= sizeof(data_array))
      in_add = 0;
  if (!in_add) 
  {
    print_menu();
    write("Selection : ");
    input_to("do_choice");
    return 1;
  }
  if (!pointerp(desc_array[up_to*3])) 
  {
    if (data_array[up_to])
       printf("Is currently set to : %O\n", data_array[up_to]);
    write(desc_array[up_to*3]);
    input_to(desc_array[up_to*3+1]);
    return 1;
  } 
  
  else 
  {
    if (data_array[up_to])
       printf("Is currently set to : %O\n", data_array[up_to]);
    write(desc_array[up_to*3][weapon]);
    input_to(desc_array[up_to*3+1][weapon]);
    return 1;
  }
}

int do_choice(string str) {
  int i;

  str = lower_case(str);
  if (str == "menu") {
    print_menu();
    write("Selection : ");
    input_to("do_choice");
    return 1;
  }
  if (str == "quit") {
    write("Quitting.\n");
    return 1;
  }
  if (str == "save") {
    write("Saving.\n");
    if (weapon)
      ARMORY->add_weapon(add_id, data_array);
    else
      ARMORY->add_armor(add_id, data_array);
    return 1;
  }
  if (str[0] < 'a' || str[0] > 'n') {
    write("Invalid choice, try agian. (Menu to redraw menu)\n");
    write("Selection : ");
    input_to("do_choice");
    return 1;
  }
  i = str[0] - 'a';
  if (pointerp(desc_array[i*3])) {
    if (data_array[i])
      printf("Is currently set to : %O\n", data_array[i]);
    write(desc_array[i*3][weapon]);
    if (!desc_array[i*3+2][weapon])
      input_to(desc_array[i*3+1][weapon]);
    else
      call_other(this_object(), desc_array[i*3+2][weapon]);
  } else {
    if (data_array[i])
      printf("Is currently set to : %O\n", data_array[i]);
    write(desc_array[i*3]);
    if (!desc_array[i*3+2])
      input_to(desc_array[i*3+1]);
    else
      call_other(this_object(), desc_array[i*3+2]);
  }
  return 1;
}

int get_id(string str) {
  CHECK
  add_id = str;
  do_next();
  return 1;
}

int get_name(string str) {
  int *data;
  CHECK
  if(weapon)
  {
   if(!(data = "/table/weapon_table"->lookup_weapon_data(str)))
   {
    write("Illegal name "+str+" for your weapon.  Fatal error, aborting.\n");
    return 0;
   }  
  }
  else
   if(!(data = "/table/armor_table"->lookup_armor_data(str)))
   {
    write("Illegal name "+str+" for your armor. Fatal error, aborting.\n");
    return 0;
   }
  data_array[W_NAME] = str;
  do_next();
  return 1;
}


int get_short(string str) {
  CHECK
  data_array[W_SHORT] = str;
  do_next();
  return 1;
}

int get_long() {
  if (!data_array[W_LONG])
    data_array[W_LONG] = "";
  seteuid("tmp");
  rm("/tmp/long-"+this_player()->query_name());
  write_file("/tmp/long-"+this_player()->query_name(),
               sprintf("%-=*s", this_player()->query_cols(), data_array[W_LONG]));
  ed("/tmp/long-"+this_player()->query_name(), "end_long");
  return 1;
}

int end_long() {

  data_array[W_LONG] = read_file("/tmp/long-"+this_player()->query_name());
  data_array[W_LONG] = implode(explode(data_array[W_LONG],"\n")," ")+"\n";
  rm("/tmp/long-"+this_player()->query_name());
  seteuid("Room");
  do_next();
  return 1;
}

int get_alias(string str) {
  if (!tmp)
    tmp = ({ });
  if (!str || str == "") {
    data_array[W_ALIAS] = tmp;
    tmp = 0;
    do_next();
    return 1;
  }
  tmp += ({ str });
  write("Alias "+(sizeof(tmp)+1)+" : ");
  input_to("get_alias");
  return 1;
}

int edit_alias(string str) {
  thing_name = "aliases";
  end_command = "end_aliases";
  tmp = data_array[W_ALIAS];
  edit_array();
  return 1;
}

int end_aliases() {
  if (tmp)
    data_array[W_ALIAS] = tmp;
  tmp = 0;
  do_next();
  return 1;
}

int get_plural(string str) {
  if (!tmp)
    tmp = ({ });
  if (!str || str == "") {
    data_array[W_PLURALS] = tmp;
    tmp = 0;
    do_next();
    return 1;
  }
  tmp += ({ str });
  write("Plural "+(sizeof(tmp)+1)+" : ");
  input_to("get_plural");
  return 1;
}

int edit_plural(string str) {
  thing_name = "aliases";
  end_command = "end_plural";
  tmp = data_array[W_PLURALS];
  edit_array();
  return 1;
}

int end_plural() {
  if (tmp)
    data_array[W_PLURALS] = tmp;
  tmp = 0;
  do_next();
  return 1;
}

int get_adjective(string str) {
  if (!tmp)
    tmp = ({ });
  if (!str || str == "") {
    data_array[W_ADJ] = tmp;
    tmp = 0;
    do_next();
    return 1;
  }
  tmp += ({ str });
  write("Adjective "+(sizeof(tmp)+1)+" : ");
  input_to("get_adjective");
  return 1;
}

int edit_adjective(string str) {
  thing_name = "aliases";
  end_command = "end_adjectives";
  tmp = data_array[W_ADJ];
  edit_array();
  return 1;
}

int end_adjectives() {
  if (tmp)
    data_array[W_ADJ] = tmp;
  tmp = 0;
  do_next();
  return 1;
}

mixed get_val(string str) {
  int fixed, rand, die;

  if (sscanf(str, "%d+%dd%d", fixed, rand, die) == 3)
    return ({ fixed, rand, die });
  if (sscanf(str, "%d+%d", fixed, rand) == 2)
    if (rand)
      return ({ fixed, rand });
    else
      return ({ fixed });
  sscanf(str, "%d", rand);
  return rand;
}

int edit_array() {
  int i;

  for (i=0;i<sizeof(tmp);i++)
    printf("%2d %s\n", i, tmp[i]);
  write("Do you want to (A)dd, (R)emove, (C)hange, (Q)uit or (S)ave ? ");
  input_to("get_thingy");
  return 1;
}

int do_add_thing() {
  write("What "+thing_name+" do you wish to add ? ");
  input_to("get_add_thing");
  return 1;
}

int get_add_thing(string str) {
  if (!str || str == "")
    return edit_array();
  tmp += ({ str });
  write("Ok added "+str+" to "+thing_name+" list.\n");
  do_add_thing();
  return 1;
}

int do_remove_thing() {
  write("Which "+thing_name+" do you wish to remove (number or string) ? ");
  input_to("get_remove_thing");
  return 1;
}

int get_remove_thing(string str) {
  int i;

  if (!str || str == "")
    return edit_array();
  if (sscanf(str, "%d", i) == 1)
    if (i>=0 && i<sizeof(tmp)) {
      write("Removeing "+tmp[i]+"\n");
      tmp = delete(tmp,i,1);
    } else
      write("Invalid array index. (PS this in not a LPC error)\n");
  else
    if ((i=member_array(str,tmp)) == -1)
      write(str+" not a member of "+thing_name+" list.\n");
    else {
      write("Removeing "+tmp[i]+"\n");
      tmp = delete(tmp, i, 1);
    }
  do_remove_thing();
  return 1;
}

int do_change_thing() {
  write("Which "+thing_name+" do you wish to change ? ");
  input_to("get_change_thing1");
  return 1;
}

int i;
int get_change_thing1(string str) {
  if (!str || str == "")
    return edit_array();
  if (sscanf(str, "%d", i) == 1)
    if (i>=0 && i < sizeof(tmp)) {
      write("Ok changeing "+tmp[i]+" what do you want to change it too ? ");
      input_to("get_change_thing2");
      return 1;
    } else
      write("Invalid Index, (Frog?)\n");
  else
    if ((i=member_array(str, tmp)) == -1)
      write(str+" is not a member of "+thing_name+" list.\n");
    else {
      write("Ok changeing "+tmp[i]+" what do you want to change it too ? ");
      input_to("get_change_thing2");
      return 1;
    }
  do_change_thing();
  return 1;
}

int get_change_thing2(string str) {
  if (!str || str == "")
    return do_change_thing();
  write("Ok changed "+tmp[i]+" to "+str+".\n");
  tmp[i] = str;
  do_change_thing();
  i = 0;
  return 1;
}

int get_thingy(string str) {
  str = lower_case(str);
  if (str != "")
    switch(str[0]) {
      case 'a' :
        do_add_thing();
        return 1;
      case 'r' :
        do_remove_thing();
        return 1;
     case 'c' :
       do_change_thing();
       return 1;
     case 'q' :
       tmp = 0;
       call_other(this_object(), end_command);
       return 1;
    case 's' :
      call_other(this_object(), end_command);
      return 1;
   }
  write("Ivalid selection\n");
  edit_array();
  return 1;
}