diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/LairOfAntharas.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/LairOfAntharas.java index a5a9c1ddfa2de9ab89c5c452f73b3783f904851e..ad40d3e853cc3b8aa140b569561f3a72ebab5474 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/LairOfAntharas.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/LairOfAntharas.java @@ -18,6 +18,8 @@ */ package ai.group_template; +import java.util.Arrays; + import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.datatables.SpawnTable; @@ -27,7 +29,7 @@ import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.network.NpcStringId; import com.l2jserver.gameserver.network.clientpackets.Say2; -import com.l2jserver.gameserver.network.serverpackets.NpcSay; +import com.l2jserver.gameserver.network.serverpackets.ValidateLocation; /** * Lair of Antharas AI. @@ -41,6 +43,8 @@ public final class LairOfAntharas extends AbstractNpcAI final private static int DRAGON_KNIGHT2 = 22845; final private static int ELITE_DRAGON_KNIGHT = 22846; + final private static int DRAGON_GUARD = 22852; + final private static int DRAGON_MAGE = 22853; // Misc final private static int KNIGHT_CHANCE = 30; final private static int KNORIKS_CHANCE = 60; @@ -49,19 +53,36 @@ public final class LairOfAntharas extends AbstractNpcAI private LairOfAntharas() { super(LairOfAntharas.class.getSimpleName(), "ai/group_template"); - addKillId(DRAGON_KNIGHT, DRAGON_KNIGHT2); - addSpawnId(DRAGON_KNIGHT, DRAGON_KNIGHT2); + addKillId(DRAGON_KNIGHT, DRAGON_KNIGHT2, DRAGON_GUARD, DRAGON_MAGE); + addSpawnId(DRAGON_KNIGHT, DRAGON_KNIGHT2, DRAGON_GUARD, DRAGON_MAGE); + addMoveFinishedId(DRAGON_GUARD, DRAGON_MAGE); addAggroRangeEnterId(KNORIKS); - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(DRAGON_KNIGHT)) + for (int npcId : Arrays.asList(DRAGON_KNIGHT, DRAGON_KNIGHT2, DRAGON_GUARD, DRAGON_MAGE)) { - onSpawn(spawn.getLastSpawn()); + for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) + { + onSpawn(spawn.getLastSpawn()); + } } - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(DRAGON_KNIGHT2)) + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + if (event.equals("CHECK_HOME") && (npc != null) && !npc.isDead()) { - onSpawn(spawn.getLastSpawn()); + if ((npc.calculateDistance(npc.getSpawn().getLocation(), false, false) > 10) && !npc.isInCombat()) + { + ((L2Attackable) npc).returnHome(); + } + else if ((npc.getHeading() != npc.getSpawn().getHeading()) && !npc.isInCombat()) + { + npc.setHeading(npc.getSpawn().getHeading()); + npc.broadcastPacket(new ValidateLocation(npc)); + } } + return super.onAdvEvent(event, npc, player); } @Override @@ -73,7 +94,7 @@ public final class LairOfAntharas extends AbstractNpcAI { npc.setScriptValue(1); } - npc.broadcastPacket(new NpcSay(npc.getObjectId(), Say2.NPC_SHOUT, npc.getId(), NpcStringId.WHOS_THERE_IF_YOU_DISTURB_THE_TEMPER_OF_THE_GREAT_LAND_DRAGON_ANTHARAS_I_WILL_NEVER_FORGIVE_YOU), 1000); + broadcastNpcSay(npc, Say2.NPC_SHOUT, NpcStringId.WHOS_THERE_IF_YOU_DISTURB_THE_TEMPER_OF_THE_GREAT_LAND_DRAGON_ANTHARAS_I_WILL_NEVER_FORGIVE_YOU); } return super.onAggroRangeEnter(npc, player, isSummon); } @@ -87,9 +108,9 @@ public final class LairOfAntharas extends AbstractNpcAI { if (getRandom(100) > KNIGHT_CHANCE) { - final L2Attackable newKnight = (L2Attackable) addSpawn(DRAGON_KNIGHT2, npc.getX(), npc.getY(), npc.getZ(), npc.getHeading(), false, 0, true); + final L2Attackable newKnight = (L2Attackable) addSpawn(DRAGON_KNIGHT2, npc.getLocation(), false, 0, true); npc.deleteMe(); - newKnight.broadcastPacket(new NpcSay(newKnight.getObjectId(), Say2.NPC_SHOUT, DRAGON_KNIGHT2, NpcStringId.THOSE_WHO_SET_FOOT_IN_THIS_PLACE_SHALL_NOT_LEAVE_ALIVE)); + broadcastNpcSay(newKnight, Say2.NPC_SHOUT, NpcStringId.THOSE_WHO_SET_FOOT_IN_THIS_PLACE_SHALL_NOT_LEAVE_ALIVE); attackPlayer(newKnight, killer); } break; @@ -98,13 +119,19 @@ public final class LairOfAntharas extends AbstractNpcAI { if (getRandom(100) > KNIGHT_CHANCE) { - final L2Attackable eliteKnight = (L2Attackable) addSpawn(ELITE_DRAGON_KNIGHT, npc.getX(), npc.getY(), npc.getZ(), npc.getHeading(), false, 0, true); + final L2Attackable eliteKnight = (L2Attackable) addSpawn(ELITE_DRAGON_KNIGHT, npc.getLocation(), false, 0, true); npc.deleteMe(); - eliteKnight.broadcastPacket(new NpcSay(eliteKnight.getObjectId(), Say2.NPC_SHOUT, DRAGON_KNIGHT2, NpcStringId.IF_YOU_WISH_TO_SEE_HELL_I_WILL_GRANT_YOU_YOUR_WISH)); + broadcastNpcSay(eliteKnight, Say2.NPC_SHOUT, NpcStringId.IF_YOU_WISH_TO_SEE_HELL_I_WILL_GRANT_YOU_YOUR_WISH); attackPlayer(eliteKnight, killer); } break; } + case DRAGON_GUARD: + case DRAGON_MAGE: + { + cancelQuestTimer("CHECK_HOME", npc, null); + break; + } } return super.onKill(npc, killer, isSummon); } @@ -112,7 +139,13 @@ public final class LairOfAntharas extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - ((L2Attackable) npc).setOnKillDelay(0); + final L2Attackable mob = (L2Attackable) npc; + mob.setOnKillDelay(0); + if ((npc.getId() == DRAGON_GUARD) || (npc.getId() == DRAGON_MAGE)) + { + mob.setIsNoRndWalk(true); + startQuestTimer("CHECK_HOME", 10000, npc, null, true); + } return super.onSpawn(npc); } diff --git a/L2J_DataPack_BETA/dist/sql/game/grandboss_data.sql b/L2J_DataPack_BETA/dist/sql/game/grandboss_data.sql index b70c528ae4eb604c669f0822f7de2216b760c4e2..ebd683410eedd41ea5cc21458a83245015c9c619 100644 --- a/L2J_DataPack_BETA/dist/sql/game/grandboss_data.sql +++ b/L2J_DataPack_BETA/dist/sql/game/grandboss_data.sql @@ -15,7 +15,7 @@ INSERT IGNORE INTO `grandboss_data` (`boss_id`,`loc_x`,`loc_y`,`loc_z`,`heading` (29001, -21610, 181594, -5734, 0, 229898.48, 667.776), -- Queen Ant (40) (29006, 17726, 108915, -6480, 0, 622493.58388, 3793.536), -- Core (50) (29014, 55024, 17368, -5412, 10126, 622493.58388, 3793.536), -- Orfen (50) -(29019, 185708, 114298, -8221, 32768, 17850000, 39960), -- Antharas (79) +-- (29019, 185708, 114298, -8221, 32768, 17850000, 39960), -- Antharas (79) (29020, 116033, 17447, 10107, -25348, 4068372, 39960), -- Baium (75) (29022, 55312, 219168, -3223, 0, 858518.36, 399600), -- Zaken (60) -- (29025, 0, 0, 0, 0, 0, 0), -- Baium (Stone) (75) diff --git a/L2J_DataPack_BETA/dist/sql/game/spawnlist.sql b/L2J_DataPack_BETA/dist/sql/game/spawnlist.sql index 6596be0a3bc054f00a217c77e36248daddf058b9..02fa51436553d6ee5d8486ff83f07c0d02a19ef7 100644 --- a/L2J_DataPack_BETA/dist/sql/game/spawnlist.sql +++ b/L2J_DataPack_BETA/dist/sql/game/spawnlist.sql @@ -40335,51 +40335,63 @@ INSERT INTO `spawnlist` VALUES ("lair_of_antharas", 1, 22851, 152016, 120566, -3808, 0, 0, 60212, 60, 0, 0, 0), ("lair_of_antharas", 1, 22851, 152264, 119512, -3784, 0, 0, 0, 60, 0, 0, 0), -- Dragon Guard -("lair_of_antharas", 1, 22852, 146892, 118405, -4000, 0, 0, 25946, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 147112, 118679, -4096, 0, 0, 27291, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 147120, 118835, -4136, 0, 0, 61839, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 147182, 118894, -4160, 0, 0, 62659, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 147414, 121076, -4760, 0, 0, 33297, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 147453, 120989, -4752, 0, 0, 28332, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 147546, 120885, -4760, 0, 0, 56939, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 147610, 120941, -4776, 0, 0, 60732, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151068, 117883, -5104, 0, 0, 3093, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151112, 117840, -5120, 0, 0, 18958, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151113, 117893, -5112, 0, 0, 20640, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151125, 117907, -5112, 0, 0, 22400, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151783, 117126, -5240, 0, 0, 40262, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151844, 117065, -5240, 0, 0, 47375, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151851, 117171, -5240, 0, 0, 7073, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151929, 113687, -5512, 0, 0, 3257, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 151945, 117471, -5240, 0, 0, 62371, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 152022, 117519, -5240, 0, 0, 8241, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 152023, 113576, -5512, 0, 0, 60374, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 152041, 113469, -5512, 0, 0, 64961, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 152088, 113644, -5512, 0, 0, 37210, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 152168, 113886, -5520, 0, 0, 31986, 60, 0, 0, 0), -("lair_of_antharas", 1, 22852, 152298, 113600, -5520, 0, 0, 58776, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151843, 113844, -5525, 0, 0, 51155, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151917, 113885, -5525, 0, 0, 52265, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 152001, 113926, -5525, 0, 0, 52887, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 152082, 113970, -5525, 0, 0, 54223, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 152155, 114031, -5525, 0, 0, 54660, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151046, 118019, -5093, 0, 0, 26279, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 150968, 117927, -5087, 0, 0, 26026, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151047, 117875, -5111, 0, 0, 26419, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151122, 117966, -5115, 0, 0, 26126, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 146603, 118115, -3926, 0, 0, 41033, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 146654, 118052, -3927, 0, 0, 41386, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 146734, 117999, -3918, 0, 0, 43039, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 147558, 121026, -4775, 0, 0, 40959, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 147494, 121094, -4770, 0, 0, 40697, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 147435, 121161, -4769, 0, 0, 40543, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 147366, 121219, -4764, 0, 0, 40959, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 147296, 121272, -4760, 0, 0, 44159, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151661, 117284, -5246, 0, 0, 24429, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151719, 117326, -5246, 0, 0, 20971, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151779, 117373, -5244, 0, 0, 25760, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151819, 117431, -5242, 0, 0, 27068, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151865, 117491, -5245, 0, 0, 25846, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151914, 117551, -5245, 0, 0, 27250, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 151955, 117603, -5246, 0, 0, 27242, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 152228, 114070, -5525, 0, 0, 51353, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 146550, 118149, -3932, 0, 0, 41760, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 146472, 118188, -3933, 0, 0, 39630, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 147602, 120972, -4778, 0, 0, 38713, 60, 0, 0, 0), +("lair_of_antharas", 1, 22852, 147636, 120937, -4780, 0, 0, 38901, 60, 0, 0, 0), -- Dragon Mage -("lair_of_antharas", 1, 22853, 146902, 118790, -4104, 0, 0, 4738, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 146949, 119078, -4200, 0, 0, 35085, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 146965, 119054, -4192, 0, 0, 1471, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 147202, 118965, -4184, 0, 0, 64387, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 147403, 121108, -4760, 0, 0, 18116, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 147429, 120801, -4728, 0, 0, 59827, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 147474, 120965, -4752, 0, 0, 34766, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 147517, 120953, -4760, 0, 0, 52308, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 151082, 117849, -5112, 0, 0, 8196, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 151138, 117897, -5120, 0, 0, 49479, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 151794, 113563, -5520, 0, 0, 1148, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 151826, 117220, -5240, 0, 0, 7497, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 151845, 117268, -5240, 0, 0, 1975, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 151917, 117342, -5240, 0, 0, 13441, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 151939, 113713, -5520, 0, 0, 12745, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 151959, 117312, -5240, 0, 0, 13331, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 152016, 113748, -5520, 0, 0, 27092, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 152032, 117336, -5240, 0, 0, 11936, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 152075, 113725, -5512, 0, 0, 3779, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 152122, 113634, -5504, 0, 0, 34529, 60, 0, 0, 0), -("lair_of_antharas", 1, 22853, 152417, 113914, -5520, 0, 0, 13416, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 147658, 121024, -4786, 0, 0, 38327, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 147710, 120993, -4786, 0, 0, 39815, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151802, 113922, -5525, 0, 0, 52637, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151877, 113970, -5525, 0, 0, 53495, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151956, 113993, -5525, 0, 0, 54465, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 152042, 114044, -5525, 0, 0, 52663, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151188, 117934, -5133, 0, 0, 26473, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151111, 117829, -5127, 0, 0, 26586, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 146647, 118172, -3937, 0, 0, 41095, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 146699, 118110, -3934, 0, 0, 40674, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 146771, 118053, -3932, 0, 0, 40600, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 147316, 121323, -4771, 0, 0, 40959, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 147413, 121281, -4777, 0, 0, 41714, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 147491, 121225, -4775, 0, 0, 40347, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 147562, 121161, -4778, 0, 0, 40393, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 147621, 121101, -4784, 0, 0, 39620, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151739, 117208, -5245, 0, 0, 24488, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151788, 117245, -5245, 0, 0, 23438, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151853, 117302, -5245, 0, 0, 22896, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151922, 117371, -5245, 0, 0, 27986, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 151961, 117429, -5245, 0, 0, 25097, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 152008, 117494, -5245, 0, 0, 26389, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 152058, 117544, -5245, 0, 0, 26728, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 152111, 114082, -5525, 0, 0, 54679, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 152186, 114136, -5525, 0, 0, 56350, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 146598, 118210, -3945, 0, 0, 43240, 60, 0, 0, 0), +("lair_of_antharas", 1, 22853, 146541, 118226, -3946, 0, 0, 40959, 60, 0, 0, 0), -- Bloody Karik ("lair_of_antharas", 1, 22854, 148373, 121648, -4864, 0, 0, 30711, 60, 0, 0, 0), ("lair_of_antharas", 1, 22854, 148436, 115123, -5472, 0, 0, 63664, 60, 0, 0, 0), @@ -45737,7 +45749,7 @@ INSERT INTO `spawnlist` VALUES ("aden10_2420_20", 1, 20645, 165796, 81166, -2046, 0, 0, 10525, 23, 0, 0, 0), ("aden10_2420_20", 1, 20645, 165993, 88314, -2370, 0, 0, 12693, 23, 0, 0, 0); ----- Altars of Sacrifice +-- Altars of Sacrifice INSERT INTO `spawnlist` VALUES -- TalkingIsland ("unset", 1, 4327, -92545, 244590, -3547, 0, 0, 12868, 0, 0, 0, 0),