#include #include inherit LIB_ITEM; void analyze(string butt); object scanner,tricorder,person; object *gstuff,*ngstuff; mixed *statlist,*skilllist; mapping this_stat,this_skill; int allowed,statpoints,statlevel,statclass,tempint,i; int skilllevel,skillclass,skillpoints; string name; string *stumps; string warning = "We remind you that the tricorder cannot speak. In the event "+ "that it does speak, you are instructed to disregard its advice."; void create(){ item::create(); SetKeyName("creator tricorder"); SetId(({"tricorder","scanner","device","tool","medtric","tric"})); SetAdjectives(({"electronic","admin","diagnostic"})); SetShort("a medical tricorder"); SetLong("This is a palm-sized electronic device designed to run various "+ "medical tests and provide treatment of disease and injury. "+ "Written in bold red letters across its face are the words: \"%^BOLD%^RED%^FOR AUTHORIZED TEST CHARACTER "+ "USE ONLY%^RESET%^\".\n%^YELLOW%^NOTE: Some functions do not work "+ "with drones. This is due to safeguards in the master object security "+ "model, and it will not be \"fixed\".%^RESET%^\n"+ "There is a warning on the tricorder you can read.\n"+ "\n Labeled buttons on this device read:\n"+ //"* medscan: scan for disease, poison, etc\t%^RED%^offline%^RESET%^\n"+ "* fscan: readout of all files inherited\t\t%^GREEN%^ONLINE%^RESET%^\n"+ //"* enshadow: move a shadow to an object\t\t%^RED%^offline%^RESET%^\n"+ "* deshadow: remove all shadows from an object\t%^GREEN%^ONLINE%^RESET%^\n"+ //"* inject: insert substance into patient\t\t%^RED%^offline%^RESET%^\n"+ "* extract: remove a foreign body or substance\t%^GREEN%^ONLINE%^RESET%^ (slugs only)\n"+ "* modhealth: raise or lower health level\t%^GREEN%^ONLINE%^RESET%^\n"+ "* modcaff: raise or lower caffeine level\t%^GREEN%^ONLINE%^RESET%^\n"+ "* modalc: raise or lower alcohol level\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* modfood: raise or lower food level\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* moddrink: raise or lower drink level\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* modmag: raise or lower magic level\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* modstam: raise or lower stamina\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* modtox: raise or lower poison\t\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* setskill: set skill level\t\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* setstat: set stat level\t\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* amputate: remove limb\t\t\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* regenerate: restore all amputated limbs\t%^GREEN%^ONLINE%^RESET%^\n"+ "* cure: eliminate known diseases\t\t%^GREEN%^ONLINE%^RESET%^\n"+ "* infect: introduce disease into patient\t%^GREEN%^ONLINE%^RESET%^\n"+ //"* inoculate: raise immunity to a disease\t%^RED%^offline%^RESET%^\n"+ //"* posture: change your own posture.\t\t%^RED%^offline%^RESET%^\n"+ ""); SetRead( "default" , warning); SetRead( "warning", warning ); SetProperties(([ "no steal" : 1, ])); SetMass(12); SetVendorType(VT_TREASURE); } void init(){ ::init(); add_action("fscan","fscan"); add_action("assess","assess"); add_action("assess","diagnose"); add_action("extract","extract"); add_action("addhp","addhp"); add_action("addhp","modhealth"); add_action("modcaff","modcaff"); add_action("modalc","modalc"); add_action("modfood","modfood"); add_action("moddrink","moddrink"); add_action("modmag","modmag"); add_action("modstam","modstam"); add_action("modtox","modtox"); add_action("setstat","setstat"); add_action("setskill","setskill"); add_action("regenerate","regenerate"); add_action("amputate","amputate"); add_action("infect","infect"); add_action("germ_scan","germscan"); add_action("germ_squash","cure"); add_action("medscan","medscan"); add_action("posture","posture"); add_action("enshadow","enshadow"); add_action("deshadow","deshadow"); add_action("TestFun","HEINEKEN"); } int TestFun(){ write("WOOHOO"); return 1; } varargs int preAction(int restricted){ scanner=this_player(); tricorder=this_object(); if(!this_player()) return 0; if(!present(tricorder, scanner)){ write("You are not holding the tricorder."); return 2; } if(restricted && !creatorp(this_player())){ write("This function is not permitted to builders."); return 2; } if(!builderp(this_player())){ write("Your puny mortal mind can't wrap itself around the use " "of this powerful instrument."); log_file("adm/tricorder",capitalize(this_player()->GetKeyName())+ " attempted to use the medical tricorder: "+timestamp()+"\n"); tell_creators("SECURITY: "+capitalize(this_player()->GetKeyName())+ " attempted to use the medical tricorder."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 2; } say(scanner->GetName()+" operates a medical tricorder.",scanner); write("The tricorder makes a low, warbling sound."); return 1; } int posture(int i){ allowed=preAction(); if(allowed == 2) return 1; if(!i) { write("Please include the position number desired."); return 0; } this_player()->SetPosition(i); return i; } int deshadow(string str){ object target; allowed=preAction(1); if(allowed == 2) return 1; if(str == "me") str = this_player()->GetKeyName(); if(!target = present(str,this_player())){ target = present(str,environment(this_player())); } if(!target){ write("That's not here."); return 1; } else { if(shadow(target,0)){ remove_shadow(target); write("You deshadow "+str); } else write("No shadows there."); } return 1; } int enshadow(string str){ object target; string s1,s2,s3,file; allowed=preAction(1); if(allowed == 2) return 1; if(sscanf(str,"%sshadow/%s %s",s1,s2,s3) > 0) file = s2; else if(sscanf(str,"%sshadow/%s.c %s",s1,s2,s3) > 0) file = s2; else if(sscanf(str,"%s %s",s1,s2) > 0) file = s1; else { write("You must specify a file within /shadows and a target."); return 1; } if( s3 && s3 != "") target = present(s3,environment(this_player())); else if(s3 == "me") target = this_player(); else target = present(s2,environment(this_player())); if(!target) { write("Please specify a file within /shadows and a target."); return 1; } if(file_size("/shadow/"+file) < 1){ write("That is not a valid shadow."); return 1; } new("/shadow/"+file)->eventShadow(target); write("You enshadow "+target->GetName()+" with /shadow/"+file); return 1; } int medscan(string str){ allowed=preAction(); if(allowed == 2) return 1; if(!str || str == "") { write("Please rephrase, including your target this time."); return 1; } if(str == "me") str = this_player()->GetKeyName(); person=present(str,environment(scanner)); if(!person || !living(person)){ write("Disease check: No such being found"); return 1; } write("Scanning for germs..."); this_object()->germ_scan(str); write("Germ scan complete.\n"); write("Wound scan currently offline."); return 1; } int germ_scan(mixed strob ){ int i; string a,b,c,str; if(stringp(strob)) { str = strob; if(str == "me") str = this_player()->GetKeyName(); person=present(str,environment(scanner)); if(!person || !living(person)){ write("This being was not found."); return 2; } } if(objectp(strob)){ person = strob; str = person->GetName(); } if(!str || str == "") { write("Please rephrase, including your target this time."); return 1; } if(!living(person)){ write("This thing is not alive."); return 2; } ngstuff=all_inventory(person); gstuff = ({}); say(scanner->GetName()+" waves a tricorder at "+person->GetName()+".",({scanner,person}) ); tell_object(person,scanner->GetName()+" waves a tricorder at you."); for(i=0;iisGerm()== 1 && !sizeof(gstuff)) gstuff = ({ngstuff[i]}); if(ngstuff[i]->isGerm()== 1 && sizeof(gstuff) > 0 ) gstuff += ({ngstuff[i]}); } if(!sizeof(gstuff)){ write(person->GetName()+" has no detectable diseases."); return 2; } for(i=0;iGetKeyName() || a == "" ) a = "generic disease"; if(!b=gstuff[i]->GetType() || b == "" ) b = "unknown type"; if(intp(gstuff[i]->GetCure())) c=gstuff[i]->GetCure(); if(!c) c = 0; write("Disease: "+a+", type: "+b+", severity: "+c); return 1; } write("Please specify a living being that shares your current location."); return 2; } int germ_squash(string str){ int i,bar,c; object array whom; allowed=preAction(1); if(allowed == 2) return 1; if(!str || str == "") { write("Please specify a living thing, or \"all\" for everything in "+ "your environment."); return 1; } if(str == "me") str = this_player()->GetKeyName(); person=present(str,environment(scanner)); whom = ({}); if(!person && str !="all"){ write("Disease check: No such being found"); return 1; } if( str !="all" && !living(person)){ write("Disease check: No such living being found"); return 1; } if(str =="all") whom = get_livings(environment(this_player())); if(str !="all") whom = ({person}); foreach(object ingrate in whom){ i=germ_scan(ingrate); if(i!=2 && intp(gstuff[i]->GetCure()) ) bar=gstuff[i]->GetCure(); if(i!=2 && !intp(gstuff[i]->GetCure()) ) write("GetCureType: "+typeof(gstuff[i]->GetCure())); if(!i) { write("Extremely weird error here."); return 1; } for(i=0;iisGerm() ){ c=10; gstuff[i]->SetCure(c); if(intp(gstuff[i]->GetCure()) ){ gstuff[i]->eventCure(ingrate,c,gstuff[i]->GetType()); write("You cure "+ingrate->GetName()+"'s disease."); say(ingrate->GetName()+" looks healthier.",ingrate); tell_object(ingrate,"You feel less sick."); } if(gstuff[i] && gstuff[i]->isGerm() && !intp(gstuff[i]->GetCure())){ write("This disease uses a functional as its SetCure condition."); write("It will not be cured by this device. You will have to "+ "manually review the germ's code to determine what will cure it."); write("SetCure() data type: "+typeof(gstuff[i]->GetCure())); write("Filename: "+base_name(gstuff[i])+"\n"); } } } gstuff=({}); } return 1; } int infect(string str){ string whom,what,disease; object ob; mixed foo; allowed=preAction(1); if(allowed == 2) return 1; if(!str){ write("Please indicate whom to infect, and with what. Example:"); write("infect doofus cold"); write("Current valid diseases: cold, flu, fleas, lice, h1n1"); return 1; } if(sscanf(str,"%s %s",whom,what)) { if(!whom || !what || whom == "" || what == ""){ write("Please indicate whom to infect, and with what. Example:"); write("infect doofus cold"); write("Current valid diseases: cold, flu, fleas, lice"); return 1; } } if(!whom || !what || whom == "" || what == ""){ write("Please indicate whom to infect, and with what. Example:"); write("infect doofus cold"); write("Current valid diseases: cold, flu, fleas, lice"); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); person=present(whom,environment(scanner)); if(!person || !living(person)){ write("This being was not found."); return 1; } if(what == "cold") disease = "/domains/town/obj/cold"; else if(what == "flu") disease = "/domains/town/obj/flu"; else if(what == "fleas") disease = "/domains/town/obj/fleas"; else if(what == "lice") disease = "/domains/town/obj/lice"; else if(what == "rage") disease = "/domains/town/obj/rage"; else if(what == "h1n1") disease = "/domains/town/obj/h1n1"; else if(what != "") { write("That isn't a valid disease."); return 1; } if(person){ write(person->GetName()+" located. Infecting..."); say(scanner->GetName()+" waves a tricorder at "+person->GetName()+".",person); if(present(whom,environment(scanner))) { tell_object(person,scanner->GetName()+" waves a tricorder at you."); } } ob=new(disease); if(ob) foo = ob->eventInfect(person); else write("There's a problem with that parasite."); return 1; } int amputate(string str){ string whom,which,limb,both; allowed=preAction(); if(allowed == 2) return 1; if(!str){ write("Please indicate whose limbs you wish to amputate, and which. Example:"); write("amputate joey left hand"); return 1; } if(sscanf(str,"%s %s %s",whom,which,limb)) { if(!limb) sscanf(str,"%s %s",whom,limb); } if(whom && whom == "me") whom = this_player()->GetKeyName(); if(!whom || !limb){ write("Please indicate whose limbs you wish to amputate, and which. Example:"); write("amputate joey left hand"); return 1; } if(!person=present(whom,environment(scanner))){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } both = limb; if(which && which !="") both = which+" "+limb; //write("both: "+both); if(!person->RemoveLimb(both, scanner)){ write("You wave your tricorder menacingly, but nothing happens."); tell_room(environment(person),scanner->GetName()+" waves a tricorder at "+person->GetName()+" in a threatening manner.", ({ scanner,person }) ); tell_object(person,scanner->GetName()+" waves "+possessive(scanner)+" tricorder menacingly at you."); return 1; } if(both == "head"){ tell_room(environment(person),scanner->GetName()+" waves a tricorder at "+person->GetName()+", and "+ person->GetName()+"'s head falls off!", ({ scanner,person }) ); write("You decapitate "+person->GetName()+"."); tell_object(person,scanner->GetName()+" decapitates you with a wave of "+possessive(scanner)+" tricorder!"); //person->RemoveLimb(both, scanner); return 1; } stumps=person->GetLimbs(); if(!stumps) { write(person->GetName()+" hasn't any limbs."); say(scanner->GetName()+" waves a tricorder at "+person->GetName()+".",scanner,person); tell_object(person,scanner->GetName()+" waves a tricorder at you."); return 1; } if(member_array(both,stumps) != -1){ person->RemoveLimb(both, scanner); write("You amputate "+person->GetName()+"'s "+both); say(scanner->GetName()+" has amputated "+person->GetName()+"'s "+both+" "+ "with an energy beam from a medical tricorder.",scanner,person); tell_object(person,scanner->GetName()+" waves a tricorder at you and "+ "your "+both+" is severed."); return 1; } if(member_array(limb,stumps)!= -1){ //person->RemoveLimb(limb, scanner); write("You amputate "+person->GetName()+"'s "+limb+"."); say(scanner->GetName()+" has amputated "+person->GetName()+"'s "+both+" "+ "with an energy beam from a medical tricorder.",scanner,person); tell_object(person,scanner->GetName()+" waves a tricorder at you and"+ "your "+limb+" is severed."); return 1; } //write("There is some sort of problem, it looks like. No "+ //"limbs are severed."); return 1; } int regenerate(string str){ allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Please indicate whose limbs you wish to regenerate."); return 1; } if(str == "me") str = this_player()->GetKeyName(); if(!person=present(str,environment(scanner))){ write(capitalize(str)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } stumps=person->GetMissingLimbs(); if(!stumps) { write(person->GetName()+" isn't missing any limbs."); say(scanner->GetName()+" waves a tricorder at "+person->GetName()+".",scanner,person); tell_object(person,scanner->GetName()+" waves a tricorder at you."); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } for(i=0;iRestoreLimb(stumps[i]); write("You regenerate "+person->GetName()+"'s "+stumps[i]+"."); say(scanner->GetName()+" regenerates "+person->GetName()+"'s "+stumps[i]+".",scanner,person); tell_object(person,scanner->GetName()+" regenerates your "+stumps[i]+"."); } return 1; } int DoSkillChange(string str, int i){ int more_or_less; if(str == "me") str = this_player()->GetKeyName(); this_skill = person->GetSkill(str); if(this_skill["level"] < i) more_or_less = 1; skillclass=this_skill["class"]; person->SetSkill(str,i,skillclass); say(scanner->GetName()+" waves a medical tricorder at "+person->GetName()+".",({person,scanner})); tell_object(person,scanner->GetName()+" waves a medical tricorder at you."); if(more_or_less == 1) tell_room(environment(person), person->GetName()+" looks somehow more experienced.",({person}) ); if(more_or_less != 1) tell_room(environment(person), person->GetName()+" looks somehow less experienced.",({person}) ); write("You've set "+person->GetName()+"'s "+str+" to level "+i+"."); return 1; } int DoAllSkills(int foo){ int i; for(i=0;iGetSkill(skilllist[i]); skillclass=this_skill["class"]; person->SetSkill(skilllist[i],foo,skillclass); write("You've set "+person->GetName()+"'s "+skilllist[i]+" to level "+foo+"."); } say(scanner->GetName()+" waves a medical tricorder at "+person->GetName()+".",({person,scanner})); say(person->GetName()+" seems to undergo an almost undetectable, subtle transformation.",({person,scanner})); tell_object(person,scanner->GetName()+" waves a medical tricorder at you."); return 1; } int setskill(string str){ string whom,skill; string skill1,skill2,rubbish; int amt; allowed=preAction(); if(allowed==2) return 1; if(!str) { write("Syntax: setskill "); write("If there is a space in the skill name, replace it with "+ "an underscore. Example:\nsetskill schmucky blade_attack 5"); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!sscanf(str,"%s %s %d",whom,skill,amt)) { sscanf(str,"%s %s",whom,skill); } if(sscanf(str,"%s %s_%s ",rubbish,skill1,skill2) && skill1 && skill2){ whom = rubbish; skill = skill1 + " " +skill2; } write("skill: "+skill); if(!whom || whom == ""){ write("Syntax: setskill "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!person=present(whom,environment(scanner))){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } this_skill = ([]); skilllist = ({}); skilllist = person->GetSkills(); if(amt < 0) amt = 0; if(allowed==2) return 1; if ( !whom || !skill || !amt || !intp(amt) ){ write("Syntax: setskill "); write("If there is a space in the skill name, replace it with "+ "an underscore. Example:\nsetskill schmucky blade_attack 5"); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(skill == "all") { DoAllSkills(amt); return 1; } if(member_array(skill,skilllist) == -1) { write(capitalize(whom)+" doesn't have that skill."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } DoSkillChange(skill, amt); return 1; } int DoStatChange(string str, int i){ if(str == "me") str = this_player()->GetKeyName(); this_stat = person->GetStat(str); statclass=this_stat["class"]; person->SetStat(str,i,statclass); say(scanner->GetName()+" waves a medical tricorder at "+person->GetName()+".",({person,scanner})); tell_object(person,scanner->GetName()+" waves a medical tricorder at you."); write("You've set "+person->GetName()+"'s "+str+" to level "+i+"."); return 1; } int DoAllStats(int foo){ int i; for(i=0;iGetStat(statlist[i]); statclass=this_stat["class"]; person->SetStat(statlist[i],foo,statclass); write("You've set "+person->GetName()+"'s "+statlist[i]+" to level "+foo+"."); } say(scanner->GetName()+" waves a medical tricorder at "+person->GetName()+".",({person,scanner})); tell_object(person,scanner->GetName()+" waves a medical tricorder at you."); return 1; } int setstat(string str){ string whom,stat; int amt; allowed=preAction(); if(allowed==2) return 1; if(!str) { write("Syntax: setstat "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!sscanf(str,"%s %s %d",whom,stat,amt)) { sscanf(str,"%s %s",whom,stat); } if(!whom || whom == ""){ write("Syntax: setstat "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!person=present(whom,environment(scanner))){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } this_stat = ([]); statlist = ({}); statlist = person->GetStats(); if(amt < 0) amt = 0; if(allowed==2) return 1; if ( !whom || !stat || !amt || !intp(amt) ){ write("Syntax: setstat "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(stat == "all") { DoAllStats(amt); return 1; } if(member_array(stat,statlist) == -1) { write(capitalize(whom)+" doesn't have that stat."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } DoStatChange(stat, amt); return 1; } int modstam(string str, int stamina){ string whom; int tempint,staminalevel; object person; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Syntax: modstam "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s %d",whom,stamina); if (!whom || !stamina){ write("Syntax: modstam "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!intp(stamina)){ write("Syntax: modstam "); write("Where is an integer. For example:\nmodstam joe 3\nmodstam mike -10\n"); say(scanner->GetName()+" fumbles stupidly with a medical tricorder.",scanner); return 1; } person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } staminalevel=person->GetStaminaPoints(); tempint = staminalevel + stamina; if(tempint < 0) { stamina = stamina + absolute_value(tempint); } person->AddStaminaPoints(stamina); if(stamina > 0){ say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks a bit more at ease.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel stronger."); write("You've raised "+capitalize(whom)+"'s stamina level by "+stamina+" points."); return 1; } if(stamina < 0){ stamina=absolute_value(stamina); say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks uncomfortable.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel weaker."); write("You've lowered "+capitalize(whom)+"'s stamina level by "+stamina+" points."); return 1; } write("Aucun effet."); return 1; } int modtox(string str, int poison){ string whom; int tempint,poisonlevel; object person; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Syntax: modtox "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s %d",whom,poison); if (!whom || !poison){ write("Syntax: modtox "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!intp(poison)){ write("Syntax: modtox "); write("Where is an integer. For example:\nmodtox joe 3\nmodtox mike -10\n"); say(scanner->GetName()+" fumbles stupidly with a medical tricorder.",scanner); return 1; } person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } poisonlevel=person->GetPoison(); tempint = poisonlevel + poison; if(tempint < 0) { poison = poison + absolute_value(tempint); } person->AddPoison(poison); if(poison > 0){ say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks paler and shaky.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel ill."); write("You've raised "+capitalize(whom)+"'s poison level by "+poison+" points."); return 1; } if(poison < 0){ poison=absolute_value(poison); say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks less ill.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel better than before."); write("You've lowered "+capitalize(whom)+"'s poison level by "+poison+" points."); return 1; } write("Aucun effet."); return 1; } int modmag(string str, int magic){ string whom; int tempint,magiclevel; object person; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Syntax: modmagic "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s %d",whom,magic); if (!whom || !magic){ write("Syntax: modmagic "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!intp(magic)){ write("Syntax: modmagic "); write("Where is an integer. For example:\nmodmagic joe 3\nmodmagic mike -10\n"); say(scanner->GetName()+" fumbles stupidly with a medical tricorder.",scanner); return 1; } person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } magiclevel=person->GetMagicPoints(); tempint = magiclevel + magic; if(tempint < 0) { magic = magic + absolute_value(tempint); } person->AddMagicPoints(magic); if(magic > 0){ say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" glows briefly.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel more magical."); write("You've raised "+capitalize(whom)+"'s magic level by "+magic+" points."); return 1; } if(magic < 0){ magic=absolute_value(magic); say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks somehow more plain.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel less magical."); write("You've lowered "+capitalize(whom)+"'s magic level by "+magic+" points."); return 1; } write("Aucun effet."); return 1; } int moddrink(string str, int drink){ string whom; int tempint,drinklevel; object person; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Syntax: moddrink "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s %d",whom,drink); if (!whom || !drink){ write("Syntax: moddrink "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!intp(drink)){ write("Syntax: moddrink "); write("Where is an integer. For example:\nmoddrink joe 3\nmoddrink mike -10\n"); say(scanner->GetName()+" fumbles stupidly with a medical tricorder.",scanner); return 1; } person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } drinklevel=person->GetDrink(); tempint = drinklevel + drink; if(tempint < 0) { drink = drink + absolute_value(tempint); } person->AddDrink(drink); if(drink > 0){ say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks a bit more at ease.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel more hydrated."); write("You've raised "+capitalize(whom)+"'s drink level by "+drink+" points."); return 1; } if(drink < 0){ drink=absolute_value(drink); say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks uncomfortable.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel thirstier."); write("You've lowered "+capitalize(whom)+"'s drink level by "+drink+" points."); return 1; } write("Aucun effet."); return 1; } int modfood(string str, int food){ string whom; int tempint,foodlevel; object person; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Syntax: modfood "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s %d",whom,food); if (!whom || !food){ write("Syntax: modfood "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!intp(food)){ write("Syntax: modfood "); write("Where is an integer. For example:\nmodfood joe 3\nmodfood mike -10\n"); say(scanner->GetName()+" fumbles stupidly with a medical tricorder.",scanner); return 1; } person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } foodlevel=person->GetFood(); tempint = foodlevel + food; if(tempint < 0) { food = food + absolute_value(tempint); } person->AddFood(food); if(food > 0){ say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks a bit more at ease.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel more nourished."); write("You've raised "+capitalize(whom)+"'s food level by "+food+" points."); return 1; } if(food < 0){ food=absolute_value(food); say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks uncomfortable.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel hungrier."); write("You've lowered "+capitalize(whom)+"'s food level by "+food+" points."); return 1; } write("Aucun effet."); return 1; } int modcaff(string str, int caff){ string whom; int tempint,cafflevel; object person; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Syntax: modcaff "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s %d",whom,caff); if (!whom || !caff){ write("Syntax: modcaff "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!intp(caff)){ write("Syntax: modcaff "); write("Where is an integer. For example:\nmodcaff joe 3\nmodcaff mike -10\n"); say(scanner->GetName()+" fumbles stupidly with a medical tricorder.",scanner); return 1; } person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } cafflevel=person->GetCaffeine(); tempint = cafflevel + caff; if(tempint < 0) { caff = caff + absolute_value(tempint); } person->AddCaffeine(caff); if(caff > 0){ say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks a bit keener.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel tipsy."); write("You've raised "+capitalize(whom)+"'s caffeine level by "+caff+" points."); return 1; } if(caff < 0){ caff=absolute_value(caff); say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks more focused and alert.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel more awake."); write("You've lowered "+capitalize(whom)+"'s caffeine level by "+caff+" points."); return 1; } write("Aucun effet."); return 1; } int modalc(string str, int alc){ string whom; int tempint,alclevel; object person; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Syntax: modalc "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s %d",whom,alc); if (!whom || !alc){ write("Syntax: modalc "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!intp(alc)){ write("Syntax: modalc "); write("Where is an integer. For example:\nmodalc joe 3\nmodalc mike -10\n"); say(scanner->GetName()+" fumbles stupidly with a medical tricorder.",scanner); return 1; } person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } alclevel=person->GetAlcohol(); tempint = alclevel + alc; if(tempint < 0) { alc = alc + absolute_value(tempint); } person->AddAlcohol(alc); if(alc > 0){ say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks dizzier and more disoriented.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel tipsy."); write("You've raised "+capitalize(whom)+"'s alcohol level by "+alc+" points."); return 1; } if(alc < 0){ alc=absolute_value(alc); say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks more focused and alert.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel more sober."); write("You've lowered "+capitalize(whom)+"'s alcohol level by "+alc+" points."); return 1; } write("Aucun effet."); return 1; } int addhp(string str, int hp){ string whom; object person; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Syntax: addhp "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s %d",whom,hp); if (!whom || !hp){ write("Syntax: addhp "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); if(!intp(hp)){ write("Syntax: addhp "); write("Where is an integer. For example:\naddhp joe 3\naddhp mike -10\n"); say(scanner->GetName()+" fumbles stupidly with a medical tricorder.",scanner); return 1; } person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } person->AddHP(hp); if(hp > 0){ say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks stronger and more refreshed.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel stronger and more refreshed."); write("You've raised "+capitalize(whom)+"'s health by "+hp+" points."); return 1; } if(hp < 0){ hp=absolute_value(hp); say(scanner->GetName()+" points a medical tricorder at "+capitalize(whom)+", "+ "and "+nominative(person)+" looks weaker and duller.", ({person,scanner}) ); tell_object(person,scanner->GetName()+" points a medical tricorder at you and you "+ "suddenly feel weaker and more frail."); write("You've lowered "+capitalize(whom)+"'s health by "+hp+" points."); return 1; } write("Aucun effet."); return 1; } int extract(string str){ string what,whom; object person, slug; int rifleshot_wounds,firearms_wounds,wounds; allowed=preAction(); if(allowed==2) return 1; if(!str){ write("Extract what from whom?"); write("Example: extract slug from "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } sscanf(str,"%s from %s",what,whom); if (!what || ! whom){ write("Extract what from whom?"); write("Example: extract slug from "); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(whom == "me") whom = this_player()->GetKeyName(); person=present(whom,environment(scanner)); if(!person){ write(capitalize(whom)+" isn't here."); say(scanner->GetName()+" fumbles with a medical tricorder.",scanner); return 1; } if(!creatorp(this_player()) && strsrch(base_name(person), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } slug=present("firearms_wound",person); wounds=0; wounds=person->GetLead("gunshot_wounds"); wounds+=person->GetLead("rifleshot_wounds"); if(!slug && what=="slug"){ write(capitalize(whom)+" has no gunshot injury."); say(scanner->GetName()+" looks a bit silly waving a medical tricorder at "+capitalize(whom)+".",({ scanner, person }) ); tell_object(person,scanner->GetName()+" looks a bit silly waving a medical tricorder at you."); return 1; } if(slug && what=="slug" && wounds > 0 ){ write("You extract a lead slug from "+capitalize(whom)+"'s body."); say(scanner->GetName()+" deftly extracts a lead slug from "+capitalize(whom)+" with a medical tricorder.",({ scanner, person }) ); tell_object(person,scanner->GetName()+" deftly extracts a lead slug from you with a medical tricorder."); firearms_wounds=person->GetLead("firearms_wounds"); rifleshot_wounds=person->GetLead("rifleshot_wounds"); slug=new("/domains/town/obj/spent"); if(person->GetLead("gunshot_wounds") > 0) { person->AddLead("gunshot_wounds", -1); slug->SetShort("a spent pistol slug"); --wounds; slug->eventMove(environment(scanner)); if(person->GetLead() < 1){ slug=present("firearms_wound",person); if(slug) slug->eventDestruct(); return 1; } return 1; } if(person->GetLead("rifleshot_wounds") > 0) { person->AddLead("rifleshot_wounds", -1); slug->SetShort("a spent rifle slug"); --wounds; slug->eventMove(environment(scanner)); if(person->GetLead() < 1){ if(slug) slug->eventDestruct(); slug=present("firearms_wound",person); if(slug) slug->eventDestruct(); return 1; } } slug->eventMove(environment(scanner)); slug=present("firearms_wound",person); if(wounds < 1 && slug){ slug->eventDestruct(); return 1; } } return 1; } int fscan(string str){ object ob; object *stuffs; mixed *stuff; allowed=preAction(); if(allowed==2) return 1; if(!str || str=="" || str=="here") { ob = environment(this_player()); name = ob->GetShort(); str = base_name(ob); } if(str == "me") str = this_player()->GetKeyName(); if(present(str,this_player())) { ob = present(str,this_player()); name = ob->GetName(); } if(present(str,environment(this_player()))) { ob=present(str,environment(this_player())); name = ob->GetName(); } if(!ob){ write("The tricorder fails to locate any such person, object, or environment.\n"); say(this_player()->GetName()+" scans around aimlessly with "+ " a medical tricorder.\n"); return 1; } write("You perform a file scan of "+name+".\n\n"); write("\n"+name+" is in posession of the following items:"); write("-------------------------------------------"); say(this_player()->GetName()+" performs a tricorder scan of "+name+".\n",ob); tell_object(ob,this_player()->GetName()+" scans you with "+ "a medical tricorder.\n"); stuffs=deep_inventory(ob); filter(stuffs, (: this_object()->analyze(file_name($1)) :), this_object()); filter(stuffs, (: this_object()->getname($1) :), this_object()); stuff=deep_inherit_list(ob); write("\n"+name+" is composed of the following files:\n"); write("-------------------------------------------"); foreach(mixed gene in deep_inherit_list(ob)) { if(!stringp(gene)) break; if(!gene) gene=""; write(gene); } write("\nSCAN COMPLETE"); return 1; } void analyze(string str){ string temp, temp2; sscanf(str,"%s#%s",temp,temp2); if(temp=="/lib/corpse"){ write("Found a corpse. Absolute name:\n"+str); return; } return; } string getname(object ob){ string temp, temp2; if(!ob) return "No object found."; else sscanf(file_name(ob),"%s#%s",temp,temp2); write(ob->GetName()+",\t\tfilename: "+temp+".c"); return ob->GetName(); } mixed assess(string args) { string *lines, *arr, *limbs; object ob; string tmp1, tmp2; int i, x, y, cols; if( args == "" || !args ) return 0; if(args == "me") args = this_player()->GetKeyName(); if( !(ob = present(args, environment(this_player()))) ) if( !(ob = find_player(convert_name(args))) && !(ob = find_living(lower_case(args))) ) return capitalize(args) + " is nowhere to be found."; if( creatorp(ob) ) return "You cannot get stat information on a creator."; if(!creatorp(this_player()) && strsrch(base_name(ob), homedir(this_player()))){ write("Builders can only do this to NPC's that belong to them."); return 1; } if(tmp1 = ob->GetGender()) { cols = ((int *)this_player()->GetScreen())[0]; tmp1 = ob->GetCapName() + " aka " + ob->GetShort() + ", level " + ob->GetLevel() + " " + ob->GetGender(); if( !(tmp2 = ob->GetRace()) ) tmp2 = "blob"; tmp1 += " " + tmp2; if( !(tmp2 = ob->GetClass()) ) tmp2 = "drifter"; tmp1 += " " + capitalize(tmp2); if( tmp2 = ob->GetSpouse() ) tmp1 += " (spouse: " + tmp2 + ")"; lines = ({ center(tmp1, cols) }); if( ob->GetUndead() ) tmp1 = "Undead"; else tmp1 = "Alive"; if( ob->GetSleeping() ) tmp1 += " / Sleeping"; else tmp1 += " / Awake"; if( ob->GetParalyzed() ) tmp1 += " / Paralyzed"; lines += ({ center(tmp1, cols), "" }); lines += ({ center("Health: " +ob->GetHealthPoints() + "/"+ ob->GetMaxHealthPoints() + " Magic: " + ob->GetMagicPoints() + "/" + ob->GetMaxMagicPoints() + " Stamina: " + ob->GetStaminaPoints() + "/" + to_int((float)ob->GetMaxStaminaPoints()) + " Carry: " + ob->GetCarriedMass() + "/" + ob->GetMaxCarry(), cols) }); lines += ({ center("Food: " + ob->GetFood() + " " + "Drink: " + ob->GetDrink() + " " + "Alcohol: " + ob->GetAlcohol() + " " + "Caffeine: " + ob->GetCaffeine() + " " + "Poison: " + ob->GetPoison() + " ", cols) }); lines += ({ center("Training Points: " + ob->GetTrainingPoints()) }); lines += ({ "", "Limbs:" }); limbs = ob->GetWieldingLimbs(); arr = map(ob->GetLimbs(), (: sprintf("%:-14s%s (%d) %d/%d", $1, ((member_array($1, $(limbs)) == -1) ? " " : "*"), ($(ob))->GetLimbClass($1), ($(ob))->GetHealthPoints($1), ($(ob))->GetMaxHealthPoints($1)) :)); i = sizeof(arr); while(i--) if( (y = strlen(arr[i])) > x ) x = y; x = cols/(x+2); lines += explode(format_page(arr, x), "\n") + ({ "", "Skills:" }); arr = map(ob->GetSkills(), function(string skill, object who) { mapping mp = who->GetSkill(skill); int x; x = to_int(percent(mp["points"], who->GetMaxSkillPoints(skill, mp["level"]))); return sprintf("%:-18s (%d) %:2d%% - %d/%d", skill, mp["class"], x, who->GetSkillLevel(skill), mp["level"] ); }, ob); i = sizeof(arr); while(i--) if( (y = strlen(arr[i])) > x ) x = y; x = cols/(x+2); lines += explode(format_page(arr, x), "\n") + ({ "", "Stats:" }); arr = map(ob->GetStats(), (: sprintf("%:-12s (%d) %d/%d", $1, ($(ob))->GetStatClass($1), ($(ob))->GetStatLevel($1), ($(ob))->GetBaseStatLevel($1)) :)); i = sizeof(arr); x = 0; while(i--) if( (y = strlen(arr[i])) > x ) x = y; x =cols/(x+2); lines += explode(format_page(arr, x), "\n"); lines += ({ "", ob->GetName()+" has amassed a net worth of " + ( ob->GetNetWorth() * currency_rate("gold") ) + " gold."}); arr = filter( map(ob->GetCurrencies(), (: ($(ob))->GetCurrency($1) && sprintf("%d %s", ($(ob))->GetCurrency($1), $1) :)), (: $1 :)); lines += ({ "Money on hand: "+implode(arr, ", ") }); this_player()->eventPage(lines, "system"); return 1; } else { write("You can't stat a non-living object!"); return 1; } }