X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fserver%2Flibplomrogue.c;h=0e8f3fb54a74fcad65020257f661a10289a55f46;hb=c6e0d389a3331ac499e96cbcad426c68c0c83ddc;hp=9a4e69a7cdd2158374b16a77102a41b46b69798e;hpb=7e533c6869a8ce8263f1f6eb6808d323472bb4b4;p=plomrogue diff --git a/src/server/libplomrogue.c b/src/server/libplomrogue.c index 9a4e69a..0e8f3fb 100644 --- a/src/server/libplomrogue.c +++ b/src/server/libplomrogue.c @@ -519,7 +519,8 @@ extern uint16_t get_neighbor_score(uint8_t i) * neighbor's score is at least two points lower than the current cell's score, * re-set it to 1 point higher than its lowest-scored neighbor. Repeat this * whole process until all cells have settled on their final score. Ignore cells - * whose score is greater than UINT16_MAX - 1 (treat those as unreachable). + * whose score is greater than UINT16_MAX - 1 (treat those as unreachable). Also + * ignore cells whose score is smaller or equal the number of past iterations. * Return 1 on error, else 0. */ extern uint8_t dijkstra_map() @@ -539,7 +540,8 @@ extern uint8_t dijkstra_map() scores_still_changing = 0; for (pos = 0; pos < map_size; pos++) { - if (score_map[pos] <= max_score) + uint16_t score = score_map[pos]; + if (score <= max_score && score > i_scans) { get_neighbor_scores(pos, max_score, neighbors); min_neighbor = max_score;