… | |
… | |
81 | |
81 | |
82 | if (contr && map != newmap && map) |
82 | if (contr && map != newmap && map) |
83 | if (INVOKE_MAP (LEAVE, map, ARG_PLAYER (contr))) |
83 | if (INVOKE_MAP (LEAVE, map, ARG_PLAYER (contr))) |
84 | return; |
84 | return; |
85 | |
85 | |
86 | // remove, so stupid ob_locked does not trigger a failure |
86 | // remove, so stupid blocked does not trigger a failure |
87 | remove (); |
87 | remove (); |
88 | |
88 | |
89 | /* try to find a spot for the player */ |
89 | /* try to find a spot for the player */ |
90 | if (blocked (newmap, x, y)) |
90 | if (blocked (newmap, x, y)) |
91 | { /* First choice blocked */ |
91 | { /* First choice blocked */ |
… | |
… | |
96 | * Note that for the second and third calls, we could start at a position other |
96 | * Note that for the second and third calls, we could start at a position other |
97 | * than one, but then we could end up on the other side of walls and so forth. |
97 | * than one, but then we could end up on the other side of walls and so forth. |
98 | */ |
98 | */ |
99 | int i = find_free_spot (this, newmap, x, y, 1, SIZEOFFREE1 + 1); |
99 | int i = find_free_spot (this, newmap, x, y, 1, SIZEOFFREE1 + 1); |
100 | |
100 | |
101 | if (i == -1) |
101 | if (i < 0) |
102 | { |
102 | { |
103 | i = find_free_spot (this, newmap, x, y, 1, SIZEOFFREE2 + 1); |
103 | i = find_free_spot (this, newmap, x, y, 1, SIZEOFFREE2 + 1); |
104 | if (i == -1) |
104 | if (i < 0) |
105 | i = find_free_spot (this, newmap, x, y, 1, SIZEOFFREE); |
105 | i = find_free_spot (this, newmap, x, y, 1, SIZEOFFREE); |
106 | } |
106 | } |
107 | |
107 | |
108 | if (i != -1) |
108 | if (i >= 0) |
109 | { |
109 | { |
110 | x += freearr_x[i]; |
110 | x += freearr_x[i]; |
111 | y += freearr_y[i]; |
111 | y += freearr_y[i]; |
112 | } |
112 | } |
113 | else |
113 | else |
… | |
… | |
122 | |
122 | |
123 | if (INVOKE_MAP (ENTER, newmap, ARG_PLAYER (contr), ARG_INT (x), ARG_INT (y))) |
123 | if (INVOKE_MAP (ENTER, newmap, ARG_PLAYER (contr), ARG_INT (x), ARG_INT (y))) |
124 | return; |
124 | return; |
125 | } |
125 | } |
126 | |
126 | |
127 | newmap->insert (this, x, y); |
127 | newmap->insert (this, x, y, 0, INS_NO_WALK_ON); |
128 | |
128 | |
129 | enemy = 0; |
129 | enemy = 0; |
130 | |
130 | |
131 | if (contr) |
131 | if (contr) |
132 | { |
132 | { |