2
0
Эх сурвалжийг харах

Fix for flag during fort siege.

JIV 15 жил өмнө
parent
commit
d86dc01ff0

+ 7 - 4
L2_GameServer/java/com/l2jserver/gameserver/model/actor/instance/L2SiegeFlagInstance.java

@@ -16,6 +16,7 @@ package com.l2jserver.gameserver.model.actor.instance;
 
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ai.CtrlIntention;
+import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
 import com.l2jserver.gameserver.instancemanager.SiegeManager;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2SiegeClan;
@@ -23,7 +24,7 @@ import com.l2jserver.gameserver.model.L2Skill;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.status.SiegeFlagStatus;
-import com.l2jserver.gameserver.model.entity.Siege;
+import com.l2jserver.gameserver.model.entity.Siegable;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.MyTargetSelected;
@@ -36,7 +37,7 @@ public class L2SiegeFlagInstance extends L2Npc
 {
     private L2Clan _clan;
     private L2PcInstance _player;
-    private Siege _siege;
+    private Siegable _siege;
     private final boolean _isAdvanced;
     private boolean _canTalk;
 
@@ -48,15 +49,17 @@ public class L2SiegeFlagInstance extends L2Npc
 		_player = player;
 		_canTalk = true;
 		_siege = SiegeManager.getInstance().getSiege(_player.getX(), _player.getY(), _player.getZ());
+		if (_siege == null)
+			_siege = FortSiegeManager.getInstance().getSiege(_player.getX(), _player.getY(), _player.getZ());
 		if (_clan == null || _siege == null)
 		{
-			deleteMe();
+			throw new NullPointerException(getClass().getSimpleName()+": Initialization failed.");
 		}
 		else
 		{
 			L2SiegeClan sc = _siege.getAttackerClan(_clan);
 			if (sc == null)
-				deleteMe();
+				throw new NullPointerException(getClass().getSimpleName()+": Cannot find siege clan.");
 			else
 				sc.addFlag(this);
 		}

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

@@ -54,7 +54,7 @@ import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
-public class FortSiege
+public class FortSiege implements Siegable
 {
 	protected static final Logger _log = Logger.getLogger(FortSiege.class.getName());
 
@@ -1271,4 +1271,34 @@ public class FortSiege
 	{
 		return _commanders;
 	}
+
+	/* (non-Javadoc)
+	 * @see com.l2jserver.gameserver.model.entity.Siegable#getDefenderClan(int)
+	 */
+	@Override
+	public L2SiegeClan getDefenderClan(int clanId)
+	{
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.l2jserver.gameserver.model.entity.Siegable#getDefenderClan(com.l2jserver.gameserver.model.L2Clan)
+	 */
+	@Override
+	public L2SiegeClan getDefenderClan(L2Clan clan)
+	{
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.l2jserver.gameserver.model.entity.Siegable#getDefenderClans()
+	 */
+	@Override
+	public List<L2SiegeClan> getDefenderClans()
+	{
+		// TODO Auto-generated method stub
+		return null;
+	}
 }

+ 56 - 0
L2_GameServer/java/com/l2jserver/gameserver/model/entity/Siegable.java

@@ -0,0 +1,56 @@
+/*
+ * 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 com.l2jserver.gameserver.model.entity;
+
+import java.util.Calendar;
+import java.util.List;
+
+import com.l2jserver.gameserver.model.L2Clan;
+import com.l2jserver.gameserver.model.L2SiegeClan;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ * @author JIV
+ *
+ */
+public interface Siegable
+{
+	public void startSiege();
+	
+	public void endSiege();
+	
+	public L2SiegeClan getAttackerClan(int clanId);
+	
+	public L2SiegeClan getAttackerClan(L2Clan clan);
+	
+	public List<L2SiegeClan> getAttackerClans();
+	
+	public List<L2PcInstance> getAttackersInZone();
+	
+	public boolean checkIsAttacker(L2Clan clan);
+	
+	public L2SiegeClan getDefenderClan(int clanId);
+	
+	public L2SiegeClan getDefenderClan(L2Clan clan);
+	
+	public List<L2SiegeClan> getDefenderClans();
+	
+	public boolean checkIsDefender(L2Clan clan);
+	
+	public List<L2Npc> getFlag(L2Clan clan);
+	
+	public Calendar getSiegeDate();
+}

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/entity/Siege.java

@@ -56,7 +56,7 @@ import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
 import javolution.util.FastList;
 
 
-public class Siege
+public class Siege implements Siegable
 {
 	protected static final Logger _log = Logger.getLogger(Siege.class.getName());