Unhardcoded timed hunting zone data.

This commit is contained in:
MobiusDevelopment
2021-04-29 22:15:31 +00:00
parent e66e2668c3
commit 79e2ecfb01
107 changed files with 3674 additions and 2535 deletions

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<list enabled="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/TimedHuntingZoneData.xsd">
<zone id="1" name="Storm Isle">
<enterLocation>194291,176604,-1888</enterLocation>
<initialTime>3600000</initialTime> <!-- 1 hour -->
<resetDelay>36000000</resetDelay> <!-- 10 hours -->
<maxAddedTime>21600000</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>43200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax>
<entryFee>150000</entryFee>
<minLevel>100</minLevel>
<maxLevel>120</maxLevel>
</zone>
<zone id="6" name="Primeval Isle">
<enterLocation>9400,-21720,-3634</enterLocation>
<initialTime>3600000</initialTime> <!-- 1 hour -->
<resetDelay>36000000</resetDelay> <!-- 10 hours -->
<maxAddedTime>21600000</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>43200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax>
<entryFee>150000</entryFee>
<minLevel>105</minLevel>
<maxLevel>120</maxLevel>
</zone>
<zone id="7" name="Golden Altar">
<enterLocation>-122259,73678,-2872</enterLocation>
<initialTime>3600000</initialTime> <!-- 1 hour -->
<resetDelay>36000000</resetDelay> <!-- 10 hours -->
<maxAddedTime>21600000</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>43200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax>
<entryFee>150000</entryFee>
<minLevel>107</minLevel>
<maxLevel>120</maxLevel>
</zone>
<zone id="11" name="Abandoned Coal Mines">
<enterLocation>139411,-169382,-1600</enterLocation>
<initialTime>3600000</initialTime> <!-- 1 hour -->
<resetDelay>36000000</resetDelay> <!-- 10 hours -->
<maxAddedTime>21600000</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>43200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax>
<entryFee>150000</entryFee>
<minLevel>99</minLevel>
<maxLevel>105</maxLevel>
</zone>
<zone id="8" name="Tower of Insolence">
<enterLocation>-82014,16247,-15416</enterLocation>
<initialTime>36000000</initialTime> <!-- 10 hours -->
<resetDelay>604800000</resetDelay> <!-- 7 days -->
<maxAddedTime>43200000</maxAddedTime> <!-- 12 hours -->
<remainRefillTime>43200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax>
<entryFee>150000</entryFee>
<minLevel>110</minLevel>
<maxLevel>130</maxLevel>
<weekly>true</weekly>
</zone>
<zone id="12" name="Imperial Tomb">
<enterLocation>181409,-78389,-2728</enterLocation>
<initialTime>3600000</initialTime> <!-- 1 hour -->
<resetDelay>36000000</resetDelay> <!-- 10 hours -->
<maxAddedTime>21600000</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>43200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax>
<entryFee>150000</entryFee>
<minLevel>105</minLevel>
<maxLevel>130</maxLevel>
</zone>
</list>

View File

@@ -16,16 +16,17 @@
*/
package handlers.effecthandlers;
import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneList;
import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList;
/**
* @author Mobius
@@ -56,15 +57,15 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((_zoneId == 8) && (endTime > currentTime) && (((endTime - currentTime) + _time) >= Config.TIME_LIMITED_MAX_ADDED_TIME_WEEKLY))
final TimedHuntingZoneHolder holder = TimedHuntingZoneData.getInstance().getHuntingZone(_zoneId);
if (holder == null)
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
else if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= Config.TIME_LIMITED_MAX_ADDED_TIME))
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
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.");
@@ -78,13 +79,9 @@ public class AddHuntingTime extends AbstractEffect
}
else
{
if ((_zoneId == 8) && ((endTime + Config.TIME_LIMITED_ZONE_RESET_WEEKLY) < currentTime))
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + Config.TIME_LIMITED_ZONE_INITIAL_TIME_WEEKLY;
}
else if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
{
endTime = currentTime + Config.TIME_LIMITED_ZONE_INITIAL_TIME;
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{

View File

@@ -0,0 +1,28 @@
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element name="zone" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="enterLocation" />
<xs:element type="xs:int" name="initialTime" />
<xs:element type="xs:int" name="resetDelay" />
<xs:element type="xs:int" name="maxAddedTime" />
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
<xs:element type="xs:int" name="entryItemId" minOccurs="0" />
<xs:element type="xs:int" name="entryFee" />
<xs:element type="xs:short" name="minLevel" />
<xs:element type="xs:short" name="maxLevel" />
<xs:element type="xs:boolean" name="weekly" minOccurs="0" />
</xs:sequence>
<xs:attribute type="xs:byte" name="id" use="optional" />
<xs:attribute type="xs:string" name="name" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:boolean" name="enabled" />
</xs:complexType>
</xs:element>
</xs:schema>