+struct {int dx, dy;} visoffs[8][32] = {
+ /* dir 0 */
+ {{-2,-4}, {2,-4}, {-1,-4}, {1,-4}, {0,-4}, {-1,-3}, {1,-3}, {0,-3}, {-1,-2},
+ {1,-2}, {0,-2}, {0,-1}, {0,0}},
+ /* dir 1 */
+ {{4,-4}, {3,-4}, {4,-3}, {2,-4}, {4,-2}, {3,-3}, {2,-3}, {3,-2}, {1,-3},
+ {3,-1}, {2,-2}, {1,-2}, {2,-1}, {1,-1}, {0,0}},
+ /* dir 2 */
+ {{4,-2}, {4,2}, {4,-1}, {4,1}, {4,0}, {3,-1}, {3,1}, {3,0}, {2,-1}, {2,1},
+ {2,0}, {1,0}, {0,0}},
+ /* dir 3 */
+ {{4,4}, {4,3}, {3,4}, {4,2}, {2,4}, {3,3}, {3,2}, {2,3}, {3,1}, {1,3},
+ {2,2}, {2,1}, {1,2}, {1,1}, {0,0}},
+ /* dir 4 */
+ {{-2,4}, {2,4}, {-1,4}, {1,4}, {0,4}, {-1,3}, {1,3}, {0,3}, {-1,2}, {1,2},
+ {0,2}, {0,1}, {0,0}},
+ /* dir 5 */
+ {{-4,4}, {-4,3}, {-3,4}, {-4,2}, {-2,4}, {-3,3}, {-3,2}, {-2,3}, {-3,1},
+ {-1,3}, {-2,2}, {-2,1}, {-1,2}, {-1,1}, {0,0}},
+ /* dir 6 */
+ {{-4,-2}, {-4,2}, {-4,-1}, {-4,1}, {-4,0}, {-3,-1}, {-3,1}, {-3,0}, {-2,-1},
+ {-2,1}, {-2,0}, {-1,0}, {0,0}},
+ /* dir 7 */
+ {{-4,-4}, {-3,-4}, {-4,-3}, {-2,-4}, {-4,-2}, {-3,-3}, {-2,-3}, {-3,-2},
+ {-1,-3}, {-3,-1}, {-2,-2}, {-1,-2}, {-2,-1}, {-1,-1}, {0,0}}
+};
+
+void upd_vis(struct level *lvl, struct player *p)