Przeglądaj źródła

Drop period in LongTimeEvents fixed: it didn't consider the dates within the range if they were the same.
Extra: it avoids adding global drop if the current time is longer than the drop period end.

Reported by CostyKiller

Luks 9 lat temu
rodzic
commit
8b196fbfee

+ 7 - 3
L2J_Server/java/com/l2jserver/gameserver/model/event/LongTimeEvent.java

@@ -265,17 +265,21 @@ public class LongTimeEvent extends Quest
 	 */
 	protected void startEvent()
 	{
+		long currentTime = System.currentTimeMillis();
 		// Add drop
 		if (_dropList != null)
 		{
-			for (GeneralDropItem drop : _dropList)
+			if (currentTime < _dropPeriod.getEndDate().getTime())
 			{
-				EventDroplist.getInstance().addGlobalDrop(drop.getItemId(), drop.getMin(), drop.getMax(), (int) drop.getChance(), _dropPeriod);
+				for (GeneralDropItem drop : _dropList)
+				{
+					EventDroplist.getInstance().addGlobalDrop(drop.getItemId(), drop.getMin(), drop.getMax(), (int) drop.getChance(), _dropPeriod);
+				}
 			}
 		}
 		
 		// Add spawns
-		Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
+		Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - currentTime;
 		if (_spawnList != null)
 		{
 			for (NpcSpawn spawn : _spawnList)

+ 2 - 1
L2J_Server/java/com/l2jserver/gameserver/script/DateRange.java

@@ -65,7 +65,8 @@ public class DateRange
 	
 	public boolean isWithinRange(Date date)
 	{
-		return date.after(_startDate) && date.before(_endDate);
+		return (date.equals(_startDate) || date.after(_startDate)) //
+			&& (date.equals(_endDate) || date.before(_endDate));
 	}
 	
 	public Date getEndDate()