+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 any 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 "max_score". 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);
+
+/* get_dir_to_nearest_thing() helper: Prepare "score_map" for dijkstra_map(). */
+static void init_score_map(char filter, uint16_t * score_map, uint32_t map_size,
+ struct Thing * t_eye);
+
+/* Set (if possible) as "t_eye"'s command a move to the path to the path-wise
+ * nearest thing that is in "t_eye"'s field of view and not "t_eye" and fits
+ * criteria set by "filter". On success, return 1, else 0. Values for "filter":
+ * "e": thing searched for animate, but not of "t_eye"'s thing type; build
+ * path as avoiding things of "t_eye"'s type
+ * "c": thing searched for is consumable.
+ */
+static uint8_t get_dir_to_nearest_thing(struct Thing * t_eye, char filter);
+
+/* Return 1 if any thing not "t_eye" is in its FOV and fulfills some criterion
+ * defined by "filter", else 0. Values for "filter":
+ * "e": thing searched for is animate, but not of "t_eye"'s thing type
+ * "c": thing searched for is consumable
+ */
+static uint8_t seeing_thing(struct Thing * t_eye, char filter);
+
+/* Return slot ID of strongest consumable in "t_owner"'s inventory, else -1. */
+static int16_t get_inventory_slot_to_consume(struct Thing * t_owner);