/* /lib/props/equip.c * From the Dead Souls Object Library * Handles the property of being something that is equipped to a limb * The word worn is used instead of equipped for historical reasons * Created by Descartes of Borg 970101 * Version: @(#) equip.c 1.1@(#) * Last modified: 97/01/01 */ #include <armor_types.h> private int ArmorType = A_WEAPON; private string array Worn = 0; // abstract methods string GetDefiniteShort(); // end abstract methods int GetArmorType(){ return ArmorType; } int SetArmorType(int x){ if( !intp(x) ){ error("Bad argument to SetArmorType().\n\tExpected value from " "/include/armor_types.h, Got: " + typeof(x) + "\n"); } return (ArmorType = x); } string array GetSave(){ return ({ "Worn" }); } string array GetWorn(){ return Worn; } static string array SetWorn(string array limbs){ return (Worn = limbs); } mixed CanEquip(object who, string array limbs){ if( GetWorn() ){ return "#You are already using " + GetDefiniteShort() + "."; } return who->CanWear(this_object(), limbs); } mixed CanUnequip(object who){ if( !GetWorn() ){ return "#You are not using " + GetDefiniteShort() + "."; } return who->CanRemoveItem(who, this_object()); } mixed eventEquip(object who, string array limbs){ mixed tmp = who->eventWear(this_object(), limbs); if( tmp != 1 ){ return tmp; } SetWorn(limbs); return 1; } static void eventRestoreEquip(string array limbs){ mixed tmp; if( !limbs || !environment() ){ return; } tmp = CanEquip(environment(), limbs); if( tmp == 1 ){ tmp = eventEquip(environment(), limbs); } if( stringp(tmp) ){ environment()->eventPrint(tmp); } } mixed eventUnequip(object who){ mixed tmp = who->eventRemoveItem(this_object()); if( tmp != 1 ){ return tmp; } SetWorn(0); return 1; }