diff --git a/cell.cpp b/cell.cpp index 6354c0a4..eca03e68 100644 --- a/cell.cpp +++ b/cell.cpp @@ -1486,6 +1486,7 @@ void clearCellMemory() { allmaps.clear(); last_cleared = NULL; saved_distances.clear(); + pd_from = NULL; } auto cellhooks = addHook(clearmemory, 500, clearCellMemory); diff --git a/game.cpp b/game.cpp index fc72ea03..92934b8c 100644 --- a/game.cpp +++ b/game.cpp @@ -2747,7 +2747,7 @@ cell *pd_from; int pd_range; void compute_graphical_distance() { - cell *c1 = centerover.c ? centerover.c : cwt.c; + cell *c1 = centerover.c ? centerover.c : pd_from ? pd_from : cwt.c; int sr = get_sightrange_ambush(); if(pd_from == c1 && pd_range == sr) return; for(auto c: pathq) c->pathdist = PINFD; @@ -2761,6 +2761,7 @@ void compute_graphical_distance() { for(int qb=0; qbpathdist == pd_range) break; + if(qb == 0) forCellCM(c1, c) ; forCellEx(c1, c) if(c1->pathdist == PINFD) c1->pathdist = c->pathdist + 1, diff --git a/hyper.h b/hyper.h index 1c1f7fd0..6850ef17 100644 --- a/hyper.h +++ b/hyper.h @@ -3268,3 +3268,4 @@ ld master_to_c7_angle(); extern int mutantphase; void resize_screen_to(int x, int y); extern bool canvas_invisible; +extern cell *pd_from;