/* sys.c */ #include <flags.h> make_flags(f) { string s; if (f & F_PERMANENT) { s+=" permanent"; f&=~F_PERMANENT; } if (f & F_FORSALE) { s+=" forsale"; f&=~F_FORSALE; } if (f & F_HOSTILE) { s+=" hostile"; f&=~F_HOSTILE; } if (f & F_TEMPLE) { s+=" temple"; f&=~F_TEMPLE; } if (f & F_DARK) { s+=" dark"; f&=~F_DARK; } if (f) s+=" "+itoa(f); return s; } make_num(o) { int type,owner,f; string name,num; object rcv; name=call_other(o,"get_short"); type=call_other(o,"get_type"); if (type==4) name="Exit: "+call_other(o,"get_name"); owner=call_other(o,"get_owner"); if (!(rcv=this_player())) rcv=caller_object(); if (owner!=rcv && call_other(rcv,"get_type")==8) return name; num="(#"+itoa(otoi(o)); if (type==1) num+="P"; else if (type==2) num+="w"; else if (type==3) num+="R"; else if (type==4) num+="E"; else if (type==5) num+="W"; else if (type==6) num+="A"; else if (type==7) num+="p"; else if (type==8) num+="b"; else if (type==9) num+="M"; else if (type==10) num+="O"; else if (type==11) num+="G"; else if (type==12) num+="S"; else if (type==13) num+="C"; else num="("+otoa(o); if (f=call_other(o,"get_flags")) { num+=" "; if (f & F_PERMANENT) num+="P"; if (f & F_FORSALE) num+="S"; if (f & F_HOSTILE) num+="H"; if (f & F_TEMPLE) num+="T"; if (f & F_DARK) num+="D"; } return name+num+")"; } present(name,loc) { object curr; int count,pos; if (!loc) return 0; pos=instr(name,1,"."); if (pos) { count=leftstr(name,pos-1); count=atoi(count); } if (count) name=rightstr(name,strlen(name)-pos); else count=1; if (!name) return 0; curr=contents(loc); while (curr) { if (call_other(curr,"id",name)) if (!(--count)) return curr; curr=next_object(curr); } return 0; } tell_room(room,msg) { if (!room) return; call_other(room,"listen",msg); iterate(contents(room),0,0,"listen",msg); } tell_room_except(room,player,msg) { if (!room) return; if (room!=player) call_other(room,"listen",msg); iterate(contents(room),player,0,"listen",msg); } tell_room_except2(room,p1,p2,msg) { if (!room) return; if (p1!=room && p2!=room) call_other(room,"listen",msg); iterate(contents(room),p1,p2,"listen",msg); } make_space(arg,len) { int count; count=len-strlen(arg); if (count<0) count=0; while (count--) arg+=" "; return arg; } who_list() { object curr; int count; string name; count=0; call_other(this_player(),"listen","Active Connections:\n"); call_other(this_player(),"listen","------------------\n"); curr=next_who(); while (curr) { name=call_other(curr,"get_short"); if (name) { count++; call_other(this_player(),"listen",name+"\n"); } curr=next_who(curr); } if (count==1) call_other(this_player(),"listen","1 player connected.\n"); else call_other(this_player(),"listen",itoa(count)+" players connected.\n"); } wiz_who_list() { object curr; int count; count=0; curr=next_who(); call_other(this_player(),"listen",make_space("Address",16)+ make_space("Name",32)+ "Location\n"); call_other(this_player(),"listen",make_space("-------",16)+ make_space("----",32)+ "--------\n"); while (curr) { count++; call_other(this_player(),"listen",make_space(get_devconn(curr),16)+ make_space(make_num(curr),32)+ (location(curr) ? make_num(location(curr)) : "void")+ "\n"); curr=next_who(curr); } if (count==1) call_other(this_player(),"listen","1 player connected.\n"); else call_other(this_player(),"listen",itoa(count)+ " players connected.\n"); } static init() { if (!prototype(this_object())) destruct(this_object()); } find_player(name) { string low_name; object curr; curr=atoo("/obj/player"); low_name=downcase(name); while (curr) { if (low_name==call_other(curr,"get_uid")) return curr; curr=next_child(curr); } return 0; } find_wiz(name) { string low_name; object curr; curr=atoo("/obj/wiz"); low_name=downcase(name); while (curr) { if (low_name==call_other(curr,"get_uid")) return curr; curr=next_child(curr); } return 0; }