-static void get_neighbor_scores(char * dirs, uint8_t len_dirs,
- uint8_t * score_map, struct yx_uint16 pos_yx,
- uint32_t pos_i, uint8_t max_score,
- uint8_t * neighbor_scores)
+static void get_neighbor_scores(uint16_t * score_map, uint16_t pos_i,
+ uint16_t max_score, uint16_t * neighbors);
+
+/* Iterate over scored cells in "score_map" of world.map's geometry. Compare
+ * each cell's score against the score of its immediate neighbors in N_DIRS
+ * directions. If it's neighbors are low enough that the result would be lower
+ * than the current value, 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 position in "score_map" fits cells of
+ * unreachable terrain in world.map.cells. Expect "max_score" to be the maximum
+ * score for cells, marking them as unreachable.
+ */
+static void dijkstra_map(uint16_t * score_map, uint16_t max_score);
+
+/* Return numpad char of direction ("8", "6", "2", "4" etc.) of enemy with the
+ * shortest path to "mo_origin". If no enemy is around, return 0.
+ */
+static char get_dir_to_nearest_enemy(struct MapObj * mo_origin);
+
+
+
+static void get_neighbor_scores(uint16_t * score_map, uint16_t pos_i,
+ uint16_t max_score, uint16_t * neighbors)