Here:
void clif_parse_Broadcast(int fd, struct map_session_data* sd)
{
char* msg = (char*)RFIFOP(fd,4);
char output[CHAT_SIZE_MAX];
char title[25]; // 25 should be enough..
char lv_gm, len;
int lv, color;
lv_gm = pc_isGM(sd);
if( battle_config.atc_gmonly && !lv_gm )
return;
if( lv_gm < (lv=get_atcommand_level(atcommand_broadcast)) )
return;
if (lv_gm >= 20 && lv_gm < 40)
{ color = 0xFF0000; strcpy(title, "Support"); }
else if (lv_gm >= 40 && lv_gm < 60)
{ color = 0x800000; strcpy(title, "Event GM"); }
else if (lv_gm >= 60 && lv_gm < 80)
{ color = 0x4B0082; strcpy(title, "Sub GM"); }
else if (lv_gm >= 80 && lv_gm < 99)
{ color = 0x0000FF; strcpy(title, "GM"); }
else if (lv_gm == 99)
{ color = 0xFF0000; strcpy(title, "Administrator"); }
sprintf(output, "[%s] %s", title, msg);
// as the length varies depending on the command used, just block unreasonably long strings
len = mes_len_check(output, strlen(output) + 1, CHAT_SIZE_MAX);
intif_broadcast2(output, len, color, 0x190, 12, 0, 0);
if(log_config.gm && lv >= log_config.gm) {
char logmsg[CHAT_SIZE_MAX+4];
sprintf(logmsg, "/b %s", msg);
log_atcommand(sd, logmsg);
}
}
And yeah, stop bumping like that