diff --git a/L2J_DataPack/dist/game/data/scripts/ai/individual/Baium/Baium.java b/L2J_DataPack/dist/game/data/scripts/ai/individual/Baium/Baium.java index b3331294e483d300231baee3cae692d47d18c6f3..5ef71d3e0df5689ed3519aadc63201e50864d7b2 100644 --- a/L2J_DataPack/dist/game/data/scripts/ai/individual/Baium/Baium.java +++ b/L2J_DataPack/dist/game/data/scripts/ai/individual/Baium/Baium.java @@ -100,7 +100,6 @@ public final class Baium extends AbstractNpcAI // Misc private L2GrandBossInstance _baium = null; private static long _lastAttack = 0; - private static L2PcInstance _standbyPlayer = null; private Baium() { @@ -213,6 +212,7 @@ public final class Baium extends AbstractNpcAI _lastAttack = System.currentTimeMillis(); startQuestTimer("WAKEUP_ACTION", 50, _baium, null); startQuestTimer("MANAGE_EARTHQUAKE", 2000, _baium, null); + startQuestTimer("SOCIAL_ACTION", 10000, _baium, player); startQuestTimer("CHECK_ATTACK", 60000, _baium, null); } break; @@ -231,7 +231,6 @@ public final class Baium extends AbstractNpcAI { zone.broadcastPacket(new Earthquake(npc.getX(), npc.getY(), npc.getZ(), 40, 10)); zone.broadcastPacket(new PlaySound("BS02_A")); - startQuestTimer("SOCIAL_ACTION", 8000, npc, player); } break; } @@ -253,10 +252,18 @@ public final class Baium extends AbstractNpcAI player.teleToLocation(BAIUM_GIFT_LOC); startQuestTimer("PLAYER_KILL", 3000, npc, player); } - else if ((_standbyPlayer != null) && _standbyPlayer.isInsideRadius(npc, 16000, true, false)) + else { - _standbyPlayer.teleToLocation(BAIUM_GIFT_LOC); - startQuestTimer("PLAYER_KILL", 3000, npc, _standbyPlayer); + L2PcInstance randomPlayer = getRandomPlayer(npc); + if (randomPlayer != null) + { + randomPlayer.teleToLocation(BAIUM_GIFT_LOC); + startQuestTimer("PLAYER_KILL", 3000, npc, randomPlayer); + } + else + { + startQuestTimer("PLAYER_KILL", 3000, npc, null); + } } } break; @@ -266,20 +273,20 @@ public final class Baium extends AbstractNpcAI if ((player != null) && player.isInsideRadius(npc, 16000, true, false)) { zone.broadcastPacket(new SocialAction(npc.getObjectId(), 1)); - broadcastNpcSay(npc, Say2.NPC_ALL, player.getName() + ", How dare you wake me! Now you shall die!"); // TODO: replace with NpcStringId when are done core support + broadcastNpcSay(npc, Say2.NPC_ALL, NpcStringId.HOW_DARE_YOU_WAKE_ME_NOW_YOU_SHALL_DIE, player.getName()); npc.setTarget(player); npc.doCast(BAIUM_PRESENT.getSkill()); } - for (L2PcInstance players : zone.getPlayersInside()) + for (L2PcInstance insidePlayer : zone.getPlayersInside()) { - if (players.isHero()) + if (insidePlayer.isHero()) { - zone.broadcastPacket(new ExShowScreenMessage(NpcStringId.NOT_EVEN_THE_GODS_THEMSELVES_COULD_TOUCH_ME_BUT_YOU_S1_YOU_DARE_CHALLENGE_ME_IGNORANT_MORTAL, 2, 4000, players.getName())); + zone.broadcastPacket(new ExShowScreenMessage(NpcStringId.NOT_EVEN_THE_GODS_THEMSELVES_COULD_TOUCH_ME_BUT_YOU_S1_YOU_DARE_CHALLENGE_ME_IGNORANT_MORTAL, 2, 4000, insidePlayer.getName())); break; } } - startQuestTimer("SPAWN_ARCHANGEL", 8000, npc, null); + startQuestTimer("SPAWN_ARCHANGEL", 8000, npc, player); break; } case "SPAWN_ARCHANGEL": @@ -296,19 +303,12 @@ public final class Baium extends AbstractNpcAI { addAttackPlayerDesire(npc, player); } - else if ((_standbyPlayer != null) && !_standbyPlayer.isDead()) - { - addAttackPlayerDesire(npc, _standbyPlayer); - } else { - for (L2Character creature : npc.getKnownList().getKnownCharactersInRadius(2000)) + L2PcInstance randomPlayer = getRandomPlayer(npc); + if (randomPlayer != null) { - if ((creature != null) && creature.isPlayer() && zone.isInsideZone(creature) && !creature.isDead()) - { - addAttackPlayerDesire(npc, (L2Playable) creature); - break; - } + addAttackPlayerDesire(npc, randomPlayer); } } break; @@ -377,6 +377,7 @@ public final class Baium extends AbstractNpcAI { if ((npc != null) && ((_lastAttack + 1800000) < System.currentTimeMillis())) { + cancelQuestTimers("SELECT_TARGET"); notifyEvent("CLEAR_ZONE", null, null); addSpawn(BAIUM_STONE, BAIUM_LOC, false, 0); setStatus(ALIVE); @@ -560,6 +561,7 @@ public final class Baium extends AbstractNpcAI startQuestTimer("CLEAR_STATUS", respawnTime, null, null); startQuestTimer("CLEAR_ZONE", 900000, null, null); cancelQuestTimer("CHECK_ATTACK", npc, null); + cancelQuestTimers("SELECT_TARGET"); } return super.onKill(npc, killer, isSummon); } @@ -572,11 +574,6 @@ public final class Baium extends AbstractNpcAI return super.onSeeCreature(npc, creature, isSummon); } - if (creature.isPlayer() && !creature.isDead() && (_standbyPlayer == null)) - { - _standbyPlayer = (L2PcInstance) creature; - } - if (creature.isInCategory(CategoryType.CLERIC_GROUP)) { if (npc.getCurrentHp() < (npc.getMaxHp() * 0.25)) @@ -785,6 +782,18 @@ public final class Baium extends AbstractNpcAI } } + private L2PcInstance getRandomPlayer(L2Npc npc) + { + for (L2Character creature : npc.getKnownList().getKnownCharactersInRadius(2000)) + { + if ((creature != null) && creature.isPlayer() && zone.isInsideZone(creature) && !creature.isDead()) + { + return (L2PcInstance) creature; + } + } + return null; + } + public static void main(String[] args) { new Baium();