forked from MagicBane/Server
24.3 placement ruleset.
512/576/1040 grid/zone/siege
This commit is contained in:
@@ -2416,9 +2416,9 @@ public class Enum {
|
||||
|
||||
public enum CityBoundsType {
|
||||
|
||||
GRID(576),
|
||||
ZONE(640),
|
||||
SIEGE(814);
|
||||
GRID(512),
|
||||
ZONE(576),
|
||||
SIEGE(1040);
|
||||
|
||||
public final float extents;
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
|
||||
|
||||
boolean close = true;
|
||||
lock.writeLock().lock();
|
||||
|
||||
boolean isSiege = false;
|
||||
try {
|
||||
switch (buildingBlueprint.getBuildingGroup()) {
|
||||
|
||||
@@ -230,7 +230,6 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
|
||||
buildingList = msg.getFirstPlacementInfo();
|
||||
|
||||
serverZone = ZoneManager.findSmallestZone(buildingList.getLoc());
|
||||
|
||||
// Early exit if something went horribly wrong
|
||||
// with locating the current or zone
|
||||
|
||||
@@ -1249,6 +1248,85 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
|
||||
|
||||
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
|
||||
|
||||
if (serverZone.isNPCCity() == true) {
|
||||
@@ -1259,7 +1337,14 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
|
||||
// Errant guilds cannot place assets
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -1373,8 +1458,6 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
|
||||
PlaceAssetMsg.sendPlaceAssetError(origin, 9, ""); //You must be a guild member to place this asset
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user