diff --git a/Source/multi.cpp b/Source/multi.cpp index c6741d57e..25a9d3203 100644 --- a/Source/multi.cpp +++ b/Source/multi.cpp @@ -185,31 +185,23 @@ unsigned char *multi_recv_packet(TBuffer *packet, unsigned char *a2, int *a3) return result; } -void multi_send_msg_packet(int a1, BYTE *a2, BYTE len) +void multi_send_msg_packet(int pmask, BYTE *a2, BYTE len) { - //const void *v3; // edx - signed int v4; // ebx - unsigned int v5; // edi - TPkt pkt; // [esp+Ch] [ebp-204h] - int v8; // [esp+20Ch] [ebp-4h] + DWORD v, p, t; + TPkt pkt; - v8 = a1; NetRecvPlrData(&pkt); - pkt.hdr.wLen = len + 19; + t = len + 19; + pkt.hdr.wLen = t; memcpy(pkt.body, a2, len); - v4 = 1; - v5 = 0; - while (1) { - if (v4 & v8) { - if (!SNetSendMessage(v5, &pkt.hdr, len + 19) && SErrGetLastError() != STORM_ERROR_INVALID_PLAYER) - break; + for (v = 1, p = 0; p < MAX_PLRS; p++, v <<= 1) { + if (v & pmask) { + if (!SNetSendMessage(p, &pkt.hdr, t) && SErrGetLastError() != STORM_ERROR_INVALID_PLAYER) { + nthread_terminate_game("SNetSendMessage"); + return; + } } - ++v5; - v4 *= 2; - if (v5 >= MAX_PLRS) - return; } - nthread_terminate_game("SNetSendMessage"); } void multi_msg_countdown() diff --git a/Source/multi.h b/Source/multi.h index 16e7d6cde..56269bf48 100644 --- a/Source/multi.h +++ b/Source/multi.h @@ -25,7 +25,7 @@ void multi_send_packet(void *packet, BYTE dwSize); void NetRecvPlrData(TPkt *pkt); void NetSendHiPri(BYTE *pbMsg, BYTE bLen); unsigned char *multi_recv_packet(TBuffer *packet, unsigned char *a2, int *a3); -void multi_send_msg_packet(int a1, BYTE *a2, BYTE len); +void multi_send_msg_packet(int pmask, BYTE *a2, BYTE len); void multi_msg_countdown(); void multi_parse_turn(int pnum, int turn); void multi_handle_turn_upper_bit(int pnum);