diff server/unithand.c server/unithand.c --- server/unithand.c Tue Jan 9 19:28:00 2001 +++ server/unithand.c Tue Jan 9 19:39:28 2001 @@ -509,7 +509,6 @@ **************************************************************************/ static void handle_unit_attack_request(struct unit *punit, struct unit *pdefender) { - int o; struct player *pplayer = unit_owner(punit); struct packet_unit_combat combat; struct unit *plooser, *pwinner; @@ -602,16 +601,25 @@ combat.attacker_hp=punit->hp / game.firepower_factor; combat.defender_hp=pdefender->hp / game.firepower_factor; combat.make_winner_veteran=pwinner->veteran?1:0; - - for(o=0; ox, punit->y, o) || - map_get_known_and_seen(def_x, def_y, o)) - lsend_packet_unit_combat(&game.players[o].connections, &combat); + + /* Winner */ + lsend_packet_unit_combat(&game.players[pwinner->owner].connections, &combat); + + /* Global observers */ conn_list_iterate(game.game_connections, pconn) { if (!pconn->player && pconn->observer) { send_packet_unit_combat(pconn, &combat); } } conn_list_iterate_end; + + /* Other players */ + combat.make_winner_veteran=0; + players_iterate(iterplayer) { + if(iterplayer->player_no != pwinner->owner && + (map_get_known_and_seen(punit->x, punit->y, iterplayer->player_no) || + map_get_known_and_seen(def_x, def_y, iterplayer->player_no))) + lsend_packet_unit_combat(&iterplayer->connections, &combat); + } players_iterate_end; if(punit==plooser) { /* The attacker lost */