--- deliantra/server/common/map.C 2009/10/15 21:40:42 1.163 +++ deliantra/server/common/map.C 2009/10/16 01:19:12 1.164 @@ -568,32 +568,30 @@ /* opposite of parse string, this puts the string that was originally fed in to * the map (or something equivilent) into output_string. */ -static void -print_shop_string (maptile *m, char *output_string) +static const char * +print_shop_string (maptile *m) { - int i; - char tmp[MAX_BUF]; + static dynbuf_text buf; buf.clear (); - strcpy (output_string, ""); - for (i = 0; i < m->shopitems[0].index; i++) + for (int i = 0; i < m->shopitems[0].index; i++) { if (m->shopitems[i].typenum) { if (m->shopitems[i].strength) - sprintf (tmp, "%s:%d;", m->shopitems[i].name, m->shopitems[i].strength); + buf.printf ("%s:%d;", m->shopitems[i].name, m->shopitems[i].strength); else - sprintf (tmp, "%s;", m->shopitems[i].name); + buf.printf ("%s;", m->shopitems[i].name); } else { if (m->shopitems[i].strength) - sprintf (tmp, "*:%d;", m->shopitems[i].strength); + buf.printf ("*:%d;", m->shopitems[i].strength); else - sprintf (tmp, "*"); + buf.printf ("*"); } - - strcat (output_string, tmp); } + + return buf; } /* This loads the header information of the map. The header @@ -738,20 +736,14 @@ MAP_OUT (no_reset); MAP_OUT (no_drop); MAP_OUT (difficulty); - if (default_region) MAP_OUT2 (region, default_region->name); - if (shopitems) - { - char shop[MAX_BUF]; - print_shop_string (this, shop); - MAP_OUT2 (shopitems, shop); - } - + if (shopitems) MAP_OUT2 (shopitems, print_shop_string (this)); MAP_OUT (shopgreed); MAP_OUT (shopmin); MAP_OUT (shopmax); if (shoprace) MAP_OUT (shoprace); + MAP_OUT (darkness); MAP_OUT (width); MAP_OUT (height);