// /bin/dev/_ac.c // from the Nightmare Mudlib // queries the ac of an object and displays it // created by Valodin@Nightmare 930306 #include <std.h> inherit DAEMON; int show_ac(object ob) { int i, limbsize, ac; string *limbs; string type; object eob; if(!(ac = ob->query_ac())) { write("No Armour Class\n"); return 1; } message("Nsystem", sprintf("AC: %d\tprotects ", ac), this_player()); type = ob->query_type(); if(type == "two handed") limbs = ({ "both hands" }); else if(type == "blade" || type == "blunt" || type == "projectile" || type == "knife") if (!(eob = environment(ob)) || !(living(eob))) limbs = ({ "a hand" }); else { limbs = eob->query_wielding_limbs(); for(i = 0; i < sizeof(limbs); i++) if(ob != (object)eob->query_weapon(limbs[i])) limbs -= ({ limbs[i] }); if(!limbs) limbs = ({ "a hand" }); } else limbs = ob->query_limbs(); limbsize = sizeof(limbs); for (i = 0; i < limbsize; i++) { message("Nsystem", sprintf("%s", limbs[i]), this_player()); if(i == (limbsize - 1)) write("\n"); else if(i == (limbsize - 2)) message("Nsystem", ", and ", this_player()); else message("Nsystem", ", ", this_player()); } return 1; } int has_ac(object ob) { if(ob->query_ac()) return 1; else return 0; } int cmd_ac(string str) { object *inv; int inv_size; object ob; int i; if((!str) || !(ob = to_object(str))) { notify_fail("Find AC of what object? See \"help format\"\n"); return 0; } if(!living(ob)) { /* must be an object */ message("Nsystem", sprintf("Querying %s: %s", str, ob->query_short()), this_player()); show_ac(ob); return 1; } inv = filter_array(all_inventory(ob), "has_ac", this_object()); inv_size = sizeof(inv); if(inv_size) message("Nsystem", sprintf("Querying inventory of %s: %s", str, ob->query_short()), this_player()); else write(str + ": " + ob->query_short() + " has no armor.\n"); for (i = 0; i < inv_size; i++) { message("system", sprintf("\n%s", inv[i]->query_short()), this_player()); show_ac(inv[i]); } return 1; } int help() { write("Command: ac\nSyntax: ac <object>\nShows the armor class of an object,\ or armor\nclasses of all the objects held by a living\nobject. See \"help\ format\" to see how to specify\nobjects.\nSee also: wc, format, I\n"); return 1; }