فهرست منبع

A likely fix for #2792 leader quits festival. Also fixes #2510 NPE.

Sami 16 سال پیش
والد
کامیت
ec94fe4748

+ 4 - 4
L2_GameServer/java/net/sf/l2j/gameserver/SevenSignsFestival.java

@@ -1468,7 +1468,7 @@ public class SevenSignsFestival implements SpawnListener
             {
                 L2DarknessFestival festivalInst = _managerInstance.getFestivalInstance(oracle, festivalId);
 
-                if (festivalParty == null)
+                if (festivalParty == null) // leader has left
                     for (L2PcInstance partyMember : getParticipants(oracle, festivalId))
                         festivalInst.relocatePlayer(partyMember, true);
                 else
@@ -1477,10 +1477,10 @@ public class SevenSignsFestival implements SpawnListener
 
             setParticipants(oracle, festivalId, festivalParty);
 
-            // Check on disconect if min player in party
-            if (festivalParty.getMemberCount() < Config.ALT_FESTIVAL_MIN_PLAYER)
+            // Check on disconnect if min player in party
+            if (festivalParty != null && festivalParty.getMemberCount() < Config.ALT_FESTIVAL_MIN_PLAYER)
             {
-              updateParticipants(player, festivalParty);
+              updateParticipants(player, null); // under minimum count
               festivalParty.removePartyMember(player);
             }
         }

+ 3 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2ClanHallManagerInstance.java

@@ -1470,7 +1470,9 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
     
     private void revalidateDeco(L2PcInstance player)
     {
-        AgitDecoInfo bl = new AgitDecoInfo(ClanHallManager.getInstance().getClanHallByOwner(player.getClan()));
+    	ClanHall ch = ClanHallManager.getInstance().getClanHallByOwner(player.getClan());
+    	if (ch == null) return;
+    	AgitDecoInfo bl = new AgitDecoInfo(ch);
         player.sendPacket(bl);
     }
 }

+ 9 - 6
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2FestivalGuideInstance.java

@@ -369,15 +369,18 @@ public final class L2FestivalGuideInstance extends L2FolkInstance
                     if (isLeader)
                     {
                         SevenSignsFestival.getInstance().updateParticipants(player, null);
+                        playerParty.removePartyMember(player);
                     }
-
-                    if (playerParty.getMemberCount() > Config.ALT_FESTIVAL_MIN_PLAYER)
+                    else
                     {
-                    	SevenSignsFestival.getInstance().updateParticipants(player, playerParty);
-                    	playerParty.removePartyMember(player);
+                    	if (playerParty.getMemberCount() > Config.ALT_FESTIVAL_MIN_PLAYER)
+                    	{
+                    		//SevenSignsFestival.getInstance().updateParticipants(player, playerParty);
+                    		playerParty.removePartyMember(player);
+                    	}
+                    	else
+                    		player.sendMessage("Only the party leader can leave a festival when a party has minimum number of members.");
                     }
-                    else
-                    player.sendMessage("Only partyleader can leave festival, if minmum party member is reached.");
                     break;
                 case 0: // Distribute Accumulated Bonus
                     if (!SevenSigns.getInstance().isSealValidationPeriod())