diff --git a/src/engine/net/client/handlers/AcceptSubInviteHandler.java b/src/engine/net/client/handlers/AcceptSubInviteHandler.java index 38fbb3ef..cf7a0507 100644 --- a/src/engine/net/client/handlers/AcceptSubInviteHandler.java +++ b/src/engine/net/client/handlers/AcceptSubInviteHandler.java @@ -75,7 +75,7 @@ public class AcceptSubInviteHandler extends AbstractClientMsgHandler { //source guild is limited to 7 subs //TODO this should be based on TOL rank - if (!targetGuild.canSubAGuild(sourceGuild)) { + if (!targetGuild.canSubAGuild(sourceGuild,targetGuild)) { ErrorPopupMsg.sendErrorPopup(sourcePlayer, 45); // Failure to swear guild return true; } diff --git a/src/engine/net/client/handlers/InviteToSubHandler.java b/src/engine/net/client/handlers/InviteToSubHandler.java index 9c16ce90..992799eb 100644 --- a/src/engine/net/client/handlers/InviteToSubHandler.java +++ b/src/engine/net/client/handlers/InviteToSubHandler.java @@ -103,7 +103,7 @@ public class InviteToSubHandler extends AbstractClientMsgHandler { //TODO this should be based on TOL rank - if (!sourceGuild.canSubAGuild(targetGuild)) { + if (!sourceGuild.canSubAGuild(targetGuild, null)) { sendChat(source, "This Guild can't be subbed."); return true; } diff --git a/src/engine/objects/Guild.java b/src/engine/objects/Guild.java index e28009af..8bf11f6b 100644 --- a/src/engine/objects/Guild.java +++ b/src/engine/objects/Guild.java @@ -559,17 +559,21 @@ public class Guild extends AbstractWorldObject { } - public boolean canSubAGuild(Guild toSub){ + public boolean canSubAGuild(Guild toSub, Guild nation){ boolean canSub; if (this.equals(toSub)) return false; - - switch(this.guildState){ - case Nation: - case Sovereign: - canSub = true; + City nationCap = City.getCity(nation.cityUUID); + if (nation.getSubGuildList().size() >= nationCap.getRank()) { + canSub = false; + return canSub; + } + switch(this.guildState) { + case Nation: + case Sovereign: + canSub = true; break; default: canSub = false;