MCPcopy Create free account
hub / github.com/NetHack/NetHack / roguecorr

Function roguecorr

src/extralev.c:44–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42}
43
44staticfn void
45roguecorr(coordxy x, coordxy y, int dir)
46{
47 coordxy fromx, fromy, tox, toy;
48
49 if (dir == XL_DOWN) {
50 gr.r[x][y].doortable &= ~XL_DOWN;
51 if (!gr.r[x][y].real) {
52 fromx = gr.r[x][y].rlx;
53 fromy = gr.r[x][y].rly;
54 fromx += 1 + 26 * x;
55 fromy += 7 * y;
56 } else {
57 fromx = gr.r[x][y].rlx + rn2(gr.r[x][y].dx);
58 fromy = gr.r[x][y].rly + gr.r[x][y].dy;
59 fromx += 1 + 26 * x;
60 fromy += 7 * y;
61 if (!IS_WALL(levl[fromx][fromy].typ))
62 impossible("down: no wall at %d,%d?", fromx, fromy);
63 dodoor(fromx, fromy, &svr.rooms[gr.r[x][y].nroom]);
64 levl[fromx][fromy].doormask = D_NODOOR;
65 fromy++;
66 }
67 if (y >= 2) {
68 impossible("down door from %d,%d going nowhere?", x, y);
69 return;
70 }
71 y++;
72 gr.r[x][y].doortable &= ~XL_UP;
73 if (!gr.r[x][y].real) {
74 tox = gr.r[x][y].rlx;
75 toy = gr.r[x][y].rly;
76 tox += 1 + 26 * x;
77 toy += 7 * y;
78 } else {
79 tox = gr.r[x][y].rlx + rn2(gr.r[x][y].dx);
80 toy = gr.r[x][y].rly - 1;
81 tox += 1 + 26 * x;
82 toy += 7 * y;
83 if (!IS_WALL(levl[tox][toy].typ))
84 impossible("up: no wall at %d,%d?", tox, toy);
85 dodoor(tox, toy, &svr.rooms[gr.r[x][y].nroom]);
86 levl[tox][toy].doormask = D_NODOOR;
87 toy--;
88 }
89 roguejoin(fromx, fromy, tox, toy, FALSE);
90 return;
91 } else if (dir == XL_RIGHT) {
92 gr.r[x][y].doortable &= ~XL_RIGHT;
93 if (!gr.r[x][y].real) {
94 fromx = gr.r[x][y].rlx;
95 fromy = gr.r[x][y].rly;
96 fromx += 1 + 26 * x;
97 fromy += 7 * y;
98 } else {
99 fromx = gr.r[x][y].rlx + gr.r[x][y].dx;
100 fromy = gr.r[x][y].rly + rn2(gr.r[x][y].dy);
101 fromx += 1 + 26 * x;

Callers 1

makerogueroomsFunction · 0.85

Calls 4

rn2Function · 0.85
dodoorFunction · 0.85
roguejoinFunction · 0.85
impossibleFunction · 0.70

Tested by

no test coverage detected