//	/bin/user/_compare.c
//	from the Nightmare mudlib
//	Fighter ability to distinguish among weapons and armours
//	created by Descartes of Borg 19 november 1992

#include <std.h>
inherit DAEMON;
int abil();

string type() { return "other"; }

int cmd_compare(string str) {
    string what1, what2;
    object ob1, ob2;

   if (!abil()) {
      notify_fail("What?\n");
      return 0;
   }
    if(!str) {
	notify_fail("Compare what to what?\n");
	return 0;
    }
    if(sscanf(str, "%s to %s", what1, what2) != 2) {
	notify_fail("Compare what to what?\n");
	return 0;
    }
    if((string)this_player()->query_class() != "fighter") {
	notify_fail("You do not know enough about weapons and armours.\n");
	return 0;
    }
    if((int)this_player()->query_level() *5 < random(101)) {
	notify_fail("You are not knowledgeable enough about these items.\n");
	return 0;
    }
    ob1 = present(what1, this_player());
    if(!ob1) ob1 = parse_objects(this_player(), what1);
    if(!ob1) {
	notify_fail("You do not have "+what1+".\n");
	return 0;
    }
    ob2 = present(what2, this_player());
    if(!ob2) ob2 = parse_objects(this_player(), what2);
    if(!ob2) {
	notify_fail("You do not have "+what2+".\n");
	return 0;
    }
    if((int)this_player()->query_mp() < 20) {
	notify_fail("You are too tired.\n");
	return 0;
    }
    this_player()->add_mp(-20);
    if(!ob1->query_wc() && !ob2->query_wc()) {
	if(!ob1->query_ac() || !ob2->query_ac()) {
	    write("Those are not comparable items!\n");
	    return 1;
	}
	if((int)ob1->query_ac() > (int)ob2->query_ac()) {
	    write(ob1->query_short()+" looks better.\n");
	    return 1;
	}
	else if((int)ob1->query_ac() < (int)ob2->query_ac()) {
	    write(ob2->query_short()+" looks better.\n");
	    return 1;
        }
	else write("They appear equal.\n");
	return 1;
    }
    if(!ob1->query_wc() || !ob2->query_wc()) {
	write("Those two are not comparable items!\n");
	return 1;
    }
    if((int)ob1->query_wc() > (int)ob2->query_wc()) {
	write(ob1->query_short()+" looks better.\n");
	return 1;
    }
    else if((int)ob1->query_wc() < (int)ob2->query_wc()) {
	write(ob2->query_short()+" looks better.\n");
	return 1;
    }
    else write("They appear equal.\n");
    return 1;
}

void help() {
    write("Syntax: <compare [item 1] to [item 2]>\n\n"+
	"Fighters have the ability to distinguish among the physical\n"+
	"qualities of weapons and armour.  This ability will say nothing\n"+
	"about the items magical characteristics.\n");
}

int abil() {
   object tp;
   tp = this_player();
   if (!tp) return 0;
   if (tp->query_class() != "fighter") return 0;
   if (tp->query_level() < 1) return 0;
   return 1;
}
