Przeglądaj źródła

* [3088] is no longer a temporary hack
* Reverting [3089] due to:
* Semantic error (Castle zone is used as which Siege zone means)
* Not 100% retail-like confirmed (on PTS we were able to set a flag inside a fort)

DrHouse 16 lat temu
rodzic
commit
6235f43af9

+ 2 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Character.java

@@ -217,8 +217,9 @@ public abstract class L2Character extends L2Object
 	public static final byte ZONE_NOSUMMONFRIEND = 12;
 	public static final byte ZONE_FORT = 13;
 	public static final byte ZONE_NOSTORE = 14;
+	public static final byte ZONE_TOWN = 15;
 
-	private final byte[] _zones = new byte[15];
+	private final byte[] _zones = new byte[16];
 	protected byte _zoneValidateCounter = 4;
 
 	private boolean _isRaid = false;

+ 2 - 3
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2TeleporterInstance.java

@@ -223,9 +223,8 @@ public final class L2TeleporterInstance extends L2NpcInstance
 				player.sendPacket(new SystemMessage(SystemMessageId.NO_PORT_THAT_IS_IN_SIGE));
 				return;
 			}
-			// temp hack: only gatekeepers inside town are restricted, e.g. Cruma tower
-			else if (TownManager.townHasCastleInSiege(list.getLocX(), list.getLocY()) 
-					&& isInsideZone(L2Character.ZONE_PEACE))
+			else if (TownManager.townHasCastleInSiege(list.getLocX(), list.getLocY())
+					&& isInsideZone(L2Character.ZONE_TOWN))
 			{
 				player.sendPacket(new SystemMessage(SystemMessageId.NO_PORT_THAT_IS_IN_SIGE));
 				return;

+ 4 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2TownZone.java

@@ -102,6 +102,8 @@ public class L2TownZone extends L2ZoneType
 		if (_isPeaceZone && Config.ZONE_TOWN != 2)
 			character.setInsideZone(L2Character.ZONE_PEACE, true);
 		
+		character.setInsideZone(L2Character.ZONE_TOWN, true);
+		
 	}
 	
 	@Override
@@ -111,6 +113,8 @@ public class L2TownZone extends L2ZoneType
 		if (_isPeaceZone)
 			character.setInsideZone(L2Character.ZONE_PEACE, false);
 		
+		character.setInsideZone(L2Character.ZONE_TOWN, true);
+		
 		// if (character instanceof L2PcInstance)
 		//((L2PcInstance)character).sendMessage("You left "+_townName);
 		

+ 0 - 4
L2_GameServer/java/net/sf/l2j/gameserver/skills/l2skills/L2SkillSiegeFlag.java

@@ -145,8 +145,6 @@ public class L2SkillSiegeFlag extends L2Skill
 			text = "You must be a clan leader to place a flag";
 		else if (castle.getSiege().getAttackerClan(player.getClan()).getNumFlags() >= SiegeManager.getInstance().getFlagMaxCount())
 			text = "You have already placed the maximum number of flags possible";
-		else if (activeChar.isInsideZone(L2Character.ZONE_CASTLE))
-			text = "You cannot place the flag inside a Castle";
 		else
 			return true;
 		
@@ -180,8 +178,6 @@ public class L2SkillSiegeFlag extends L2Skill
 			text = "You must be a clan leader to place a flag";
 		else if (fort.getSiege().getAttackerClan(player.getClan()).getNumFlags() >= FortSiegeManager.getInstance().getFlagMaxCount())
 			text = "You have already placed the maximum number of flags possible";
-		else if (activeChar.isInsideZone(L2Character.ZONE_FORT))
-			text = "You cannot place the flag inside a Fort";
 		else
 			return true;