// /bin/skills/_limbs.c
// From the Nightmare Mudlib
// A cleric, monk, kataan spell to determine the body damage of others.
// By Gregon@Nightmare
#include <std.h>
inherit DAEMON;
int cmd_limbs(string str){
string name, *limbs;
object ob, tp;
int x, i, *dam, maxdam;
if(!str){
notify_fail("Correct syntax: limbs [whom]\n");
return 0;
}
tp=this_player();
if((string)tp->query_class()!="kataan" && (string)tp->query_class()!="monk"
&& (string)tp->query_class()!="cleric"){
notify_fail("Only people of high faith may perform this action.\n");
return 0;
}
x=(int)this_player()->query_skill("faith");
if(x<20){
notify_fail("You are not yet faithful enough to do that.\n");
return 0;}
if((int)tp->query_mp()<20){
notify_fail("You do not have the magic strength to do that right now.\n");
return 0;
}
ob=find_living(str);
if(!ob || !present(ob,environment(this_player()))){
notify_fail(capitalize(str)+" is not here.\n");
return 0;
}
if(ob->query_ghost()){
notify_fail("That player has no limbs at all!\n");
return 0;
}
tp->add_mp(-20);
if((string)tp->query_class()=="kataan")
say(tp->query_cap_name()+" begins to pray to the demons of the "
"underworld for guidance.");
else say(tp->query_cap_name()+" utters a request for divine guidance.");
if(x-random(51)<0){
write("Your prayers for guidance are not heard.");
return 1;
}
tp->add_skill_points("faith",10);
dam=allocate(i=sizeof(limbs=(string *)ob->query_limbs()));
while(i--){
dam[i]=to_int(percent((int)ob->query_dam(limbs[i]),
(int)ob->query_max_dam(limbs[i])));
if(dam[i]>dam[maxdam])
maxdam=i;
}
name=(string)ob->query_cap_name();
if(!dam[maxdam]){
write(name+" has minimal body damage.");
return 1;
}
if(x<40){
if(x-random(51)<0)
maxdam=random(i);
write("You get the sense that "+name+"'s "+limbs[maxdam]+" is damaged.");
return 1;
}
if(x<65){
write("You get the sense that "+name+"'s "+limbs[maxdam]+" is damaged.");
return 1;
}
if(x<80){
if(dam[maxdam]<20){
write("You get the sense that "+name+"'s "+limbs[maxdam]+" is slightly "
"damaged.");
return 1;
}
if(dam[maxdam]<40){
write("You get the sense that "+name+"'s "+limbs[maxdam]+" is "
"somewhat damaged.");
return 1;
}
if(dam[maxdam]<60){
write("You get the sense that "+name+"'s "+limbs[maxdam]+" is heavily "
"damaged.");
return 1;
}
if(dam[maxdam]<80){
write("You get the sense that "+name+"'s "+limbs[maxdam]+" is severely "
"damaged.");
return 1;
}
write("You get the sense that "+name+"'s "+limbs[maxdam]+" is about to "
"fall off!");
return 1;
}
write("You get the sense that "+name+"'s "+limbs[maxdam]+" is at "+
dam[maxdam]+" percent of its potential.");
return 1;
}
void help(){
write("syntax: limbs [whom]\nThis allows the faithful to offer a prayer "
"for guidance in determining the location of injuries on another.");
}