diff --git a/src/actions/heal.cpp b/src/actions/heal.cpp index 9be60070760..a7fa1d6e8b4 100644 --- a/src/actions/heal.cpp +++ b/src/actions/heal.cpp @@ -343,10 +343,7 @@ void calculate_healing(int side, bool update_display) DBG_NG << "Just before healing animations, unit has " << healers.size() << " potential healers.\n"; } - const team & viewing_team = - resources::gameboard->teams()[display::get_singleton()->viewing_team()]; - if (!resources::controller->is_skipping_replay() && update_display && - patient.is_visible_to_team(viewing_team, false) ) + if (!resources::controller->is_skipping_replay() && update_display) { unit_list.emplace_front(patient, healers, healing, curing == POISON_CURE); } diff --git a/src/units/udisplay.cpp b/src/units/udisplay.cpp index 440e7e3e0a6..ccc0155bdad 100644 --- a/src/units/udisplay.cpp +++ b/src/units/udisplay.cpp @@ -780,8 +780,11 @@ void unit_healing(unit &healed, const std::vector &healers, int healing, { game_display* disp = game_display::get_singleton(); const map_location& healed_loc = healed.get_location(); + const bool some_healer_is_unfogged = + (healers.end() != std::find_if_not(healers.begin(), healers.end(), + [&](unit* h) { return disp->fogged(h->get_location()); })); - if(do_not_show_anims(disp) || disp->fogged(healed_loc)) { + if(do_not_show_anims(disp) || (disp->fogged(healed_loc) && !some_healer_is_unfogged)) { return; }