bool World::Move(const ushort x, const ushort y, const ushort z, const quint8 dir) { ushort newx, newy, newz; Active * active; Block * block; if ( !Focus(x, y, z, newx, newy, newz, dir) && CanMove(x, y, z, newx, newy, newz, dir) && (DOWN==dir || !(block=GetBlock(x, y, z))->Weight() || !( (active=block->ActiveBlock()) && active->IsFalling() && AIR==Sub(x, y, z-1) && AIR==Sub(newx, newy, newz-1))) ) { NoCheckMove(x, y, z, newx, newy, newz, dir); return true; } else { return false; } }