varargs string format_desc(string raw, int terminal_width, int leading_indent_width, int inner_indent_width, string *highlight, string highlight_color) {
string result = "";
string *paragraphs = rexplode(raw, "\n");
string leading_indent = "";
string inner_indent = "";
if(undefinedp(terminal_width) || terminal_width < 10) {
object tp = this_player();
terminal_width = 75;
if(!undefinedp(tp)) {
int sw = tp->GetScreen()[0];
if(!undefinedp(sw) && sw > 0) {
terminal_width = sw;
}
}
}
if(!undefinedp(leading_indent_width) && leading_indent_width > 0) {
leading_indent = sprintf("%-*.*s", leading_indent_width, leading_indent_width, " ");
}
if(!undefinedp(inner_indent_width) && inner_indent_width > 0) {
inner_indent = sprintf("%-*.*s", inner_indent_width, inner_indent_width, " ");
}
for(int i = 0; i < sizeof(paragraphs); i++) {
string p = paragraphs[i];
result += (i != 0 ? "" : "");
result += leading_indent + implode(explode(sprintf("%-=*s\n", terminal_width, p), "\n"), "\n" + inner_indent);
result += "\n";
}
if(!undefinedp(highlight)) {
if(undefinedp(highlight_color)) {
highlight_color = "%^BOLD%^%^YELLOW%^";
}
foreach(string h in highlight) {
string tmp = "";
tmp = replace_string(result, h, highlight_color + h + "%^RESET%^", 1);
if(tmp == result) {
if(strsrch(h, " ") != -1) {
string *words = explode(h, " ");
for(int i = 0; i < sizeof(words); i++) {
string t = replace_string(h, " ", "\n", i+1, i+1);
tmp = replace_string(result, t, highlight_color + t + "%^RESET%^", 1);
if(tmp != result) {
break;
}
}
}
}
result = tmp;
}
}
return result;
}
SetLong(format_desc(
"The common room of the Griffin's Tale is a quiet place.\n"
"A long table fills the center of this warm and comfortable "
"room. A bright and servicable bar occupies the east and "
"south walls, almost entirely. A warm fireplace fills the "
"north wall.\n"
"A solid, if somewhat beaten, oak door leads out into the "
"street to the west. An open archway leads past the fireplace "
"and into the kitchen northwards. To the east, a set of double "
"doors leads deeper into the inn. Along the south wall, sits "
"a smaller door.",
width, leading, inner,
({ "long table", "bar", "fireplace", "oak door", "archway", "double doors", "smaller door" })
));
keys(GetItems())
Actualy, yes they do!
The equivalent of "brief mode" for a graphical MMO is to turn down all the graphics settings to improve performance. And yes, there are even third-party addons for WoW to toggle between two sets of graphical settings… one that looks pretty for wandering around doing quests, and one that optimizes for performance while doing raids where timing is critical.
That's more a matter of people having low end PCs, which is an entirely different circumstance here. No one's going to turn on brief because it's overtaxing their… anything.