Anakim and Lilith schedule improvements.
Contributed by gigilo1968.
This commit is contained in:
		| @@ -17,6 +17,7 @@ | ||||
| package ai.bosses.Anakim; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Calendar; | ||||
| import java.util.List; | ||||
|  | ||||
| import com.l2jmobius.Config; | ||||
| @@ -617,8 +618,7 @@ public class Anakim extends AbstractNpcAI | ||||
| 			addSpawn(EXIST_CUBIC, 185082, -12606, -5499, 6133, false, 900000); // 15min | ||||
| 			 | ||||
| 			GrandBossManager.getInstance().setBossStatus(ANAKIM, DEAD); | ||||
| 			// TODO Retail Raid Respawn time: Tuesday (21:00) and Saturday (16:00). | ||||
| 			final long respawnTime = (Config.ANAKIM_SPAWN_INTERVAL + getRandom(-Config.ANAKIM_SPAWN_RANDOM, Config.ANAKIM_SPAWN_RANDOM)) * 3600000; | ||||
| 			final long respawnTime = getRespawnTime(); | ||||
| 			final StatsSet info = GrandBossManager.getInstance().getStatsSet(ANAKIM); | ||||
| 			info.set("respawn_time", System.currentTimeMillis() + respawnTime); | ||||
| 			GrandBossManager.getInstance().setStatsSet(ANAKIM, info); | ||||
| @@ -669,6 +669,41 @@ public class Anakim extends AbstractNpcAI | ||||
| 		return super.onSkillSee(npc, caster, skill, targets, isPet); | ||||
| 	} | ||||
| 	 | ||||
| 	private int getRespawnTime() | ||||
| 	{ | ||||
| 		return (int) calcReuseFromDays(0, 21, Calendar.TUESDAY, 0, 16, Calendar.SATURDAY); | ||||
| 	} | ||||
| 	 | ||||
| 	private long calcReuseFromDays(int day1Minute, int day1Hour, int day1Day, int day2Minute, int day2Hour, int day2Day) | ||||
| 	{ | ||||
| 		Calendar now = Calendar.getInstance(); | ||||
| 		Calendar day1 = (Calendar) now.clone(); | ||||
| 		day1.set(Calendar.MINUTE, day1Minute); | ||||
| 		day1.set(Calendar.HOUR_OF_DAY, day1Hour); | ||||
| 		day1.set(Calendar.DAY_OF_WEEK, day1Day); | ||||
| 		 | ||||
| 		Calendar day2 = (Calendar) day1.clone(); | ||||
| 		day2.set(Calendar.MINUTE, day2Minute); | ||||
| 		day2.set(Calendar.HOUR_OF_DAY, day2Hour); | ||||
| 		day2.set(Calendar.DAY_OF_WEEK, day2Day); | ||||
| 		 | ||||
| 		if (now.after(day1)) | ||||
| 		{ | ||||
| 			day1.add(Calendar.WEEK_OF_MONTH, 1); | ||||
| 		} | ||||
| 		if (now.after(day2)) | ||||
| 		{ | ||||
| 			day2.add(Calendar.WEEK_OF_MONTH, 1); | ||||
| 		} | ||||
| 		 | ||||
| 		Calendar reenter = day1; | ||||
| 		if (day2.before(day1)) | ||||
| 		{ | ||||
| 			reenter = day2; | ||||
| 		} | ||||
| 		return reenter.getTimeInMillis() - System.currentTimeMillis(); | ||||
| 	} | ||||
| 	 | ||||
| 	public static void main(String[] args) | ||||
| 	{ | ||||
| 		new Anakim(); | ||||
|   | ||||
| @@ -17,6 +17,7 @@ | ||||
| package ai.bosses.Lilith; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Calendar; | ||||
| import java.util.List; | ||||
|  | ||||
| import com.l2jmobius.Config; | ||||
| @@ -633,8 +634,7 @@ public class Lilith extends AbstractNpcAI | ||||
| 			addSpawn(EXIST_CUBIC, 185062, -9605, -5499, 15640, false, 900000); // 15min | ||||
| 			 | ||||
| 			GrandBossManager.getInstance().setBossStatus(LILITH, DEAD); | ||||
| 			// TODO Retail Raid Respawn time: Thursday (21:00) and Saturday (14:00). | ||||
| 			final long respawnTime = (Config.LILITH_SPAWN_INTERVAL + getRandom(-Config.LILITH_SPAWN_RANDOM, Config.LILITH_SPAWN_RANDOM)) * 3600000; | ||||
| 			final long respawnTime = getRespawnTime(); | ||||
| 			final StatsSet info = GrandBossManager.getInstance().getStatsSet(LILITH); | ||||
| 			info.set("respawn_time", System.currentTimeMillis() + respawnTime); | ||||
| 			GrandBossManager.getInstance().setStatsSet(LILITH, info); | ||||
| @@ -685,6 +685,41 @@ public class Lilith extends AbstractNpcAI | ||||
| 		return super.onSkillSee(npc, caster, skill, targets, isPet); | ||||
| 	} | ||||
| 	 | ||||
| 	private int getRespawnTime() | ||||
| 	{ | ||||
| 		return (int) calcReuseFromDays(0, 21, Calendar.THURSDAY, 0, 14, Calendar.SATURDAY); | ||||
| 	} | ||||
| 	 | ||||
| 	private long calcReuseFromDays(int day1Minute, int day1Hour, int day1Day, int day2Minute, int day2Hour, int day2Day) | ||||
| 	{ | ||||
| 		Calendar now = Calendar.getInstance(); | ||||
| 		Calendar day1 = (Calendar) now.clone(); | ||||
| 		day1.set(Calendar.MINUTE, day1Minute); | ||||
| 		day1.set(Calendar.HOUR_OF_DAY, day1Hour); | ||||
| 		day1.set(Calendar.DAY_OF_WEEK, day1Day); | ||||
| 		 | ||||
| 		Calendar day2 = (Calendar) day1.clone(); | ||||
| 		day2.set(Calendar.MINUTE, day2Minute); | ||||
| 		day2.set(Calendar.HOUR_OF_DAY, day2Hour); | ||||
| 		day2.set(Calendar.DAY_OF_WEEK, day2Day); | ||||
| 		 | ||||
| 		if (now.after(day1)) | ||||
| 		{ | ||||
| 			day1.add(Calendar.WEEK_OF_MONTH, 1); | ||||
| 		} | ||||
| 		if (now.after(day2)) | ||||
| 		{ | ||||
| 			day2.add(Calendar.WEEK_OF_MONTH, 1); | ||||
| 		} | ||||
| 		 | ||||
| 		Calendar reenter = day1; | ||||
| 		if (day2.before(day1)) | ||||
| 		{ | ||||
| 			reenter = day2; | ||||
| 		} | ||||
| 		return reenter.getTimeInMillis() - System.currentTimeMillis(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onFirstTalk(L2Npc npc, L2PcInstance player) | ||||
| 	{ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDev
					MobiusDev