Group translocate not allowed outside active banes and mines
This commit is contained in:
@@ -215,9 +215,60 @@ public enum PowersManager {
|
|||||||
+ Integer.toHexString(msg.getPowerUsedID()) + " ("
|
+ Integer.toHexString(msg.getPowerUsedID()) + " ("
|
||||||
+ msg.getPowerUsedID() + ')');
|
+ msg.getPowerUsedID() + ')');
|
||||||
}
|
}
|
||||||
|
Boolean earlyExit = false;
|
||||||
//Sending recycle message to player if died while casting.
|
//Sending recycle message to player if died while casting.
|
||||||
if (!playerCharacter.isAlive() && msg.getPowerUsedID() != 428589216) { //succor
|
if (!playerCharacter.isAlive() && msg.getPowerUsedID() != 428589216) { //succor
|
||||||
|
|
||||||
|
earlyExit = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(msg.getPowerUsedID() == 430628895){ // group teleport
|
||||||
|
|
||||||
|
Boolean activeBane = false;
|
||||||
|
|
||||||
|
if(ZoneManager.getCityAtLocation(playerCharacter.loc) != null && ZoneManager.getCityAtLocation(playerCharacter.loc).getBane() != null)
|
||||||
|
activeBane = ZoneManager.getCityAtLocation(playerCharacter.loc).getBane().getSiegePhase().equals(SiegePhase.WAR);
|
||||||
|
|
||||||
|
Zone currentZone = ZoneManager.findSmallestZone(playerCharacter.loc);
|
||||||
|
if(currentZone == null)
|
||||||
|
earlyExit = true;
|
||||||
|
|
||||||
|
if(currentZone.isPlayerCity() && !activeBane)
|
||||||
|
earlyExit = true;
|
||||||
|
|
||||||
|
if(currentZone.getName().contains("Mine") == true && currentZone.isPlayerCity() == false) {
|
||||||
|
for (Building building : currentZone.zoneBuildingSet) {
|
||||||
|
if (Mine.getMineFromTower(building.getObjectUUID()) != null) {
|
||||||
|
Mine currentMine = Mine.getMineFromTower(building.getObjectUUID());
|
||||||
|
if (currentMine.isActive == false) {
|
||||||
|
earlyExit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Vector3fImmutable endLoc = new Vector3fImmutable(msg.getTargetX(),msg.getTargetY(),msg.getTargetZ());
|
||||||
|
currentZone = ZoneManager.findSmallestZone(endLoc);
|
||||||
|
|
||||||
|
if(currentZone == null)
|
||||||
|
earlyExit = true;
|
||||||
|
|
||||||
|
if(currentZone.isPlayerCity() && !activeBane)
|
||||||
|
earlyExit = true;
|
||||||
|
|
||||||
|
if(currentZone.getName().contains("Mine") == true && currentZone.isPlayerCity() == false) {
|
||||||
|
for (Building building : currentZone.zoneBuildingSet) {
|
||||||
|
if (Mine.getMineFromTower(building.getObjectUUID()) != null) {
|
||||||
|
Mine currentMine = Mine.getMineFromTower(building.getObjectUUID());
|
||||||
|
if (currentMine.isActive == false) {
|
||||||
|
earlyExit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (earlyExit) {
|
||||||
|
|
||||||
RecyclePowerMsg recyclePowerMsg = new RecyclePowerMsg(msg.getPowerUsedID());
|
RecyclePowerMsg recyclePowerMsg = new RecyclePowerMsg(msg.getPowerUsedID());
|
||||||
Dispatch dispatch = Dispatch.borrow(playerCharacter, recyclePowerMsg);
|
Dispatch dispatch = Dispatch.borrow(playerCharacter, recyclePowerMsg);
|
||||||
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
|
||||||
|
|||||||
Reference in New Issue
Block a user