--- deliantra/server/socket/request.C 2006/09/19 10:12:50 1.22 +++ deliantra/server/socket/request.C 2006/09/19 22:05:55 1.24 @@ -1155,9 +1155,9 @@ } if (pl->socket.exp64) - AddIfInt64 (pl->last_stats.exp, pl->ob->stats.exp, CS_STAT_EXP64); + { AddIfInt64 (pl->last_stats.exp, pl->ob->stats.exp, CS_STAT_EXP64) } else - AddIfInt (pl->last_stats.exp, (int) pl->ob->stats.exp, CS_STAT_EXP); + { AddIfInt (pl->last_stats.exp, (int) pl->ob->stats.exp, CS_STAT_EXP) } AddIfShort (pl->last_level, (char) pl->ob->level, CS_STAT_LEVEL); AddIfShort (pl->last_stats.wc, pl->ob->stats.wc, CS_STAT_WC); @@ -1178,7 +1178,7 @@ AddIfShort (pl->last_flags, flags, CS_STAT_FLAGS); if (pl->socket.sc_version < 1025) - AddIfShort (pl->last_resist[ATNR_PHYSICAL], pl->ob->resist[ATNR_PHYSICAL], CS_STAT_ARMOUR); + { AddIfShort (pl->last_resist[ATNR_PHYSICAL], pl->ob->resist[ATNR_PHYSICAL], CS_STAT_ARMOUR) } else { int i; @@ -1188,6 +1188,7 @@ /* Skip ones we won't send */ if (atnr_cs_stat[i] == -1) continue; + AddIfShort (pl->last_resist[i], pl->ob->resist[i], (char) atnr_cs_stat[i]); } } @@ -1212,10 +1213,10 @@ #endif Send_With_Handling (&pl->socket, &sl); } + free (sl.buf); } - /** * Tells the client that here is a player it should start using. */ @@ -1243,7 +1244,6 @@ SET_FLAG (pl->ob, FLAG_CLIENT_SENT); } - /** * Need to send an animation sequence to the client. * We will send appropriate face commands to the client if we haven't @@ -2090,6 +2090,7 @@ { uint8 stat_hp = 0; uint8 stat_width = 0; + uint8 flags = 0; tag_t player = 0; // send hp information, if applicable @@ -2107,6 +2108,9 @@ } } + if (op->msg && op->msg[0] == '@') + flags |= 1; + if (op->type == PLAYER && op != pl) player = op->count; } @@ -2141,6 +2145,17 @@ SockList_AddChar (&sl, 4); SockList_AddInt (&sl, player); } + + if (lastcell.flags != flags) + { + lastcell.flags = flags; + + mask |= 0x8; + *last_ext |= 0x80; + last_ext = sl.buf + sl.len; + SockList_AddChar (&sl, 8); + SockList_AddChar (&sl, flags); + } } /* Floor face */