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 {
|
public enum CityBoundsType {
|
||||||
|
|
||||||
GRID(576),
|
GRID(512),
|
||||||
ZONE(640),
|
ZONE(576),
|
||||||
SIEGE(814);
|
SIEGE(1040);
|
||||||
|
|
||||||
public final float extents;
|
public final float extents;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user