/* weapon.c */ #include <sys.h> #include <armor.h> object wearer,owner; string name,short_desc,long_desc; int damreduce,hitreduce,protection,flags,special,value; self_destruct() { destruct(this_object()); return 1; } get_protection() { return protection; } make_prot_number(x) { if (x=="head") return 0; if (x=="neck") return 1; if (x=="torso") return 3; if (x=="body") return 2; if (x=="arms") return 4; if (x=="hands") return 5; if (x=="groin") return 6; if (x=="legs") return 7; if (x=="feet") return 8; return -1; } make_prot_string(x) { if (x==0) return "head"; if (x==1) return "neck"; if (x==3) return "torso"; if (x==2) return "body"; if (x==4) return "arms"; if (x==5) return "hands"; if (x==6) return "groin"; if (x==7) return "legs"; if (x==8) return "feet"; return 0; } replicate() { object o; o=clone_object("/obj/armor"); call_other(o,"set_hitreduce",hitreduce); call_other(o,"set_damreduce",damreduce); call_other(o,"set_protection",protection); call_other(o,"set_name",get_name()); call_other(o,"set_short",short_desc); call_other(o,"set_long",long_desc); call_other(o,"set_flags",flags); call_other(o,"set_special",special); call_other(o,"set_owner",owner); call_other(o,"set_value",value); move_object(o,location(this_object())); return o; } set_value(arg) { value=arg; return 1; } get_value() { return value; } get_type() { return TYPE_ARMOR; } get_owner() { return owner; } get_flags() { return flags; } get_special() { return special; } set_owner(o) { owner=o; return 1; } set_flags(f) { flags=f; return 1; } set_special(s) { special=s; return 1; } set_protection(x) { if (x<0 || x>=NUM_PROT || wearer) return 0; protection=x; return 1; } stat() { tell_player(this_player(),"Object Type: ARMOR\n"); if (flags) tell_player(this_player(),"Flags: "+make_flags(flags)+"\n"); if (special) tell_player(this_player(),"Special: "+itoa(special)+"\n"); if (name) tell_player(this_player(),"Name: "+get_name()+"\n"); if (short_desc) tell_player(this_player(),"Short: "+short_desc+"\n"); if (long_desc) tell_player(this_player(),"Long: "+long_desc+"\n"); tell_player(this_player(),"HitReduce: "+itoa(hitreduce)+"\n"); tell_player(this_player(),"DamReduce: "+itoa(damreduce)+"\n"); tell_player(this_player(),"Protection: "+make_prot_string(protection)+"\n"); tell_player(this_player(),"Value: "+itoa(value)+"\n"); if (wearer) tell_player(this_player(),"Worn By: "+make_num(wearer)+"\n"); if (owner) tell_player(this_player(),"Owner: "+make_num(owner)+"\n"); return 1; } id(arg) { return instr(name,1,";"+arg+";"); } get_short() { return wearer? short_desc+" (worn on "+ make_prot_string(protection)+")":short_desc; } set_short(arg) { short_desc=arg; return 1; } get_long() { return long_desc; } set_long(arg) { long_desc=arg; return 1; } get_name() { if (name) return midstr(name,2,strlen(name)-2); } set_name(arg) { int pos; pos=instr(arg,1,";"); name=";"+arg+";"; if (!short_desc) if (pos) short_desc="a "+leftstr(arg,pos-1); else short_desc="a "+arg; if (!long_desc) long_desc="You see nothing special."; return 1; } drop() { return wearer; } dead_drop() { if (wearer) call_other(wearer,"force_unwear",protection); wearer=0; return 0; } get() { return 1; } wear() { if (wearer) return 0; wearer=caller_object(); return 1; } unwear() { if (!wearer) return 1; if (caller_object()!=wearer) return 1; wearer=0; return 0; } get_hitreduce() { return hitreduce; } set_hitreduce(bonus) { hitreduce=bonus; return 1; } get_damreduce() { return damreduce; } set_damreduce(x) { damreduce=x; return 1; }