/* CLOTHING.c Angel, Sept 1993. * As armour is actual armour, and clothing, by no stretch of the imagination * actually confers protection (if it does its armour). This object is used * so people can create hats, robes, scarves, necklaces, and the works as * items of fashion as opposed to items of protection. Note, also, that * armour types slowly decay as they are bashed about. These items are * always as good as if they were just coded. */ #include <mudlib.h> inherit BASE; #define NAME (string)this_player()->query_name() status worn; /* flag true if worn */ init() { ::init(); add_action("wear", "wear"); add_action("remove", "remove"); } status get() { return 1; } status drop(status silently) { if(worn && !silently) { tell_object(environment(), "You drop your worn "+ query_name() +".\n"); } worn = 0; return 0; } string short(status wiz) { if(!::short(wiz)) return 0; return ::short(wiz) +((worn) ? " (worn)" : ""); } status wear(string str) { int i; object ob; if(!str) { notify_fail("wear what?\n"); return 0; } if(!(ob = present(str, this_player()))) { notify_fail("You do not have a "+ str +".\n"); return 0; } if(ob != this_object()) { notify_fail("You can't do that!\n"); return 0; } if(worn) { write("You already wear it!\n"); return 1; } sscanf(str,"%s %d",str,i); for(i = 1; (ob = present(str +" "+ i, this_player())); i++) { if(ob->query_worn()) { write("You are already wearing a "+ query_name() +".\n"); return 1; } } write("You wear "+ query_name() +".\n"); say(NAME +" wears "+ query_name() +".\n"); worn = 1; return 1; } status query_worn() { return worn; } status remove(string str) { int i; object ob; if(!str) { notify_fail("remove what?\n"); return 0; } if(!(ob = present(str, this_player()))) { notify_fail("You do not have a "+ str +".\n"); return 0; } if(ob != this_object()) { notify_fail("You can't do that!\n"); return 0; } if(!worn) { write("You are not wearing it.\n"); return 1; } write("You remove your "+ query_name() +".\n"); say(NAME +" removes "+ query_name() +".\n"); worn = 0; return 1; }