Weekly hunting zone.

Contributed by Sero.
This commit is contained in:
MobiusDevelopment 2021-02-09 22:10:35 +00:00
parent 12fa04dfea
commit bde07be6da
5 changed files with 49 additions and 16 deletions

View File

@ -6,14 +6,26 @@
# Default: 3600000 (1 hour)
InitialTime = 3600000
# Initial free time.
# Default: 36000000 (10 hour)
InitialTimeWeekly = 36000000
# Maximum added time.
# Default: 18000000 (5 hours)
MaximumAddedTime = 18000000
# Default: 18000000 (6 hours)
MaximumAddedTime = 21600000
# Maximum added time Weekly.
# Default: 43200000 (12 hours)
MaximumAddedTimeWeekly = 43200000
# Reset delay.
# Default: 36000000 (10 hours)
ResetDelay = 36000000
# Reset Weekly.
# Default: 604800000 (7 Days)
ResetWeekly = 604800000
# Teleport fee.
# Default: 150000
TeleportFee = 150000

View File

@ -57,7 +57,13 @@ public class AddHuntingTime extends AbstractEffect
final long currentTime = System.currentTimeMillis();
long endTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_RESET_TIME + _zoneId, 0);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= Config.TIME_LIMITED_MAX_ADDED_TIME))
if ((_zoneId == 8) && (endTime > currentTime) && (((endTime - currentTime) + _time) >= Config.TIME_LIMITED_MAX_ADDED_TIME_WEEKLY))
{
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))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
@ -72,7 +78,11 @@ public class AddHuntingTime extends AbstractEffect
}
else
{
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
if ((_zoneId == 8) && ((endTime + Config.TIME_LIMITED_ZONE_RESET_WEEKLY) < 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;
}

View File

@ -834,8 +834,11 @@ public class Config
public static List<String> TELNET_HOSTS;
public static int TELNET_PORT;
public static long TIME_LIMITED_ZONE_INITIAL_TIME;
public static long TIME_LIMITED_ZONE_INITIAL_TIME_WEEKLY;
public static long TIME_LIMITED_MAX_ADDED_TIME;
public static long TIME_LIMITED_MAX_ADDED_TIME_WEEKLY;
public static long TIME_LIMITED_ZONE_RESET_DELAY;
public static long TIME_LIMITED_ZONE_RESET_WEEKLY;
public static long TIME_LIMITED_ZONE_TELEPORT_FEE;
public static boolean TRAINING_CAMP_ENABLE;
public static boolean TRAINING_CAMP_PREMIUM_ONLY;
@ -1985,8 +1988,11 @@ public class Config
// Load Time Limited Zone config file (if exists)
final PropertiesParser timeLimitedZoneSettings = new PropertiesParser(TIME_LIMITED_ZONE_CONFIG_FILE);
TIME_LIMITED_ZONE_INITIAL_TIME = timeLimitedZoneSettings.getLong("InitialTime", 3600000);
TIME_LIMITED_MAX_ADDED_TIME = timeLimitedZoneSettings.getLong("MaximumAddedTime", 18000000);
TIME_LIMITED_ZONE_INITIAL_TIME_WEEKLY = timeLimitedZoneSettings.getLong("InitialTimeWeekly", 36000000);
TIME_LIMITED_MAX_ADDED_TIME = timeLimitedZoneSettings.getLong("MaximumAddedTime", 21600000);
TIME_LIMITED_MAX_ADDED_TIME_WEEKLY = timeLimitedZoneSettings.getLong("MaximumAddedTimeWeekly", 43200000);
TIME_LIMITED_ZONE_RESET_DELAY = timeLimitedZoneSettings.getLong("ResetDelay", 36000000);
TIME_LIMITED_ZONE_RESET_WEEKLY = timeLimitedZoneSettings.getLong("ResetWeekly", 604800000);
TIME_LIMITED_ZONE_TELEPORT_FEE = timeLimitedZoneSettings.getLong("TeleportFee", 150000);
// Load Training Camp config file (if exists)

View File

@ -97,7 +97,12 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket
final long currentTime = System.currentTimeMillis();
long endTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_RESET_TIME + _zoneId, 0);
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
if ((_zoneId == 8) && ((endTime + Config.TIME_LIMITED_ZONE_RESET_WEEKLY) < 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;
}

View File

@ -55,7 +55,7 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket
packet.writeD(1); // zone id
packet.writeD(100); // min level
packet.writeD(120); // max level
packet.writeD(0); // remain time base?
packet.writeD((int) (Config.TIME_LIMITED_ZONE_INITIAL_TIME / 1000)); // remain time base?
endTime = _player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_RESET_TIME + 1, 0);
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
{
@ -76,7 +76,7 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket
packet.writeD(6); // zone id
packet.writeD(105); // min level
packet.writeD(120); // max level
packet.writeD(0); // remain time base?
packet.writeD((int) (Config.TIME_LIMITED_ZONE_INITIAL_TIME / 1000)); // remain time base?
endTime = _player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_RESET_TIME + 6, 0);
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
{
@ -97,7 +97,7 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket
packet.writeD(7); // zone id
packet.writeD(107); // min level
packet.writeD(120); // max level
packet.writeD(0); // remain time base?
packet.writeD((int) (Config.TIME_LIMITED_ZONE_INITIAL_TIME / 1000)); // remain time base?
endTime = _player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_RESET_TIME + 7, 0);
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
{
@ -118,7 +118,7 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket
packet.writeD(11); // zone id
packet.writeD(99); // min level
packet.writeD(105); // max level
packet.writeD(0); // remain time base?
packet.writeD((int) (Config.TIME_LIMITED_ZONE_INITIAL_TIME / 1000)); // remain time base?
endTime = _player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_RESET_TIME + 11, 0);
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
{
@ -135,18 +135,18 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket
packet.writeD(1); // required item count
packet.writeD(57); // item id
packet.writeQ(Config.TIME_LIMITED_ZONE_TELEPORT_FEE); // item count
packet.writeD(1); // reset cycle
packet.writeD(0); // reset cycle
packet.writeD(8); // zone id
packet.writeD(110); // min level
packet.writeD(130); // max level
packet.writeD(0); // remain time base?
packet.writeD((int) (Config.TIME_LIMITED_ZONE_INITIAL_TIME_WEEKLY / 1000)); // remain time base?
endTime = _player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_RESET_TIME + 8, 0);
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_WEEKLY) < currentTime)
{
endTime = currentTime + Config.TIME_LIMITED_ZONE_INITIAL_TIME;
endTime = currentTime + Config.TIME_LIMITED_ZONE_INITIAL_TIME_WEEKLY;
}
packet.writeD((int) (Math.max(endTime - currentTime, 0)) / 1000); // remain time
packet.writeD((int) (Config.TIME_LIMITED_MAX_ADDED_TIME / 1000));
packet.writeD((int) (Config.TIME_LIMITED_MAX_ADDED_TIME_WEEKLY / 1000));
packet.writeD(3600); // remain refill time
packet.writeD(3600); // refill time max
packet.writeD(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D)
@ -160,7 +160,7 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket
packet.writeD(12); // zone id
packet.writeD(105); // min level
packet.writeD(130); // max level
packet.writeD(0); // remain time base?
packet.writeD((int) (Config.TIME_LIMITED_ZONE_INITIAL_TIME / 1000)); // remain time base?
endTime = _player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_RESET_TIME + 12, 0);
if ((endTime + Config.TIME_LIMITED_ZONE_RESET_DELAY) < currentTime)
{