mud/lib/secure/sefun/minimap.c
2020-09-06 05:43:07 -07:00

53 lines
2.2 KiB
C

string query_door(object what, string direction){
string door = what->GetDoor(direction);
object puerta;
if(!door) return "#";
else {
puerta = load_object(door);
if(!puerta) return "#";
if(puerta->GetClosed()) return "O";
return "#";
}
return " ";
}
varargs string simple_map(mixed arg){
string *exits;
string *extra_desc = ({});
string ret = "";
string line0 = "---------\n";
string line6 = "---------\n";
string line1 = "| |\n";
string line2, line3, line4, line5;
line2 = line3 = line4 = line5 = line1;
if(!arg && !this_player()) return "";
if(!arg) arg = environment(this_player());
if(stringp(arg)) arg = load_object(arg);
if(living(arg) || arg->GetMount()) arg = environment(arg);
if(!arg) return "";
exits = arg->GetExits();
if(!exits || !sizeof(exits)) return "";
line3[4..4] = "*";
foreach(string element in exits){
switch(element){
case "north" : line1[4..4] = query_door(arg, element); line2[4..4] = "|";break;
case "south" : line5[4..4] = query_door(arg, element); line4[4..4] = "|";break;
case "east" : line3[7..7] = query_door(arg, element); line3[5..5] = "-";line3[6..6] = "-";break;
case "west" : line3[1..1] = query_door(arg, element); line3[2..2] = "-";line3[3..3] = "-";break;
case "northeast" : line1[7..7] = query_door(arg, element); line2[6..6] = "/";break;
case "northwest" : line1[1..1] = query_door(arg, element); line2[2..2] = "\\";break;
case "southeast" : line5[7..7] = query_door(arg, element); line4[6..6] = "\\";break;
case "southwest" : line5[1..1] = query_door(arg, element); line4[2..2] = "/";break;
//case "up" : extra_desc += ({ "up" });break;
//case "down" : extra_desc += ({ "down" });break;
default : extra_desc += ({ element });break;
}
}
if(sizeof(extra_desc)){
line3 = replace_string(line3,"\n"," Also available: "+item_list(extra_desc)+".\n");
}
ret = line0 + line1 + line2 + line3 + line4 + line5 +line6;
return ret;
}