mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-07 16:49:07 +00:00
init, thx MrExtremez
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
package redone.game.globalworldobjects;
|
||||
|
||||
import redone.game.objects.Object;
|
||||
import redone.game.objects.ObjectDefaults;
|
||||
import redone.game.players.Client;
|
||||
import redone.world.clip.ObjectDef;
|
||||
import redone.world.clip.Region;
|
||||
|
||||
public class ClimbOther {
|
||||
|
||||
public enum ClimbData {
|
||||
|
||||
VARROCK_MANHOLE(881, 882),
|
||||
LUMBRIDGE_TRAPDOOR(14879, 10698),
|
||||
VARROCK_TRAPDOOR(1568, 10698);
|
||||
|
||||
private int closedId, openId;
|
||||
|
||||
private ClimbData(int closedId, int openId) {
|
||||
this.closedId = closedId;
|
||||
this.openId = openId;
|
||||
}
|
||||
|
||||
public int getClosed() {
|
||||
return closedId;
|
||||
}
|
||||
|
||||
public int getOpen() {
|
||||
return openId;
|
||||
}
|
||||
}
|
||||
|
||||
public static void handleOpenOther(Client player, int objectType) {
|
||||
for (ClimbData t: ClimbData.values()) {
|
||||
if (objectType == t.getClosed()) {
|
||||
new Object(t.getOpen(), player.objectX, player.objectY, player.heightLevel, ObjectDefaults.getObjectFace(player, t.getClosed()), 10, t.getClosed(), 100);
|
||||
Region.addObject(t.getOpen(), player.objectX, player.objectY, player.heightLevel, 10, ObjectDefaults.getObjectFace(player, t.getClosed()), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void useOther(Client player, int objectType) {
|
||||
final String objectName = ObjectDef.getObjectDef(objectType).name;
|
||||
if (System.currentTimeMillis() - player.climbDelay < 1800) {
|
||||
return;
|
||||
}
|
||||
player.stopMovement();
|
||||
player.startAnimation(827);
|
||||
player.getPlayerAssistant().removeAllWindows();
|
||||
player.teleportToX = player.absX;
|
||||
player.teleportToY = player.absY + 6400;
|
||||
player.getActionSender().sendMessage("You climb down the " + objectName.toLowerCase() + ".");
|
||||
player.climbDelay = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,272 @@
|
||||
package redone.game.globalworldobjects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.io.*;
|
||||
import java.util.Scanner;
|
||||
|
||||
import redone.Server;
|
||||
import redone.game.objects.Objects;
|
||||
|
||||
|
||||
|
||||
public class Doors {
|
||||
|
||||
private static Doors singleton = null;
|
||||
|
||||
private List<Doors> doors = new ArrayList<Doors>();
|
||||
|
||||
private File doorFile;
|
||||
|
||||
public static Doors getSingleton() {
|
||||
if (singleton == null) {
|
||||
singleton = new Doors("./data/doors.txt");
|
||||
}
|
||||
return singleton;
|
||||
}
|
||||
|
||||
private Doors(String file){
|
||||
doorFile = new File(file);
|
||||
}
|
||||
|
||||
private Doors(int door, int x, int y, int z, int face, int type, int open) {
|
||||
this.doorId = door;
|
||||
this.originalId = door;
|
||||
this.doorX = x;
|
||||
this.doorY = y;
|
||||
this.originalX = x;
|
||||
this.originalY = y;
|
||||
this.doorZ = z;
|
||||
this.originalFace = face;
|
||||
this.currentFace = face;
|
||||
this.type = type;
|
||||
this.open = open;
|
||||
}
|
||||
|
||||
private Doors getDoor(int id, int x, int y, int z) {
|
||||
for (Doors d : doors) {
|
||||
if (d.doorId == id) {
|
||||
if (d.doorX == x && d.doorY == y && d.doorZ == z) {
|
||||
return d;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean handleDoor(int id, int x, int y, int z) {
|
||||
|
||||
Doors d = getDoor(id, x, y, z);
|
||||
|
||||
if (d == null) {
|
||||
if (DoubleDoors.getSingleton().handleDoor(id, x, y, z)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
int xAdjustment = 0, yAdjustment = 0;
|
||||
if (d.type == 0) {
|
||||
if (d.open == 0) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
xAdjustment = -1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
yAdjustment = 1;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
xAdjustment = 1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
yAdjustment = -1;
|
||||
}
|
||||
} else if (d.open == 1) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
yAdjustment = 1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
xAdjustment = 1;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
yAdjustment = -1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
xAdjustment = -1;
|
||||
}
|
||||
}
|
||||
} else if (d.type == 9) {
|
||||
if (d.open == 0) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
xAdjustment = 1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
xAdjustment = 1;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
xAdjustment = -1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
xAdjustment = -1;
|
||||
}
|
||||
} else if (d.open == 1) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
xAdjustment = 1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
xAdjustment = 1;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
xAdjustment = -1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
xAdjustment = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (xAdjustment != 0 || yAdjustment != 0) {
|
||||
Objects o = new Objects(-1, d.doorX, d.doorY, d.doorZ, 0, d.type, 0);
|
||||
Server.objectHandler.placeObject(o);
|
||||
}
|
||||
if (d.doorX == d.originalX && d.doorY == d.originalY) {
|
||||
d.doorX += xAdjustment;
|
||||
d.doorY += yAdjustment;
|
||||
} else {
|
||||
Objects o = new Objects(-1, d.doorX, d.doorY, d.doorZ, 0, d.type, 0);
|
||||
Server.objectHandler.placeObject(o);
|
||||
d.doorX = d.originalX;
|
||||
d.doorY = d.originalY;
|
||||
}
|
||||
if (d.doorId == d.originalId) {
|
||||
if (d.open == 0) {
|
||||
d.doorId += 1;
|
||||
} else if (d.open == 1) {
|
||||
d.doorId -= 1;
|
||||
}
|
||||
} else if (d.doorId != d.originalId) {
|
||||
if (d.open == 0) {
|
||||
d.doorId -= 1;
|
||||
} else if (d.open == 1) {
|
||||
d.doorId += 1;
|
||||
}
|
||||
}
|
||||
Server.objectHandler.placeObject(new Objects(d.doorId, d.doorX, d.doorY, d.doorZ, getNextFace(d), d.type, 0));
|
||||
return true;
|
||||
}
|
||||
|
||||
private int getNextFace(Doors d) {
|
||||
int f = d.originalFace;
|
||||
if (d.type == 0) {
|
||||
if (d.open == 0) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
f = 2;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
f = 3;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
f = 0;
|
||||
} else if (d.originalFace != d.currentFace){
|
||||
f = d.originalFace;
|
||||
}
|
||||
} else if (d.open == 1) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
f = 3;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
f = 0;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
f = 2;
|
||||
} else if (d.originalFace != d.currentFace){
|
||||
f = d.originalFace;
|
||||
}
|
||||
}
|
||||
} else if (d.type == 9) {
|
||||
if (d.open == 0) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
f = 3;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
f = 2;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
f = 0;
|
||||
} else if (d.originalFace != d.currentFace){
|
||||
f = d.originalFace;
|
||||
}
|
||||
} else if (d.open == 1) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
f = 3;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
f = 0;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
f = 2;
|
||||
} else if (d.originalFace != d.currentFace){
|
||||
f = d.originalFace;
|
||||
}
|
||||
}
|
||||
}
|
||||
d.currentFace = f;
|
||||
return f;
|
||||
}
|
||||
|
||||
public void load() {
|
||||
//long start = System.currentTimeMillis();
|
||||
try {
|
||||
singleton.processLineByLine();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//System.out.println("Loaded "+ doors.size() +" doors in "+ (System.currentTimeMillis() - start) +"ms.");
|
||||
}
|
||||
|
||||
private final void processLineByLine() throws FileNotFoundException {
|
||||
Scanner scanner = new Scanner(new FileReader(doorFile));
|
||||
try {
|
||||
while(scanner.hasNextLine()) {
|
||||
processLine(scanner.nextLine());
|
||||
}
|
||||
} finally {
|
||||
scanner.close();
|
||||
}
|
||||
}
|
||||
|
||||
protected void processLine(String line){
|
||||
Scanner scanner = new Scanner(line);
|
||||
scanner.useDelimiter(" ");
|
||||
try {
|
||||
while(scanner.hasNextLine()) {
|
||||
int id = Integer.parseInt(scanner.next());
|
||||
int x = Integer.parseInt(scanner.next());
|
||||
int y = Integer.parseInt(scanner.next());
|
||||
int f = Integer.parseInt(scanner.next());
|
||||
int z = Integer.parseInt(scanner.next());
|
||||
int t = Integer.parseInt(scanner.next());
|
||||
doors.add(new Doors(id,x,y,z,f,t,alreadyOpen(id)?1:0));
|
||||
}
|
||||
} finally {
|
||||
scanner.close();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean alreadyOpen(int id) {
|
||||
for (int i = 0; i < openDoors.length; i++) {
|
||||
if (openDoors[i] == id) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private int doorId;
|
||||
private int originalId;
|
||||
private int doorX;
|
||||
private int doorY;
|
||||
private int originalX;
|
||||
private int originalY;
|
||||
private int doorZ;
|
||||
private int originalFace;
|
||||
private int currentFace;
|
||||
private int type;
|
||||
private int open;
|
||||
|
||||
private static int[] openDoors = {
|
||||
1504, 1514, 1517, 1520, 1531,
|
||||
1534, 2033, 2035, 2037, 2998,
|
||||
3271, 4468, 4697, 6101,6103,
|
||||
6105, 6107, 6109, 6111, 6113,
|
||||
6115, 6976, 6978, 8696, 8819,
|
||||
10261, 10263,10265,11708,11710,
|
||||
11712,11715,11994,12445, 13002,
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,387 @@
|
||||
package redone.game.globalworldobjects;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
|
||||
import redone.Server;
|
||||
import redone.game.objects.Objects;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Killamess
|
||||
*
|
||||
*/
|
||||
public class DoubleDoors {
|
||||
|
||||
private static DoubleDoors singleton = null;
|
||||
|
||||
private List<DoubleDoors> doors = new ArrayList<DoubleDoors>();
|
||||
|
||||
private File doorFile;
|
||||
|
||||
public static DoubleDoors getSingleton() {
|
||||
if (singleton == null) {
|
||||
singleton = new DoubleDoors("./data/doubledoors.txt");
|
||||
}
|
||||
return singleton;
|
||||
}
|
||||
|
||||
private DoubleDoors(String file){
|
||||
doorFile = new File(file);
|
||||
}
|
||||
|
||||
private DoubleDoors getDoor(int id, int x, int y, int z) {
|
||||
for (DoubleDoors d : doors) {
|
||||
if (d.doorId == id) {
|
||||
if (d.x == x && d.y == y && d.z == z) {
|
||||
return d;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean handleDoor(int id, int x, int y, int z) {
|
||||
DoubleDoors doorClicked = getDoor(id, x, y, z);
|
||||
|
||||
if (doorClicked == null) {
|
||||
return true;
|
||||
}
|
||||
if (doorClicked.doorId > 12000) {
|
||||
return true; //nearly all of these are not opened
|
||||
}
|
||||
if (doorClicked.open == 0) {
|
||||
if (doorClicked.originalFace == 0) {
|
||||
DoubleDoors lowerDoor = getDoor(id - 3, x, y -1, z);
|
||||
DoubleDoors upperDoor = getDoor(id + 3, x, y +1, z);
|
||||
if (lowerDoor != null) {
|
||||
changeLeftDoor(lowerDoor);
|
||||
changeRightDoor(doorClicked);
|
||||
} else if (upperDoor != null) {
|
||||
changeLeftDoor(doorClicked);
|
||||
changeRightDoor(upperDoor);
|
||||
}
|
||||
} else if (doorClicked.originalFace == 1) {
|
||||
DoubleDoors westDoor = getDoor(id - 3, x -1, y, z);
|
||||
DoubleDoors eastDoor = getDoor(id + 3, x +1, y, z);
|
||||
if (westDoor != null) {
|
||||
changeLeftDoor(westDoor);
|
||||
changeRightDoor(doorClicked);
|
||||
} else if (eastDoor != null) {
|
||||
changeLeftDoor(doorClicked);
|
||||
changeRightDoor(eastDoor);
|
||||
}
|
||||
} else if (doorClicked.originalFace == 2) {
|
||||
DoubleDoors lowerDoor = getDoor(id - 3, x, y +1, z);
|
||||
DoubleDoors upperDoor = getDoor(id + 3, x, y -1, z);
|
||||
if (lowerDoor != null) {
|
||||
changeLeftDoor(lowerDoor);
|
||||
changeRightDoor(doorClicked);
|
||||
} else if (upperDoor != null) {
|
||||
changeLeftDoor(doorClicked);
|
||||
changeRightDoor(upperDoor);
|
||||
}
|
||||
} else if (doorClicked.originalFace == 3) {
|
||||
DoubleDoors westDoor = getDoor(id + 3, x -1, y, z);
|
||||
DoubleDoors eastDoor = getDoor(id - 3, x +1, y, z);
|
||||
if (westDoor != null) {
|
||||
changeLeftDoor(westDoor);
|
||||
changeRightDoor(doorClicked);
|
||||
} else if (eastDoor != null) {
|
||||
changeLeftDoor(doorClicked);
|
||||
changeRightDoor(eastDoor);
|
||||
}
|
||||
}
|
||||
} else if (doorClicked.open == 1) {
|
||||
if (doorClicked.originalFace == 0) {
|
||||
DoubleDoors westDoor = getDoor(id - 3, x -1, y, z);
|
||||
DoubleDoors upperDoor = getDoor(id + 3, x +1, y, z);
|
||||
if (westDoor != null) {
|
||||
changeLeftDoor(westDoor);
|
||||
changeRightDoor(doorClicked);
|
||||
} else if (upperDoor != null) {
|
||||
changeLeftDoor(doorClicked);
|
||||
changeRightDoor(upperDoor);
|
||||
}
|
||||
} else if (doorClicked.originalFace == 1) {
|
||||
DoubleDoors northDoor = getDoor(id - 3, x, y + 1, z);
|
||||
DoubleDoors southDoor = getDoor(id + 3, x, y -1, z);
|
||||
if (northDoor != null) {
|
||||
changeLeftDoor(northDoor);
|
||||
changeRightDoor(doorClicked);
|
||||
} else if (southDoor != null) {
|
||||
changeLeftDoor(doorClicked);
|
||||
changeRightDoor(southDoor);
|
||||
}
|
||||
} else if (doorClicked.originalFace == 2) {
|
||||
DoubleDoors westDoor = getDoor(id - 3, x -1, y, z);
|
||||
DoubleDoors eastDoor = getDoor(id + 3, x, y -1, z);
|
||||
if (westDoor != null) {
|
||||
changeLeftDoor(westDoor);
|
||||
changeRightDoor(doorClicked);
|
||||
} else if (eastDoor != null) {
|
||||
changeLeftDoor(doorClicked);
|
||||
changeRightDoor(eastDoor);
|
||||
}
|
||||
} else if (doorClicked.originalFace == 3) {
|
||||
DoubleDoors northDoor = getDoor(id - 3, x, y + 1, z);
|
||||
DoubleDoors southDoor = getDoor(id + 3, x, y -1, z);
|
||||
if (northDoor != null) {
|
||||
changeLeftDoor(northDoor);
|
||||
changeRightDoor(doorClicked);
|
||||
} else if (southDoor != null) {
|
||||
changeLeftDoor(doorClicked);
|
||||
changeRightDoor(southDoor);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void changeLeftDoor(DoubleDoors d) {
|
||||
int xAdjustment = 0, yAdjustment = 0;
|
||||
|
||||
if (d.open == 0) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
xAdjustment = -1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
yAdjustment = 1;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
xAdjustment = +1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
yAdjustment = -1;
|
||||
}
|
||||
} else if (d.open == 1) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
yAdjustment = -1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
xAdjustment = -1;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
xAdjustment = -1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
xAdjustment = -1;
|
||||
}
|
||||
}
|
||||
if (xAdjustment != 0 || yAdjustment != 0) {
|
||||
Server.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0));
|
||||
}
|
||||
if (d.x == d.originalX && d.y == d.originalY) {
|
||||
d.x += xAdjustment;
|
||||
d.y += yAdjustment;
|
||||
} else {
|
||||
Server.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0));
|
||||
d.x = d.originalX;
|
||||
d.y = d.originalY;
|
||||
}
|
||||
if (d.doorId == d.originalId) {
|
||||
if (d.open == 0) {
|
||||
d.doorId += 1;
|
||||
} else if (d.open == 1) {
|
||||
d.doorId -= 1;
|
||||
}
|
||||
} else if (d.doorId != d.originalId) {
|
||||
if (d.open == 0) {
|
||||
d.doorId = d.originalId;
|
||||
} else if (d.open == 1) {
|
||||
d.doorId = d.originalId;
|
||||
}
|
||||
}
|
||||
Server.objectHandler.placeObject(new Objects(d.doorId, d.x, d.y, d.z, getNextLeftFace(d), 0, 0));
|
||||
}
|
||||
|
||||
private int getNextLeftFace(DoubleDoors d) {
|
||||
int f = d.originalFace;
|
||||
|
||||
if (d.open == 0) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
f = 3;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
f = 0;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
f = 0;
|
||||
} else if (d.originalFace != d.currentFace){
|
||||
f = d.originalFace;
|
||||
}
|
||||
} else if (d.open == 1) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
f = 2;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
f = 2;
|
||||
} else if (d.originalFace != d.currentFace){
|
||||
f = d.originalFace;
|
||||
}
|
||||
}
|
||||
d.currentFace = f;
|
||||
return f;
|
||||
}
|
||||
|
||||
public void changeRightDoor(DoubleDoors d) {
|
||||
int xAdjustment = 0, yAdjustment = 0;
|
||||
|
||||
if (d.open == 0) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
xAdjustment = -1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
yAdjustment = 1;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
xAdjustment = +1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
yAdjustment = -1;
|
||||
}
|
||||
} else if (d.open == 1) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
xAdjustment = 1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
xAdjustment = -1;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
yAdjustment = -1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
xAdjustment = -1;
|
||||
}
|
||||
}
|
||||
if (xAdjustment != 0 || yAdjustment != 0) {
|
||||
Server.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0));
|
||||
}
|
||||
if (d.x == d.originalX && d.y == d.originalY) {
|
||||
d.x += xAdjustment;
|
||||
d.y += yAdjustment;
|
||||
} else {
|
||||
Server.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0));
|
||||
d.x = d.originalX;
|
||||
d.y = d.originalY;
|
||||
}
|
||||
if (d.doorId == d.originalId) {
|
||||
if (d.open == 0) {
|
||||
d.doorId += 1;
|
||||
} else if (d.open == 1) {
|
||||
d.doorId -= 1;
|
||||
}
|
||||
} else if (d.doorId != d.originalId) {
|
||||
if (d.open == 0) {
|
||||
d.doorId = d.originalId;
|
||||
} else if (d.open == 1) {
|
||||
d.doorId = d.originalId;
|
||||
}
|
||||
}
|
||||
Server.objectHandler.placeObject(new Objects(d.doorId, d.x, d.y, d.z, getNextRightFace(d), 0, 0));
|
||||
}
|
||||
|
||||
private int getNextRightFace(DoubleDoors d) {
|
||||
int f = d.originalFace;
|
||||
|
||||
if (d.open == 0) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
f = 2;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
f = 3;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
f = 2;
|
||||
} else if (d.originalFace != d.currentFace){
|
||||
f = d.originalFace;
|
||||
}
|
||||
} else if (d.open == 1) {
|
||||
if (d.originalFace == 0 && d.currentFace == 0) {
|
||||
f = 3;
|
||||
} else if (d.originalFace == 1 && d.currentFace == 1) {
|
||||
f = 0;
|
||||
} else if (d.originalFace == 2 && d.currentFace == 2) {
|
||||
f = 1;
|
||||
} else if (d.originalFace == 3 && d.currentFace == 3) {
|
||||
f = 2;
|
||||
} else if (d.originalFace != d.currentFace){
|
||||
f = d.originalFace;
|
||||
}
|
||||
}
|
||||
d.currentFace = f;
|
||||
return f;
|
||||
}
|
||||
|
||||
private int doorId;
|
||||
private int originalId;
|
||||
private int open;
|
||||
private int x;
|
||||
private int y;
|
||||
private int z;
|
||||
private int originalX;
|
||||
private int originalY;
|
||||
private int currentFace;
|
||||
private int originalFace;
|
||||
|
||||
public DoubleDoors(int id, int x, int y, int z, int f, int open) {
|
||||
this.doorId = id;
|
||||
this.originalId = id;
|
||||
this.open = open;
|
||||
this.x = x;
|
||||
this.originalX = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
this.originalY = y;
|
||||
this.currentFace = f;
|
||||
this.originalFace = f;
|
||||
}
|
||||
|
||||
public boolean isOpenDoor(int id){
|
||||
for (int i = 0; i < openDoors.length; i++) {
|
||||
if (id == openDoors[i] || id + 3 == openDoors[i]) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//Have not found any others yet. Maybe only 1 type of double
|
||||
//doors exist to operate.
|
||||
private static int[] openDoors = {
|
||||
1520, 1517
|
||||
};
|
||||
|
||||
public void load() {
|
||||
//long start = System.currentTimeMillis();
|
||||
try {
|
||||
singleton.processLineByLine();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//System.out.println("Loaded "+ doors.size() +" Double doors in "+ (System.currentTimeMillis() - start) +"ms.");
|
||||
}
|
||||
|
||||
private final void processLineByLine() throws FileNotFoundException {
|
||||
Scanner scanner = new Scanner(new FileReader(doorFile));
|
||||
try {
|
||||
while(scanner.hasNextLine()) {
|
||||
processLine(scanner.nextLine());
|
||||
}
|
||||
} finally {
|
||||
scanner.close();
|
||||
}
|
||||
}
|
||||
|
||||
protected void processLine(String line){
|
||||
Scanner scanner = new Scanner(line);
|
||||
scanner.useDelimiter(" ");
|
||||
try {
|
||||
while(scanner.hasNextLine()) {
|
||||
int id = Integer.parseInt(scanner.next());
|
||||
int x = Integer.parseInt(scanner.next());
|
||||
int y = Integer.parseInt(scanner.next());
|
||||
int f = Integer.parseInt(scanner.next());
|
||||
int z = Integer.parseInt(scanner.next());
|
||||
doors.add(new DoubleDoors(id, x, y, z, f, isOpenDoor(id) ? 1 : 0));
|
||||
}
|
||||
} finally {
|
||||
scanner.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
package redone.game.globalworldobjects;
|
||||
|
||||
import redone.game.players.Client;
|
||||
/**
|
||||
* Single Gates
|
||||
* @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus)
|
||||
*/
|
||||
|
||||
public class DoubleGates extends GateHandler {
|
||||
|
||||
public static void useDoubleGate(Client player, int objectId) {
|
||||
switch (objectId) {
|
||||
case 7049:
|
||||
handleGate(player, 7049, 7050, 3077, 3259, 3077, 3260, 3077, 3258, 3078, 3258, 2);
|
||||
break;
|
||||
case 7050:
|
||||
handleGate(player, 7050, 7049, 3077, 3260, 3077, 3259, 3078, 3258, 3077, 3258, 2);
|
||||
break;
|
||||
case 1598:
|
||||
handleGate(player, 1598, 1599, 3319, 3467, 3318, 3467, 3320, 3467, 3320, 3468, 1);
|
||||
break;
|
||||
case 1599:
|
||||
handleGate(player, 1599, 1598, 3318, 3467, 3319, 3467, 3320, 3468, 3320, 3467, 1);
|
||||
break;
|
||||
case 3197:
|
||||
handleGate(player, 3197, 3198, 3311, 3234, 3310, 3234, 3312, 3234, 3312, 3235, 1);
|
||||
break;
|
||||
case 3198:
|
||||
handleGate(player, 3198, 3197, 3310, 3234, 3311, 3234, 3312, 3235, 3312, 3234, 1);
|
||||
break;
|
||||
case 1551:
|
||||
if (player.objectX > 3179 && player.objectX < 3182) {
|
||||
handleGate(player, 1551, 1553, 3181, 3288, 3181, 3287, 3181, 3289, 3180, 3289, 0);
|
||||
} else if (player.objectX > 3161 && player.objectX < 3164) {
|
||||
handleGate(player, 1551, 1553, 3163, 3289, 3163, 3288, 3163, 3290, 3162, 3290, 0);
|
||||
} else if (player.objectY > 3290 && player.objectY < 3294) {
|
||||
handleGate(player, 1551, 1553, 3145, 3292, 3145, 3293, 3145, 3291, 3146, 3291, 2);
|
||||
} else if (player.objectY > 3272 && player.objectY < 3275) {
|
||||
handleGate(player, 1551, 1553, 3106, 3273, 3105, 3273, 3107, 3273, 3107, 3274, 1);
|
||||
} else if (player.objectY > 3265 && player.objectY < 3268) {
|
||||
handleGate(player, 1551, 1553, 3252, 3266, 3251, 3266, 3253, 3266, 3253, 3267, 1);
|
||||
} else if (player.objectY > 3283 && player.objectY < 3286) {
|
||||
handleGate(player, 1551, 1553, 3237, 3285, 3238, 3285, 3236, 3285, 3236, 3284, 5);
|
||||
} else if (player.objectY > 3294 && player.objectY < 3297) {
|
||||
handleGate(player, 1551, 1553, 3237, 3296, 3238, 3296, 3236, 3296, 3236, 3295, 5);
|
||||
} else if (player.objectY > 3300 && player.objectY < 3303) {
|
||||
handleGate(player, 1551, 1553, 3240, 3301, 3239, 3301, 3241, 3301, 3241, 3302, 1);
|
||||
} else if (player.objectX > 3260 & player.objectX < 3263) {
|
||||
handleGate(player, 1551, 1553, 3261, 3322, 3261, 3323, 3261, 3321, 3262, 3321, 2);
|
||||
} else if (player.objectY > 3348 && player.objectY < 3351) {
|
||||
handleGate(player, 1551, 1553, 2676, 3350, 2677, 3350, 2675, 3350, 2675, 3349, 5);
|
||||
} else if (player.objectY > 3313 && player.objectY < 3318) {
|
||||
handleGate(player, 1551, 1553, 3174, 3314, 3174, 3315, 3175, 3316, 3174, 3316, 4);
|
||||
} else {
|
||||
handleGate(player, 1551, 1553, 3198, 3281, 3198, 3280, 3198, 3282, 3197, 3282, 0);
|
||||
}
|
||||
break;
|
||||
case 1553:
|
||||
if (player.objectX > 3179 && player.objectX < 3182) {
|
||||
handleGate(player, 1553, 1551, 3181, 3287, 3181, 3288, 3180, 3289, 3181, 3289, 0);
|
||||
} else if (player.objectX > 3161 && player.objectX < 3164) {
|
||||
handleGate(player, 1553, 1551, 3163, 3288, 3163, 3289, 3162, 3290, 3163, 3290, 0);
|
||||
} else if (player.objectY > 3290 && player.objectY < 3294) {
|
||||
handleGate(player, 1553, 1551, 3145, 3293, 3145, 3292, 3146, 3291, 3145, 3291, 2);
|
||||
} else if (player.objectY > 3272 && player.objectY < 3275) {
|
||||
handleGate(player, 1553, 1551, 3105, 3273, 3106, 3273, 3107, 3274, 3107, 3273, 1);
|
||||
} else if (player.objectY > 3265 && player.objectY < 3268) {
|
||||
handleGate(player, 1553, 1551, 3251, 3266, 3252, 3266, 3253, 3267, 3253, 3266, 1);
|
||||
} else if (player.objectY > 3283 && player.objectY < 3286) {
|
||||
handleGate(player, 1553, 1551, 3238, 3285, 3237, 3285, 3236, 3284, 3236, 3285, 5);
|
||||
} else if (player.objectY > 3294 && player.objectY < 3297) {
|
||||
handleGate(player, 1553, 1551, 3238, 3296, 3237, 3296, 3236, 3295, 3236, 3296, 5);
|
||||
} else if (player.objectY > 3300 && player.objectY < 3303) {
|
||||
handleGate(player, 1553, 1551, 3239, 3301, 3240, 3301, 3241, 3302, 3241, 3301, 1);
|
||||
} else if (player.objectX > 3260 & player.objectX < 3263) {
|
||||
handleGate(player, 1553, 1551, 3261, 3323, 3261, 3322, 3262, 3321, 3261, 3321, 2);
|
||||
} else if (player.objectY > 3348 && player.objectY < 3351) {
|
||||
handleGate(player, 1553, 1551, 2677, 3350, 2676, 3350, 2675, 3349, 2675, 3350, 5);
|
||||
} else if (player.objectY > 3313 && player.objectY < 3318) {
|
||||
handleGate(player, 1553, 1551, 3174, 3315, 3174, 3314, 3174, 3316, 3175, 3316, 4);
|
||||
} else {
|
||||
handleGate(player, 1553, 1551, 3198, 3280, 3198, 3281, 3197, 3282, 3198, 3282, 0);
|
||||
}
|
||||
break;
|
||||
case 12986:
|
||||
if (player.objectX > 3187 && player.objectX < 3190) {
|
||||
handleGate(player, 12986, 12987, 3188, 3280, 3188, 3281, 3188, 3279, 3189, 3279, 2);
|
||||
} else if (player.objectY > 3267 && player.objectY < 3270) {
|
||||
handleGate(player, 12986, 12987, 3185, 3268, 3184, 3268, 3186, 3268, 3186, 3269, 1);
|
||||
} else {
|
||||
handleGate(player, 12986, 12987, 3212, 3261, 3211, 3261, 3213, 3261, 3213, 3262, 1);
|
||||
}
|
||||
break;
|
||||
case 12987:
|
||||
if (player.objectX > 3187 && player.objectX < 3190) {
|
||||
handleGate(player, 12987, 12986, 3188, 3281, 3188, 3280, 3189, 3279, 3188, 3279, 2);
|
||||
} else if (player.objectY > 3267 && player.objectY < 3270) {
|
||||
handleGate(player, 12987, 12986, 3184, 3268, 3185, 3268, 3186, 3269, 3186, 3268, 1);
|
||||
} else {
|
||||
handleGate(player, 12987, 12986, 3211, 3261, 3212, 3261, 3213, 3262, 3213, 3261, 1);
|
||||
}
|
||||
break;
|
||||
case 1596:
|
||||
if (player.objectX > 3310 && player.objectX < 3313 && player.absY != 3333) {
|
||||
handleSpecialGate(player, 1596, 1597, 3311, 3331, 3311, 3332, 3312, 3331, 3312, 3332, 3);
|
||||
} else if (player.objectY > 3318 && player.objectY < 3321 && player.absX != 2935 && player.absX != 2932) {
|
||||
handleSpecialGate(player, 1596, 1597, 2934, 3319, 2933, 3319, 2934, 3320, 2933, 3320, 0);
|
||||
} else if (player.objectX > 3130 && player.objectX < 3133) {
|
||||
handleSpecialGate(player, 1596, 1597, 3131, 9918, 3132, 9918, 3131, 9917, 3132, 9917, 6);
|
||||
} else if (player.objectY > 3181 && player.objectY < 3184) {
|
||||
handleSpecialGate(player, 1596, 1597, 2815, 3182, 2815, 3183, 2816, 3182, 2816, 3183, 3);
|
||||
} else if (player.objectY > 3449 && player.objectY < 3452) {
|
||||
handleSpecialGate(player, 1596, 1597, 2936, 3451, 2936, 3450, 2935, 3451, 2935, 3450, 7);
|
||||
}
|
||||
break;
|
||||
case 1597:
|
||||
if (player.objectX > 3310 && player.objectX < 3313 && player.absY != 3333) {
|
||||
handleSpecialGate(player, 1597, 1596, 3311, 3332, 3311, 3331, 3312, 3332, 3312, 3331, 1);
|
||||
} else if (player.objectY > 3318 && player.objectY < 3321 && player.absX != 2935 && player.absX != 2932) {
|
||||
handleSpecialGate(player, 1597, 1596, 2933, 3319, 2934, 3319, 2933, 3320, 2934, 3320, 2);
|
||||
} else if (player.objectX > 3130 && player.objectX < 3133) {
|
||||
handleSpecialGate(player, 1597, 1596, 3132, 9918, 3131, 9918, 3132, 9917, 3131, 9917, 4);
|
||||
} else if (player.objectY > 3181 && player.objectY < 3184) {
|
||||
handleSpecialGate(player, 1597, 1596, 2815, 3183, 2815, 3182, 2816, 3183, 2816, 3182, 1);
|
||||
} else if (player.objectY > 3449 && player.objectY < 3452) {
|
||||
handleSpecialGate(player, 1597, 1596, 2936, 3450, 2936, 3451, 2935, 3450, 2935, 3451, 5);
|
||||
}
|
||||
break;
|
||||
case 1557:
|
||||
if (player.objectY > 9830 && player.objectY < 9833 && player.absY != 9830) {
|
||||
handleSpecialGate(player, 1557, 1558, 2897, 9831, 2897, 9832, 2898, 9831, 2898, 9832, 3);
|
||||
} else if (player.objectY > 3866 && player.objectY < 3869) {
|
||||
handleSpecialGate(player, 1557, 1558, 3075, 3868, 3076, 3868, 3075, 3867, 3076, 3867, 4);
|
||||
/*Heroes Guild*/
|
||||
} else if (player.objectX > 2908 && player.objectX < 2911) {
|
||||
//newx, newy, newx2, newy2, oldx, oldy, oldx2, oldy2
|
||||
handleSpecialGate(player, 1557, 1558, 2910, 9909, 2909, 9909, 2910, 9910, 2909, 9910, 0);
|
||||
} else if (player.objectY > 9908 && player.objectY < 9911) {
|
||||
handleSpecialGate(player, 1557, 1558, 3104, 9910, 3104, 9909, 3103, 9910, 3103, 9909, 7);
|
||||
} else if (player.objectX > 3110 && player.objectX < 3113 && player.absY != 3513 && player.absY != 3516) {
|
||||
handleSpecialGate(player, 1557, 1558, 3111, 3514, 3111, 3515, 3112, 3514, 3112, 3515, 3);
|
||||
} else if (player.objectX > 3104 && player.objectX < 3107 && player.absX != 3104 && player.absX != 3107) {
|
||||
handleSpecialGate(player, 1557, 1558, 3105, 9945, 3106, 9945, 3105, 9944, 3106, 9944, 6);
|
||||
} else if (player.objectX > 3144 && player.objectX < 3147) {
|
||||
handleSpecialGate(player, 1558, 1557, 3146, 9871, 3146, 9870, 3145, 9871, 3145, 9870, 1);
|
||||
}
|
||||
break;
|
||||
case 1558:
|
||||
if (player.objectY > 9830 && player.objectY < 9833 && player.absY != 9830) {
|
||||
handleSpecialGate(player, 1558, 1557, 2897, 9832, 2897, 9831, 2898, 9832, 2898, 9831, 1);
|
||||
} else if (player.objectY > 3866 && player.objectY < 3869) {
|
||||
handleSpecialGate(player, 1558, 1557, 3076, 3868, 3075, 3868, 3076, 3867, 3075, 3867, 4);
|
||||
/* Heroes Guild*/
|
||||
} else if (player.objectX > 2908 && player.objectX < 2911) {
|
||||
//newx, newy, newx2, newy2, oldx, oldy, oldx2, oldy2
|
||||
handleSpecialGate(player, 1558, 1557, 2909, 9909, 2910, 9909, 2909, 9910, 2910, 9910, 2);
|
||||
} else if (player.objectY > 9908 && player.objectY < 9911) {
|
||||
handleSpecialGate(player, 1558, 1557, 3104, 9909, 3104, 9910, 3103, 9909, 3103, 9910, 5);
|
||||
} else if (player.objectX > 3110 && player.objectX < 3113 && player.absY != 3513 && player.absY != 3516) {
|
||||
handleSpecialGate(player, 1558, 1557, 3111, 3515, 3111, 3514, 3112, 3515, 3112, 3514, 3);
|
||||
} else if (player.objectX > 3104 && player.objectX < 3107 && player.absX != 3104 && player.absX != 3107) {
|
||||
handleSpecialGate(player, 1558, 1557, 3106, 9945, 3105, 9945, 3106, 9944, 3105, 9944, 4);
|
||||
} else if (player.objectX > 3144 && player.objectX < 3147) {
|
||||
handleSpecialGate(player, 1558, 1557, 3146, 9870, 3146, 9871, 3145, 9870, 3145, 9871, 5);
|
||||
}
|
||||
break;
|
||||
case 3506:
|
||||
if (player.absX != 3445 && player.absX != 3442) {
|
||||
openSpecialWalkGate(player, 3506, 3507, 3444, 3457, 3443, 3457, 3444, 3458, 3443, 3458, 0, player.absY == 3457 ? 1 : -1, 2, 0, 3);
|
||||
}
|
||||
break;
|
||||
case 3507:
|
||||
if (player.absX != 3445 && player.absX != 3442) {
|
||||
openSpecialWalkGate(player, 3507, 3506, 3443, 3457, 3444, 3457, 3443, 3458, 3444, 3458, 0, player.absY == 3457 ? 1 : -1, 0, 2, 3);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
package redone.game.globalworldobjects;
|
||||
|
||||
import redone.Server;
|
||||
import redone.game.objects.Objects;
|
||||
import redone.game.players.Client;
|
||||
import redone.world.ObjectManager;
|
||||
import redone.world.clip.ObjectDef;
|
||||
import redone.world.clip.Region;
|
||||
|
||||
/**
|
||||
* GateHandler
|
||||
* @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus)
|
||||
*/
|
||||
public class GateHandler {
|
||||
|
||||
public static int gateAmount = 0, gateTicks = 100;
|
||||
|
||||
public static boolean isGate(int objectId) {
|
||||
String objectName = ObjectDef.getObjectDef(objectId).name;
|
||||
return objectName.equalsIgnoreCase("gate") || objectName.equalsIgnoreCase("Gate");
|
||||
}
|
||||
|
||||
public static void spawnGate(int objectId, int x, int y, int h, int face) {
|
||||
Server.objectHandler.placeObject(new Objects(objectId, x, y, h, face, 0, 0));
|
||||
}
|
||||
|
||||
public static void openSingleGate(Client player, int objectId, int x1, int y1, int x2, int y2, int walkX, int walkY, int face1, int face2) {
|
||||
if (isGate(objectId) && gateAmount == 0) {
|
||||
spawnGate(-1, x2, y2, player.heightLevel, 0);
|
||||
spawnGate(objectId, x1, y1, player.heightLevel, face1);
|
||||
gateAmount = 1;
|
||||
player.getPlayerAssistant().walkTo(walkX, walkY);
|
||||
ObjectManager.singleGateTicks(player, objectId, x2, y2, x1, y1, player.heightLevel, face2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
private static void openDoubleGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2) {
|
||||
if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) {
|
||||
spawnGate(-1, x3, y3, player.heightLevel, 0);
|
||||
spawnGate(-1, x4, y4, player.heightLevel, 0);
|
||||
spawnGate(objectId, x1, y1, player.heightLevel, face1);
|
||||
Region.addObject(objectId, x1, y1, player.heightLevel, 0, face1, false);
|
||||
gateAmount = 1;
|
||||
spawnGate(objectId2, x2, y2, player.heightLevel, face1);
|
||||
Region.addObject(objectId2, x2, y2, player.heightLevel, 0, face1, false);
|
||||
gateAmount = 2;
|
||||
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, gateTicks);
|
||||
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, gateTicks);
|
||||
} else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) {
|
||||
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, 0);
|
||||
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private static void openSpecialGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2, int face3) {
|
||||
if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) {
|
||||
spawnGate(-1, x3, y3, player.heightLevel, 0);
|
||||
spawnGate(-1, x4, y4, player.heightLevel, 0);
|
||||
spawnGate(objectId, x1, y1, player.heightLevel, face1);
|
||||
Region.addObject(objectId, x1, y1, player.heightLevel, 0, face1, false);
|
||||
gateAmount = 1;
|
||||
spawnGate(objectId2, x2, y2, player.heightLevel, face2);
|
||||
Region.addObject(objectId2, x2, y2, player.heightLevel, 0, face2, false);
|
||||
gateAmount = 2;
|
||||
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, gateTicks);
|
||||
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, gateTicks);
|
||||
} else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) {
|
||||
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, 0);
|
||||
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public static void openSpecialWalkGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int walkX, int walkY, int face1, int face2, int face3) {
|
||||
if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) {
|
||||
spawnGate(-1, x3, y3, player.heightLevel, 0);
|
||||
spawnGate(-1, x4, y4, player.heightLevel, 0);
|
||||
spawnGate(objectId, x1, y1, player.heightLevel, face1);
|
||||
gateAmount = 1;
|
||||
spawnGate(objectId2, x2, y2, player.heightLevel, face2);
|
||||
gateAmount = 2;
|
||||
player.getPlayerAssistant().walkTo(walkX, walkY);
|
||||
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, 2);
|
||||
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
public static void handleGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int type) {
|
||||
switch (type) {
|
||||
/**
|
||||
* X Gate 1
|
||||
*/
|
||||
case 0:
|
||||
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 3);
|
||||
break;
|
||||
/**
|
||||
* Y Gate 1
|
||||
*/
|
||||
case 1:
|
||||
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 0);
|
||||
break;
|
||||
/**
|
||||
* X Gate 2
|
||||
*/
|
||||
case 2:
|
||||
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 1);
|
||||
break;
|
||||
/**
|
||||
* Y Gate 2
|
||||
*/
|
||||
case 3:
|
||||
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 0);
|
||||
break;
|
||||
/**
|
||||
* X Gate 3
|
||||
*/
|
||||
case 4:
|
||||
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 3);
|
||||
break;
|
||||
/**
|
||||
* Y Gate 3
|
||||
*/
|
||||
case 5:
|
||||
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 2);
|
||||
break;
|
||||
/**
|
||||
* X Gate 4
|
||||
*/
|
||||
case 6:
|
||||
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 1);
|
||||
break;
|
||||
/**
|
||||
* Y Gate 4
|
||||
*/
|
||||
case 7:
|
||||
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static void handleSpecialGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int type) {
|
||||
switch (type) {
|
||||
/**
|
||||
* X Gate 1
|
||||
*/
|
||||
case 0:
|
||||
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 0, 3);
|
||||
break;
|
||||
/**
|
||||
* Y Gate 1
|
||||
*/
|
||||
case 1:
|
||||
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 3, 0);
|
||||
break;
|
||||
/**
|
||||
* X Gate 2
|
||||
*/
|
||||
case 2:
|
||||
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 2, 3);
|
||||
break;
|
||||
/**
|
||||
* Y Gate 2
|
||||
*/
|
||||
case 3:
|
||||
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 1, 0);
|
||||
break;
|
||||
/**
|
||||
* X Gate 3
|
||||
*/
|
||||
case 4:
|
||||
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 0, 1);
|
||||
break;
|
||||
/**
|
||||
* Y Gate 3
|
||||
*/
|
||||
case 5:
|
||||
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 1, 2);
|
||||
break;
|
||||
/**
|
||||
* X Gate 4
|
||||
*/
|
||||
case 6:
|
||||
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 2, 1);
|
||||
break;
|
||||
/**
|
||||
* Y Gate 4
|
||||
*/
|
||||
case 7:
|
||||
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 3, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
package redone.game.globalworldobjects;
|
||||
|
||||
import redone.event.CycleEvent;
|
||||
import redone.event.CycleEventContainer;
|
||||
import redone.event.CycleEventHandler;
|
||||
import redone.game.players.Client;
|
||||
import redone.game.players.Position;
|
||||
|
||||
/**
|
||||
* Passdoor
|
||||
* @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus)
|
||||
*/
|
||||
|
||||
public class PassDoor {
|
||||
|
||||
private static long doorDelay;
|
||||
|
||||
public static boolean passThroughDoor(final Client client, final int objectType, int face1, final int face2, final int type, int x, int y, final int height) {
|
||||
if (System.currentTimeMillis() - doorDelay < 1200) {
|
||||
client.getActionSender().sendMessage("You must wait longer to pass this door.");
|
||||
return false;
|
||||
}
|
||||
client.getActionSender().object(objectType, client.objectX, client.objectY, height, face1, type);
|
||||
client.getPlayerAssistant().walkTo(x, y);
|
||||
client.stopPlayer = true;
|
||||
CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() {
|
||||
@Override
|
||||
public void execute(CycleEventContainer container) {
|
||||
client.getActionSender().object(objectType, client.objectX, client.objectY, height, face2, type);
|
||||
container.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
client.stopPlayer = false;
|
||||
doorDelay = System.currentTimeMillis();
|
||||
}
|
||||
}, 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void processDoor(Client client, int objectType) {
|
||||
//player, object, face1, face2, type, x, y, height
|
||||
switch (objectType) {
|
||||
case 2550:
|
||||
if (Position.checkPosition(client, 2674, 3306, 0)) {
|
||||
passThroughDoor(client, objectType, 0, 1, 0, 0, -1, 0);
|
||||
}
|
||||
break;
|
||||
case 2551:
|
||||
if (Position.checkPosition(client, 2674, 3303, 0)) {
|
||||
passThroughDoor(client, objectType, 0, 3, 0, 0, 1, 0);
|
||||
}
|
||||
break;
|
||||
case 1530:
|
||||
if (Position.checkPosition(client, 2715, 3472, 0)) {
|
||||
passThroughDoor(client, objectType, 1, 0, 0, 1, 0, 0);
|
||||
} else if (Position.checkPosition(client, 2716, 3472, 0)) {
|
||||
passThroughDoor(client, objectType, 1, 0, 0, -1, 0, 0);
|
||||
} else if (Position.checkPosition(client, 3246, 9892, 0)) {
|
||||
passThroughDoor(client, objectType, 1, 0, 0, 1, 0, 0);
|
||||
} else if (Position.checkPosition(client, 3247, 9892, 0)) {
|
||||
passThroughDoor(client, objectType, 1, 0, 0, -1, 0, 0);
|
||||
} else if (Position.checkPosition(client, 3108, 9570, 0)) {
|
||||
passThroughDoor(client, objectType, 1, 0, 0, -1, 0, 0);
|
||||
} else if (Position.checkPosition(client, 3107, 9570, 0)) {
|
||||
passThroughDoor(client, objectType, 1, 0, 0, 1, 0, 0);
|
||||
} else if (Position.checkPosition(client, 3110, 9559, 0)) {
|
||||
passThroughDoor(client, objectType, 3, 0, 0, 1, 0, 0);
|
||||
} else if (Position.checkPosition(client, 3111, 9559, 0)) {
|
||||
passThroughDoor(client, objectType, 3, 0, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 11993:
|
||||
if (Position.checkPlayerY(client, 3167, 0)) {
|
||||
passThroughDoor(client, objectType, 0, 3, 0, 0, -1, 0);
|
||||
} else if (Position.checkPlayerY(client, 3166, 0)) {
|
||||
passThroughDoor(client, objectType, 0, 3, 0, 0, 1, 0);
|
||||
} else if (Position.checkPlayerY(client, 3163, 0) && client.absX != 3107) {
|
||||
passThroughDoor(client, objectType, 2, 1, 0, 0, -1, 0);
|
||||
} else if (Position.checkPlayerY(client, 3162, 0) && client.absX != 3108 && client.absX != 3106) {
|
||||
passThroughDoor(client, objectType, 2, 1, 0, 0, 1, 0);
|
||||
} else if (Position.checkPosition(client, 3107, 3162, 2)) {
|
||||
passThroughDoor(client, objectType, 1, 2, 0, 1, 0, 2);
|
||||
} else if (Position.checkPosition(client, 3108, 3162, 2)) {
|
||||
passThroughDoor(client, objectType, 1, 2, 0, -1, 0, 2);
|
||||
} else if (Position.checkPosition(client, 3109, 3159, 1)) {
|
||||
passThroughDoor(client, objectType, 1, 2, 0, 1, 0, 1);
|
||||
} else if (Position.checkPosition(client, 3110, 3159, 1)) {
|
||||
passThroughDoor(client, objectType, 1, 2, 0, -1, 0, 1);
|
||||
} else if (Position.checkPosition(client, 3108, 3159, 1)) {
|
||||
passThroughDoor(client, objectType, 2, 1, 0, 0, -1, 1);
|
||||
} else if (Position.checkPosition(client, 3108, 3158, 1)) {
|
||||
passThroughDoor(client, objectType, 2, 1, 0, 0, 1, 1);
|
||||
} else if (Position.checkObject(client, 3107, 3162, 0)) {
|
||||
if (Position.checkPosition(client, 3108, 3162, 0)) {
|
||||
passThroughDoor(client, objectType, 2, 1, 9, -1, -1, 0);
|
||||
} else if (Position.checkPosition(client, 3107, 3163, 0)) {
|
||||
passThroughDoor(client, objectType, 2, 1, 9, -1, -1, 0);
|
||||
} else {
|
||||
if (client.heightLevel == 0) {
|
||||
passThroughDoor(client, objectType, 2, 1, 9, 1, 1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package redone.game.globalworldobjects;
|
||||
|
||||
import redone.game.players.Client;
|
||||
|
||||
/**
|
||||
* SingleGates
|
||||
* @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus)
|
||||
*/
|
||||
|
||||
public class SingleGates extends GateHandler {
|
||||
|
||||
public static void useSingleGate(Client player, int objectId) {
|
||||
switch (objectId) {
|
||||
case 3444:
|
||||
openSingleGate(player, 3444, 3405, 9894, 3405, 9895, 0, player.absY == 9894 ? 1 : -1, 0, 3);
|
||||
break;
|
||||
case 3445:
|
||||
openSingleGate(player, 3445, 3432, 9897, 3431, 9897, player.absX == 3432 ? -1 : 1, 0, 3, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user