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/
/* My rewrite of Danks armour object.
 * Guess it's basically PF's object tho, with Danks comments..
 * (it's not now..)
 * But I have to understand this, so I'm "making" my own
 * Baldrick, april '94 
 * This have to be more complicated than nessesary ?
 * it's a lot of code ...
 * I will remove the attack_out array and replace it with int's
 */
/* The most scary part of this, auto_load is not finished..
 * Have to do that pretty soon
 */

inherit "/std/item";

/* Is armour logic needed at all ? */
// inherit "/std/armour_logic";
inherit "/std/basic/condition"; 
#include "move_failures.h";
#define ARMOUR_TABLE "/table/armour_table.c"
#define COST_TO_FIX 300 
#define SIZE 8

/* attack_out consists of concatenated 7-tuples */

/* Shields *can* be twohanded.. :=) */
static int twohanded;   /* used to be "str hand" */

int enchant,value_adjustment;

/* This is the armours damage_ac.. */
int ac, max_ac, min_ac;

/* The armours full ac value.. 
 * Will add magical ac later..
 */
static int armour_ac;
//static int value;

string cond_string()
{
   return ::cond_string();
}
/* this is the values from the armour_table: */
/* Look at /table/armour_table for explanation. */
int ench_gp_cost,
    gp_cost,
    armour_ac,
    armour_type,
    material,
    no_dex_bon;
    
/* This will hold whatever you send to set_base_armour().
   query_armour_name() returns it.  -- Hamlet 
*/
string armour_name = "crap";

/* need this one here ? */

void set_value(int i);

void set_twohanded(int flag)
  {
  twohanded = flag;
} /* void set_twohanded */

/* here is the new setup routine, will make the whole a lot cleaner.. */
void set_base_armour(string lookup)
  {
  int *data;
  
  if(stringp(lookup))
    armour_name = lookup;  /* Hamlet */
  data = (int *)ARMOUR_TABLE->lookup_armour_data(lookup);

  gp_cost = data[0]; // Value is GP's
  ench_gp_cost = data [1];
  set_weight(data[2]);
  set_size(data[3]);
  armour_ac = data [4];
  armour_type = data [5];
  material = data [6];

  /* Ok, this slot is holdable or not, if it's not holdable, it's wearable */

  if (data[7])
    set_holdable(1);
   else
    set_wearable(1);
  // Following if/else fix by Wonderflug.
  // Most entries don't HAVE a 9th entry, this driver complains.
  if ( sizeof(data) >= 9 )
    no_dex_bon = data [8]; 
  else
    no_dex_bon = 0;
  set_value(gp_cost);

}

/* This just returns the basearmour name -- Hamlet */
string query_armour_name() {  return armour_name; }

int query_no_dex_bon() { return no_dex_bon; }

int query_ac() { return armour_ac + enchant; }
/* Mask it too */

int query_armour_ac() { return armour_ac + enchant; }

int query_armour_type() { return armour_type; }

string query_armour_type_name() 
  {
  switch (armour_type)
    {
    case 1:
      return "bodyarmour";
    case 2:
      return "shield";
    case 3:
      return "helmet";
    case 4:
      return "boots";
    case 5:
      return "amulet"; 
    case 6:
      return "cloak"; 
    case 7:
      return "ring"; 
    case 8:
      return "gloves"; 
    case 9: 
      return "belt";
    case 10: 
      return "backpack";
    case 11:
      return "trousers";
    case 12:
      return "shirt";
    default:
      return "unknown";
    }
} /* string query_attack_type_name() */

int query_material() { return material; }

string query_material_name()
  {
  switch (material)
    {
    case 1:
      return "wood";
    case 2:
      return "metal";
    case 3:
      return "leather";
    case 4:
      return "cloth";

    default:
      return "unknown";
   }
} /* string query_material_name */

void set_value(int gp_cost)
  {
  /* Make this simpler later.. 
   * And similar to weapon.c (not made either..:=)
   */
  if (enchant <= 0)
    if (gp_cost > 0)
      value = gp_cost * 100 + value_adjustment + (max_cond - cond) *
        COST_TO_FIX;
    else       
 /* negative values in data[0] mean silver, not gold */
      value = gp_cost * -10 + value_adjustment + (max_cond - cond) *
        COST_TO_FIX;
  else
    value = ench_gp_cost * enchant * 100 +
            value_adjustment + (max_cond - cond)
      * COST_TO_FIX;
}

void adjust_value(int i) 
  {
  value_adjustment = i * 100; /* to convert from gp to cp */
}

/* all this code should be changed.. 
 * It can positively be simplified.
 * Can't be easier than this ? :=)
 * New code will be added later 
 */
void set_enchant(int i) 
  {
  enchant = i;
}
int query_enchant()
{
   return enchant;
}

/* I hope we don't ever use the following, but just in case: */
void set_ac(int max1, int min1) 
  {
  max_ac = max1;
  min_ac = min1;
  cond = max_ac - min_ac; 
  max_cond = max_ac - min_ac; 
  set_value(0);
}

