1 | /* |
1 | /* |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
3 | * |
3 | * |
4 | * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
4 | * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
5 | * Copyright (©) 2001 Mark Wedel & Crossfire Development Team |
5 | * Copyright (©) 2001 Mark Wedel & Crossfire Development Team |
6 | * Copyright (©) 1992 Frank Tore Johansen |
6 | * Copyright (©) 1992 Frank Tore Johansen |
7 | * |
7 | * |
8 | * Deliantra is free software: you can redistribute it and/or modify it under |
8 | * Deliantra is free software: you can redistribute it and/or modify it under |
9 | * the terms of the Affero GNU General Public License as published by the |
9 | * the terms of the Affero GNU General Public License as published by the |
… | |
… | |
223 | the_exit_up->x = upx; |
223 | the_exit_up->x = upx; |
224 | the_exit_up->y = upy; |
224 | the_exit_up->y = upy; |
225 | |
225 | |
226 | /* surround the exits with notices that this is a random map. */ |
226 | /* surround the exits with notices that this is a random map. */ |
227 | for (int j = 1; j < 9; j++) |
227 | for (int j = 1; j < 9; j++) |
228 | if (!wall_blocked (map, the_exit_up->x + freearr_x[j], the_exit_up->y + freearr_y[j])) |
228 | if (!wall_blocked (map, the_exit_up->x + DIRX (j), the_exit_up->y + DIRY (j))) |
229 | { |
229 | { |
230 | object *random_sign = archetype::get (shstr_sign); |
230 | object *random_sign = archetype::get (shstr_sign); |
231 | random_sign->msg = format ("This is a random map.\nLevel: %d of %d.\n", RP->dungeon_level - 1, RP->dungeon_depth); |
231 | random_sign->msg = format ("This is a random map.\nLevel: %d of %d.\n", RP->dungeon_level - 1, RP->dungeon_depth); |
232 | map->insert (random_sign, the_exit_up->x + freearr_x[j], the_exit_up->y + freearr_y[j], 0, 0); |
232 | map->insert (random_sign, the_exit_up->x + DIRX (j), the_exit_up->y + DIRY (j), 0, 0); |
233 | } |
233 | } |
234 | |
234 | |
235 | /* Block the exit so things don't get dumped on top of it. */ |
235 | /* Block the exit so things don't get dumped on top of it. */ |
236 | the_exit_up->move_block = MOVE_ALL; |
236 | the_exit_up->move_block = MOVE_ALL; |
237 | |
237 | |
… | |
… | |
279 | |
279 | |
280 | if (the_exit_down) |
280 | if (the_exit_down) |
281 | { |
281 | { |
282 | int i = rmg_find_free_spot (the_exit_down, map, downx, downy, 1, SIZEOFFREE1 + 1); |
282 | int i = rmg_find_free_spot (the_exit_down, map, downx, downy, 1, SIZEOFFREE1 + 1); |
283 | |
283 | |
284 | the_exit_down->x = downx + freearr_x[i]; |
284 | the_exit_down->x = downx + DIRX (i); |
285 | the_exit_down->y = downy + freearr_y[i]; |
285 | the_exit_down->y = downy + DIRY (i); |
286 | |
286 | |
287 | RP->set ("origin_x", (IV)the_exit_down->x); |
287 | RP->set ("origin_x", (IV)the_exit_down->x); |
288 | RP->set ("origin_y", (IV)the_exit_down->y); |
288 | RP->set ("origin_y", (IV)the_exit_down->y); |
289 | |
289 | |
290 | the_exit_down->msg = RP->as_shstr (); |
290 | the_exit_down->msg = RP->as_shstr (); |