From 432f235dc5fd5194a3fbf82c2c281fb89a4cc665 Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Tue, 25 May 2021 21:39:09 +0000
Subject: [PATCH] Improved support for instanced timed hunting zones.
---
.../game/data/xsd/TimedHuntingZoneData.xsd | 1 +
.../data/xml/TimedHuntingZoneData.java | 8 +++++++-
.../model/actor/instance/PlayerInstance.java | 7 +++++++
.../model/holders/TimedHuntingZoneHolder.java | 9 ++++++++-
.../huntingzones/ExTimedHuntingZoneEnter.java | 19 ++++++++++++++++++-
.../game/data/xsd/TimedHuntingZoneData.xsd | 1 +
.../data/xml/TimedHuntingZoneData.java | 8 +++++++-
.../model/actor/instance/PlayerInstance.java | 7 +++++++
.../model/holders/TimedHuntingZoneHolder.java | 9 ++++++++-
.../huntingzones/ExTimedHuntingZoneEnter.java | 19 ++++++++++++++++++-
.../game/data/xsd/TimedHuntingZoneData.xsd | 1 +
.../data/xml/TimedHuntingZoneData.java | 8 +++++++-
.../model/actor/instance/PlayerInstance.java | 7 +++++++
.../model/holders/TimedHuntingZoneHolder.java | 9 ++++++++-
.../huntingzones/ExTimedHuntingZoneEnter.java | 19 ++++++++++++++++++-
.../game/data/xsd/TimedHuntingZoneData.xsd | 1 +
.../data/xml/TimedHuntingZoneData.java | 8 +++++++-
.../model/actor/instance/PlayerInstance.java | 7 +++++++
.../model/holders/TimedHuntingZoneHolder.java | 9 ++++++++-
.../huntingzones/ExTimedHuntingZoneEnter.java | 19 ++++++++++++++++++-
.../dist/game/data/TimedHuntingZoneData.xml | 6 ++++++
.../TranscendentZone/TranscendentZone.java | 2 +-
.../game/data/xsd/TimedHuntingZoneData.xsd | 1 +
.../data/xml/TimedHuntingZoneData.java | 8 +++++++-
.../model/actor/instance/PlayerInstance.java | 7 +++++++
.../model/holders/TimedHuntingZoneHolder.java | 9 ++++++++-
.../huntingzones/ExTimedHuntingZoneEnter.java | 7 ++++---
.../dist/game/data/TimedHuntingZoneData.xml | 6 ++++++
.../TranscendentZone/TranscendentZone.java | 2 +-
.../game/data/xsd/TimedHuntingZoneData.xsd | 1 +
.../data/xml/TimedHuntingZoneData.java | 8 +++++++-
.../model/actor/instance/PlayerInstance.java | 7 +++++++
.../model/holders/TimedHuntingZoneHolder.java | 9 ++++++++-
.../huntingzones/ExTimedHuntingZoneEnter.java | 7 ++++---
34 files changed, 232 insertions(+), 24 deletions(-)
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/TimedHuntingZoneData.xsd
index c5dd31a591..7c75375766 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/TimedHuntingZoneData.xsd
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/TimedHuntingZoneData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
index 3e8c396f59..e01aa5d46e 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
@@ -87,6 +87,7 @@ public class TimedHuntingZoneData implements IXmlReader
int maxLevel = 999;
int remainRefillTime = 3600;
int refillTimeMax = 3600;
+ int instanceId = 0;
boolean weekly = false;
Location enterLocation = null;
for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling())
@@ -144,6 +145,11 @@ public class TimedHuntingZoneData implements IXmlReader
refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
break;
}
+ case "instanceId":
+ {
+ refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
+ break;
+ }
case "weekly":
{
weekly = Boolean.parseBoolean(zoneNode.getTextContent());
@@ -151,7 +157,7 @@ public class TimedHuntingZoneData implements IXmlReader
}
}
}
- _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, weekly, enterLocation));
+ _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, instanceId, weekly, enterLocation));
}
}
}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index 7c319068c7..0e20809359 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -14292,6 +14292,13 @@ public class PlayerInstance extends Playable
{
return false;
}
+
+ final int instanceId = holder.getInstanceId();
+ if (instanceId > 0)
+ {
+ return isInInstance() && (instanceId == getInstanceWorld().getTemplateId());
+ }
+
return (holder.getMapX() == (((locX - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN)) && (holder.getMapY() == (((locY - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN));
}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
index 8dc7e29393..b487e8d74b 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
@@ -35,12 +35,13 @@ public class TimedHuntingZoneHolder
private final int _maxLevel;
private final int _remainRefillTime;
private final int _refillTimeMax;
+ private final int _instanceId;
private final boolean _weekly;
private final Location _enterLocation;
private final int _mapX;
private final int _mapY;
- public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean weekly, Location enterLocation)
+ public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, int instanceId, boolean weekly, Location enterLocation)
{
_id = id;
_name = name;
@@ -53,6 +54,7 @@ public class TimedHuntingZoneHolder
_maxLevel = maxLevel;
_remainRefillTime = remainRefillTime;
_refillTimeMax = refillTimeMax;
+ _instanceId = instanceId;
_weekly = weekly;
_enterLocation = enterLocation;
_mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
@@ -114,6 +116,11 @@ public class TimedHuntingZoneHolder
return _refillTimeMax;
}
+ public int getInstanceId()
+ {
+ return _instanceId;
+ }
+
public boolean isWeekly()
{
return _weekly;
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
index c06b418436..c8e62fd7e0 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
@@ -19,6 +19,8 @@ package org.l2jmobius.gameserver.network.clientpackets.huntingzones;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
+import org.l2jmobius.gameserver.instancemanager.InstanceManager;
+import org.l2jmobius.gameserver.instancemanager.QuestManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
@@ -99,6 +101,13 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
return;
}
+ final int instanceId = holder.getInstanceId();
+ if ((instanceId > 0) && (InstanceManager.getInstance().getInstanceTime(player, instanceId) > Chronos.currentTimeMillis()))
+ {
+ player.sendMessage("This transcendent instance has not reset yet.");
+ return;
+ }
+
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long lastEntryTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_ENTRY + _zoneId, 0);
@@ -132,7 +141,15 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, endTime - currentTime);
- player.teleToLocation(holder.getEnterLocation());
+
+ if (instanceId == 0)
+ {
+ player.teleToLocation(holder.getEnterLocation());
+ }
+ else // Transcendent zones.
+ {
+ QuestManager.getInstance().getQuest("TranscendentZone").notifyEvent("ENTER " + instanceId, null, player);
+ }
}
else
{
diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_8.0_Homunculus/dist/game/data/xsd/TimedHuntingZoneData.xsd
index c5dd31a591..7c75375766 100644
--- a/L2J_Mobius_8.0_Homunculus/dist/game/data/xsd/TimedHuntingZoneData.xsd
+++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/xsd/TimedHuntingZoneData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
index 3e8c396f59..e01aa5d46e 100644
--- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
+++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
@@ -87,6 +87,7 @@ public class TimedHuntingZoneData implements IXmlReader
int maxLevel = 999;
int remainRefillTime = 3600;
int refillTimeMax = 3600;
+ int instanceId = 0;
boolean weekly = false;
Location enterLocation = null;
for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling())
@@ -144,6 +145,11 @@ public class TimedHuntingZoneData implements IXmlReader
refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
break;
}
+ case "instanceId":
+ {
+ refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
+ break;
+ }
case "weekly":
{
weekly = Boolean.parseBoolean(zoneNode.getTextContent());
@@ -151,7 +157,7 @@ public class TimedHuntingZoneData implements IXmlReader
}
}
}
- _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, weekly, enterLocation));
+ _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, instanceId, weekly, enterLocation));
}
}
}
diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index 345619aae0..c9a335bbc7 100644
--- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -14365,6 +14365,13 @@ public class PlayerInstance extends Playable
{
return false;
}
+
+ final int instanceId = holder.getInstanceId();
+ if (instanceId > 0)
+ {
+ return isInInstance() && (instanceId == getInstanceWorld().getTemplateId());
+ }
+
return (holder.getMapX() == (((locX - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN)) && (holder.getMapY() == (((locY - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN));
}
diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
index 8dc7e29393..b487e8d74b 100644
--- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
+++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
@@ -35,12 +35,13 @@ public class TimedHuntingZoneHolder
private final int _maxLevel;
private final int _remainRefillTime;
private final int _refillTimeMax;
+ private final int _instanceId;
private final boolean _weekly;
private final Location _enterLocation;
private final int _mapX;
private final int _mapY;
- public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean weekly, Location enterLocation)
+ public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, int instanceId, boolean weekly, Location enterLocation)
{
_id = id;
_name = name;
@@ -53,6 +54,7 @@ public class TimedHuntingZoneHolder
_maxLevel = maxLevel;
_remainRefillTime = remainRefillTime;
_refillTimeMax = refillTimeMax;
+ _instanceId = instanceId;
_weekly = weekly;
_enterLocation = enterLocation;
_mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
@@ -114,6 +116,11 @@ public class TimedHuntingZoneHolder
return _refillTimeMax;
}
+ public int getInstanceId()
+ {
+ return _instanceId;
+ }
+
public boolean isWeekly()
{
return _weekly;
diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
index c06b418436..c8e62fd7e0 100644
--- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
+++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
@@ -19,6 +19,8 @@ package org.l2jmobius.gameserver.network.clientpackets.huntingzones;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
+import org.l2jmobius.gameserver.instancemanager.InstanceManager;
+import org.l2jmobius.gameserver.instancemanager.QuestManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
@@ -99,6 +101,13 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
return;
}
+ final int instanceId = holder.getInstanceId();
+ if ((instanceId > 0) && (InstanceManager.getInstance().getInstanceTime(player, instanceId) > Chronos.currentTimeMillis()))
+ {
+ player.sendMessage("This transcendent instance has not reset yet.");
+ return;
+ }
+
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long lastEntryTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_ENTRY + _zoneId, 0);
@@ -132,7 +141,15 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, endTime - currentTime);
- player.teleToLocation(holder.getEnterLocation());
+
+ if (instanceId == 0)
+ {
+ player.teleToLocation(holder.getEnterLocation());
+ }
+ else // Transcendent zones.
+ {
+ QuestManager.getInstance().getQuest("TranscendentZone").notifyEvent("ENTER " + instanceId, null, player);
+ }
}
else
{
diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/xsd/TimedHuntingZoneData.xsd
index c5dd31a591..7c75375766 100644
--- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/xsd/TimedHuntingZoneData.xsd
+++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/xsd/TimedHuntingZoneData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
index 3e8c396f59..e01aa5d46e 100644
--- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
+++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
@@ -87,6 +87,7 @@ public class TimedHuntingZoneData implements IXmlReader
int maxLevel = 999;
int remainRefillTime = 3600;
int refillTimeMax = 3600;
+ int instanceId = 0;
boolean weekly = false;
Location enterLocation = null;
for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling())
@@ -144,6 +145,11 @@ public class TimedHuntingZoneData implements IXmlReader
refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
break;
}
+ case "instanceId":
+ {
+ refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
+ break;
+ }
case "weekly":
{
weekly = Boolean.parseBoolean(zoneNode.getTextContent());
@@ -151,7 +157,7 @@ public class TimedHuntingZoneData implements IXmlReader
}
}
}
- _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, weekly, enterLocation));
+ _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, instanceId, weekly, enterLocation));
}
}
}
diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index 8285160fea..706b7bc610 100644
--- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -14403,6 +14403,13 @@ public class PlayerInstance extends Playable
{
return false;
}
+
+ final int instanceId = holder.getInstanceId();
+ if (instanceId > 0)
+ {
+ return isInInstance() && (instanceId == getInstanceWorld().getTemplateId());
+ }
+
return (holder.getMapX() == (((locX - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN)) && (holder.getMapY() == (((locY - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN));
}
diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
index 8dc7e29393..b487e8d74b 100644
--- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
+++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
@@ -35,12 +35,13 @@ public class TimedHuntingZoneHolder
private final int _maxLevel;
private final int _remainRefillTime;
private final int _refillTimeMax;
+ private final int _instanceId;
private final boolean _weekly;
private final Location _enterLocation;
private final int _mapX;
private final int _mapY;
- public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean weekly, Location enterLocation)
+ public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, int instanceId, boolean weekly, Location enterLocation)
{
_id = id;
_name = name;
@@ -53,6 +54,7 @@ public class TimedHuntingZoneHolder
_maxLevel = maxLevel;
_remainRefillTime = remainRefillTime;
_refillTimeMax = refillTimeMax;
+ _instanceId = instanceId;
_weekly = weekly;
_enterLocation = enterLocation;
_mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
@@ -114,6 +116,11 @@ public class TimedHuntingZoneHolder
return _refillTimeMax;
}
+ public int getInstanceId()
+ {
+ return _instanceId;
+ }
+
public boolean isWeekly()
{
return _weekly;
diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
index c06b418436..c8e62fd7e0 100644
--- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
+++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
@@ -19,6 +19,8 @@ package org.l2jmobius.gameserver.network.clientpackets.huntingzones;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
+import org.l2jmobius.gameserver.instancemanager.InstanceManager;
+import org.l2jmobius.gameserver.instancemanager.QuestManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
@@ -99,6 +101,13 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
return;
}
+ final int instanceId = holder.getInstanceId();
+ if ((instanceId > 0) && (InstanceManager.getInstance().getInstanceTime(player, instanceId) > Chronos.currentTimeMillis()))
+ {
+ player.sendMessage("This transcendent instance has not reset yet.");
+ return;
+ }
+
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long lastEntryTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_ENTRY + _zoneId, 0);
@@ -132,7 +141,15 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, endTime - currentTime);
- player.teleToLocation(holder.getEnterLocation());
+
+ if (instanceId == 0)
+ {
+ player.teleToLocation(holder.getEnterLocation());
+ }
+ else // Transcendent zones.
+ {
+ QuestManager.getInstance().getQuest("TranscendentZone").notifyEvent("ENTER " + instanceId, null, player);
+ }
}
else
{
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/TimedHuntingZoneData.xsd
index c5dd31a591..7c75375766 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/TimedHuntingZoneData.xsd
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/TimedHuntingZoneData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
index 478037eb19..b7cfbe4d31 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
@@ -87,6 +87,7 @@ public class TimedHuntingZoneData implements IXmlReader
int maxLevel = 999;
int remainRefillTime = 3600;
int refillTimeMax = 3600;
+ int instanceId = 0;
boolean weekly = false;
Location enterLocation = null;
for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling())
@@ -144,6 +145,11 @@ public class TimedHuntingZoneData implements IXmlReader
refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
break;
}
+ case "instanceId":
+ {
+ refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
+ break;
+ }
case "weekly":
{
weekly = Boolean.parseBoolean(zoneNode.getTextContent());
@@ -151,7 +157,7 @@ public class TimedHuntingZoneData implements IXmlReader
}
}
}
- _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, weekly, enterLocation));
+ _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, instanceId, weekly, enterLocation));
}
}
}
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index d5be76a11e..906c08943f 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -14272,6 +14272,13 @@ public class PlayerInstance extends Playable
{
return false;
}
+
+ final int instanceId = holder.getInstanceId();
+ if (instanceId > 0)
+ {
+ return isInInstance() && (instanceId == getInstanceWorld().getTemplateId());
+ }
+
return (holder.getMapX() == (((locX - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN)) && (holder.getMapY() == (((locY - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN));
}
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
index 8dc7e29393..b487e8d74b 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
@@ -35,12 +35,13 @@ public class TimedHuntingZoneHolder
private final int _maxLevel;
private final int _remainRefillTime;
private final int _refillTimeMax;
+ private final int _instanceId;
private final boolean _weekly;
private final Location _enterLocation;
private final int _mapX;
private final int _mapY;
- public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean weekly, Location enterLocation)
+ public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, int instanceId, boolean weekly, Location enterLocation)
{
_id = id;
_name = name;
@@ -53,6 +54,7 @@ public class TimedHuntingZoneHolder
_maxLevel = maxLevel;
_remainRefillTime = remainRefillTime;
_refillTimeMax = refillTimeMax;
+ _instanceId = instanceId;
_weekly = weekly;
_enterLocation = enterLocation;
_mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
@@ -114,6 +116,11 @@ public class TimedHuntingZoneHolder
return _refillTimeMax;
}
+ public int getInstanceId()
+ {
+ return _instanceId;
+ }
+
public boolean isWeekly()
{
return _weekly;
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
index 392db9259a..4a2232ae48 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
@@ -19,6 +19,8 @@ package org.l2jmobius.gameserver.network.clientpackets.huntingzones;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
+import org.l2jmobius.gameserver.instancemanager.InstanceManager;
+import org.l2jmobius.gameserver.instancemanager.QuestManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
@@ -99,6 +101,13 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
return;
}
+ final int instanceId = holder.getInstanceId();
+ if ((instanceId > 0) && (InstanceManager.getInstance().getInstanceTime(player, instanceId) > Chronos.currentTimeMillis()))
+ {
+ player.sendMessage("This transcendent instance has not reset yet.");
+ return;
+ }
+
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long lastEntryTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_ENTRY + _zoneId, 0);
@@ -132,7 +141,15 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, endTime - currentTime);
- player.teleToLocation(holder.getEnterLocation());
+
+ if (instanceId == 0)
+ {
+ player.teleToLocation(holder.getEnterLocation());
+ }
+ else // Transcendent zones.
+ {
+ QuestManager.getInstance().getQuest("TranscendentZone").notifyEvent("ENTER " + instanceId, null, player);
+ }
}
else
{
diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/TimedHuntingZoneData.xml b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/TimedHuntingZoneData.xml
index 8a639b5a44..5aa75351af 100644
--- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/TimedHuntingZoneData.xml
+++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/TimedHuntingZoneData.xml
@@ -55,6 +55,7 @@
10000
40
49
+ 1101
125277,70262,-4408
@@ -66,6 +67,7 @@
10000
50
59
+ 1102
148724,-22366,-3436
@@ -77,6 +79,7 @@
10000
60
69
+ 1103
167965,28800,-3606
@@ -88,6 +91,7 @@
10000
70
79
+ 1104
99797,110524,-3702
@@ -99,6 +103,7 @@
10000
80
999
+ 1106
-50416,145363,-2825
@@ -110,5 +115,6 @@
10000
85
999
+ 1107
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/instances/TranscendentZone/TranscendentZone.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/instances/TranscendentZone/TranscendentZone.java
index 4d79130328..fd3dc97ef7 100644
--- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/instances/TranscendentZone/TranscendentZone.java
+++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/instances/TranscendentZone/TranscendentZone.java
@@ -69,7 +69,7 @@ public class TranscendentZone extends AbstractInstance
{
if (event.startsWith("ENTER"))
{
- enterInstance(player, npc, 1000 + Integer.parseInt(event.split(" ")[1]));
+ enterInstance(player, npc, Integer.parseInt(event.split(" ")[1]));
}
else if (event.startsWith("FINISH"))
{
diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/xsd/TimedHuntingZoneData.xsd
index c5dd31a591..7c75375766 100644
--- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/xsd/TimedHuntingZoneData.xsd
+++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/xsd/TimedHuntingZoneData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
index 478037eb19..b7cfbe4d31 100644
--- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
+++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
@@ -87,6 +87,7 @@ public class TimedHuntingZoneData implements IXmlReader
int maxLevel = 999;
int remainRefillTime = 3600;
int refillTimeMax = 3600;
+ int instanceId = 0;
boolean weekly = false;
Location enterLocation = null;
for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling())
@@ -144,6 +145,11 @@ public class TimedHuntingZoneData implements IXmlReader
refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
break;
}
+ case "instanceId":
+ {
+ refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
+ break;
+ }
case "weekly":
{
weekly = Boolean.parseBoolean(zoneNode.getTextContent());
@@ -151,7 +157,7 @@ public class TimedHuntingZoneData implements IXmlReader
}
}
}
- _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, weekly, enterLocation));
+ _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, instanceId, weekly, enterLocation));
}
}
}
diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index 8e60f09c83..087a5a60e8 100644
--- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -14533,6 +14533,13 @@ public class PlayerInstance extends Playable
{
return false;
}
+
+ final int instanceId = holder.getInstanceId();
+ if (instanceId > 0)
+ {
+ return isInInstance() && (instanceId == getInstanceWorld().getTemplateId());
+ }
+
return (holder.getMapX() == (((locX - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN)) && (holder.getMapY() == (((locY - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN));
}
diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
index 8dc7e29393..b487e8d74b 100644
--- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
+++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
@@ -35,12 +35,13 @@ public class TimedHuntingZoneHolder
private final int _maxLevel;
private final int _remainRefillTime;
private final int _refillTimeMax;
+ private final int _instanceId;
private final boolean _weekly;
private final Location _enterLocation;
private final int _mapX;
private final int _mapY;
- public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean weekly, Location enterLocation)
+ public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, int instanceId, boolean weekly, Location enterLocation)
{
_id = id;
_name = name;
@@ -53,6 +54,7 @@ public class TimedHuntingZoneHolder
_maxLevel = maxLevel;
_remainRefillTime = remainRefillTime;
_refillTimeMax = refillTimeMax;
+ _instanceId = instanceId;
_weekly = weekly;
_enterLocation = enterLocation;
_mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
@@ -114,6 +116,11 @@ public class TimedHuntingZoneHolder
return _refillTimeMax;
}
+ public int getInstanceId()
+ {
+ return _instanceId;
+ }
+
public boolean isWeekly()
{
return _weekly;
diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
index 8768d37d75..4a2232ae48 100644
--- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
+++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
@@ -101,7 +101,8 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
return;
}
- if ((_zoneId >= 101) && (_zoneId <= 107) && (InstanceManager.getInstance().getInstanceTime(player, 1000 + _zoneId) > Chronos.currentTimeMillis()))
+ final int instanceId = holder.getInstanceId();
+ if ((instanceId > 0) && (InstanceManager.getInstance().getInstanceTime(player, instanceId) > Chronos.currentTimeMillis()))
{
player.sendMessage("This transcendent instance has not reset yet.");
return;
@@ -141,13 +142,13 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, endTime - currentTime);
- if ((_zoneId < 101) || (_zoneId > 107))
+ if (instanceId == 0)
{
player.teleToLocation(holder.getEnterLocation());
}
else // Transcendent zones.
{
- QuestManager.getInstance().getQuest("TranscendentZone").notifyEvent("ENTER " + _zoneId, null, player);
+ QuestManager.getInstance().getQuest("TranscendentZone").notifyEvent("ENTER " + instanceId, null, player);
}
}
else
diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/TimedHuntingZoneData.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/TimedHuntingZoneData.xml
index 8a639b5a44..5aa75351af 100644
--- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/TimedHuntingZoneData.xml
+++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/TimedHuntingZoneData.xml
@@ -55,6 +55,7 @@
10000
40
49
+ 1101
125277,70262,-4408
@@ -66,6 +67,7 @@
10000
50
59
+ 1102
148724,-22366,-3436
@@ -77,6 +79,7 @@
10000
60
69
+ 1103
167965,28800,-3606
@@ -88,6 +91,7 @@
10000
70
79
+ 1104
99797,110524,-3702
@@ -99,6 +103,7 @@
10000
80
999
+ 1106
-50416,145363,-2825
@@ -110,5 +115,6 @@
10000
85
999
+ 1107
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/instances/TranscendentZone/TranscendentZone.java b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/instances/TranscendentZone/TranscendentZone.java
index 4d79130328..fd3dc97ef7 100644
--- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/instances/TranscendentZone/TranscendentZone.java
+++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/instances/TranscendentZone/TranscendentZone.java
@@ -69,7 +69,7 @@ public class TranscendentZone extends AbstractInstance
{
if (event.startsWith("ENTER"))
{
- enterInstance(player, npc, 1000 + Integer.parseInt(event.split(" ")[1]));
+ enterInstance(player, npc, Integer.parseInt(event.split(" ")[1]));
}
else if (event.startsWith("FINISH"))
{
diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/TimedHuntingZoneData.xsd
index c5dd31a591..7c75375766 100644
--- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/TimedHuntingZoneData.xsd
+++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/TimedHuntingZoneData.xsd
@@ -15,6 +15,7 @@
+
diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
index 478037eb19..b7cfbe4d31 100644
--- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
+++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java
@@ -87,6 +87,7 @@ public class TimedHuntingZoneData implements IXmlReader
int maxLevel = 999;
int remainRefillTime = 3600;
int refillTimeMax = 3600;
+ int instanceId = 0;
boolean weekly = false;
Location enterLocation = null;
for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling())
@@ -144,6 +145,11 @@ public class TimedHuntingZoneData implements IXmlReader
refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
break;
}
+ case "instanceId":
+ {
+ refillTimeMax = Integer.parseInt(zoneNode.getTextContent());
+ break;
+ }
case "weekly":
{
weekly = Boolean.parseBoolean(zoneNode.getTextContent());
@@ -151,7 +157,7 @@ public class TimedHuntingZoneData implements IXmlReader
}
}
}
- _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, weekly, enterLocation));
+ _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, instanceId, weekly, enterLocation));
}
}
}
diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index fb899308c4..064cf46a43 100644
--- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -14611,6 +14611,13 @@ public class PlayerInstance extends Playable
{
return false;
}
+
+ final int instanceId = holder.getInstanceId();
+ if (instanceId > 0)
+ {
+ return isInInstance() && (instanceId == getInstanceWorld().getTemplateId());
+ }
+
return (holder.getMapX() == (((locX - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN)) && (holder.getMapY() == (((locY - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN));
}
diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
index 8dc7e29393..b487e8d74b 100644
--- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
+++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java
@@ -35,12 +35,13 @@ public class TimedHuntingZoneHolder
private final int _maxLevel;
private final int _remainRefillTime;
private final int _refillTimeMax;
+ private final int _instanceId;
private final boolean _weekly;
private final Location _enterLocation;
private final int _mapX;
private final int _mapY;
- public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean weekly, Location enterLocation)
+ public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, int instanceId, boolean weekly, Location enterLocation)
{
_id = id;
_name = name;
@@ -53,6 +54,7 @@ public class TimedHuntingZoneHolder
_maxLevel = maxLevel;
_remainRefillTime = remainRefillTime;
_refillTimeMax = refillTimeMax;
+ _instanceId = instanceId;
_weekly = weekly;
_enterLocation = enterLocation;
_mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
@@ -114,6 +116,11 @@ public class TimedHuntingZoneHolder
return _refillTimeMax;
}
+ public int getInstanceId()
+ {
+ return _instanceId;
+ }
+
public boolean isWeekly()
{
return _weekly;
diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
index 8768d37d75..4a2232ae48 100644
--- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
+++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java
@@ -101,7 +101,8 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
return;
}
- if ((_zoneId >= 101) && (_zoneId <= 107) && (InstanceManager.getInstance().getInstanceTime(player, 1000 + _zoneId) > Chronos.currentTimeMillis()))
+ final int instanceId = holder.getInstanceId();
+ if ((instanceId > 0) && (InstanceManager.getInstance().getInstanceTime(player, instanceId) > Chronos.currentTimeMillis()))
{
player.sendMessage("This transcendent instance has not reset yet.");
return;
@@ -141,13 +142,13 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, endTime - currentTime);
- if ((_zoneId < 101) || (_zoneId > 107))
+ if (instanceId == 0)
{
player.teleToLocation(holder.getEnterLocation());
}
else // Transcendent zones.
{
- QuestManager.getInstance().getQuest("TranscendentZone").notifyEvent("ENTER " + _zoneId, null, player);
+ QuestManager.getInstance().getQuest("TranscendentZone").notifyEvent("ENTER " + instanceId, null, player);
}
}
else