diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 8848d67fc7..859e6fc695 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -50,7 +50,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index b1989c37a1..7fa9f125f9 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1112,12 +1112,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1130,7 +1130,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f17f99ae6f..8473c9a15c 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 8b7e94342c..2dd0d3a589 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.REMAINING_TIME))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 8848d67fc7..859e6fc695 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -50,7 +50,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index b1989c37a1..7fa9f125f9 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1112,12 +1112,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1130,7 +1130,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f17f99ae6f..8473c9a15c 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 8b7e94342c..2dd0d3a589 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.REMAINING_TIME))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 8848d67fc7..859e6fc695 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -50,7 +50,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index b1989c37a1..7fa9f125f9 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1112,12 +1112,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1130,7 +1130,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f17f99ae6f..8473c9a15c 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 8b7e94342c..2dd0d3a589 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.REMAINING_TIME))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 8848d67fc7..859e6fc695 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -50,7 +50,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index b1989c37a1..7fa9f125f9 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1112,12 +1112,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1130,7 +1130,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f17f99ae6f..8473c9a15c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 8b7e94342c..2dd0d3a589 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.REMAINING_TIME))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 8848d67fc7..859e6fc695 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -50,7 +50,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index b1989c37a1..7fa9f125f9 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1112,12 +1112,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1130,7 +1130,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f17f99ae6f..8473c9a15c 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 8b7e94342c..2dd0d3a589 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.REMAINING_TIME))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java index 28591a8b5c..cb5c274ba9 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java @@ -444,14 +444,14 @@ public class EtisVanEtina extends AbstractNpcAI } case "end_etina": { - Clean(); + clean(); break; } } return super.onAdvEvent(event, npc, player); } - protected void Clean() + private void clean() { BOSS_ZONE.getCharactersInside().forEach(mob -> { @@ -708,12 +708,9 @@ public class EtisVanEtina extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if ((zone.getId() == ZONE_ID) && zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Clean(), 900000); - } + _collapseTask = ThreadPool.schedule(this::clean, 900000); } return super.onExitZone(character, zone); } @@ -723,25 +720,18 @@ public class EtisVanEtina extends AbstractNpcAI { if (npc.getId() == ETIS_VAN_ETINA1) { - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS)); startQuestTimer("spawnTransformedEtina", 15000, null, null); } else if (npc.getId() == ETIS_VAN_ETINA2) { notifyEvent("cancel_timers", null, null); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING)); GrandBossManager.getInstance().setBossStatus(ETIS_VAN_ETINA1, DEAD); final long respawnTime = (Config.ETINA_SPAWN_INTERVAL + getRandom(-Config.ETINA_SPAWN_RANDOM, Config.ETINA_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(ETIS_VAN_ETINA1); info.set("respawn_time", Chronos.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ETIS_VAN_ETINA1, info); - startQuestTimer("unlock_etina", respawnTime, null, null); startQuestTimer("end_etina", 900000, null, null); } @@ -774,10 +764,7 @@ public class EtisVanEtina extends AbstractNpcAI _etina.setTargetable(true); BOSS_ZONE.getPlayersInside().forEach(player -> player.sendPacket(new ExShowScreenMessage(NpcStringId.ETIS_VAN_ETINA_APPROACHES, ExShowScreenMessage.TOP_CENTER, 7000, true))); _kain.deleteMe(); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_KAIN_BOSS_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_KAIN_BOSS_ENDING)); } return super.onKill(npc, killer, isPet); } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 8848d67fc7..859e6fc695 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -50,7 +50,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index b1989c37a1..7fa9f125f9 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1112,12 +1112,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1130,7 +1130,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index 0fc681523d..1e256ac0c0 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index b2449af6d7..2fe2f79d46 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -57,8 +57,6 @@ public class Orfen extends AbstractNpcAI private static final int ARIMA = 29326; private static final int ARIMUS = 29327; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -75,6 +73,8 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder HALLUCINATING_DUST = new SkillHolder(32494, 1); private static final SkillHolder ORFEN_RAGE = new SkillHolder(32495, 1); + private static Set _minions = ConcurrentHashMap.newKeySet(); + private Orfen() { final int[] mobs = diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 8b7e94342c..2dd0d3a589 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.REMAINING_TIME))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java index 28591a8b5c..cb5c274ba9 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java @@ -444,14 +444,14 @@ public class EtisVanEtina extends AbstractNpcAI } case "end_etina": { - Clean(); + clean(); break; } } return super.onAdvEvent(event, npc, player); } - protected void Clean() + private void clean() { BOSS_ZONE.getCharactersInside().forEach(mob -> { @@ -708,12 +708,9 @@ public class EtisVanEtina extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if ((zone.getId() == ZONE_ID) && zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Clean(), 900000); - } + _collapseTask = ThreadPool.schedule(this::clean, 900000); } return super.onExitZone(character, zone); } @@ -723,25 +720,18 @@ public class EtisVanEtina extends AbstractNpcAI { if (npc.getId() == ETIS_VAN_ETINA1) { - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS)); startQuestTimer("spawnTransformedEtina", 15000, null, null); } else if (npc.getId() == ETIS_VAN_ETINA2) { notifyEvent("cancel_timers", null, null); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING)); GrandBossManager.getInstance().setBossStatus(ETIS_VAN_ETINA1, DEAD); final long respawnTime = (Config.ETINA_SPAWN_INTERVAL + getRandom(-Config.ETINA_SPAWN_RANDOM, Config.ETINA_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(ETIS_VAN_ETINA1); info.set("respawn_time", Chronos.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ETIS_VAN_ETINA1, info); - startQuestTimer("unlock_etina", respawnTime, null, null); startQuestTimer("end_etina", 900000, null, null); } @@ -774,10 +764,7 @@ public class EtisVanEtina extends AbstractNpcAI _etina.setTargetable(true); BOSS_ZONE.getPlayersInside().forEach(player -> player.sendPacket(new ExShowScreenMessage(NpcStringId.ETIS_VAN_ETINA_APPROACHES, ExShowScreenMessage.TOP_CENTER, 7000, true))); _kain.deleteMe(); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_KAIN_BOSS_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_KAIN_BOSS_ENDING)); } return super.onKill(npc, killer, isPet); } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 8848d67fc7..859e6fc695 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -50,7 +50,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index b1989c37a1..7fa9f125f9 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1112,12 +1112,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1130,7 +1130,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index 0fc681523d..1e256ac0c0 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index b2449af6d7..2fe2f79d46 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -57,8 +57,6 @@ public class Orfen extends AbstractNpcAI private static final int ARIMA = 29326; private static final int ARIMUS = 29327; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -75,6 +73,8 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder HALLUCINATING_DUST = new SkillHolder(32494, 1); private static final SkillHolder ORFEN_RAGE = new SkillHolder(32495, 1); + private static Set _minions = ConcurrentHashMap.newKeySet(); + private Orfen() { final int[] mobs = diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 8b7e94342c..2dd0d3a589 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.REMAINING_TIME))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java index 28591a8b5c..cb5c274ba9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java @@ -444,14 +444,14 @@ public class EtisVanEtina extends AbstractNpcAI } case "end_etina": { - Clean(); + clean(); break; } } return super.onAdvEvent(event, npc, player); } - protected void Clean() + private void clean() { BOSS_ZONE.getCharactersInside().forEach(mob -> { @@ -708,12 +708,9 @@ public class EtisVanEtina extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if ((zone.getId() == ZONE_ID) && zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Clean(), 900000); - } + _collapseTask = ThreadPool.schedule(this::clean, 900000); } return super.onExitZone(character, zone); } @@ -723,25 +720,18 @@ public class EtisVanEtina extends AbstractNpcAI { if (npc.getId() == ETIS_VAN_ETINA1) { - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS)); startQuestTimer("spawnTransformedEtina", 15000, null, null); } else if (npc.getId() == ETIS_VAN_ETINA2) { notifyEvent("cancel_timers", null, null); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING)); GrandBossManager.getInstance().setBossStatus(ETIS_VAN_ETINA1, DEAD); final long respawnTime = (Config.ETINA_SPAWN_INTERVAL + getRandom(-Config.ETINA_SPAWN_RANDOM, Config.ETINA_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(ETIS_VAN_ETINA1); info.set("respawn_time", Chronos.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ETIS_VAN_ETINA1, info); - startQuestTimer("unlock_etina", respawnTime, null, null); startQuestTimer("end_etina", 900000, null, null); } @@ -774,10 +764,7 @@ public class EtisVanEtina extends AbstractNpcAI _etina.setTargetable(true); BOSS_ZONE.getPlayersInside().forEach(player -> player.sendPacket(new ExShowScreenMessage(NpcStringId.ETIS_VAN_ETINA_APPROACHES, ExShowScreenMessage.TOP_CENTER, 7000, true))); _kain.deleteMe(); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_KAIN_BOSS_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_KAIN_BOSS_ENDING)); } return super.onKill(npc, killer, isPet); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 8848d67fc7..859e6fc695 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -50,7 +50,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index b1989c37a1..7fa9f125f9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1112,12 +1112,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1130,7 +1130,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f17f99ae6f..8473c9a15c 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index b2449af6d7..2fe2f79d46 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -57,8 +57,6 @@ public class Orfen extends AbstractNpcAI private static final int ARIMA = 29326; private static final int ARIMUS = 29327; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -75,6 +73,8 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder HALLUCINATING_DUST = new SkillHolder(32494, 1); private static final SkillHolder ORFEN_RAGE = new SkillHolder(32495, 1); + private static Set _minions = ConcurrentHashMap.newKeySet(); + private Orfen() { final int[] mobs = diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 8b7e94342c..2dd0d3a589 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.REMAINING_TIME))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java index 8a92d5401b..c6cb7eeff0 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java @@ -444,14 +444,14 @@ public class EtisVanEtina extends AbstractNpcAI } case "end_etina": { - Clean(); + clean(); break; } } return super.onAdvEvent(event, npc, player); } - protected void Clean() + private void clean() { BOSS_ZONE.getCharactersInside().forEach(mob -> { @@ -708,12 +708,9 @@ public class EtisVanEtina extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if ((zone.getId() == ZONE_ID) && zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Clean(), 900000); - } + _collapseTask = ThreadPool.schedule(this::clean, 900000); } return super.onExitZone(character, zone); } @@ -723,25 +720,18 @@ public class EtisVanEtina extends AbstractNpcAI { if (npc.getId() == ETIS_VAN_ETINA1) { - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS)); startQuestTimer("spawnTransformedEtina", 15000, null, null); } else if (npc.getId() == ETIS_VAN_ETINA2) { notifyEvent("cancel_timers", null, null); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING)); GrandBossManager.getInstance().setBossStatus(ETIS_VAN_ETINA1, DEAD); final long respawnTime = (Config.ETINA_SPAWN_INTERVAL + getRandom(-Config.ETINA_SPAWN_RANDOM, Config.ETINA_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(ETIS_VAN_ETINA1); info.set("respawn_time", Chronos.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ETIS_VAN_ETINA1, info); - startQuestTimer("unlock_etina", respawnTime, null, null); startQuestTimer("end_etina", 900000, null, null); } @@ -774,10 +764,7 @@ public class EtisVanEtina extends AbstractNpcAI _etina.setTargetable(true); BOSS_ZONE.getPlayersInside().forEach(player -> player.sendPacket(new ExShowScreenMessage(NpcStringId.ETIS_VAN_ETINA_APPROACHES, ExShowScreenMessage.TOP_CENTER, 7000, true))); _kain.deleteMe(); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_KAIN_BOSS_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_KAIN_BOSS_ENDING)); } return super.onKill(npc, killer, isPet); } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 2b31a9d4ca..639cabcd8c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -48,7 +48,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index 9099222d9d..4e0aed2c70 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1089,12 +1089,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1107,7 +1107,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f7e67edd5d..1e8c0a3209 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -817,12 +817,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index b2449af6d7..2fe2f79d46 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -57,8 +57,6 @@ public class Orfen extends AbstractNpcAI private static final int ARIMA = 29326; private static final int ARIMUS = 29327; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -75,6 +73,8 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder HALLUCINATING_DUST = new SkillHolder(32494, 1); private static final SkillHolder ORFEN_RAGE = new SkillHolder(32495, 1); + private static Set _minions = ConcurrentHashMap.newKeySet(); + private Orfen() { final int[] mobs = diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 70b00e60a6..ad18f4a959 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.TIME_LEFT))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java index 8a92d5401b..c6cb7eeff0 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java @@ -444,14 +444,14 @@ public class EtisVanEtina extends AbstractNpcAI } case "end_etina": { - Clean(); + clean(); break; } } return super.onAdvEvent(event, npc, player); } - protected void Clean() + private void clean() { BOSS_ZONE.getCharactersInside().forEach(mob -> { @@ -708,12 +708,9 @@ public class EtisVanEtina extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if ((zone.getId() == ZONE_ID) && zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Clean(), 900000); - } + _collapseTask = ThreadPool.schedule(this::clean, 900000); } return super.onExitZone(character, zone); } @@ -723,25 +720,18 @@ public class EtisVanEtina extends AbstractNpcAI { if (npc.getId() == ETIS_VAN_ETINA1) { - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS)); startQuestTimer("spawnTransformedEtina", 15000, null, null); } else if (npc.getId() == ETIS_VAN_ETINA2) { notifyEvent("cancel_timers", null, null); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING)); GrandBossManager.getInstance().setBossStatus(ETIS_VAN_ETINA1, DEAD); final long respawnTime = (Config.ETINA_SPAWN_INTERVAL + getRandom(-Config.ETINA_SPAWN_RANDOM, Config.ETINA_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(ETIS_VAN_ETINA1); info.set("respawn_time", Chronos.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ETIS_VAN_ETINA1, info); - startQuestTimer("unlock_etina", respawnTime, null, null); startQuestTimer("end_etina", 900000, null, null); } @@ -774,10 +764,7 @@ public class EtisVanEtina extends AbstractNpcAI _etina.setTargetable(true); BOSS_ZONE.getPlayersInside().forEach(player -> player.sendPacket(new ExShowScreenMessage(NpcStringId.ETIS_VAN_ETINA_APPROACHES, ExShowScreenMessage.TOP_CENTER, 7000, true))); _kain.deleteMe(); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_KAIN_BOSS_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_KAIN_BOSS_ENDING)); } return super.onKill(npc, killer, isPet); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 2b31a9d4ca..639cabcd8c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -48,7 +48,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index 9099222d9d..4e0aed2c70 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1089,12 +1089,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1107,7 +1107,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f7e67edd5d..1e8c0a3209 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -817,12 +817,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index b2449af6d7..2fe2f79d46 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -57,8 +57,6 @@ public class Orfen extends AbstractNpcAI private static final int ARIMA = 29326; private static final int ARIMUS = 29327; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -75,6 +73,8 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder HALLUCINATING_DUST = new SkillHolder(32494, 1); private static final SkillHolder ORFEN_RAGE = new SkillHolder(32495, 1); + private static Set _minions = ConcurrentHashMap.newKeySet(); + private Orfen() { final int[] mobs = diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 70b00e60a6..ad18f4a959 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.TIME_LEFT))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Anais/Anais.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Anais/Anais.java index acd1741a03..74fe879672 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Anais/Anais.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Anais/Anais.java @@ -40,9 +40,9 @@ public class Anais extends AbstractNpcAI private static final int DIVINE_BURNER = 18915; private static final int GRAIL_WARD = 18929; // Skill - private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); + private static final SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - ArrayList _divineBurners = new ArrayList<>(4); + private final ArrayList _divineBurners = new ArrayList<>(4); private Player _nextTarget = null; private Npc _current = null; private int _pot = 0; diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Core/Core.java index bdabe95458..e5e1757f7b 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java index 8a92d5401b..c6cb7eeff0 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/EtisVanEtina/EtisVanEtina.java @@ -444,14 +444,14 @@ public class EtisVanEtina extends AbstractNpcAI } case "end_etina": { - Clean(); + clean(); break; } } return super.onAdvEvent(event, npc, player); } - protected void Clean() + private void clean() { BOSS_ZONE.getCharactersInside().forEach(mob -> { @@ -708,12 +708,9 @@ public class EtisVanEtina extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if ((zone.getId() == ZONE_ID) && zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Clean(), 900000); - } + _collapseTask = ThreadPool.schedule(this::clean, 900000); } return super.onExitZone(character, zone); } @@ -723,25 +720,18 @@ public class EtisVanEtina extends AbstractNpcAI { if (npc.getId() == ETIS_VAN_ETINA1) { - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_TRANS)); startQuestTimer("spawnTransformedEtina", 15000, null, null); } else if (npc.getId() == ETIS_VAN_ETINA2) { notifyEvent("cancel_timers", null, null); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_ETIS_VAN_ETINA_ENDING)); GrandBossManager.getInstance().setBossStatus(ETIS_VAN_ETINA1, DEAD); final long respawnTime = (Config.ETINA_SPAWN_INTERVAL + getRandom(-Config.ETINA_SPAWN_RANDOM, Config.ETINA_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(ETIS_VAN_ETINA1); info.set("respawn_time", Chronos.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ETIS_VAN_ETINA1, info); - startQuestTimer("unlock_etina", respawnTime, null, null); startQuestTimer("end_etina", 900000, null, null); } @@ -774,10 +764,7 @@ public class EtisVanEtina extends AbstractNpcAI _etina.setTargetable(true); BOSS_ZONE.getPlayersInside().forEach(player -> player.sendPacket(new ExShowScreenMessage(NpcStringId.ETIS_VAN_ETINA_APPROACHES, ExShowScreenMessage.TOP_CENTER, 7000, true))); _kain.deleteMe(); - BOSS_ZONE.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_KAIN_BOSS_ENDING); - }); + BOSS_ZONE.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_KAIN_BOSS_ENDING)); } return super.onKill(npc, killer, isPet); } diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java index 2b31a9d4ca..639cabcd8c 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastle/IceQueensCastle.java @@ -48,7 +48,7 @@ public class IceQueensCastle extends AbstractInstance // Locations private static final Location FREYA_LOC = new Location(114730, -114805, -11200, 50); // Skill - private static SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); + private static final SkillHolder ETHERNAL_BLIZZARD = new SkillHolder(6276, 1); // Misc private static final int TEMPLATE_ID = 137; diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java index 9099222d9d..4e0aed2c70 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Freya/IceQueensCastleBattle/IceQueensCastleBattle.java @@ -1089,12 +1089,12 @@ public class IceQueensCastleBattle extends AbstractInstance case KNIGHT_HARD: { final Npc spawnedBy = npc.getVariables().getObject("SPAWNED_NPC", Npc.class); - final NpcVariables var = controller.getVariables(); - int knightCount = var.getInt("KNIGHT_COUNT"); + final NpcVariables vars = controller.getVariables(); + int knightCount = vars.getInt("KNIGHT_COUNT"); - if ((var.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) + if ((vars.getInt("FREYA_MOVE") == 0) && world.isStatus(1)) { - var.set("FREYA_MOVE", 1); + vars.set("FREYA_MOVE", 1); final Npc freya = params.getObject("freya", Npc.class); if (!freya.isInCombat()) { @@ -1107,7 +1107,7 @@ public class IceQueensCastleBattle extends AbstractInstance if ((knightCount < 10) && (world.isStatus(2))) { knightCount++; - var.set("KNIGHT_COUNT", knightCount); + vars.set("KNIGHT_COUNT", knightCount); if (knightCount == 10) { diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index d70730196d..67f0577b8a 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -817,12 +817,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 7af4c411f1..cb9368e085 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -67,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -75,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -94,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimer("attack", npc, null); - cancelQuestTimer("random_Target", npc, null); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -171,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -188,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -213,52 +214,50 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; + case FRINTEZZA_DAEMON_ATTACK: + { + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; + } } - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add(obj); - } + result.add(obj); } } } diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Helios/Helios.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Helios/Helios.java index 1dc6a1748b..dad7aed2da 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Helios/Helios.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Helios/Helios.java @@ -122,18 +122,18 @@ public class Helios extends AbstractNpcAI } // Misc private static final int HELIOS_RAID_DURATION = 5; // hours - private static Npc bossInstance; - private final NoSummonFriendZone bossZone; + private static Npc _bossInstance; + private final NoSummonFriendZone _bossZone; private GrandBoss _tempHelios; private static List _minionSpawns = new ArrayList<>(); - private static Npc blueLightning; - private static Npc redLightning; - private static Npc leopold; - private boolean activated = false; - private boolean stage1_50 = false; - private boolean stage2_50 = false; - private boolean helios80 = false; - private boolean helios50 = false; + private static Npc _blueLightning; + private static Npc _redLightning; + private static Npc _leopold; + private boolean _activated = false; + private boolean _stage1 = false; + private boolean _stage2 = false; + private boolean _helios80 = false; + private boolean _helios50 = false; private boolean _announce = false; protected ScheduledFuture _blueSpearTask; protected ScheduledFuture _redSpearTask; @@ -145,7 +145,7 @@ public class Helios extends AbstractNpcAI addAttackId(HELIOS1, HELIOS2, HELIOS3); addKillId(HELIOS1, HELIOS2, HELIOS3, MIMILLION, MIMILLUS); // Zone - bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); + _bossZone = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); // Unlock final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); @@ -177,151 +177,145 @@ public class Helios extends AbstractNpcAI if ((npc.getId() == HELIOS1) && !_announce) { _announce = true; - _debuffTask = ThreadPool.scheduleAtFixedRate(() -> - { - bossZone.getPlayersInside().forEach(player -> - { - AUDIENCE_DEBUFF.getSkill().applyEffects(player, player); - }); - }, 5000, 20000); + _debuffTask = ThreadPool.scheduleAtFixedRate(() -> _bossZone.getPlayersInside().forEach(player -> AUDIENCE_DEBUFF.getSkill().applyEffects(player, player)), 5000, 20000); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_ADEN_WARRIORS_BEGIN_BATTLE_WITH_THE_GIANT_EMPEROR_HELIOS, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - if ((npc.getId() == HELIOS1) && !stage1_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS1) && !_stage1 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage1_50 = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _stage1 = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS2) && !activated) + if ((npc.getId() == HELIOS2) && !_activated) { - activated = true; - HELIOS_RAGE1.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE1.getSkill().applyEffects(_bossInstance, _bossInstance); _blueSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (blueLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_blueLightning != null) { - blueLightning.setTarget(randomPlayer); - blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); + _blueLightning.setTarget(randomPlayer); + _blueLightning.doCast(BLUE_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_BLUE_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 10000, 120000); _redSpearTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (redLightning != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_redLightning != null) { - redLightning.setTarget(randomPlayer); - redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); + _redLightning.setTarget(randomPlayer); + _redLightning.doCast(RED_LIGHTNING_SPEAR.getSkill()); } } - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_PICKS_UP_THE_RED_LIGHTNING_SPEAR_AND_BEGINS_GATHERING_HIS_POWER, ExShowScreenMessage.TOP_CENTER, 10000, true)); }, 30000, 120000); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS2) && !stage2_50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + if ((npc.getId() == HELIOS2) && !_stage2 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - stage2_50 = true; - HELIOS_RAGE2.getSkill().applyEffects(bossInstance, bossInstance); + _stage2 = true; + HELIOS_RAGE2.getSkill().applyEffects(_bossInstance, _bossInstance); } - if ((npc.getId() == HELIOS3) && !activated) + if ((npc.getId() == HELIOS3) && !_activated) { - activated = true; - HELIOS_RAGE3.getSkill().applyEffects(bossInstance, bossInstance); + _activated = true; + HELIOS_RAGE3.getSkill().applyEffects(_bossInstance, _bossInstance); _leopoldTask = ThreadPool.scheduleAtFixedRate(() -> { - int count = bossZone.getPlayersInside().size(); + int count = _bossZone.getPlayersInside().size(); if (count > 0) { - Player randomPlayer = bossZone.getPlayersInside().get(getRandom(count)); - if (leopold != null) + Player randomPlayer = _bossZone.getPlayersInside().get(getRandom(count)); + if (_leopold != null) { - leopold.setTarget(randomPlayer); + _leopold.setTarget(randomPlayer); int rnd = getRandom(100); if (rnd < 16) { - leopold.doCast(LEOPOLD_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_BOMB.getSkill()); } else if (rnd < 32) { - leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_PLASMA_BOMB.getSkill()); } else if (rnd < 48) { - leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); + _leopold.doCast(LEOPOLD_ENERGY_BOMB.getSkill()); } else if (rnd < 64) { - leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); + _leopold.doCast(LEOPOLD_MINI_GUN.getSkill()); } else if (rnd < 80) { - leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); + _leopold.doCast(LEOPOLD_SPRAY_SHOT.getSkill()); } else { - leopold.doCast(LEOPOLD_HARPOON.getSkill()); + _leopold.doCast(LEOPOLD_HARPOON.getSkill()); } } } }, 5000, 10000); } - if ((npc.getId() == HELIOS3) && !helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) + if ((npc.getId() == HELIOS3) && !_helios80 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.8))) { - helios80 = true; + _helios80 = true; addSpawn(LEOPOLD_ORIGIN, LEOPOLD_ORIGIN_LOC, false, 0); addSpawn(ENUMA_ELISH_ORIGIN, ENUMA_ELISH_ORIGIN_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_KAMAEL_ORIGINS_ABOVE_THE_THRONE_OF_HELIOS_BEGIN_TO_SOAR, ExShowScreenMessage.TOP_CENTER, 10000, true)); } - else if ((npc.getId() == HELIOS3) && !helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) + else if ((npc.getId() == HELIOS3) && !_helios50 && (npc.getCurrentHp() <= (npc.getMaxHp() * 0.5))) { - helios50 = true; - HELIOS_RAGE4.getSkill().applyEffects(bossInstance, bossInstance); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); - bossInstance.abortCast(); - bossInstance.doCast(PRANARACH.getSkill()); + _helios50 = true; + HELIOS_RAGE4.getSkill().applyEffects(_bossInstance, _bossInstance); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_USES_THE_PRANARACH_SHIELD_OF_LIGHT_TO_MINIMIZE_DAMAGE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance.abortCast(); + _bossInstance.doCast(PRANARACH.getSkill()); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -344,12 +338,12 @@ public class Helios extends AbstractNpcAI if (GrandBossManager.getInstance().getBossStatus(HELIOS3) == WAITING) { GrandBossManager.getInstance().setBossStatus(HELIOS3, FIGHTING); - bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossInstance = addSpawn(HELIOS1, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); } - startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, bossInstance, null); + startQuestTimer("resetRaid", HELIOS_RAID_DURATION * 60 * 60 * 1000, _bossInstance, null); } break; } @@ -358,17 +352,17 @@ public class Helios extends AbstractNpcAI final int status = GrandBossManager.getInstance().getBossStatus(HELIOS3); if ((status > ALIVE) && (status < DEAD)) { - bossZone.oustAllPlayers(); + _bossZone.oustAllPlayers(); Broadcast.toAllOnlinePlayers(new ExShowScreenMessage(NpcStringId.THE_HEROES_DRAINED_OF_THEIR_POWERS_HAVE_BEEN_BANISHED_FROM_THE_THRONE_OF_HELIOS_BY_HELIOS_POWERS, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, ALIVE); - Clean(); + clean(); } break; } case "stage2": { - bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossInstance = addSpawn(HELIOS2, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); for (SpawnHolder spawn : SPAWNS_MINIONS) { _minionSpawns.add(addSpawn(spawn.getNpcId(), spawn.getLocation())); @@ -378,25 +372,25 @@ public class Helios extends AbstractNpcAI } case "stage3": { - activated = false; - bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _activated = false; + _bossInstance = addSpawn(HELIOS3, HELIOS_SPAWN_LOC.getX(), HELIOS_SPAWN_LOC.getY(), HELIOS_SPAWN_LOC.getZ(), HELIOS_SPAWN_LOC.getHeading(), false, 0, false); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_APPEARANCE_CHANGES_AND_HE_BEGINS_TO_GROW_STRONGER, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("leopoldSpawn", 10000, null, null); break; } case "spheresSpawn": { - blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); - redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); - blueLightning.setInvul(true); - redLightning.setInvul(true); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning = addSpawn(HELIOS_BLUE_LIGHTNING, BLUE_LIGHTNING_SPEAR_LOC, false, 0); + _redLightning = addSpawn(HELIOS_RED_LIGHTNING, RED_LIGHTNING_SPEAR_LOC, false, 0); + _blueLightning.setInvul(true); + _redLightning.setInvul(true); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_ENUMA_ELISH_SPEAR_ON_THE_THRONE_OF_HELIOS_IS_PREPARED_AND_PLACED_IN_POSITION, ExShowScreenMessage.TOP_CENTER, 10000, true)); startQuestTimer("protectorsSpawn", 10000, null, null); break; } case "protectorsSpawn": { - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_AND_MIMILLUS_APPEAR_IN_ORDER_TO_PROTECT_THE_ENUMA_ELISH_OF_RED_LIGHTNING_AND_THE_ENUMA_ELISH_OF_BLUE_LIGHTNING, ExShowScreenMessage.TOP_CENTER, 10000, true)); addSpawn(MIMILLION, MIMILLION_LOC, false, 0); addSpawn(MIMILLUS, MIMILLUS_LOC, false, 0); startQuestTimer("leopoldSpawn", 10000, null, null); @@ -404,17 +398,17 @@ public class Helios extends AbstractNpcAI } case "leopoldSpawn": { - leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _leopold = addSpawn(LEOPOLD, LEOPOLD_LOC, false, 0); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SIEGE_CANNON_LEOPOLD_ON_THE_THRONE_OF_HELIOS_BEGINS_TO_PREPARE_TO_FIRE, ExShowScreenMessage.TOP_CENTER, 10000, true)); break; } } return htmltext; } - private void Clean() + private void clean() { - bossZone.getCharactersInside().forEach(mob -> + _bossZone.getCharactersInside().forEach(mob -> { if (mob.isNpc()) { @@ -450,50 +444,44 @@ public class Helios extends AbstractNpcAI { case MIMILLION: { - if (redLightning != null) + if (_redLightning != null) { - redLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _redLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLION_FALLS_AND_THE_RED_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case MIMILLUS: { - if (blueLightning != null) + if (_blueLightning != null) { - blueLightning.deleteMe(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); + _blueLightning.deleteMe(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.MIMILLUS_FALLS_AND_THE_BLUE_LIGHTNING_SPEAR_VANISHES, ExShowScreenMessage.TOP_CENTER, 10000, true)); } break; } case HELIOS1: { - bossInstance.deleteMe(); - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_A); - }); + _bossInstance.deleteMe(); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_A)); startQuestTimer("stage2", 15000, null, null); break; } case HELIOS2: { - bossInstance.deleteMe(); - if (leopold != null) + _bossInstance.deleteMe(); + if (_leopold != null) { - leopold.deleteMe(); + _leopold.deleteMe(); } - bossZone.getPlayersInside().forEach(player -> - { - playMovie(player, Movie.SC_HELIOS_TRANS_B); - }); + _bossZone.getPlayersInside().forEach(player -> playMovie(player, Movie.SC_HELIOS_TRANS_B)); startQuestTimer("stage3", 15000, null, null); break; } case HELIOS3: { - Clean(); - bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); + clean(); + _bossZone.broadcastPacket(new ExShowScreenMessage(NpcStringId.HELIOS_DEFEATED_TAKES_FLIGHT_DEEP_IN_TO_THE_SUPERION_FORT_HIS_THRONE_IS_RENDERED_INACTIVE, ExShowScreenMessage.TOP_CENTER, 10000, true)); GrandBossManager.getInstance().setBossStatus(HELIOS3, DEAD); final long respawnTime = (Config.HELIOS_SPAWN_INTERVAL + getRandom(-Config.HELIOS_SPAWN_RANDOM, Config.HELIOS_SPAWN_RANDOM)) * 3600000; final StatSet info = GrandBossManager.getInstance().getStatSet(HELIOS3); diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java index 6c6e11d07c..cfe01aae18 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Lindvior/Lindvior.java @@ -87,7 +87,7 @@ public class Lindvior extends AbstractNpcAI private static final int LINDVIOR_CAMERA = 19428; // Zone private static final int ZONE_ID = 12107; - static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); + private static final Location CENTER_LOCATION = new Location(46424, -26200, -1400); // Skills private static final SkillHolder SKILL_RECHARGE_POSIBLE = new SkillHolder(15605, 1); private static final SkillHolder RECHARGE = new SkillHolder(15606, 1); @@ -103,32 +103,7 @@ public class Lindvior extends AbstractNpcAI private static final int ALIVE = 0; private static final int FIGHTING = 2; private static final int DEAD = 3; - // Tasks - protected ScheduledFuture _socialTask; - protected ScheduledFuture _mobsSpawnTask; - protected ScheduledFuture _collapseTask; - protected ScheduledFuture _announceTask; - protected ScheduledFuture _announceProtect; - protected ScheduledFuture _skillCastTask; - protected ScheduledFuture _LynDracoTask; - protected ScheduledFuture _smallVortexesTask; - protected ScheduledFuture _bigVortexesTask; - protected NoSummonFriendZone _zoneLair; - protected GrandBoss _lindvior = null; - private GrandBoss _lindviorForSpawn = null; - protected Npc _lindviorfake = null; - protected Npc _dummyLindvior; - protected Npc _vortex = null; - protected Npc _lionel = null; - protected List _guardSpawn = new ArrayList<>(); - protected List _generatorSpawn = new ArrayList<>(); - protected List _monsterSpawn = new ArrayList<>(); - protected List _LinDracoSpawn = new ArrayList<>(); - protected int _activeMask = 0; - protected int _chargedMask = 0; - protected int _status = 0; - protected int _stage = 0; - + // Others private static final Location[] CONTROL_GENERATOR_SPAWNS = { new Location(45288, -30360, -1432, 0), @@ -181,9 +156,16 @@ public class Lindvior extends AbstractNpcAI {21170106, 21170107}, {21170108, 21170109} }; - protected final int[] _chargedValues = new int[] {0, 0, 0, 0}; - private static final int[] LINDVIOR_SERVITOR = {25895, 25896, 25897, 29242, 29241, 29243}; // @formatter:on + private static final int[] LINDVIOR_SERVITOR = + { + 25895, + 25896, + 25897, + 29242, + 29241, + 29243 + }; private static final NpcStringId[] GUARD_MSG = { NpcStringId.ACTIVATE_THE_GENERATOR_HURRY, @@ -194,6 +176,38 @@ public class Lindvior extends AbstractNpcAI NpcStringId.HOLD_ONTO_THE_GENERATOR_TO_ACTIVATE_THE_CHARGE_SKILL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON, }; + // Tasks + protected ScheduledFuture _socialTask; + protected ScheduledFuture _mobsSpawnTask; + protected ScheduledFuture _collapseTask; + protected ScheduledFuture _announceTask; + protected ScheduledFuture _announceProtect; + protected ScheduledFuture _skillCastTask; + protected ScheduledFuture _LynDracoTask; + protected ScheduledFuture _smallVortexesTask; + protected ScheduledFuture _bigVortexesTask; + protected NoSummonFriendZone _zoneLair; + protected GrandBoss _lindvior = null; + private GrandBoss _lindviorForSpawn = null; + protected Npc _lindviorfake = null; + protected Npc _dummyLindvior; + protected Npc _vortex = null; + protected Npc _lionel = null; + protected List _guardSpawn = new ArrayList<>(); + protected List _generatorSpawn = new ArrayList<>(); + protected List _monsterSpawn = new ArrayList<>(); + protected List _LinDracoSpawn = new ArrayList<>(); + protected int _activeMask = 0; + protected int _chargedMask = 0; + protected int _status = 0; + protected int _stage = 0; + protected final int[] _chargedValues = new int[] + { + 0, + 0, + 0, + 0 + }; public Lindvior() { @@ -331,13 +345,10 @@ public class Lindvior extends AbstractNpcAI } else if (percent <= 20) { - if (_status == 5) + if ((_status == 5) && (_smallVortexesTask != null)) { - if (_smallVortexesTask != null) - { - _smallVortexesTask.cancel(true); - _smallVortexesTask = null; - } + _smallVortexesTask.cancel(true); + _smallVortexesTask = null; } if (_lindvior != null) { @@ -347,7 +358,7 @@ public class Lindvior extends AbstractNpcAI return super.onAttack(npc, attacker, damage, isSummon); } - protected void Clean() + protected void clean() { _status = 0; if (_socialTask != null) @@ -413,7 +424,7 @@ public class Lindvior extends AbstractNpcAI { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); @@ -579,10 +590,7 @@ public class Lindvior extends AbstractNpcAI { player.sendPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, false)); cancelQuestTimers("NPC_SHOUT"); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED); - }); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ALL_4_GENERATORS_MUST_BE_ACTIVATED)); _announceProtect = ThreadPool.scheduleAtFixedRate(() -> _zoneLair.getPlayersInside().forEach(p -> player.sendPacket(new ExShowScreenMessage(NpcStringId.PROTECT_THE_GENERATOR, ExShowScreenMessage.TOP_CENTER, 7000, true))), 10000, 18000); _zoneLair.broadcastPacket(new SpecialCamera(_dummyLindvior, 3300, 200, 20, 11000, 10500, 0, 8, 1, 0, 0)); _dummyLindvior.setInvisible(true); @@ -696,22 +704,13 @@ public class Lindvior extends AbstractNpcAI } case "show_shield_animation": // zone broadcast shield event triger { - _zoneLair.getPlayersInside().forEach(p -> - { - p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true)); - }); - _guardSpawn.stream().forEach(guard -> - { - guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON); - }); + _zoneLair.getPlayersInside().forEach(p -> p.sendPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, true))); + _guardSpawn.stream().forEach(guard -> guard.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_GENERATOR_IS_CONNECTED_TO_THE_CANNON)); break; } case "show_movie": // zone broadcast Lindvior scene movie { - _zoneLair.getPlayersInside().forEach(p -> - { - playMovie(p, Movie.SC_LIND_OPENING); - }); + _zoneLair.getPlayersInside().forEach(p -> playMovie(p, Movie.SC_LIND_OPENING)); startQuestTimer("spawnDummyLindvior", 23200, null, null); break; } @@ -725,7 +724,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior2": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { addSpawn(NPC_ATTACKER_SMALL_VORTEX, loc, true); @@ -737,7 +735,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior3": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - spawnServitor(5, 2000, _lindvior.getLocation(), LINDVIOR_SERVITOR); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -750,14 +747,10 @@ public class Lindvior extends AbstractNpcAI case "lindvior4": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - - if (SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) + if ((SpawnTable.getInstance().getSpawns(NPC_ATTACKER_BIG_VORTEX) != null) && (_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) { - if ((_vortex != null) && (_vortex.getId() == NPC_ATTACKER_SMALL_VORTEX)) - { - _vortex.getSpawn().stopRespawn(); - _vortex.deleteMe(); - } + _vortex.getSpawn().stopRespawn(); + _vortex.deleteMe(); } _status = 4; break; @@ -765,7 +758,6 @@ public class Lindvior extends AbstractNpcAI case "lindvior5": { _mobsSpawnTask = ThreadPool.scheduleAtFixedRate(() -> spawnServitor(2, 1000, _lindvior.getLocation(), LINDVIOR_SERVITOR), 60000, 180000); - _bigVortexesTask = ThreadPool.schedule(() -> spawnServitor(1, 300, _lindvior.getLocation(), NPC_ATTACKER_BIG_VORTEX), 1000); for (Location loc : ATTACKER_SMALL_VORTEX_SPAWNS) { @@ -773,7 +765,7 @@ public class Lindvior extends AbstractNpcAI addSpawn(LINDVIOR_SERVITOR[4], loc, true); addSpawn(LINDVIOR_SERVITOR[3], loc, true); } - _collapseTask = ThreadPool.schedule(Lindvior.this::Clean, 600000); + _collapseTask = ThreadPool.schedule(Lindvior.this::clean, 600000); _status = 6; break; } @@ -854,8 +846,8 @@ public class Lindvior extends AbstractNpcAI _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } - _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(mob -> mob.deleteMe()); - ThreadPool.schedule(() -> npc.decayMe(), 10000); + _zoneLair.getCharactersInside().stream().filter(Creature::isNpc).forEach(Creature::deleteMe); + ThreadPool.schedule(npc::decayMe, 10000); _zoneLair.broadcastPacket(new OnEventTrigger(SECOND_STAGE_EVENT_TRIGGER, false)); _zoneLair.broadcastPacket(new OnEventTrigger(FIRST_STAGE_EVENT_TRIGGER, true)); _lionel.deleteMe(); @@ -870,7 +862,7 @@ public class Lindvior extends AbstractNpcAI else if (npc.getId() == NPC_GENERATOR) { _zoneLair.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_GENERATOR_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 5000, true)); - Clean(); + clean(); _collapseTask = ThreadPool.schedule(() -> Fail(false), 20000); } return super.onKill(npc, killer, isSummon); @@ -889,13 +881,10 @@ public class Lindvior extends AbstractNpcAI @Override public String onEnterZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (_collapseTask != null) { - if (_collapseTask != null) - { - _collapseTask.cancel(true); - _collapseTask = null; - } + _collapseTask.cancel(true); + _collapseTask = null; } return super.onEnterZone(character, zone); } @@ -903,12 +892,9 @@ public class Lindvior extends AbstractNpcAI @Override public String onExitZone(Creature character, ZoneType zone) { - if (zone.getId() == ZONE_ID) + if (zone.getPlayersInside().isEmpty()) { - if (zone.getPlayersInside().isEmpty()) - { - _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); - } + _collapseTask = ThreadPool.schedule(() -> Fail(true), 900000); } return super.onExitZone(character, zone); } @@ -916,13 +902,10 @@ public class Lindvior extends AbstractNpcAI @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { - if (event.equals("NPC_SHOUT")) + if (event.equals("NPC_SHOUT") && (npc != null) && !npc.isDead()) { - if ((npc != null) && !npc.isDead()) - { - npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); - getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); - } + npc.broadcastSay(ChatType.NPC_GENERAL, GUARD_MSG[getRandom(GUARD_MSG.length)]); + getTimers().addTimer("NPC_SHOUT", (10 + getRandom(5)) * 1000, npc, null); } } diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java index dc96077e74..73d5d88407 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Lindvior/Vortex.java @@ -135,38 +135,23 @@ public class Vortex extends AbstractNpcAI @Override public String onSpawn(Npc npc) { - switch (npc.getId()) - { - case SMALL_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - case BIG_VORTEX: - { - attackRandomTarget(npc); - npc.setRandomWalking(true); - npc.setRunning(); - break; - } - } + attackRandomTarget(npc); + npc.setRandomWalking(true); + npc.setRunning(); return super.onSpawn(npc); } private void attackRandomTarget(Npc npc) { final Collection players = World.getInstance().getVisibleObjects(npc, Player.class); + if ((players == null) || players.isEmpty()) { - if ((players == null) || players.isEmpty()) - { - return; - } - if (!players.isEmpty()) - { - addAttackPlayerDesire(npc, players.stream().findAny().get()); - } + return; + } + + if (!players.isEmpty()) + { + addAttackPlayerDesire(npc, players.stream().findAny().get()); } } diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java index a497518858..80dd650b89 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Octavis/OctavisWarzone.java @@ -531,12 +531,9 @@ public class OctavisWarzone extends AbstractInstance final Instance world = npc.getInstanceWorld(); if (isInInstance(world)) { - if (CommonUtil.contains(GLADIATORS, npc.getId())) - { - npc.setRandomWalking(false); - world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); - getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); - } + npc.setRandomWalking(false); + world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), true); + getTimers().addTimer("GLADIATOR_MOVING", 3000, npc, null); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 4bccb2f7a3..35cf6ec652 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -57,8 +57,6 @@ public class Orfen extends AbstractNpcAI private static final int ARIMA = 29326; private static final int ARIMUS = 29327; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -75,6 +73,8 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder HALLUCINATING_DUST = new SkillHolder(32494, 1); private static final SkillHolder ORFEN_RAGE = new SkillHolder(32495, 1); + private static Set _minions = ConcurrentHashMap.newKeySet(); + private Orfen() { final int[] mobs = diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 6a53394107..f617c76b11 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -47,6 +47,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -79,12 +85,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 70b00e60a6..ad18f4a959 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -101,18 +101,6 @@ public class Trasken extends AbstractNpcAI // Status private static final int ALIVE = 0; private static final int DEAD = 3; - // Others - protected double _hpTail; - protected double _hpTrasken; - private static Npc _tieTrasken; - private static Npc _trasken; - private static NoSummonFriendZone _zoneLair; - private static NoSummonFriendZone _zoneLair2; - private int _playersToEnter; - protected int _statusZone = 0; - protected ScheduledFuture _collapseTask; - protected AtomicInteger _killsTie = new AtomicInteger(0); - protected AtomicInteger _killsTradjan = new AtomicInteger(0); // Spawns private static final Location HEART_SPAWN = new Location(88292, -173758, -15965); private static final Location[] TIE_SPAWN = new Location[] @@ -291,6 +279,18 @@ public class Trasken extends AbstractNpcAI {81208, -182095, -9896} }; // @formatter:on + // Others + protected double _hpTail; + protected double _hpTrasken; + private static Npc _tieTrasken; + private static Npc _trasken; + private static NoSummonFriendZone _zoneLair; + private static NoSummonFriendZone _zoneLair2; + private int _playersToEnter; + protected int _statusZone = 0; + protected ScheduledFuture _collapseTask; + protected AtomicInteger _killsTie = new AtomicInteger(0); + protected AtomicInteger _killsTradjan = new AtomicInteger(0); public Trasken() { @@ -365,7 +365,7 @@ public class Trasken extends AbstractNpcAI } } - protected void Clean() + protected void clean() { _statusZone = 0; if (_collapseTask != null) @@ -391,11 +391,11 @@ public class Trasken extends AbstractNpcAI }); } - private void Fail(boolean clean) + private void fail(boolean clean) { if (clean) { - Clean(); + clean(); } _zoneLair.oustAllPlayers(); _zoneLair2.oustAllPlayers(); @@ -436,12 +436,12 @@ public class Trasken extends AbstractNpcAI final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100.0; if ((percent <= 30) && (_statusZone == 4)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 5; } if ((percent <= 40) && (_statusZone == 3)) { - TraskenStay(npc); + traskenStay(npc); _statusZone = 4; } if (getRandom(100) < 50) @@ -760,7 +760,7 @@ public class Trasken extends AbstractNpcAI } final int time = 540000; zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 540, 0, NpcStringId.TIME_LEFT))); - _collapseTask = ThreadPool.schedule(() -> Fail(true), time); + _collapseTask = ThreadPool.schedule(() -> fail(true), time); } return super.onEnterZone(creature, zone); } @@ -772,7 +772,7 @@ public class Trasken extends AbstractNpcAI { _collapseTask = ThreadPool.schedule(() -> { - Fail(true); + fail(true); for (int info : EVENT_TRIGGERS) { creature.broadcastPacket(new OnEventTrigger(info, false)); @@ -864,7 +864,7 @@ public class Trasken extends AbstractNpcAI } } - private void TraskenStay(Creature creature) + private void traskenStay(Creature creature) { creature.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_EARTH_WYRM_HAS_LOST_CONSCIOUSNESS, 5, 4600, true)); creature.doCast(SKILL_TRASKEN_BUFF.getSkill()); // 12 sec combo diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/bosses/Core/Core.java index 53ffcf6fc0..c7aa81c046 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -77,10 +77,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 2974ab28d0..3181fd8225 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -45,6 +45,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -77,12 +83,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/bosses/Core/Core.java index 53ffcf6fc0..c7aa81c046 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -77,10 +77,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java index 2974ab28d0..3181fd8225 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/bosses/QueenShyeed/QueenShyeed.java @@ -45,6 +45,12 @@ public class QueenShyeed extends AbstractNpcAI private static final EffectZone MOB_BUFF_DISPLAY_ZONE = ZoneManager.getInstance().getZoneById(200104, EffectZone.class); private static final EffectZone PC_BUFF_ZONE = ZoneManager.getInstance().getZoneById(200105, EffectZone.class); + private QueenShyeed() + { + addKillId(SHYEED); + spawnShyeed(); + } + @Override public String onAdvEvent(String event, Npc npc, Player player) { @@ -77,12 +83,6 @@ public class QueenShyeed extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - private QueenShyeed() - { - addKillId(SHYEED); - spawnShyeed(); - } - private void spawnShyeed() { final long respawn = GlobalVariablesManager.getInstance().getLong("QueenShyeedRespawn", 0); diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/instances/FinalEmperialTomb/ScarletVanHalisha.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/instances/FinalEmperialTomb/ScarletVanHalisha.java index 86475db31a..3b273d46ea 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/instances/FinalEmperialTomb/ScarletVanHalisha.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/instances/FinalEmperialTomb/ScarletVanHalisha.java @@ -42,15 +42,15 @@ import ai.AbstractNpcAI; */ public class ScarletVanHalisha extends AbstractNpcAI { + // NPCs + private static final int HALISHA2 = 29046; + private static final int HALISHA3 = 29047; + private Creature _target; private Skill _skill; private long _lastRangedSkillTime; private final int _rangedSkillMinCoolTime = 60000; // 1 minute - // NPCs - private static final int HALISHA2 = 29046; - private static final int HALISHA3 = 29047; - public ScarletVanHalisha() { addAttackId(HALISHA2, HALISHA3); diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 6adeabbb66..fb1a6a6fa3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 6adeabbb66..fb1a6a6fa3 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java index d7e72bdc62..9aa1b17dde 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java @@ -21,6 +21,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_FOLLOW; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; import java.util.ArrayList; +import java.util.List; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.SkillData; @@ -48,10 +49,10 @@ public class ScarletVanHalisha extends AbstractNpcAI private static final int FRINTEZZA_DAEMON_MORPH = 5018; private static final int FRINTEZZA_DAEMON_FIELD = 5019; // Misc + private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute private Creature _target; private Skill _skill; private long _lastRangedSkillTime; - private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute public ScarletVanHalisha() { @@ -170,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -187,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -211,49 +213,48 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { - final ArrayList result = new ArrayList<>(); + final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; - } - - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) - { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) + case FRINTEZZA_DAEMON_ATTACK: { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; } } + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { result.add(obj); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 6adeabbb66..fb1a6a6fa3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java index d7e72bdc62..9aa1b17dde 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java @@ -21,6 +21,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_FOLLOW; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; import java.util.ArrayList; +import java.util.List; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.SkillData; @@ -48,10 +49,10 @@ public class ScarletVanHalisha extends AbstractNpcAI private static final int FRINTEZZA_DAEMON_MORPH = 5018; private static final int FRINTEZZA_DAEMON_FIELD = 5019; // Misc + private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute private Creature _target; private Skill _skill; private long _lastRangedSkillTime; - private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute public ScarletVanHalisha() { @@ -170,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -187,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -211,49 +213,48 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { - final ArrayList result = new ArrayList<>(); + final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; - } - - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) - { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) + case FRINTEZZA_DAEMON_ATTACK: { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; } } + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { result.add(obj); diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java index f17f99ae6f..8473c9a15c 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Frintezza/LastImperialTomb.java @@ -825,12 +825,13 @@ public class LastImperialTomb extends AbstractInstance private void playRandomSong(Instance world) { - final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final boolean isPlayingSong = world.getParameters().getBoolean("isPlayingSong"); if (isPlayingSong) { return; } + + final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); world.setParameter("isPlayingSong", true); final int random = getRandom(1, 5); final SkillHolder skill = new SkillHolder(5007, random); diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java index 3238212bf3..cb9368e085 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Frintezza/ScarletVanHalisha.java @@ -26,11 +26,9 @@ import java.util.List; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.geoengine.GeoEngine; -import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; -import org.l2jmobius.gameserver.model.actor.instance.Decoy; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.util.Util; @@ -51,10 +49,10 @@ public class ScarletVanHalisha extends AbstractNpcAI private static final int FRINTEZZA_DAEMON_MORPH = 5018; private static final int FRINTEZZA_DAEMON_FIELD = 5019; // Misc + private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute private Creature _target; private Skill _skill; private long _lastRangedSkillTime; - private final int _rangedSkillMinCoolTime = 60000; // 1 minute public ScarletVanHalisha() { @@ -69,7 +67,7 @@ public class ScarletVanHalisha extends AbstractNpcAI { switch (event) { - case "attack": + case "ATTACK": { if (npc != null) { @@ -77,7 +75,7 @@ public class ScarletVanHalisha extends AbstractNpcAI } break; } - case "random_target": + case "RANDOM_TARGET": { _target = getRandomTarget(npc, null); break; @@ -96,16 +94,16 @@ public class ScarletVanHalisha extends AbstractNpcAI @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { - startQuestTimer("random_Target", 5000, npc, null, true); - startQuestTimer("attack", 500, npc, null, true); + startQuestTimer("RANDOM_TARGET", 5000, npc, null, true); + startQuestTimer("ATTACK", 500, npc, null, true); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { - cancelQuestTimers("attack"); - cancelQuestTimers("random_Target"); + cancelQuestTimers("ATTACK"); + cancelQuestTimers("RANDOM_TARGET"); return super.onKill(npc, killer, isSummon); } @@ -146,11 +144,11 @@ public class ScarletVanHalisha extends AbstractNpcAI { return SkillData.getInstance().getSkill(FRINTEZZA_DAEMON_CHARGE, 2); } - else if (((_lastRangedSkillTime + _rangedSkillMinCoolTime) < Chronos.currentTimeMillis()) && (getRandom(100) < 10)) + else if (((_lastRangedSkillTime + RANGED_SKILL_MIN_COOLTIME) < Chronos.currentTimeMillis()) && (getRandom(100) < 10)) { return SkillData.getInstance().getSkill(FRINTEZZA_DAEMON_FIELD, 1); } - else if (((_lastRangedSkillTime + _rangedSkillMinCoolTime) < Chronos.currentTimeMillis()) && (getRandom(100) < 10)) + else if (((_lastRangedSkillTime + RANGED_SKILL_MIN_COOLTIME) < Chronos.currentTimeMillis()) && (getRandom(100) < 10)) { return SkillData.getInstance().getSkill(FRINTEZZA_DAEMON_MORPH, 1); } @@ -173,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -190,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -215,65 +214,54 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (WorldObject obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayable() || (obj instanceof Decoy)) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + case FRINTEZZA_DAEMON_ATTACK: { - continue; + skillRange = 150; + break; } - - if (((((Creature) obj).getZ() < (npc.getZ() - 100)) && (((Creature) obj).getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + case FRINTEZZA_DAEMON_CHARGE: { - continue; + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; } } - if (obj.isPlayable() || (obj instanceof Decoy)) + + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) - { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } - } - } - if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) - { - result.add((Creature) obj); - } + result.add(obj); } } } - if (!result.isEmpty() && (result.size() != 0)) - { - final Object[] characters = result.toArray(); - return (Creature) characters[getRandom(characters.length)]; - } - return null; + return getRandomEntry(result); } public static void main(String[] args) diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 61230547ce..627cc875eb 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 6adeabbb66..fb1a6a6fa3 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java index d7e72bdc62..9aa1b17dde 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java @@ -21,6 +21,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_FOLLOW; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; import java.util.ArrayList; +import java.util.List; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.SkillData; @@ -48,10 +49,10 @@ public class ScarletVanHalisha extends AbstractNpcAI private static final int FRINTEZZA_DAEMON_MORPH = 5018; private static final int FRINTEZZA_DAEMON_FIELD = 5019; // Misc + private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute private Creature _target; private Skill _skill; private long _lastRangedSkillTime; - private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute public ScarletVanHalisha() { @@ -170,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -187,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -211,49 +213,48 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { - final ArrayList result = new ArrayList<>(); + final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; - } - - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) - { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) + case FRINTEZZA_DAEMON_ATTACK: { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; } } + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { result.add(obj); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 6adeabbb66..fb1a6a6fa3 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java index d7e72bdc62..9aa1b17dde 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java @@ -21,6 +21,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_FOLLOW; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; import java.util.ArrayList; +import java.util.List; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.SkillData; @@ -48,10 +49,10 @@ public class ScarletVanHalisha extends AbstractNpcAI private static final int FRINTEZZA_DAEMON_MORPH = 5018; private static final int FRINTEZZA_DAEMON_FIELD = 5019; // Misc + private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute private Creature _target; private Skill _skill; private long _lastRangedSkillTime; - private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute public ScarletVanHalisha() { @@ -170,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -187,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -211,49 +213,48 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { - final ArrayList result = new ArrayList<>(); + final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; - } - - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) - { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) + case FRINTEZZA_DAEMON_ATTACK: { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; } } + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { result.add(obj); diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/ai/bosses/Core/Core.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/ai/bosses/Core/Core.java index 8e28ef68b0..4965abc89b 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/ai/bosses/Core/Core.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/ai/bosses/Core/Core.java @@ -76,10 +76,8 @@ public class Core extends AbstractNpcAI // Misc private static final byte ALIVE = 0; private static final byte DEAD = 1; - - private static boolean _firstAttacked; - private static final Collection _minions = ConcurrentHashMap.newKeySet(); + private static boolean _firstAttacked; private Core() { diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index e35f0d993f..5f2475fd42 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -71,10 +71,6 @@ public class Orfen extends AbstractNpcAI // private static final int RIBA = 29017; private static final int RIBA_IREN = 29018; - private static boolean _IsTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType ZONE; - private static final byte ALIVE = 0; private static final byte DEAD = 1; @@ -82,6 +78,10 @@ public class Orfen extends AbstractNpcAI private static final SkillHolder BLOW = new SkillHolder(4067, 4); private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); + private static boolean _isTeleported; + private static Set _minions = ConcurrentHashMap.newKeySet(); + private static ZoneType _zone; + private Orfen() { final int[] mobs = @@ -91,8 +91,8 @@ public class Orfen extends AbstractNpcAI RIBA_IREN }; registerMobs(mobs); - _IsTeleported = false; - ZONE = ZoneManager.getInstance().getZoneById(12013); + _isTeleported = false; + _zone = ZoneManager.getInstance().getZoneById(12013); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getBossStatus(ORFEN); if (status == DEAD) @@ -199,12 +199,12 @@ public class Orfen extends AbstractNpcAI } else if (event.equalsIgnoreCase("check_orfen_pos")) { - if ((_IsTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!ZONE.isInsideZone(npc) && !_IsTeleported)) + if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) { setSpawnPoint(npc, getRandom(3) + 1); - _IsTeleported = false; + _isTeleported = false; } - else if (_IsTeleported && !ZONE.isInsideZone(npc)) + else if (_isTeleported && !_zone.isInsideZone(npc)) { setSpawnPoint(npc, 0); } @@ -292,9 +292,9 @@ public class Orfen extends AbstractNpcAI final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_IsTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) + if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) { - _IsTeleported = true; + _isTeleported = true; setSpawnPoint(npc, 0); } else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java index d7e72bdc62..9aa1b17dde 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/instances/LastImperialTomb/ScarletVanHalisha.java @@ -21,6 +21,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_FOLLOW; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; import java.util.ArrayList; +import java.util.List; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.SkillData; @@ -48,10 +49,10 @@ public class ScarletVanHalisha extends AbstractNpcAI private static final int FRINTEZZA_DAEMON_MORPH = 5018; private static final int FRINTEZZA_DAEMON_FIELD = 5019; // Misc + private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute private Creature _target; private Skill _skill; private long _lastRangedSkillTime; - private static final int RANGED_SKILL_MIN_COOLTIME = 60000; // 1 minute public ScarletVanHalisha() { @@ -170,12 +171,12 @@ public class ScarletVanHalisha extends AbstractNpcAI { return; } + if ((getRandom(100) < 30) || (_target == null) || _target.isDead()) { _skill = getRndSkills(npc); _target = getRandomTarget(npc, _skill); } - final Creature target = _target; Skill skill = _skill; if (skill == null) { @@ -187,6 +188,7 @@ public class ScarletVanHalisha extends AbstractNpcAI return; } + final Creature target = _target; if ((target == null) || target.isDead()) { // npc.setCastingNow(false); @@ -211,49 +213,48 @@ public class ScarletVanHalisha extends AbstractNpcAI private Creature getRandomTarget(Npc npc, Skill skill) { - final ArrayList result = new ArrayList<>(); + final List result = new ArrayList<>(); + for (Player obj : npc.getInstanceWorld().getPlayers()) { - for (Player obj : npc.getInstanceWorld().getPlayers()) + if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) { - if (obj.isPlayer() && obj.getActingPlayer().isInvisible()) + continue; + } + + if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) + { + continue; + } + + int skillRange = 150; + if (skill != null) + { + switch (skill.getId()) { - continue; - } - - if (((obj.getZ() < (npc.getZ() - 100)) && (obj.getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc)) - { - continue; - } - - int skillRange = 150; - if (skill != null) - { - switch (skill.getId()) + case FRINTEZZA_DAEMON_ATTACK: { - case FRINTEZZA_DAEMON_ATTACK: - { - skillRange = 150; - break; - } - case FRINTEZZA_DAEMON_CHARGE: - { - skillRange = 400; - break; - } - case YOKE_OF_SCARLET: - { - skillRange = 200; - break; - } - case FRINTEZZA_DAEMON_MORPH: - case FRINTEZZA_DAEMON_FIELD: - { - _lastRangedSkillTime = Chronos.currentTimeMillis(); - skillRange = 550; - break; - } + skillRange = 150; + break; + } + case FRINTEZZA_DAEMON_CHARGE: + { + skillRange = 400; + break; + } + case YOKE_OF_SCARLET: + { + skillRange = 200; + break; + } + case FRINTEZZA_DAEMON_MORPH: + case FRINTEZZA_DAEMON_FIELD: + { + _lastRangedSkillTime = Chronos.currentTimeMillis(); + skillRange = 550; + break; } } + if (Util.checkIfInRange(skillRange, npc, obj, true) && !((Creature) obj).isDead()) { result.add(obj);