void create() 
  {
  item::create();
  max_ac = 3; min_ac = 0; ac = 3;
/* for cond_string() in condition.c: */
  cond = max_ac - min_ac; 
  max_cond = max_ac - min_ac; 
  add_alias("armour"); 
  add_plural("armours"); 

  // Radix : Oct 1996
  if(!clonep(this_object()))
     catch("/obj/handlers/item_info"->update_armour(this_object()));
} 

int query_armour() { return 1; } 

int query_hands_needed()
  {
  if (twohanded) return 2;
  return 1;
} 

/* moved to /std/item.c    Radix - Jan 18, 1996
string long(string s, int dark) 
  {
// Radix was here to put things in their proper order, Dec 14, 1995
//return cond_string()+::long(s, dark); 
  return ::long(s, dark)+cond_string();
} 
*/

void dest_me() 
  {
  enchant = 0;
  /* Call equip-> dest equipment here when that's done */
  return ::dest_me();
}

/* returns the amount that the weapon was actually adjusted.  Use hit_weapon
if you're doing melee damage to weapon.  This function is for other kinds of
damage and repair to the condition of the weapon.  At this time, I expect all
non-enchanted weapons to have max_ac 3 and min_ac 0.  Adjust_weapon can't
change the ac to anything outside these bounds.  The only way to change max_ac
and min_ac is to enchant the weapon.
*/
int adjust_armour(int mod) 
  {
  int old_ac;
  old_ac = ac;
  ac += mod;
  if (ac < min_ac) 
    ac = min_ac;
  else if (ac > max_ac)
    ac = max_ac;
  mod = ac - old_ac;
  cond += mod;
  value += mod * COST_TO_FIX;
/* This only works if only the first 7-tuple concerns a swing; it doesn't
modify any other tuples that might concern swings, since I dont expect any,
for now. */
  return mod;
}

int hit_armour(int dam) 
  {
  if (dam > 1)
    dam = 1;
/* note this will return a nonpositive int when given a nonnegative int: */
  return adjust_armour(-dam);
}

/* I'm assuming this is right, but I don't know...I borrowed it from Ducky's
   armour.c */
/* The players will have to use detect_magic to know anyway, so it won't
   be used. Baldrick. */
string enchant_string() 
  {
  switch(enchant) 
    {
    case 1 : return "It has a dim, magical glow.\n";
    case 2 : return "It has a faint, magical glow.\n";
    case 3 : return "It has a magical glow.\n";
    case 4 : return "It has a bright, magical glow.\n";
    case 5 : return "It has a very bright, magical glow.\n";
    case 6 : return "It has a brilliant, pulsating, magical glow.\n";
    }
  return "";
}

mixed *armour_stats() 
  {
  int i;
  mixed *ret; 
  string form;
  
  ret = ({ }); 
  ret += ({ 
            ({ "Armour type", query_armour_type_name() }), 
            ({ "Armour AC", armour_ac })
          }); 
  return ret; 
} 

mixed *stats() 
  {
  return 
     ({ 
     ({ "Value (in copper pieces)", query_value() }),
     ({ "Cond", cond }),
     ({ "ac", ac }),
     ({ "holdable", query_holdable() }),
     ({ "Max ac", max_ac }),
     ({ "Min ac", min_ac }),
     ({ "Enchant", enchant }),
     ({ "Weight", weight }),
     ({ "Material", query_material_name() })
    }) + armour_stats(); 
}

/* How much of this is needed ? */
mapping int_query_static_auto_load() 
  {
  mapping tmp;

  tmp = ::int_query_static_auto_load();
  return ([ "::" : tmp,
    "max cond" :max_cond, "no_limbs":twohanded,
          ]);
} /* int_query_static_auto_load() */

mapping query_dynamic_auto_load() 
  {
    mapping tmp;      /* Hamlet */

    tmp = ::query_dynamic_auto_load();  /* Hamlet */
    return ([ "::" : tmp,   /* Hamlet */
     "cond" : cond,
     "enchant":enchant,
     //"lowest cond" : lowest_cond,
          ]);
} /* query_dynamic_auto_load() */

void init_static_arg(mapping args) 
  {
  if (!mappingp(args)) return ;
  if (args["::"])
    ::init_static_arg(args["::"]);
  if (!undefinedp(args["max cond"]))
    max_cond = args["max cond"];
  if (!undefinedp(args["no limbs"]))
  twohanded = args["no limbs"];
} /* init_static_arg() */

void player_wield(int pos) 
  {
  if (!environment()) return ;
  environment()->set_hold(this_object(), pos);
 /*
  environment()->hold((sizeof(adjectives)?implode(adjectives, " ")+" ":"")
                       +name+" in "+(environment()->query_limbs()[pos]), 1);
 */
} /* player_wield() */

void init_dynamic_arg(mapping map) 
  {
  if (map["::"])
    ::init_dynamic_arg(map["::"]);
  cond = map["cond"];
  //lowest_cond = map["lowest cond"];
  enchant = map["enchant"];
  if (map["wielded"])
 /* Not valid function yet till equip.c is done */
   call_out("player_wield",0, map["wielded"]-1);
} /* init_dynamic_arg() */


mapping query_static_auto_load() 
  {
  if (file_name(this_object())[0..10] == "/obj/weapon")
    return int_query_static_auto_load();
  return ([ ]);
} /* query_static_auto_load() */