/* Do not remove the headers from this file! see /USAGE for more info. */
#include <bodyslots.h>
private mapping slots = allocate_mapping(({ TORSO, HEAD, ARMS, LEGS, HANDS, FEET }), 0);
private mapping non_armors = allocate_mapping(({ "left hand", "right hand", "neck" }), 0);
private int wear_non_armor(object what, string sname)
{
if(undefinedp(non_armors[sname]) || non_armors[sname])
return 0;
non_armors[sname] = what;
return 1;
}
//:FUNCTION wear_item
// nomask int wear_item(object what, string sname);
// Wear item 'what' on armor slot 'sname'.
nomask int wear_item(object what, string sname)
{
if(wear_non_armor(what, sname) == 1)
return 1;
if(undefinedp(slots[sname]) || slots[sname])
return 0;
slots[sname] = what;
return 1;
}
//:FUNCTION remove_item
// nomask int remove_item(object what, string sname);
// Remove armor 'what' from armor slot 'sname'.
nomask int remove_item(object what, string sname)
{
if(slots[sname])
{
slots[sname] = 0;
return 1;
}
if(non_armors[sname])
{
non_armors[sname] = 0;
return 1;
}
}
nomask mixed get_random_clothing()
{
return choice(values(slots));
}
//:FUNCTION has_body_slot
// nomask int has_body_slot(string what);
// Returns 1 if 'what' is a valid armor slot.
nomask int has_body_slot(string what)
{
return (!undefinedp(slots[what]) || !undefinedp(non_armors[what]));
}
//:FUNCTION query_armor_slots
// string array query_armor_slots();
// Returns an array of all valid armor slots.
string array query_armor_slots()
{
return keys(slots);
}
string query_random_armor_slot()
{
string tmp;
tmp = choice(keys(slots));
return tmp;
}
object array event_get_armors()
{
object array tmp = ({ get_random_clothing() }) - ({ 0 });
if(!sizeof(tmp))
return 0;
else return tmp;
}