All pastes #750824 Raw Edit

Untitled

public text v1 · immutable
#750824 ·published 2007-10-26 20:27 UTC
rendered paste body
Index: C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/model/L2Clan.java
===================================================================
--- C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/model/L2Clan.java	(revision 1272)
+++ C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/model/L2Clan.java	(working copy)
@@ -32,6 +32,7 @@
 import net.sf.l2j.gameserver.communitybbs.Manager.ForumsBBSManager;
 import net.sf.l2j.gameserver.datatables.ClanTable;
 import net.sf.l2j.gameserver.datatables.SkillTable;
+import net.sf.l2j.gameserver.instancemanager.CastleManager;
 import net.sf.l2j.gameserver.instancemanager.SiegeManager;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.network.SystemMessageId;
@@ -368,6 +369,7 @@
 		}
 		exMember.saveApprenticeAndSponsor(0, 0);
 		
+		CastleManager.getInstance().removeCirclet(exMember, getHasCastle());
 		if (exMember.isOnline())
 		{
 			L2PcInstance player = exMember.getPlayerInstance();
Index: C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/model/entity/Castle.java
===================================================================
--- C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/model/entity/Castle.java	(revision 1272)
+++ C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/model/entity/Castle.java	(working copy)
@@ -257,6 +257,7 @@
 		{	
 			_formerOwner = clan;
 			clan.setHasCastle(0);
+			CastleManager.getInstance().removeCirclet(clan, getCastleId());
 			new Announcements().announceToAll(clan.getName() + " has lost " +getName() + " castle");
 			clan.broadcastToOnlineMembers(new PledgeShowInfoUpdate(clan));
 		}
@@ -264,7 +265,6 @@
 		updateOwnerInDB(null);
 		if (getSiege().getIsInProgress())
 			getSiege().midVictory();
-		
 		updateClansReputation();
 	}
 
Index: C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/instancemanager/CastleManager.java
===================================================================
--- C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/instancemanager/CastleManager.java	(revision 1272)
+++ C:/Server/source/L2_GameServer_It/java/net/sf/l2j/gameserver/instancemanager/CastleManager.java	(working copy)
@@ -24,7 +24,10 @@
 import javolution.util.FastList;
 import net.sf.l2j.L2DatabaseFactory;
 import net.sf.l2j.gameserver.model.L2Clan;
+import net.sf.l2j.gameserver.model.L2ClanMember;
+import net.sf.l2j.gameserver.model.L2ItemInstance;
 import net.sf.l2j.gameserver.model.L2Object;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.entity.Castle;
 import net.sf.l2j.gameserver.SevenSigns;
 
@@ -225,4 +228,54 @@
 		
 		return 0;
 	}
+	
+    // remove this castle's circlets from the clan
+	public void removeCirclet(L2Clan clan, int castleId)
+	{
+		for (L2ClanMember member : clan.getMembers())
+			removeCirclet(member, castleId);
+	}	
+	public void removeCirclet(L2ClanMember member, int castleId)
+	{
+		if (member == null) return;
+		L2PcInstance player = member.getPlayerInstance();
+		int circletId = getCircletByCastleId(castleId);
+		
+		if (circletId != 0)
+		{
+			// online-player circlet removal
+			if (player != null) 
+			{
+				L2ItemInstance circlet = player.getInventory().getItemByItemId(circletId);
+				if (circlet != null)
+				{
+					if (circlet.isEquipped())
+		                player.getInventory().unEquipItemInSlotAndRecord(circlet.getEquipSlot());
+					player.destroyItemByItemId("CastleCircletRemoval", circletId, 1, player, true);
+				}
+			}
+			else 	// offline-player circlet removal
+			{
+				java.sql.Connection con = null;
+				try
+				{
+					con = L2DatabaseFactory.getInstance().getConnection();
+					PreparedStatement statement = con.prepareStatement("DELETE FROM items WHERE owner_id = ? and item_id = ?");
+					statement.setInt(1, member.getObjectId());
+					statement.setInt(2, circletId);
+					statement.execute();
+					statement.close();
+				}
+				catch (Exception e)
+				{
+					System.out.println("Failed to remove castle circlets offline for player "+member.getName());
+					e.printStackTrace();
+				}
+				finally
+				{
+					try { con.close(); } catch (Exception e) {}
+				}
+			}
+		}
+	}
 }