// 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; }