Index: /Server/GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java
===================================================================
--- /Server/GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java (revision 26)
+++ /Server/GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java (revision 40)
@@ -34,4 +34,5 @@
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.instancemanager.CastleManager;
+import net.sf.l2j.gameserver.instancemanager.CrownManager;
import net.sf.l2j.gameserver.instancemanager.SiegeManager;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
@@ -263,4 +264,7 @@
broadcastToOnlineMembers(sm);
sm = null;
+
+ CrownManager.getInstance().checkCrowns(exLeader);
+ CrownManager.getInstance().checkCrowns(newLeader);
}
/**
Index: /Server/GameServer/java/net/sf/l2j/gameserver/model/entity/Castle.java
===================================================================
--- /Server/GameServer/java/net/sf/l2j/gameserver/model/entity/Castle.java (revision 2)
+++ /Server/GameServer/java/net/sf/l2j/gameserver/model/entity/Castle.java (revision 40)
@@ -38,4 +38,5 @@
import net.sf.l2j.gameserver.instancemanager.CastleManager;
import net.sf.l2j.gameserver.instancemanager.CastleManorManager;
+import net.sf.l2j.gameserver.instancemanager.CrownManager;
import net.sf.l2j.gameserver.instancemanager.CastleManorManager.CropProcure;
import net.sf.l2j.gameserver.instancemanager.CastleManorManager.SeedProduction;
@@ -278,4 +279,5 @@
oldOwner.setHasCastle(0); // Unset has castle flag for old owner
new Announcements().announceToAll(oldOwner.getName() + " has lost " + getName() + " castle!");
+ CrownManager.getInstance().checkCrowns(oldOwner); // Delete old crowns
}
}
@@ -617,5 +619,5 @@
new Announcements().announceToAll(clan.getName() + " has taken " + getName() + " castle!");
clan.broadcastToOnlineMembers(new PledgeShowInfoUpdate(clan));
-
+ CrownManager.getInstance().checkCrowns(clan); // Give Crowns To New Owner
ThreadPoolManager.getInstance().scheduleGeneral(new CastleUpdater(clan, 1), 3600000); // Schedule owner tasks to start running
}
make new file CrownManager.java in instancemanager folder and place :
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.l2j.gameserver.instancemanager;
import net.sf.l2j.gameserver.datatables.CrownTable;
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.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.entity.Castle;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author evill33t
* Reworked by NB4L1
*/
public class CrownManager
{
private static final Log _log = LogFactory.getLog(CrownManager.class.getName());
private static CrownManager _instance;
public static final CrownManager getInstance()
{
if (_instance == null)
_instance = new CrownManager();
return _instance;
}
public CrownManager()
{
_log.info("CrownManager: initialized");
}
public void checkCrowns(L2Clan clan)
{
if (clan == null)
return;
for (L2ClanMember member : clan.getMembers())
{
if (member != null && member.isOnline() && member.getPlayerInstance() != null)
{
checkCrowns(member.getPlayerInstance());
}
}
}
public void checkCrowns(L2PcInstance activeChar)
{
if (activeChar == null)
return;
boolean isLeader = false;
int crownId = -1;
L2Clan activeCharClan = activeChar.getClan();
//L2EMU_EDIT_BEGIN
L2ClanMember activeCharClanLeader;
if (activeCharClan != null)
activeCharClanLeader = activeChar.getClan().getLeader();
else
activeCharClanLeader = null;
//L2EMU_EDIT_END
if (activeCharClan != null)
{
Castle activeCharCastle = CastleManager.getInstance().getCastleByOwner(activeCharClan);
if (activeCharCastle != null)
{
crownId = CrownTable.getCrownId(activeCharCastle.getCastleId());
}
//L2EMU_EDIT
if (activeCharClanLeader != null && activeCharClanLeader.getObjectId() == activeChar.getObjectId())
//L2EMU_EDIT
{
isLeader = true;
}
}
if (crownId > 0)
{
if (isLeader && activeChar.getInventory().getItemByItemId(6841) == null)
{
activeChar.addItem("Crown", 6841, 1, activeChar, true);
activeChar.getInventory().updateDatabase();
}
if (activeChar.getInventory().getItemByItemId(crownId) == null)
{
activeChar.addItem("Crown", crownId, 1, activeChar, true);
activeChar.getInventory().updateDatabase();
}
}
boolean alreadyFoundCirclet = false;
boolean alreadyFoundCrown = false;
for (L2ItemInstance item : activeChar.getInventory().getItems())
{
if (CrownTable.getCrownList().contains(item.getItemId()))
{
if (crownId > 0)
{
if (item.getItemId() == crownId)
{
if (!alreadyFoundCirclet)
{
alreadyFoundCirclet = true;
continue;
}
}
else if (item.getItemId() == 6841 && isLeader)
{
if (!alreadyFoundCrown)
{
alreadyFoundCrown = true;
continue;
}
}
}
activeChar.destroyItem("Removing Crown", item, activeChar, true);
activeChar.getInventory().updateDatabase();
}
}
}
}
have fun :D