#include <std.h> inherit DAEMON; void clone_weapon(string what, string nom, string with); void clone_armour(string what, string nom, string with); void screw_player(object ob, int x, int die) ; int cmd_wish(string str) { string what, nom, with, tmp; if(!str) return notify_fail("Wish for what?\n"); if(sscanf(str, "for % called %s with %s", what, nom, with) != 3) return notify_fail("Wish for what called what with what?\n"); if(sscanf(what, "a %s", tmp)) what = tmp; else if(sscanf(what, "an %s", tmp)) what = tmp; switch(what) { case "sword": case "knife": case "hammer": case "spear": case "warhammer": case "scimitar": case "blade": case "axe": clone_weapon(what, nom, with); return 1; case "helm": case "armour": case "body armour": case "boot": case "glove": case "pants": clone_armour(what, nom, with); return 1; default: message("my_action", "If wishes were horses...", this_player()); return 1; } } void clone_weapon(string what, string nom, string with) { object ob; int x; ob = new(WEAPON); ob->set_name(what); ob->set_short(nom); ob->set_long("A weapon created by "+(string)this_player()->query_CapName()+ "."); switch(what) { case "sword": case "scimitar": case "blade": ob->set_type("blade"); ob->set_wc(5); break; case "hammer": case "warhammer": ob->set_type("blunt"); ob->set_class(5); break; case "knife": case "axe": ob->set_type("knife"); ob->set_class(5); break; case "spear": ob->set_type("projectile"); ob->set_class(5); break; } sscanf(with, "%d strength", x); if(x > 0) ob->set_class(x); else x = 5; screw_player(ob, x, 20); } void screw_player(object ob, int x, int die) { if(x > die*3) { ob->move(this_player()); message("my_action", "You really should not have...", this_player()); this_player()->die(); } else if(x > die && random(die*5) > x) { ob->move(this_player()); message("my_action", "When you play with fire...", this_player()); this_player()->die(); } else if((int)this_player()->query_mp() < x) { ob->remove(); message("my_action", "You are too much of a wimp.", this_player()); } else { ob->move(this_player()); message("my_action", "Wheeeeeeee!!!!!!", this_player()); this_player()->add_mp(-(5*(random(x)+5))); } } void clone_armour(string what, string nom, string with) { object ob; int x; ob = new(ARMOUR); ob->set_name(what); ob->set_short(nom); switch(what) { case "helm": ob->set_limbs(({ "head" })); ob->set_type("helm"); ob->set_ac(1); break; case "armour": ob->set_type("armour"); if(random(2)) ob->set_limbs(({ "torso", "right arm", "left arm" })); else ob->set_limbs(({ "torso", "first arm", "second arm", "third arm", "fourth arm" })); ob->set_ac(1); break; case "glove": ob->set_type("glove"); ob->set_ac(1); case "boot": ob->set_type("boot"); ob->set_ac(1); } sscanf(with, "%d strength", x); if(x < 1) x = 1; ob->set_ac(x); screw_player(ob, x, 10); }