// /bin/user/_buffer.c // from the Nightmare mudlib // A powerful cleric/mage ability // created by Descartes of Borg 24 february 1993 #include <std.h> inherit DAEMON; int cmd_buffer(string str) { object ob; int defense; int cost; this_player()->set_magic_round(); if(!str) { notify_fail("Cast a buffer on whom?\n"); return 0; } ob = present(str, environment(this_player())); if(!ob) { if(str == "me" || str == "myself") ob = this_player(); } if(!ob) { notify_fail(capitalize(str)+" is not here.\n"); return 0; } if(!living(ob)) { notify_fail(capitalize(str)+" is not alive!\n"); return 0; } if(environment(this_player())->query_property("no magic")) { notify_fail("Something is blocking your concentration.\n"); return 0; } if(ob == this_player()) cost = 20 + random(150); else cost = 20 + random(75); if((int)this_player()->query_mp() < cost) { notify_fail("Too low on magic power.\n"); return 0; } defense = (int)this_player()->query_skill("magic defense"); if(defense < 25) { write("You mutter words beyond your understanding."); say(this_player()->query_cap_name()+" mutters words beyond "+ this_player()->query_possessive()+" understanding.", this_player()); return 1; } if(!alignment_ok(this_player())) { write("You have betrayed the source of your powers."); return 1; } this_player()->add_mp(-cost); write("You look at "+ob->query_cap_name()+" and call on your powers of protection."); tell_object(ob, this_player()->query_cap_name()+ " looks at you and calls on "+this_player()->query_possessive()+ " powers of protection."); say(this_player()->query_cap_name()+" looks at "+ob->query_cap_name()+ " and calls on "+this_player()->query_possessive()+" powers of protection.", ob); if(random(101) > defense) { this_player()->add_skill_points("magic defense", random(10)); this_player()->add_alignment( random(5) ); return 1; } ob->add_magic_protection( ({ 0, random(defense/2)+1, random(defense)+1 }) ); this_player()->add_skill_points("magic defense", random(defense/2)); if((string)this_player()->query_class()=="monk" && ob->query_alignment() < 0) this_player()->add_alignment(-defense); else this_player()->add_alignment(defense); this_player()->add_exp(random(defense)); return 1; } void help() { write("Syntax: <buffer [player]>\n\nCreates a very powerful spell of protection for the mighty."); }