// This file written completely by Tim Johnson (Tim@TimMUD) // broadcast the mudlist when a mud just now got changed... static void broadcast_mudlist(string mudname){ string targ_mudname; mixed *packet1; // for muds that use protocol 1 or 2 mixed *packet3; // for muds that use protocol 3 debug("broadcasting mudlist to let them know about "+mudname); packet1 = ({ "mudlist", 5, router_name, 0, "dummy", 0, mudinfo_update_counter,([ mudname:({ connected_muds[mudname] ? -1 : 0, // -1=up, 0=down, n=down for n secs mudinfo[mudname]["ip"], // ip_addr mudinfo[mudname]["player_port"], // player_port mudinfo[mudname]["imud_tcp_port"], // imud_tcp_port mudinfo[mudname]["imud_udp_port"], // imud_udp_port mudinfo[mudname]["mudlib"], // mudlib mudinfo[mudname]["base_mudlib"], // base_mudlib mudinfo[mudname]["driver"], // driver mudinfo[mudname]["mud_type"], // mud_type mudinfo[mudname]["open_status"], // open_status mudinfo[mudname]["services"], // services }) ]) }); packet3 = ({ "mudlist", 5, router_name, 0, "dummy", 0, mudinfo_update_counter,([ mudname:({ (connected_muds[mudname] ? -1 : 0), // -1=up, 0=down, n=down for n secs mudinfo[mudname]["ip"], // ip_addr mudinfo[mudname]["player_port"], // player_port mudinfo[mudname]["imud_tcp_port"], // imud_tcp_port mudinfo[mudname]["imud_udp_port"], // imud_udp_port mudinfo[mudname]["mudlib"], // mudlib mudinfo[mudname]["base_mudlib"], // base_mudlib mudinfo[mudname]["driver"], // driver mudinfo[mudname]["mud_type"], // mud_type mudinfo[mudname]["open_status"], // open_status mudinfo[mudname]["admin_email"], // admin_email mudinfo[mudname]["services"], // services mudinfo[mudname]["other_data"], // other_data }) ]) }); if(!mudinfo[mudname]){ // deleted mud... // just send a 0 to everyone foreach(targ_mudname in keys(connected_muds)){ write_data(connected_muds[targ_mudname], ({ "mudlist", 5, router_name, 0, targ_mudname, 0, mudinfo_update_counter, ([mudname:0]) }) ); } return; } foreach(targ_mudname in keys(connected_muds)){ switch(mudinfo[targ_mudname]["protocol"]){ case 1: case 2: packet1[4]=targ_mudname; write_data(connected_muds[targ_mudname], packet1); break; case 3: packet3[4]=targ_mudname; write_data(connected_muds[targ_mudname], packet3); break; } } }