Code:
/**
* Attempts to remove clipping for a variable object.
*
* @Param x
* @Param y
* @Param height
* @Param type
* @Param direction
* @Param tall
*/
private static void removeClippingForVariableObject(int x, int y, int height, int type, int direction,
boolean tall, PrivateArea privateArea) {
if (type == 0) {
if (direction == 0) {
removeClipping(x, y, height, 128, privateArea);
removeClipping(x - 1, y, height, 8, privateArea);
} else if (direction == 1) {
removeClipping(x, y, height, 2, privateArea);
removeClipping(x, y + 1, height, 32, privateArea);
} else if (direction == 2) {
removeClipping(x, y, height, 8, privateArea);
removeClipping(x + 1, y, height, 128, privateArea);
} else if (direction == 3) {
removeClipping(x, y, height, 32, privateArea);
removeClipping(x, y - 1, height, 2, privateArea);
}
} else if (type == 1 || type == 3) {
if (direction == 0) {
removeClipping(x, y, height, 1, privateArea);
removeClipping(x - 1, y, height, 16, privateArea);
} else if (direction == 1) {
removeClipping(x, y, height, 4, privateArea);
removeClipping(x + 1, y + 1, height, 64, privateArea);
} else if (direction == 2) {
removeClipping(x, y, height, 16, privateArea);
removeClipping(x + 1, y - 1, height, 1, privateArea);
} else if (direction == 3) {
removeClipping(x, y, height, 64, privateArea);
removeClipping(x - 1, y - 1, height, 4, privateArea);
}
} else if (type == 2) {
if (direction == 0) {
removeClipping(x, y, height, 130, privateArea);
removeClipping(x - 1, y, height, 8, privateArea);
removeClipping(x, y + 1, height, 32, privateArea);
} else if (direction == 1) {
removeClipping(x, y, height, 10, privateArea);
removeClipping(x, y + 1, height, 32, privateArea);
removeClipping(x + 1, y, height, 128, privateArea);
} else if (direction == 2) {
removeClipping(x, y, height, 40, privateArea);
removeClipping(x + 1, y, height, 128, privateArea);
removeClipping(x, y - 1, height, 2, privateArea);
} else if (direction == 3) {
removeClipping(x, y, height, 160, privateArea);
removeClipping(x, y - 1, height, 2, privateArea);
removeClipping(x - 1, y, height, 8, privateArea);
}
}
if (tall) {
// If an object is tall, it blocks projectiles too
if (type == 0) {
if (direction == 0) {
removeClipping(x, y, height, 65536, privateArea);
removeClipping(x - 1, y, height, 4096, privateArea);
} else if (direction == 1) {
removeClipping(x, y, height, 1024, privateArea);
removeClipping(x, y + 1, height, 16384, privateArea);
} else if (direction == 2) {
removeClipping(x, y, height, 4096, privateArea);
removeClipping(x + 1, y, height, 65536, privateArea);
} else if (direction == 3) {
removeClipping(x, y, height, 16384, privateArea);
removeClipping(x, y - 1, height, 1024, privateArea);
}
}
if (type == 1 || type == 3) {
if (direction == 0) {
removeClipping(x, y, height, 512, privateArea);
removeClipping(x - 1, y + 1, height, 8192, privateArea);
} else if (direction == 1) {
removeClipping(x, y, height, 2048, privateArea);
removeClipping(x + 1, y + 1, height, 32768, privateArea);
} else if (direction == 2) {
removeClipping(x, y, height, 8192, privateArea);
removeClipping(x + 1, y + 1, height, 512, privateArea);
} else if (direction == 3) {
removeClipping(x, y, height, 32768, privateArea);
removeClipping(x - 1, y - 1, height, 2048, privateArea);
}
} else if (type == 2) {
if (direction == 0) {
removeClipping(x, y, height, 66560, privateArea);
removeClipping(x - 1, y, height, 4096, privateArea);
removeClipping(x, y + 1, height, 16384, privateArea);
} else if (direction == 1) {
removeClipping(x, y, height, 5120, privateArea);
removeClipping(x, y + 1, height, 16384, privateArea);
removeClipping(x + 1, y, height, 65536, privateArea);
} else if (direction == 2) {
removeClipping(x, y, height, 20480, privateArea);
removeClipping(x + 1, y, height, 65536, privateArea);
removeClipping(x, y - 1, height, 1024, privateArea);
} else if (direction == 3) {
removeClipping(x, y, height, 81920, privateArea);
removeClipping(x, y - 1, height, 1024, privateArea);
removeClipping(x - 1, y, height, 4096, privateArea);
}
}
}
}
Then, in Region.java, find the method: