// _lore.c // Mage ability // created by Bohemund 14 January 1994 // based upon Descartes' _sense.c #include <std.h> inherit DAEMON; int cmd_lore(string str) { object ob; object *inv; int i, skip, which, conjure; string what, Class; mixed *arr; if(!str) { notify_fail("Gather lore about what?\n"); return 0; } Class = (string)this_player()->query_class(); if(Class != "mage") { notify_fail("Your mind boggles in confusion.\n"); return 0; } ob = present(str, this_player()); if(!ob) { inv = all_inventory(this_player()); if(sscanf(str, "%s %d", what, which) != 2) { notify_fail("You don't have that!\n"); return 0; } for(i=0, skip = 0; i<sizeof(inv) && !ob; i++) { if(inv[i]->id(what)) { skip ++; if(skip == which) ob = inv[i]; } } if(!ob) { notify_fail("You don't have that!\n"); return 0; } } conjure = (int)this_player()->query_skill("conjuring"); if((int)this_player()->query_mp() < 13) { notify_fail("Too low on magic power.\n"); return 0; } say(this_player()->query_cap_name()+" mutters quietly as "+ this_player()->query_subjective()+" focuses on the "+ (string)ob->query_name()+".", this_player()); this_player()->set_magic_round(); if(conjure < random(101)) { this_player()->add_mp(-13); this_player()->add_skill_points("conjuring", random(13)); write("You fail to discern anything special about it."); return 1; } else { this_player()->add_mp(-13); this_player()->add_skill_points("conjuring", 13); arr = (string *)ob->query_property("magic item"); if(!arr) write("You fail to discern anything special about it."); else if(arr == ({})) write("You fail to discern anything " "special about it."); else write("You discern a magical force eminating from it...\n" "You sense the word \"%^BOLD%^"+arr[random(sizeof(arr))]+"%^RESET%^\"."); return 1; } } void help() { write("Syntax: <lore [item]>\n\n" "Allows a mage to discern any magic powers inherent in an object. " "There is no way to tell the difference between a failure to discern " "magic in the object and the lack of magic in an object.\n"); }