Anakim and Lilith schedule improvements.

Contributed by gigilo1968.
This commit is contained in:
MobiusDev 2017-10-15 10:34:22 +00:00
parent 7aeb4eeb90
commit cf0a83d622
6 changed files with 222 additions and 12 deletions

View File

@ -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();

View File

@ -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)
{

View File

@ -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();

View File

@ -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)
{

View File

@ -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();

View File

@ -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)
{