// /bin/user/_parry.c // from the Nightmare mudlib // Fighter ability // created by Descartes of Borg #include <std.h> inherit DAEMON; int cmd_parry() { object tp, ob, obj; int def1, def2; tp = this_player(); if(!sizeof((object *)tp->query_wielded())) { notify_fail("You don't have anything to parry with!\n"); return 0; } if(tp->query_ghost()) { notify_fail("You are dead and cannot do that.\n"); return 0; } if(tp->query_disable()) return 1; if (environment(tp)->query_property("no attack")) { notify_fail("You cannot parry here.\n"); return 0; } if((int)tp->query_sp() < 10) { notify_fail("You are too exhausted to parry.\n"); return 0; } if(!(ob = (object)tp->query_current_attacker())) { notify_fail("You are not in battle.\n"); return 0; } tp->set_disable(); def1 = (int)tp->query_skill("defense"); def2 = random((int)ob->query_skill("attack")); if( (string)tp->query_class() == "fighter") def1 = def1 + (int)tp->query_stats("dexterity"); if(def1 >= def2) { write("You parry "+(string)ob->query_cap_name()+".\n"); say(tp->query_cap_name() + " parries " + (string)ob->query_cap_name()+".\n"); tp->add_magic_protection(0, def1-def2, 5); } else { write("You fail to parry "+(string)ob->query_cap_name()+".\n"); say(tp->query_cap_name()+ " tries to parry, but fails.\n"); tp->add_sp(-10); return 1; } def1 = (int)tp->query_skill("defense"); tp->add_skill_points("defense",((def1 + def1)/50 + def1 / 20) * 5 ); tp->add_sp(-10); return 1; } void help() { write("Syntax: <parry>\n\n" "Allows you to block the oncoming attack of an enemy.\n" ); }