I was cracking a safe in a doctor's office with my shopping cart blocking the entrance into the safe room. I've ignored the noises outside and proceeded, and was presented to stop only when a zombie went in, destroyed my cart full of goodies and attacked me. There should've been a notification for me to stop much earlier.
0.D-5177-g856dfbd577-dirty
I had a similar experience the other day. A few boxers attacked me which I was quick butchering for a little meat. It was either sunny or overcast with no rain, and I was in the middle of a field. On the last boxer I was interrupted by a mi-go hitting me. I don't recall ignoring anything, either.
I've been having similar things happen. I think this "bug?" happens with reloading too. No interruption, and enemy ends up on top of you.
I've had this problem MULTIPLE times with all sorts of activities.
Butchering, crafting, vehicle crafting, wood cutting, and probably some other stuff I'm not thinking of.
I'll get notified about sound pretty much every time (almost to the point of annoyance), but more often than not, the game fails to alert me when a zombie is coming at me until it's already attacking.
This just occurred to me but wouldn't the ignore option be better as ignore \ Spotted already kinda works that way, if you spot a zed and say no then that particular zed won't interrupt (unless it gets closer).
I see the interruption from a hostile monster being nearby does occur, but with a huge delay: a zombie can devour my headlights and some of the quarterpanel (~100x crash) before i get notified that something's wrong sitting on the driver's seat.
Maybe something didn't get adjusted for 1s turn change?
I see in game.cpp the code is tied to the real time or smth:
// Rate limit polling to 10 times a second.
static auto start = std::chrono::time_point_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now() );
const auto now = std::chrono::time_point_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now() );
if( ( now - start ).count() > 100 ) {
handle_key_blocking_activity();
start = now;
}
The check is actually done in handle_key_blocking_activity():
if( cancel_activity_or_ignore_query( distraction_type::hostile_spotted,
string_format( _( "The %s is dangerously close!" ),
hostile_critter->get_name() ) ) ) {
The rate limiter was introduced by https://github.com/CleverRaven/Cataclysm-DDA/pull/31445 to make things faster.