| 1229 | COMMAND(newent, "sfffffff"); |
| 1230 | |
| 1231 | void movemap(int *xop, int *yop, int *zop) // move whole map |
| 1232 | { |
| 1233 | EDITMP("movemap"); |
| 1234 | int xo = *xop, yo = *yop, zo = *zop; |
| 1235 | if(!worldbordercheck(MINBORD + max(-xo, 0), MINBORD + max(xo, 0), MINBORD + max(-yo, 0), MINBORD + max(yo, 0), max(zo, 0), max(-zo, 0))) |
| 1236 | { |
| 1237 | conoutf("not enough space to move the map"); |
| 1238 | return; |
| 1239 | } |
| 1240 | if(xo || yo) |
| 1241 | { |
| 1242 | block b = { max(-xo, 0), max(-yo, 0), ssize - iabs(xo), ssize - iabs(yo) }, *cp = blockcopy(b); |
| 1243 | cp->x = max(xo, 0); |
| 1244 | cp->y = max(yo, 0); |
| 1245 | blockpaste(*cp); |
| 1246 | freeblock(cp); |
| 1247 | } |
| 1248 | if(zo) |
| 1249 | { |
| 1250 | loop(x, ssize) loop(y, ssize) |
| 1251 | { |
| 1252 | S(x,y)->floor = max(-128, S(x,y)->floor + zo); |
| 1253 | S(x,y)->ceil = min(127, S(x,y)->ceil + zo); |
| 1254 | } |
| 1255 | setfvar("waterlevel", waterlevel + zo, true); |
| 1256 | } |
| 1257 | loopv(ents) |
| 1258 | { |
| 1259 | ents[i].x += xo; |
| 1260 | ents[i].y += yo; |
| 1261 | ents[i].z += zo; |
| 1262 | if(OUTBORD(ents[i].x, ents[i].y)) ents[i].type = NOTUSED; |
| 1263 | } |
| 1264 | player1->o.x += xo; |
| 1265 | player1->o.y += yo; |
| 1266 | entinmap(player1); |
| 1267 | calclight(); |
| 1268 | resetmap(false); |
| 1269 | unsavededits++; |
| 1270 | } |
| 1271 | COMMAND(movemap, "iii"); |
| 1272 | |
| 1273 | void selfliprotate(block &sel, int dir) |
nothing calls this directly
no test coverage detected