merentha_fluffos_v2/
merentha_fluffos_v2/bin/
merentha_fluffos_v2/fluffos-2.9-ds2.03/
merentha_fluffos_v2/fluffos-2.9-ds2.03/ChangeLog.old/
merentha_fluffos_v2/fluffos-2.9-ds2.03/Win32/
merentha_fluffos_v2/fluffos-2.9-ds2.03/compat/
merentha_fluffos_v2/fluffos-2.9-ds2.03/compat/simuls/
merentha_fluffos_v2/fluffos-2.9-ds2.03/include/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/clone/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/command/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/data/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/etc/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/include/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/inherit/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/inherit/master/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/log/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/compiler/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/efuns/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/operators/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/u/
merentha_fluffos_v2/fluffos-2.9-ds2.03/tmp/
merentha_fluffos_v2/fluffos-2.9-ds2.03/windows/
merentha_fluffos_v2/lib/cfg/
merentha_fluffos_v2/lib/cfg/races/
merentha_fluffos_v2/lib/cmds/abilities/
merentha_fluffos_v2/lib/cmds/actions/
merentha_fluffos_v2/lib/cmds/spells/
merentha_fluffos_v2/lib/daemon/include/
merentha_fluffos_v2/lib/daemon/services/
merentha_fluffos_v2/lib/doc/
merentha_fluffos_v2/lib/doc/building/
merentha_fluffos_v2/lib/doc/help/classes/
merentha_fluffos_v2/lib/doc/help/general/
merentha_fluffos_v2/lib/doc/help/races/
merentha_fluffos_v2/lib/doc/help/skills/
merentha_fluffos_v2/lib/doc/help/stats/
merentha_fluffos_v2/lib/doc/man/efuns/
merentha_fluffos_v2/lib/doc/man/lfuns/
merentha_fluffos_v2/lib/doc/news/
merentha_fluffos_v2/lib/doc/old/
merentha_fluffos_v2/lib/doc/old/concepts/
merentha_fluffos_v2/lib/doc/old/lpc/constructs/
merentha_fluffos_v2/lib/doc/old/lpc/types/
merentha_fluffos_v2/lib/domains/ROOMS/
merentha_fluffos_v2/lib/domains/obj/armour/
merentha_fluffos_v2/lib/domains/obj/monsters/
merentha_fluffos_v2/lib/domains/obj/other/
merentha_fluffos_v2/lib/domains/obj/weapons/
merentha_fluffos_v2/lib/realms/petrarch/
merentha_fluffos_v2/lib/save/daemons/
merentha_fluffos_v2/lib/save/rid/
merentha_fluffos_v2/lib/save/users/a/
merentha_fluffos_v2/lib/save/users/p/
merentha_fluffos_v2/lib/save/users/t/
merentha_fluffos_v2/lib/std/login/
merentha_fluffos_v2/lib/std/obj/
merentha_fluffos_v2/win32/
// Petrarch
// Merentha Lib 1.0
// weapon.c

#include <std.h>
#include "weapon.h"

inherit OBJECT;

object __Wielded;
string __Type;
int __Hands, __Wc;

void init() {
  ::init();
  add_action("wield", "wield");
  add_action("unwield", "unwield");
  __Hands=1;
}

string query_short() {
  return ::query_short()+(__Wielded?" (wielded)":"");
}

void set_type(string str) { __Type=str; }
string query_type() { return __Type; }

void set_wc(int i) { __Wc=i; }
int query_wc() { return __Wc; }

void set_hands(int i) { __Hands=i; }
int query_hands() { return __Hands; }

object query_wielded_by() { return __Wielded; }

int wield(string str) {
  if(str && !id(str)) return notify_fail("You can not wield that.\n");
  if(sizeof(this_player()->query_wielding())>1) return notify_fail("Your hands are full.\n");
  if(__Wielded) return notify_fail("You are already wielding that.\n");
  this_player()->add_wielding(this_object());
  if(__Hands==2) this_player()->add_wielding(this_object());
  message("action", "You wield "+query_short()+".", this_player());
  if(environment(this_player())) message("action", this_player()->query_cap_name()+" wields "+query_short()+".", environment(this_player()), this_player());
  __Wielded=this_player();
  return 1;
}

varargs int unwield(string str) {
  if(str && !id(str)) return notify_fail("You are not wielding that.\n");
  if(!__Wielded) return notify_fail("You are not wielding that.\n");
  __Wielded->remove_wielding(this_object());
  __Wielded=0;
  message("action", "You unwield "+query_short()+".", this_player());
  message("action", this_player()->query_cap_name()+" unwields "+query_short()+".", environment(this_player()), this_player());
  return 1;
}

void remove() {
  unwield();
  ::remove();
} 

int is_weapon() { return 1; }