… | |
… | |
912 | << uint32 (pl->ob->face) |
912 | << uint32 (pl->ob->face) |
913 | << data8 (pl->ob->name); |
913 | << data8 (pl->ob->name); |
914 | |
914 | |
915 | pl->ns->last_weight = weight; |
915 | pl->ns->last_weight = weight; |
916 | pl->ns->send_packet (sl); |
916 | pl->ns->send_packet (sl); |
917 | SET_FLAG (pl->ob, FLAG_CLIENT_SENT); |
|
|
918 | } |
917 | } |
919 | |
918 | |
920 | /****************************************************************************** |
919 | /****************************************************************************** |
921 | * |
920 | * |
922 | * Start of map related commands. |
921 | * Start of map related commands. |
… | |
… | |
1177 | |
1176 | |
1178 | int d = pl->blocked_los[ax][ay]; |
1177 | int d = pl->blocked_los[ax][ay]; |
1179 | |
1178 | |
1180 | if (d > 3) |
1179 | if (d > 3) |
1181 | { |
1180 | { |
1182 | |
|
|
1183 | int need_send = 0, count; |
1181 | int need_send = 0, count; |
1184 | |
1182 | |
1185 | /* This block deals with spaces that are not visible for whatever |
1183 | /* This block deals with spaces that are not visible for whatever |
1186 | * reason. Still may need to send the head for this space. |
1184 | * reason. Still may need to send the head for this space. |
1187 | */ |
1185 | */ |
… | |
… | |
1193 | if (lastcell.count != -1) |
1191 | if (lastcell.count != -1) |
1194 | need_send = 1; |
1192 | need_send = 1; |
1195 | |
1193 | |
1196 | count = -1; |
1194 | count = -1; |
1197 | |
1195 | |
1198 | /* properly clear a previously sent big face */ |
|
|
1199 | if (lastcell.faces[0] || lastcell.faces[1] || lastcell.faces[2] |
1196 | if (lastcell.faces[0] || lastcell.faces[1] || lastcell.faces[2] |
1200 | || lastcell.stat_hp || lastcell.flags || lastcell.player) |
1197 | || lastcell.stat_hp || lastcell.flags || lastcell.player) |
1201 | need_send = 1; |
1198 | need_send = 1; |
1202 | |
1199 | |
|
|
1200 | /* properly clear a previously sent big face */ |
1203 | map_clearcell (&lastcell, count); |
1201 | map_clearcell (&lastcell, count); |
1204 | |
1202 | |
1205 | if ((mask & 0xf) || need_send) |
1203 | if ((mask & 0xf) || need_send) |
1206 | sl[oldlen + 1] = mask & 0xff; |
1204 | sl[oldlen + 1] = mask & 0xff; |
1207 | else |
1205 | else |
… | |
… | |
1263 | { |
1261 | { |
1264 | if (op->stats.maxhp > op->stats.hp |
1262 | if (op->stats.maxhp > op->stats.hp |
1265 | && op->stats.maxhp > 0 |
1263 | && op->stats.maxhp > 0 |
1266 | && (op->type == PLAYER |
1264 | && (op->type == PLAYER |
1267 | || op->type == DOOR // does not work, have maxhp 0 |
1265 | || op->type == DOOR // does not work, have maxhp 0 |
1268 | || QUERY_FLAG (op, FLAG_MONSTER) || QUERY_FLAG (op, FLAG_ALIVE) || QUERY_FLAG (op, FLAG_GENERATOR))) |
1266 | || QUERY_FLAG (op, FLAG_MONSTER) |
|
|
1267 | || QUERY_FLAG (op, FLAG_ALIVE) |
|
|
1268 | || QUERY_FLAG (op, FLAG_GENERATOR))) |
1269 | { |
1269 | { |
1270 | stat_hp = 255 - (op->stats.hp * 255 + 254) / op->stats.maxhp; |
1270 | stat_hp = 255 - (op->stats.hp * 255 + 254) / op->stats.maxhp; |
1271 | stat_width = op->arch->max_x - op->arch->x; //TODO: should be upper-left edge |
1271 | stat_width = op->arch->max_x - op->arch->x; //TODO: should be upper-left edge |
1272 | } |
1272 | } |
1273 | |
1273 | |
1274 | if (op->msg && op->msg[0] == '@') |
1274 | if (op->has_dialogue ()) |
1275 | flags |= 1; |
1275 | flags |= 1; |
1276 | |
1276 | |
1277 | if (op->type == PLAYER && op != ob) |
1277 | if (op->type == PLAYER) |
1278 | player = op->count; |
1278 | player = op == ob ? pl->ob->count |
|
|
1279 | : op == pl->ob ? ob->count |
|
|
1280 | : op->count; |
1279 | } |
1281 | } |
1280 | |
1282 | |
1281 | if (lastcell.stat_hp != stat_hp) |
1283 | if (lastcell.stat_hp != stat_hp) |
1282 | { |
1284 | { |
1283 | lastcell.stat_hp = stat_hp; |
1285 | lastcell.stat_hp = stat_hp; |