diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
index c5ea04177c..ffba796c0a 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
@@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
@@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
- if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
+ if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect
if (player.isInTimedHuntingZone(_zoneId))
{
player.startTimedHuntingZone(_zoneId, endTime);
- player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
+ player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId));
}
+ player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000));
player.sendPacket(new TimedHuntingZoneList(player));
-
- // TODO: TimedHuntingZoneChargeResult
- player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000));
}
}
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
new file mode 100644
index 0000000000..44b3b22a0e
--- /dev/null
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket
+{
+ private final Player _player;
+ private final int _zoneId;
+
+ public TimeRestrictFieldUserAlarm(Player player, int zoneId)
+ {
+ _player = player;
+ _zoneId = zoneId;
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet);
+ packet.writeD(_zoneId);
+ packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
index 433bd1c05c..ebf213a695 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
@@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
- * @author dontknowdontcare
+ * @author NasSeKa
*/
public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
private final int _zoneId;
- private final int _secondsLeft;
- private final int _newExtensionValue;
+ private final int _remainTime;
+ private final int _refillTime;
+ private final int _chargeTime;
- public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue)
+ public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime)
{
_zoneId = zoneId;
- _secondsLeft = secondsLeft;
- _newExtensionValue = newExtensionValue;
+ _remainTime = remainTime;
+ _refillTime = refillTime;
+ _chargeTime = chargeTime;
}
@Override
@@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet);
packet.writeD(_zoneId);
- packet.writeD(_secondsLeft); // Remaining Time in zone.
- packet.writeD(_newExtensionValue); // New Extension value.
+ packet.writeD(_remainTime);
+ packet.writeD(_refillTime);
+ packet.writeD(_chargeTime);
return true;
}
}
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
index f527d6d08b..e55156077f 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
@@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet);
packet.writeC(1); // bEnterSuccess
packet.writeD(_zoneId);
- packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes)
- packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time)
+ packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp
+ packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time)
return true;
}
}
\ No newline at end of file
diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
index c5ea04177c..ffba796c0a 100644
--- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
+++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
@@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
@@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
- if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
+ if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect
if (player.isInTimedHuntingZone(_zoneId))
{
player.startTimedHuntingZone(_zoneId, endTime);
- player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
+ player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId));
}
+ player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000));
player.sendPacket(new TimedHuntingZoneList(player));
-
- // TODO: TimedHuntingZoneChargeResult
- player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000));
}
}
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
new file mode 100644
index 0000000000..44b3b22a0e
--- /dev/null
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket
+{
+ private final Player _player;
+ private final int _zoneId;
+
+ public TimeRestrictFieldUserAlarm(Player player, int zoneId)
+ {
+ _player = player;
+ _zoneId = zoneId;
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet);
+ packet.writeD(_zoneId);
+ packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
index 433bd1c05c..ebf213a695 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
@@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
- * @author dontknowdontcare
+ * @author NasSeKa
*/
public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
private final int _zoneId;
- private final int _secondsLeft;
- private final int _newExtensionValue;
+ private final int _remainTime;
+ private final int _refillTime;
+ private final int _chargeTime;
- public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue)
+ public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime)
{
_zoneId = zoneId;
- _secondsLeft = secondsLeft;
- _newExtensionValue = newExtensionValue;
+ _remainTime = remainTime;
+ _refillTime = refillTime;
+ _chargeTime = chargeTime;
}
@Override
@@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet);
packet.writeD(_zoneId);
- packet.writeD(_secondsLeft); // Remaining Time in zone.
- packet.writeD(_newExtensionValue); // New Extension value.
+ packet.writeD(_remainTime);
+ packet.writeD(_refillTime);
+ packet.writeD(_chargeTime);
return true;
}
}
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
index f527d6d08b..e55156077f 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
@@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet);
packet.writeC(1); // bEnterSuccess
packet.writeD(_zoneId);
- packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes)
- packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time)
+ packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp
+ packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time)
return true;
}
}
\ No newline at end of file
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
index c5ea04177c..ffba796c0a 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
@@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
@@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
- if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
+ if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect
if (player.isInTimedHuntingZone(_zoneId))
{
player.startTimedHuntingZone(_zoneId, endTime);
- player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
+ player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId));
}
+ player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000));
player.sendPacket(new TimedHuntingZoneList(player));
-
- // TODO: TimedHuntingZoneChargeResult
- player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000));
}
}
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
new file mode 100644
index 0000000000..44b3b22a0e
--- /dev/null
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket
+{
+ private final Player _player;
+ private final int _zoneId;
+
+ public TimeRestrictFieldUserAlarm(Player player, int zoneId)
+ {
+ _player = player;
+ _zoneId = zoneId;
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet);
+ packet.writeD(_zoneId);
+ packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
index 433bd1c05c..ebf213a695 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
@@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
- * @author dontknowdontcare
+ * @author NasSeKa
*/
public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
private final int _zoneId;
- private final int _secondsLeft;
- private final int _newExtensionValue;
+ private final int _remainTime;
+ private final int _refillTime;
+ private final int _chargeTime;
- public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue)
+ public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime)
{
_zoneId = zoneId;
- _secondsLeft = secondsLeft;
- _newExtensionValue = newExtensionValue;
+ _remainTime = remainTime;
+ _refillTime = refillTime;
+ _chargeTime = chargeTime;
}
@Override
@@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet);
packet.writeD(_zoneId);
- packet.writeD(_secondsLeft); // Remaining Time in zone.
- packet.writeD(_newExtensionValue); // New Extension value.
+ packet.writeD(_remainTime);
+ packet.writeD(_refillTime);
+ packet.writeD(_chargeTime);
return true;
}
}
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
index f527d6d08b..e55156077f 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
@@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet);
packet.writeC(1); // bEnterSuccess
packet.writeD(_zoneId);
- packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes)
- packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time)
+ packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp
+ packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time)
return true;
}
}
\ No newline at end of file
diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
index c5ea04177c..ffba796c0a 100644
--- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
+++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
@@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
@@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
- if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
+ if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect
if (player.isInTimedHuntingZone(_zoneId))
{
player.startTimedHuntingZone(_zoneId, endTime);
- player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
+ player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId));
}
+ player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000));
player.sendPacket(new TimedHuntingZoneList(player));
-
- // TODO: TimedHuntingZoneChargeResult
- player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000));
}
}
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java
index 96bb89754a..f92c64346b 100644
--- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java
@@ -570,9 +570,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
*/
public void onDecay()
{
- if (Config.DISCONNECT_AFTER_DEATH && isPlayer())
+ if (isPlayer())
{
- Disconnection.of(getActingPlayer()).deleteMe().defaultSequence(new SystemMessage(SystemMessageId.SIXTY_MIN_HAVE_PASSED_AFTER_THE_DEATH_OF_YOUR_CHARACTER_SO_YOU_WERE_DISCONNECTED_FROM_THE_GAME));
+ if (isInsideZone(ZoneId.TIMED_HUNTING))
+ {
+ getActingPlayer().stopTimedHuntingZoneTask();
+ abortCast();
+ stopMove(null);
+ teleToLocation(MapRegionManager.getInstance().getTeleToLocation(this, TeleportWhereType.TOWN));
+ setInstance(null);
+ }
+ else if (Config.DISCONNECT_AFTER_DEATH)
+ {
+ Disconnection.of(getActingPlayer()).deleteMe().defaultSequence(new SystemMessage(SystemMessageId.SIXTY_MIN_HAVE_PASSED_AFTER_THE_DEATH_OF_YOUR_CHARACTER_SO_YOU_WERE_DISCONNECTED_FROM_THE_GAME));
+ }
}
else
{
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java
index 0bae1d06a2..3e438111e9 100644
--- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java
@@ -366,6 +366,7 @@ import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoSho
import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExAutoPlaySettingSend;
import org.l2jmobius.gameserver.network.serverpackets.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldDieLimitTime;
import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount;
import org.l2jmobius.gameserver.network.serverpackets.olympiad.ExOlympiadMode;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
@@ -5089,7 +5090,12 @@ public class Player extends Playable
setReputation(newRep < -20 ? newRep : 0);
}
- if (Config.DISCONNECT_AFTER_DEATH)
+ if (isInsideZone(ZoneId.TIMED_HUNTING))
+ {
+ DecayTaskManager.getInstance().add(this);
+ sendPacket(new TimeRestrictFieldDieLimitTime());
+ }
+ else if (Config.DISCONNECT_AFTER_DEATH)
{
DecayTaskManager.getInstance().add(this);
}
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java
new file mode 100644
index 0000000000..d9878455e6
--- /dev/null
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java
@@ -0,0 +1,39 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldDieLimitTime implements IClientOutgoingPacket
+{
+ public TimeRestrictFieldDieLimitTime()
+ {
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_DIE_LIMT_TIME.writeId(packet);
+ packet.writeD(600); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
new file mode 100644
index 0000000000..44b3b22a0e
--- /dev/null
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket
+{
+ private final Player _player;
+ private final int _zoneId;
+
+ public TimeRestrictFieldUserAlarm(Player player, int zoneId)
+ {
+ _player = player;
+ _zoneId = zoneId;
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet);
+ packet.writeD(_zoneId);
+ packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
index 433bd1c05c..ebf213a695 100644
--- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
@@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
- * @author dontknowdontcare
+ * @author NasSeKa
*/
public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
private final int _zoneId;
- private final int _secondsLeft;
- private final int _newExtensionValue;
+ private final int _remainTime;
+ private final int _refillTime;
+ private final int _chargeTime;
- public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue)
+ public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime)
{
_zoneId = zoneId;
- _secondsLeft = secondsLeft;
- _newExtensionValue = newExtensionValue;
+ _remainTime = remainTime;
+ _refillTime = refillTime;
+ _chargeTime = chargeTime;
}
@Override
@@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet);
packet.writeD(_zoneId);
- packet.writeD(_secondsLeft); // Remaining Time in zone.
- packet.writeD(_newExtensionValue); // New Extension value.
+ packet.writeD(_remainTime);
+ packet.writeD(_refillTime);
+ packet.writeD(_chargeTime);
return true;
}
}
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
index f527d6d08b..e55156077f 100644
--- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
@@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet);
packet.writeC(1); // bEnterSuccess
packet.writeD(_zoneId);
- packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes)
- packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time)
+ packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp
+ packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time)
return true;
}
}
\ No newline at end of file
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java
index 95cb3495d9..7860e5f1d9 100644
--- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java
@@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.model.actor.Attackable;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
+import org.l2jmobius.gameserver.model.zone.ZoneId;
/**
* @author Mobius
@@ -89,9 +90,16 @@ public class DecayTaskManager implements Runnable
delay += Config.SPOILED_CORPSE_EXTEND_TIME;
}
- if (Config.DISCONNECT_AFTER_DEATH && creature.isPlayer())
+ if (creature.isPlayer())
{
- delay = 3600; // 1 hour
+ if (Config.DISCONNECT_AFTER_DEATH)
+ {
+ delay = 3600; // 1 hour
+ }
+ if (creature.isInsideZone(ZoneId.TIMED_HUNTING))
+ {
+ delay = 60; // 10 minutes
+ }
}
// Add to decay schedules.
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
index c5ea04177c..ffba796c0a 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
@@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
@@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
- if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
+ if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect
if (player.isInTimedHuntingZone(_zoneId))
{
player.startTimedHuntingZone(_zoneId, endTime);
- player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
+ player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId));
}
+ player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000));
player.sendPacket(new TimedHuntingZoneList(player));
-
- // TODO: TimedHuntingZoneChargeResult
- player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000));
}
}
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
new file mode 100644
index 0000000000..44b3b22a0e
--- /dev/null
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket
+{
+ private final Player _player;
+ private final int _zoneId;
+
+ public TimeRestrictFieldUserAlarm(Player player, int zoneId)
+ {
+ _player = player;
+ _zoneId = zoneId;
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet);
+ packet.writeD(_zoneId);
+ packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
index 433bd1c05c..ebf213a695 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
@@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
- * @author dontknowdontcare
+ * @author NasSeKa
*/
public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
private final int _zoneId;
- private final int _secondsLeft;
- private final int _newExtensionValue;
+ private final int _remainTime;
+ private final int _refillTime;
+ private final int _chargeTime;
- public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue)
+ public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime)
{
_zoneId = zoneId;
- _secondsLeft = secondsLeft;
- _newExtensionValue = newExtensionValue;
+ _remainTime = remainTime;
+ _refillTime = refillTime;
+ _chargeTime = chargeTime;
}
@Override
@@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet);
packet.writeD(_zoneId);
- packet.writeD(_secondsLeft); // Remaining Time in zone.
- packet.writeD(_newExtensionValue); // New Extension value.
+ packet.writeD(_remainTime);
+ packet.writeD(_refillTime);
+ packet.writeD(_chargeTime);
return true;
}
}
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
index f527d6d08b..e55156077f 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
@@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet);
packet.writeC(1); // bEnterSuccess
packet.writeD(_zoneId);
- packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes)
- packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time)
+ packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp
+ packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time)
return true;
}
}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
index c5ea04177c..ffba796c0a 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
@@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
@@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
- if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
+ if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect
if (player.isInTimedHuntingZone(_zoneId))
{
player.startTimedHuntingZone(_zoneId, endTime);
- player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
+ player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId));
}
+ player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000));
player.sendPacket(new TimedHuntingZoneList(player));
-
- // TODO: TimedHuntingZoneChargeResult
- player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000));
}
}
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
new file mode 100644
index 0000000000..44b3b22a0e
--- /dev/null
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket
+{
+ private final Player _player;
+ private final int _zoneId;
+
+ public TimeRestrictFieldUserAlarm(Player player, int zoneId)
+ {
+ _player = player;
+ _zoneId = zoneId;
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet);
+ packet.writeD(_zoneId);
+ packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
index 433bd1c05c..ebf213a695 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
@@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
- * @author dontknowdontcare
+ * @author NasSeKa
*/
public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
private final int _zoneId;
- private final int _secondsLeft;
- private final int _newExtensionValue;
+ private final int _remainTime;
+ private final int _refillTime;
+ private final int _chargeTime;
- public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue)
+ public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime)
{
_zoneId = zoneId;
- _secondsLeft = secondsLeft;
- _newExtensionValue = newExtensionValue;
+ _remainTime = remainTime;
+ _refillTime = refillTime;
+ _chargeTime = chargeTime;
}
@Override
@@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet);
packet.writeD(_zoneId);
- packet.writeD(_secondsLeft); // Remaining Time in zone.
- packet.writeD(_newExtensionValue); // New Extension value.
+ packet.writeD(_remainTime);
+ packet.writeD(_refillTime);
+ packet.writeD(_chargeTime);
return true;
}
}
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
index f527d6d08b..e55156077f 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
@@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet);
packet.writeC(1); // bEnterSuccess
packet.writeD(_zoneId);
- packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes)
- packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time)
+ packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp
+ packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time)
return true;
}
}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
index c5ea04177c..ffba796c0a 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
@@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
@@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
- if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
+ if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect
if (player.isInTimedHuntingZone(_zoneId))
{
player.startTimedHuntingZone(_zoneId, endTime);
- player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
+ player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId));
}
+ player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000));
player.sendPacket(new TimedHuntingZoneList(player));
-
- // TODO: TimedHuntingZoneChargeResult
- player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000));
}
}
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
new file mode 100644
index 0000000000..44b3b22a0e
--- /dev/null
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket
+{
+ private final Player _player;
+ private final int _zoneId;
+
+ public TimeRestrictFieldUserAlarm(Player player, int zoneId)
+ {
+ _player = player;
+ _zoneId = zoneId;
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet);
+ packet.writeD(_zoneId);
+ packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
index 433bd1c05c..ebf213a695 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
@@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
- * @author dontknowdontcare
+ * @author NasSeKa
*/
public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
private final int _zoneId;
- private final int _secondsLeft;
- private final int _newExtensionValue;
+ private final int _remainTime;
+ private final int _refillTime;
+ private final int _chargeTime;
- public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue)
+ public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime)
{
_zoneId = zoneId;
- _secondsLeft = secondsLeft;
- _newExtensionValue = newExtensionValue;
+ _remainTime = remainTime;
+ _refillTime = refillTime;
+ _chargeTime = chargeTime;
}
@Override
@@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet);
packet.writeD(_zoneId);
- packet.writeD(_secondsLeft); // Remaining Time in zone.
- packet.writeD(_newExtensionValue); // New Extension value.
+ packet.writeD(_remainTime);
+ packet.writeD(_refillTime);
+ packet.writeD(_chargeTime);
return true;
}
}
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
index f527d6d08b..e55156077f 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
@@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet);
packet.writeC(1); // bEnterSuccess
packet.writeD(_zoneId);
- packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes)
- packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time)
+ packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp
+ packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time)
return true;
}
}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
index c5ea04177c..ffba796c0a 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java
@@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
@@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
- if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
+ if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect
if (player.isInTimedHuntingZone(_zoneId))
{
player.startTimedHuntingZone(_zoneId, endTime);
- player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
+ player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId));
}
+ player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000));
player.sendPacket(new TimedHuntingZoneList(player));
-
- // TODO: TimedHuntingZoneChargeResult
- player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000));
}
}
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java
index 0154ebd771..07cc819ce2 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java
@@ -571,9 +571,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
*/
public void onDecay()
{
- if (Config.DISCONNECT_AFTER_DEATH && isPlayer())
+ if (isPlayer())
{
- Disconnection.of(getActingPlayer()).deleteMe().defaultSequence(new SystemMessage(SystemMessageId.SIXTY_MIN_HAVE_PASSED_AFTER_THE_DEATH_OF_YOUR_CHARACTER_SO_YOU_WERE_DISCONNECTED_FROM_THE_GAME));
+ if (isInsideZone(ZoneId.TIMED_HUNTING))
+ {
+ getActingPlayer().stopTimedHuntingZoneTask();
+ abortCast();
+ stopMove(null);
+ teleToLocation(MapRegionManager.getInstance().getTeleToLocation(this, TeleportWhereType.TOWN));
+ setInstance(null);
+ }
+ else if (Config.DISCONNECT_AFTER_DEATH)
+ {
+ Disconnection.of(getActingPlayer()).deleteMe().defaultSequence(new SystemMessage(SystemMessageId.SIXTY_MIN_HAVE_PASSED_AFTER_THE_DEATH_OF_YOUR_CHARACTER_SO_YOU_WERE_DISCONNECTED_FROM_THE_GAME));
+ }
}
else
{
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java
index d6f971e2fc..435c0fd866 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java
@@ -383,6 +383,7 @@ import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExAutoPlaySetting
import org.l2jmobius.gameserver.network.serverpackets.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
+import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldDieLimitTime;
import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount;
import org.l2jmobius.gameserver.network.serverpackets.pet.PetInfo;
import org.l2jmobius.gameserver.network.serverpackets.vip.ReceiveVipInfo;
@@ -5099,7 +5100,12 @@ public class Player extends Playable
setReputation(newRep < -20 ? newRep : 0);
}
- if (Config.DISCONNECT_AFTER_DEATH)
+ if (isInsideZone(ZoneId.TIMED_HUNTING))
+ {
+ DecayTaskManager.getInstance().add(this);
+ sendPacket(new TimeRestrictFieldDieLimitTime());
+ }
+ else if (Config.DISCONNECT_AFTER_DEATH)
{
DecayTaskManager.getInstance().add(this);
}
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java
new file mode 100644
index 0000000000..d9878455e6
--- /dev/null
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java
@@ -0,0 +1,39 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldDieLimitTime implements IClientOutgoingPacket
+{
+ public TimeRestrictFieldDieLimitTime()
+ {
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_DIE_LIMT_TIME.writeId(packet);
+ packet.writeD(600); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
new file mode 100644
index 0000000000..44b3b22a0e
--- /dev/null
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * 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 .
+ */
+package org.l2jmobius.gameserver.network.serverpackets.huntingzones;
+
+import org.l2jmobius.commons.network.PacketWriter;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.network.OutgoingPackets;
+import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
+
+/**
+ * @author NasSeKa
+ */
+public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket
+{
+ private final Player _player;
+ private final int _zoneId;
+
+ public TimeRestrictFieldUserAlarm(Player player, int zoneId)
+ {
+ _player = player;
+ _zoneId = zoneId;
+ }
+
+ @Override
+ public boolean write(PacketWriter packet)
+ {
+ OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet);
+ packet.writeD(_zoneId);
+ packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time)
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
index 433bd1c05c..ebf213a695 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java
@@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
- * @author dontknowdontcare
+ * @author NasSeKa
*/
public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
private final int _zoneId;
- private final int _secondsLeft;
- private final int _newExtensionValue;
+ private final int _remainTime;
+ private final int _refillTime;
+ private final int _chargeTime;
- public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue)
+ public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime)
{
_zoneId = zoneId;
- _secondsLeft = secondsLeft;
- _newExtensionValue = newExtensionValue;
+ _remainTime = remainTime;
+ _refillTime = refillTime;
+ _chargeTime = chargeTime;
}
@Override
@@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet);
packet.writeD(_zoneId);
- packet.writeD(_secondsLeft); // Remaining Time in zone.
- packet.writeD(_newExtensionValue); // New Extension value.
+ packet.writeD(_remainTime);
+ packet.writeD(_refillTime);
+ packet.writeD(_chargeTime);
return true;
}
}
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
index f527d6d08b..e55156077f 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java
@@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket
OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet);
packet.writeC(1); // bEnterSuccess
packet.writeD(_zoneId);
- packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes)
- packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time)
+ packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp
+ packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time)
return true;
}
}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java
index 8870b309f1..c2726e5368 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java
@@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.model.actor.Attackable;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
+import org.l2jmobius.gameserver.model.zone.ZoneId;
/**
* @author Mobius
@@ -97,9 +98,16 @@ public class DecayTaskManager implements Runnable
delay += Config.SPOILED_CORPSE_EXTEND_TIME;
}
- if (Config.DISCONNECT_AFTER_DEATH && creature.isPlayer())
+ if (creature.isPlayer())
{
- delay = 3600; // 1 hour
+ if (Config.DISCONNECT_AFTER_DEATH)
+ {
+ delay = 3600; // 1 hour
+ }
+ if (creature.isInsideZone(ZoneId.TIMED_HUNTING))
+ {
+ delay = 60; // 10 minutes
+ }
}
// Add to decay schedules.