Selaa lähdekoodia

Gnacik: Fort Siege fixes

JIV 15 vuotta sitten
vanhempi
sitoutus
6dbbe35b21

+ 11 - 8
L2_GameServer/java/com/l2jserver/gameserver/model/entity/Fort.java

@@ -399,18 +399,16 @@ public class Fort
 	 */
 	public boolean setOwner(L2Clan clan, boolean updateClansReputation)
 	{
-		if (updateClansReputation)
-		{
-			// update reputation first
-			updateClansReputation(clan, false);
-		}
+		L2Clan oldowner = getOwnerClan();
+		
 		// Remove old owner
-		if (getOwnerClan() != null && (clan != null && clan != getOwnerClan()))
+		if (oldowner != null && clan != null && clan != oldowner)
 		{
-			updateClansReputation(getOwnerClan(), true);
+			// Remove points from old owner
+			updateClansReputation(oldowner, true);
 			try
 			{
-				L2PcInstance oldleader = getOwnerClan().getLeader().getPlayerInstance();
+				L2PcInstance oldleader = oldowner.getLeader().getPlayerInstance();
 				if (oldleader != null)
 				{
 					if (oldleader.getMountType() == 2)
@@ -424,6 +422,7 @@ public class Fort
 			removeOwner(true);
 		}
 		setFortState(0, 0); // initialize fort state
+		
 		//	if clan already have castle, don't store him in fortress
 		if (clan.getHasCastle() > 0)
 		{
@@ -432,6 +431,10 @@ public class Fort
 		}
 		else
 		{
+			// Give points to new owner
+			if (updateClansReputation)
+				updateClansReputation(clan, false);
+
 			spawnSpecialEnvoys();
 			ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSpecialEnvoysDeSpawn(this), 1 * 60 * 60 * 1000); // Prepare 1hr task for special envoys despawn
 			// if clan have already fortress, remove it

+ 2 - 2
L2_GameServer/java/com/l2jserver/gameserver/model/entity/FortSiege.java

@@ -916,10 +916,10 @@ public class FortSiege implements Siegable
 			b = false;
 			player.sendMessage("Only clans with Level " + FortSiegeManager.getInstance().getSiegeClanMinLevel() + " and higher may register for a fortress siege.");
 		}
-		else if (!player.isClanLeader())
+		else if ((player.getClanPrivileges() & L2Clan.CP_CS_MANAGE_SIEGE) != L2Clan.CP_CS_MANAGE_SIEGE)
 		{
 			b = false;
-			player.sendPacket(new SystemMessage(SystemMessageId.ONLY_THE_CLAN_LEADER_IS_ENABLED));			
+			player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));			
 		}
 		else if (player.getClan() == getFort().getOwnerClan())
 		{