|
|
@ -130,7 +130,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { |
|
|
|
|
|
|
|
|
|
|
|
boolean close = true; |
|
|
|
boolean close = true; |
|
|
|
lock.writeLock().lock(); |
|
|
|
lock.writeLock().lock(); |
|
|
|
|
|
|
|
boolean isSiege = false; |
|
|
|
try { |
|
|
|
try { |
|
|
|
switch (buildingBlueprint.getBuildingGroup()) { |
|
|
|
switch (buildingBlueprint.getBuildingGroup()) { |
|
|
|
|
|
|
|
|
|
|
@ -230,7 +230,6 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { |
|
|
|
buildingList = msg.getFirstPlacementInfo(); |
|
|
|
buildingList = msg.getFirstPlacementInfo(); |
|
|
|
|
|
|
|
|
|
|
|
serverZone = ZoneManager.findSmallestZone(buildingList.getLoc()); |
|
|
|
serverZone = ZoneManager.findSmallestZone(buildingList.getLoc()); |
|
|
|
|
|
|
|
|
|
|
|
// Early exit if something went horribly wrong
|
|
|
|
// Early exit if something went horribly wrong
|
|
|
|
// with locating the current or zone
|
|
|
|
// with locating the current or zone
|
|
|
|
|
|
|
|
|
|
|
@ -1249,6 +1248,85 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { |
|
|
|
|
|
|
|
|
|
|
|
RealmType currentRealm; |
|
|
|
RealmType currentRealm; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(Blueprint.getBlueprint(placementInfo.getBlueprintUUID()).isSiegeEquip() == false) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (serverZone.isPlayerCity() == false) { |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
City city = ZoneManager.getCityAtLocation(placementInfo.getLoc()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (player.getGuild().equals(city.getGuild()) == false) { |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (city.isLocationOnCityGrid(placementInfo.getLoc()) == false) { |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
City city = ZoneManager.getCityAtLocation(placementInfo.getLoc()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(city == null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Bane bane = city.getBane(); |
|
|
|
|
|
|
|
//check if player is owner/IC of tree or bane
|
|
|
|
|
|
|
|
if (player.getGuild().equals(city.getGuild()) == true) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//is from owners guild
|
|
|
|
|
|
|
|
if(GuildStatusController.isGuildLeader(player.getGuildStatus()) == false && GuildStatusController.isInnerCouncil(player.getGuildStatus()) == false) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//is not from owners guild
|
|
|
|
|
|
|
|
if(bane == null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//bane was null
|
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(city == null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//city was null
|
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//check if player is from siege guild
|
|
|
|
|
|
|
|
if(player.getGuild().equals(bane.getOwner().getGuild()) == false) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//check if player is GL or IC of the bane guild
|
|
|
|
|
|
|
|
if(GuildStatusController.isGuildLeader(player.getGuildStatus()) == false && GuildStatusController.isInnerCouncil(player.getGuildStatus()) == false) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//cannot place on grid until bane is live
|
|
|
|
|
|
|
|
if(bane.getSiegePhase() != SiegePhase.WAR && city.isLocationOnCityGrid(placementInfo.getLoc()) == true) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(city.isLocationWithinSiegeBounds(placementInfo.getLoc()) == false && city.isLocationOnCityZone(placementInfo.getLoc()) == false) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 57, player.getName()); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
// Retrieve the building details we're placing
|
|
|
|
// Retrieve the building details we're placing
|
|
|
|
|
|
|
|
|
|
|
|
if (serverZone.isNPCCity() == true) { |
|
|
|
if (serverZone.isNPCCity() == true) { |
|
|
@ -1259,7 +1337,14 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { |
|
|
|
// Errant guilds cannot place assets
|
|
|
|
// Errant guilds cannot place assets
|
|
|
|
|
|
|
|
|
|
|
|
if (player.getGuild().getGuildState() == GuildState.Errant) { |
|
|
|
if (player.getGuild().getGuildState() == GuildState.Errant) { |
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 1, "Only soverign or sworn guilds may place assets."); |
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 1, "Only sovereign or sworn guilds may place assets."); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Player must be GL or IC of a guild to place buildings.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (GuildStatusController.isGuildLeader(player.getGuildStatus()) == false && GuildStatusController.isInnerCouncil(player.getGuildStatus()) == false) { |
|
|
|
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 10, ""); // You must be a guild leader
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1373,8 +1458,6 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { |
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 9, ""); //You must be a guild member to place this asset
|
|
|
|
PlaceAssetMsg.sendPlaceAssetError(origin, 9, ""); //You must be a guild member to place this asset
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |