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