Index: java/net/sf/l2j/gameserver/model/entity/Castle.java =================================================================== --- java/net/sf/l2j/gameserver/model/entity/Castle.java (revision 2713) +++ java/net/sf/l2j/gameserver/model/entity/Castle.java (working copy) @@ -71,6 +71,7 @@ private List _doors = new FastList(); private List _doorDefault = new FastList(); private String _name = ""; + private int _oldOwnerId = 0; private int _ownerId = 0; private Siege _siege = null; private Calendar _siegeDate; @@ -279,6 +280,18 @@ // ========================================================= // Method - Public + // Used to store/retrieve the old owner of a castle, for removing the lord's crown + public void setOldOwnerId(int oldOwner) + { + _oldOwnerId = oldOwner; + } + + public int getOldOwnerId() + { + return _oldOwnerId; + } + + /** Return function with id */ public CastleFunction getFunction(int type) { Index: java/net/sf/l2j/gameserver/model/entity/Siege.java =================================================================== --- java/net/sf/l2j/gameserver/model/entity/Siege.java (revision 2713) +++ java/net/sf/l2j/gameserver/model/entity/Siege.java (working copy) @@ -263,6 +263,33 @@ startAutoTask(); } + private void giveAndTakeLordsCrown() + { + L2PcInstance leader = ClanTable.getInstance().getClan(getCastle().getOwnerId()).getLeader().getPlayerInstance(); + if (getCastle().getOldOwnerId() > 0) + { + L2PcInstance oldLeader = ClanTable.getInstance().getClan(getCastle().getOldOwnerId()).getLeader().getPlayerInstance(); + + if (oldLeader != null) + { + oldLeader.getInventory().destroyItemByItemId("Taking Lord's Crown", 6841, 1, oldLeader, oldLeader); + } + } + if (leader != null) + { + if (leader.getInventory().validateCapacity(1)) + { + leader.getInventory().addItem("Giving Lord's Crown", 6841, 1, leader, leader); + } + else + { + leader.sendMessage("Your inventory is too full."); + leader.sendMessage("Please remove some items and relog to get The Lord's Crown"); + } + } + getCastle().setOldOwnerId(0); + } + // ========================================================= // Siege phases /** @@ -275,7 +302,13 @@ announceToPlayer("The siege of " + getCastle().getName() + " has finished!", false); if (getCastle().getOwnerId() <= 0) + { announceToPlayer("The siege of " + getCastle().getName() + " has ended in a draw.", false); + } + else + { + giveAndTakeLordsCrown(); + } removeFlags(); // Removes all flags. Note: Remove flag before teleporting players teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionTable.TeleportWhereType.Town); // Teleport to the second closest town @@ -437,6 +470,7 @@ saveCastleSiege(); return; } + getCastle().setOldOwnerId(getCastle().getOwnerId()); _isNormalSide = true; // Atk is now atk _isInProgress = true; // Flag so that same siege instance cannot be started again Index: java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (revision 2713) +++ java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (working copy) @@ -368,6 +368,32 @@ RegionBBSManager.getInstance().changeCommunityBoard(); TvTEvent.onLogin(activeChar); + + if (activeChar.isClanLeader()) + { + if (activeChar.getClan().getHasCastle() > 0) + { + if (activeChar.getInventory().validateCapacity(1)) + { + if (activeChar.getInventory().getItemByItemId(6841) == null) + { + activeChar.getInventory().addItem("Giving Lord's Crown", 6841, 1, activeChar, activeChar); + } + } + else + { + activeChar.sendMessage("Your inventory is too full."); + activeChar.sendMessage("Please remove some items and relog to get The Lord's Crown"); + } + } + else + { + if (activeChar.getInventory().getItemByItemId(6841) != null) + { + activeChar.getInventory().destroyItem("Taking Lord's Crown", 6841, 1, activeChar, activeChar); + } + } + } } /**