diff --git a/pom.xml b/pom.xml index 431ad8626d9cb6d4288b7991c950054d6342509d..3d571a493242d9db9c415c160920198f4d7b258e 100644 --- a/pom.xml +++ b/pom.xml @@ -2,23 +2,23 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.l2jserver</groupId> - <artifactId>l2j-server-datapack</artifactId> - <version>2.6.1.0-SNAPSHOT</version> + <artifactId>l2j-server-datapack</artifactId> + <version>2.6.2.0-SNAPSHOT</version> <name>L2J DataPack</name> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <slf4j.version>1.7.28</slf4j.version> + <slf4j.version>1.7.30</slf4j.version> <!-- L2J --> - <l2j-server-game.version>2.6.1.0-SNAPSHOT</l2j-server-game.version> + <l2j-server-game.version>2.6.2.0-SNAPSHOT</l2j-server-game.version> <!-- Test --> - <testng.version>7.0.0</testng.version> + <testng.version>7.1.0</testng.version> <mockito.version>3.2.4</mockito.version> <!-- Plugins --> - <maven-jar-plugin.version>3.1.2</maven-jar-plugin.version> - <maven-assembly-plugin.version>3.1.1</maven-assembly-plugin.version> + <maven-jar-plugin.version>3.2.0</maven-jar-plugin.version> + <maven-assembly-plugin.version>3.2.0</maven-assembly-plugin.version> </properties> <dependencies> <dependency> diff --git a/src/main/java/com/l2jserver/datapack/ai/group_template/LairOfAntharas.java b/src/main/java/com/l2jserver/datapack/ai/group_template/LairOfAntharas.java index 0d17c13efd0bce2ca81469e22977b76ab976624e..c5ffd4bd934b146096eec5cb8f1e8c16f632519b 100644 --- a/src/main/java/com/l2jserver/datapack/ai/group_template/LairOfAntharas.java +++ b/src/main/java/com/l2jserver/datapack/ai/group_template/LairOfAntharas.java @@ -32,7 +32,6 @@ import com.l2jserver.gameserver.network.serverpackets.ValidateLocation; */ public final class LairOfAntharas extends AbstractNpcAI { // NPC - final private static int KNORIKS = 22857; final private static int DRAGON_KNIGHT = 22844; final private static int DRAGON_KNIGHT2 = 22845; final private static int ELITE_DRAGON_KNIGHT = 22846; @@ -41,15 +40,12 @@ public final class LairOfAntharas extends AbstractNpcAI { final private static int DRAGON_MAGE = 22853; // Misc final private static int KNIGHT_CHANCE = 30; - final private static int KNORIKS_CHANCE = 60; - final private static int KNORIKS_CHANCE2 = 50; private LairOfAntharas() { super(LairOfAntharas.class.getSimpleName(), "ai/group_template"); 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); } @Override @@ -65,17 +61,6 @@ public final class LairOfAntharas extends AbstractNpcAI { return super.onAdvEvent(event, npc, player); } - @Override - public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon) { - if (npc.isScriptValue(0) && (getRandom(100) < KNORIKS_CHANCE)) { - if (getRandom(100) < KNORIKS_CHANCE2) { - npc.setScriptValue(1); - } - 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); - } - @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { switch (npc.getId()) { diff --git a/src/main/java/com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java b/src/main/java/com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java index a3cc7b0b6f8d41ca29edc991965ea5754b849514..3d1af61ba5a350a2dfc8893455ae85d286b40328 100644 --- a/src/main/java/com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java +++ b/src/main/java/com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java @@ -26,6 +26,7 @@ import com.l2jserver.gameserver.model.actor.L2Npc; */ public final class NonLethalableNpcs extends AbstractNpcAI { private static final int[] NPCS = { + 22857, // Knoriks 35062, // Headquarters }; diff --git a/src/main/java/com/l2jserver/datapack/ai/individual/BloodyBerserker.java b/src/main/java/com/l2jserver/datapack/ai/individual/BloodyBerserker.java new file mode 100644 index 0000000000000000000000000000000000000000..4773bfc5a002cc9a69700baf8814438cfcc9ab48 --- /dev/null +++ b/src/main/java/com/l2jserver/datapack/ai/individual/BloodyBerserker.java @@ -0,0 +1,165 @@ +/* + * Copyright (C) 2004-2020 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * L2J DataPack is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package com.l2jserver.datapack.ai.individual; + +import com.l2jserver.datapack.ai.npc.AbstractNpcAI; +import com.l2jserver.gameserver.GeoData; +import com.l2jserver.gameserver.datatables.SpawnTable; +import com.l2jserver.gameserver.model.L2Spawn; +import com.l2jserver.gameserver.model.Location; +import com.l2jserver.gameserver.model.actor.L2Attackable; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; + +/** + * Bloody Berserker AI. + * @author Maneco2 + * @version 2.6.2.0 + */ +public class BloodyBerserker extends AbstractNpcAI +{ + // NPCs + private static final int BLOODY_BERSERKER = 22855; + + private static final int[] BLOODY_FAMILY = + { + 22854, // Bloody Karik + 22855, // Bloody Berserker + 22856, // Bloody Karinness + }; + + public BloodyBerserker() + { + super(BloodyBerserker.class.getSimpleName(), "ai/individual"); + addKillId(BLOODY_BERSERKER); + addAttackId(BLOODY_BERSERKER); + addTeleportId(BLOODY_BERSERKER); + addMoveFinishedId(BLOODY_BERSERKER); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + switch (event) + { + case "CORE_AI": + { + if (npc != null) + { + ((L2Attackable) npc).clearAggroList(); + npc.disableCoreAI(false); + startQuestTimer("RETURN_SPAWN", 300000, npc, null); + } + break; + } + case "RETURN_SPAWN": + { + if (npc != null) + { + ((L2Attackable) npc).setCanReturnToSpawnPoint(true); + } + break; + } + } + return super.onAdvEvent(event, npc, player); + } + + @Override + public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon) + { + switch (npc.getId()) + { + case BLOODY_BERSERKER: + { + final double DistSpawn = npc.calculateDistance(npc.getSpawn().getLocation(), false, false); + if (DistSpawn > 3000) + { + npc.disableCoreAI(true); + npc.teleToLocation(npc.getSpawn().getLocation()); + } + else + { + if ((DistSpawn > 500) && (getRandom(100) < 1) && (npc.isInCombat()) && (!npc.isCastingNow())) + { + for (int object : BLOODY_FAMILY) + { + for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(object)) + { + final L2Npc obj = spawn.getLastSpawn(); + if ((obj != null) && !obj.isDead() && (Math.abs(npc.getZ() - obj.getZ()) < 150)) + { + if (npc.calculateDistance(obj, false, false) > obj.getTemplate().getClanHelpRange()) + { + if ((npc.calculateDistance(obj, false, false) < 3000) && GeoData.getInstance().canSeeTarget(npc, obj)) + { + npc.disableCoreAI(true); + ((L2Attackable) npc).setCanReturnToSpawnPoint(false); + addMoveToDesire(npc, new Location(obj.getX() + getRandom(-100, 100), obj.getY() + getRandom(-100, 100), obj.getZ() + 20, 0), 0); + } + } + } + } + } + } + } + break; + } + } + return super.onAttack(npc, attacker, damage, isSummon); + } + + @Override + public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) + { + switch (npc.getId()) + { + case BLOODY_BERSERKER: + { + if (getRandom(100) < 5) + { + final int newZ = npc.getZ() + 20; + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY(), newZ, npc.getHeading(), false, 0), killer); + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() - 10, newZ, npc.getHeading(), false, 0), killer); + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() - 20, newZ, npc.getHeading(), false, 0), killer); + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() + 10, newZ, npc.getHeading(), false, 0), killer); + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() + 20, newZ, npc.getHeading(), false, 0), killer); + } + break; + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + protected void onTeleport(L2Npc npc) + { + startQuestTimer("CORE_AI", 100, npc, null); + } + + @Override + public void onMoveFinished(L2Npc npc) + { + startQuestTimer("CORE_AI", 100, npc, null); + } + + public static void main(String[] args) + { + new BloodyBerserker(); + } +} \ No newline at end of file diff --git a/src/main/java/com/l2jserver/datapack/ai/individual/BloodyKarinness.java b/src/main/java/com/l2jserver/datapack/ai/individual/BloodyKarinness.java new file mode 100644 index 0000000000000000000000000000000000000000..21c9c4cdf0e367949b1b4ee5013f4d1befbdc6eb --- /dev/null +++ b/src/main/java/com/l2jserver/datapack/ai/individual/BloodyKarinness.java @@ -0,0 +1,165 @@ +/* + * Copyright (C) 2004-2020 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * L2J DataPack is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package com.l2jserver.datapack.ai.individual; + +import com.l2jserver.datapack.ai.npc.AbstractNpcAI; +import com.l2jserver.gameserver.GeoData; +import com.l2jserver.gameserver.datatables.SpawnTable; +import com.l2jserver.gameserver.model.L2Spawn; +import com.l2jserver.gameserver.model.Location; +import com.l2jserver.gameserver.model.actor.L2Attackable; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; + +/** + * Bloody Karinness AI. + * @author Maneco2 + * @version 2.6.2.0 + */ +public class BloodyKarinness extends AbstractNpcAI +{ + // NPCs + private static final int BLOODY_KARINNESS = 22856; + + private static final int[] BLOODY_FAMILY = + { + 22854, // Bloody Karik + 22855, // Bloody Berserker + 22856, // Bloody Karinness + }; + + public BloodyKarinness() + { + super(BloodyKarinness.class.getSimpleName(), "ai/individual"); + addKillId(BLOODY_KARINNESS); + addAttackId(BLOODY_KARINNESS); + addTeleportId(BLOODY_KARINNESS); + addMoveFinishedId(BLOODY_KARINNESS); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + switch (event) + { + case "CORE_AI": + { + if (npc != null) + { + ((L2Attackable) npc).clearAggroList(); + npc.disableCoreAI(false); + startQuestTimer("RETURN_SPAWN", 300000, npc, null); + } + break; + } + case "RETURN_SPAWN": + { + if (npc != null) + { + ((L2Attackable) npc).setCanReturnToSpawnPoint(true); + } + break; + } + } + return super.onAdvEvent(event, npc, player); + } + + @Override + public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon) + { + switch (npc.getId()) + { + case BLOODY_KARINNESS: + { + final double DistSpawn = npc.calculateDistance(npc.getSpawn().getLocation(), false, false); + if (DistSpawn > 3000) + { + npc.disableCoreAI(true); + npc.teleToLocation(npc.getSpawn().getLocation()); + } + else + { + if ((DistSpawn > 500) && (getRandom(100) < 1) && (npc.isInCombat()) && (!npc.isCastingNow())) + { + for (int object : BLOODY_FAMILY) + { + for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(object)) + { + final L2Npc obj = spawn.getLastSpawn(); + if ((obj != null) && !obj.isDead() && (Math.abs(npc.getZ() - obj.getZ()) < 150)) + { + if (npc.calculateDistance(obj, false, false) > obj.getTemplate().getClanHelpRange()) + { + if ((npc.calculateDistance(obj, false, false) < 3000) && GeoData.getInstance().canSeeTarget(npc, obj)) + { + npc.disableCoreAI(true); + ((L2Attackable) npc).setCanReturnToSpawnPoint(false); + addMoveToDesire(npc, new Location(obj.getX() + getRandom(-100, 100), obj.getY() + getRandom(-100, 100), obj.getZ() + 20, 0), 0); + } + } + } + } + } + } + } + break; + } + } + return super.onAttack(npc, attacker, damage, isSummon); + } + + @Override + public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) + { + switch (npc.getId()) + { + case BLOODY_KARINNESS: + { + if (getRandom(100) < 5) + { + final int newZ = npc.getZ() + 20; + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY(), newZ, npc.getHeading(), false, 0), killer); + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() - 10, newZ, npc.getHeading(), false, 0), killer); + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() - 20, newZ, npc.getHeading(), false, 0), killer); + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() + 10, newZ, npc.getHeading(), false, 0), killer); + addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() + 20, newZ, npc.getHeading(), false, 0), killer); + } + break; + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + protected void onTeleport(L2Npc npc) + { + startQuestTimer("CORE_AI", 100, npc, null); + } + + @Override + public void onMoveFinished(L2Npc npc) + { + startQuestTimer("CORE_AI", 100, npc, null); + } + + public static void main(String[] args) + { + new BloodyKarinness(); + } +} \ No newline at end of file diff --git a/src/main/java/com/l2jserver/datapack/ai/individual/Knoriks.java b/src/main/java/com/l2jserver/datapack/ai/individual/Knoriks.java new file mode 100644 index 0000000000000000000000000000000000000000..295a7dad2a8260a95b9309382009978ac71f62be --- /dev/null +++ b/src/main/java/com/l2jserver/datapack/ai/individual/Knoriks.java @@ -0,0 +1,173 @@ +/* + * Copyright (C) 2004-2020 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * L2J DataPack is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package com.l2jserver.datapack.ai.individual; + +import com.l2jserver.datapack.ai.npc.AbstractNpcAI; +import com.l2jserver.gameserver.instancemanager.WalkingManager; +import com.l2jserver.gameserver.model.L2Object; +import com.l2jserver.gameserver.model.L2Spawn; +import com.l2jserver.gameserver.model.actor.L2Attackable; +import com.l2jserver.gameserver.model.actor.L2Character; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.holders.SkillHolder; +import com.l2jserver.gameserver.model.skills.Skill; +import com.l2jserver.gameserver.network.NpcStringId; +import com.l2jserver.gameserver.network.clientpackets.Say2; + +/** + * Knoriks AI. + * @author Maneco2 + * @version 2.6.2.0 + */ +public class Knoriks extends AbstractNpcAI +{ + // NPC + private static final int KNORIKS = 22857; + // Skills + private static final SkillHolder DARK_WIND = new SkillHolder(6743); // Dark Wind + private static final SkillHolder DARK_STORM = new SkillHolder(6744); // Dark Storm + private static final SkillHolder DARK_BLADE = new SkillHolder(6747); // Dark Blade + // Misc + private static final String SHOUT_FLAG = "SHOUT_FLAG"; + private static final int MAX_CHASE_DIST = 3000; + private static int SpawnCount = 0; + + public Knoriks() + { + super(Knoriks.class.getSimpleName(), "ai/individual"); + addAggroRangeEnterId(KNORIKS); + addSkillSeeId(KNORIKS); + addTeleportId(KNORIKS); + addAttackId(KNORIKS); + addSpawnId(KNORIKS); + startQuestTimer("KNORIKS_SPAWN", 1800000, null, null); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + switch (event) + { + case "CORE_AI": + { + if (npc != null) + { + ((L2Attackable) npc).clearAggroList(); + npc.disableCoreAI(false); + } + break; + } + case "CHECK_ROUTE": + { + WalkingManager.getInstance().onSpawn(npc); + break; + } + case "KNORIKS_SPAWN": + { + if (SpawnCount < 3) + { + SpawnCount++; + addSpawn(KNORIKS, 140641, 114525, -3755, 0, false, 0); + addSpawn(KNORIKS, 143789, 110205, -3968, 0, false, 0); + addSpawn(KNORIKS, 146466, 109789, -3440, 0, false, 0); + addSpawn(KNORIKS, 145482, 120250, -3944, 0, false, 0); + startQuestTimer("KNORIKS_SPAWN", 60000, null, null); + } + break; + } + } + return super.onAdvEvent(event, npc, player); + } + + @Override + public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon) + { + final L2Character mostHated = ((L2Attackable) npc).getMostHated(); + if ((mostHated != null) && (npc.isInsideRadius(attacker, 250, false, false))) + { + if ((getRandom(100) < 10) && (!npc.isCastingNow())) + { + npc.doCast(getRandomBoolean() ? DARK_STORM : DARK_BLADE); + } + + for (L2Character obj : npc.getKnownList().getKnownCharactersInRadius(200)) + { + if ((obj != null) && (obj.isMonster())) + { + if ((getRandom(100) < 10) && (obj.isInCombat()) && (!obj.isCastingNow())) + { + obj.doCast(getRandomBoolean() ? DARK_STORM : DARK_BLADE); + } + } + } + } + + if ((npc.calculateDistance(npc.getSpawn().getLocation(), false, false) > MAX_CHASE_DIST) || (Math.abs(npc.getZ() - npc.getSpawn().getZ()) > 450)) + { + npc.disableCoreAI(true); + npc.teleToLocation(npc.getSpawn().getLocation()); + } + return super.onAttack(npc, attacker, damage, isSummon); + } + + @Override + public String onSkillSee(L2Npc npc, L2PcInstance player, Skill skill, L2Object[] targets, boolean isSummon) + { + if ((getRandom(100) < 10) && (!npc.isCastingNow()) && (!npc.isInsideRadius(player, 250, false, false))) + { + addSkillCastDesire(npc, player, DARK_WIND, 1000000L); + } + return super.onSkillSee(npc, player, skill, targets, isSummon); + } + + @Override + public String onSpawn(L2Npc npc) + { + final L2Spawn spawn = npc.getSpawn(); + spawn.setAmount(1); + spawn.setRespawnDelay(1800); + spawn.startRespawn(); + return super.onSpawn(npc); + } + + @Override + public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon) + { + if ((getRandom(100) < 50) && (!npc.getVariables().getBoolean(SHOUT_FLAG, false))) + { + npc.getVariables().set(SHOUT_FLAG, true); + 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); + } + + @Override + protected void onTeleport(L2Npc npc) + { + WalkingManager.getInstance().cancelMoving(npc); + startQuestTimer("CORE_AI", 100, npc, null); + notifyEvent("CHECK_ROUTE", npc, null); + } + + public static void main(String[] args) + { + new Knoriks(); + } +} diff --git a/src/main/java/com/l2jserver/datapack/instances/FinalEmperialTomb/FinalEmperialTomb.java b/src/main/java/com/l2jserver/datapack/instances/FinalEmperialTomb/FinalEmperialTomb.java index b739bca75517b2322a9b93b8d2cbd65501b9f633..715f79f2427eab3f5d02bf2a2f8516a2d942664d 100644 --- a/src/main/java/com/l2jserver/datapack/instances/FinalEmperialTomb/FinalEmperialTomb.java +++ b/src/main/java/com/l2jserver/datapack/instances/FinalEmperialTomb/FinalEmperialTomb.java @@ -668,7 +668,7 @@ public final class FinalEmperialTomb extends AbstractInstance { for (FrintezzaSong element : FRINTEZZASONGLIST) { if (rnd < element.chance) { _world.OnSong = element; - broadCastPacket(_world, new ExShowScreenMessage(2, -1, 2, 0, 0, 0, 0, true, 4000, false, null, element.songName, null)); + broadCastPacket(_world, new ExShowScreenMessage(2, -1, 2, 0, 0, 0, 0, true, 4000, false, null, element.songName)); broadCastPacket(_world, new MagicSkillUse(_world.frintezza, _world.frintezza, element.skill.getSkillId(), element.skill.getSkillLvl(), element.skill.getSkill().getHitTime(), 0)); _world.songEffectTask = ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(_world, 1), element.skill.getSkill().getHitTime() - 10000); _world.songTask = ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(_world, 0), element.skill.getSkill().getHitTime()); diff --git a/src/main/java/com/l2jserver/datapack/quests/Q00383_TreasureHunt/Q00383_TreasureHunt.java b/src/main/java/com/l2jserver/datapack/quests/Q00383_TreasureHunt/Q00383_TreasureHunt.java index 73187d86957f82900cca04064a50438d99dccf0b..0818af41bdbf6cc719409eebeed1f0ee6ec18552 100644 --- a/src/main/java/com/l2jserver/datapack/quests/Q00383_TreasureHunt/Q00383_TreasureHunt.java +++ b/src/main/java/com/l2jserver/datapack/quests/Q00383_TreasureHunt/Q00383_TreasureHunt.java @@ -88,7 +88,7 @@ public final class Q00383_TreasureHunt extends Quest { case "30890-05.htm": { if (hasQuestItems(player, PIRATES_TREASURE_MAP)) { giveAdena(player, 1000, false); - takeItems(player, PIRATES_TREASURE_MAP, -1); + takeItems(player, PIRATES_TREASURE_MAP, 1); htmltext = event; } break; @@ -100,7 +100,7 @@ public final class Q00383_TreasureHunt extends Quest { case "30890-07.htm": { if (hasQuestItems(player, PIRATES_TREASURE_MAP)) { qs.startQuest(); - takeItems(player, PIRATES_TREASURE_MAP, -1); + takeItems(player, PIRATES_TREASURE_MAP, 1); htmltext = event; } break; diff --git a/src/main/resources/data/Routes.xml b/src/main/resources/data/Routes.xml index f3d40a5f57b400952ee85ec5bea65640ffd53bc6..6e1b890748345c35c7ffa8a22fb228c3c3d6d2b0 100644 --- a/src/main/resources/data/Routes.xml +++ b/src/main/resources/data/Routes.xml @@ -134,7 +134,6 @@ <target id="22851" spawnX="146603" spawnY="112946" spawnZ="-3725" /> <target id="22851" spawnX="145959" spawnY="112794" spawnZ="-3725" /> <target id="22851" spawnX="146859" spawnY="112482" spawnZ="-3725" /> - <target id="22857" spawnX="146113" spawnY="112674" spawnZ="-3720" /> <point X="146113" Y="112674" Z="-3725" delay="0" run="true" /> <point X="146634" Y="112759" Z="-3725" delay="0" run="true" /> <point X="147332" Y="112618" Z="-3725" delay="0" run="true" /> @@ -425,100 +424,117 @@ <point X="115677" Y="115086" Z="-3134" delay="0" run="true" /> </route> <!-- Knoriks --> - <route name="knoriks_01" repeat="true" repeatStyle="back"> - <target id="22857" spawnX="140633" spawnY="114472" spawnZ="-3725" /> - <point X="140639" Y="114460" Z="-3729" delay="0" run="true" /> - <point X="142095" Y="114336" Z="-3729" delay="0" run="true" /> - <point X="142664" Y="113707" Z="-3720" delay="0" run="true" /> - <point X="143831" Y="114596" Z="-3720" delay="0" run="true" /> - <point X="144783" Y="114876" Z="-3720" delay="0" run="true" /> - <point X="147197" Y="116761" Z="-3704" delay="0" run="true" /> - <point X="148227" Y="117724" Z="-3712" delay="0" run="true" /> - </route> - <route name="knoriks_02" repeat="true" repeatStyle="back"> - <target id="22857" spawnX="143007" spawnY="108951" spawnZ="-3948" /> - <point X="142978" Y="108907" Z="-3949" delay="0" run="true" /> - <point X="142583" Y="108953" Z="-3949" delay="0" run="true" /> - <point X="141716" Y="109380" Z="-3953" delay="0" run="true" /> - <point X="140541" Y="111332" Z="-3899" delay="0" run="true" /> - <point X="140973" Y="113160" Z="-3725" delay="0" run="true" /> - <point X="141877" Y="112263" Z="-3720" delay="0" run="true" /> - <point X="142752" Y="111555" Z="-3953" delay="0" run="true" /> - <point X="142151" Y="109094" Z="-3949" delay="0" run="true" /> - <point X="140873" Y="109371" Z="-3949" delay="0" run="true" /> - </route> - <route name="knoriks_03" repeat="true" repeatStyle="back"> - <target id="22857" spawnX="147896" spawnY="110033" spawnZ="-3941" /> - <point X="147895" Y="110043" Z="-3946" delay="0" run="true" /> - <point X="145685" Y="109132" Z="-3953" delay="0" run="true" /> - <point X="144924" Y="108192" Z="-3928" delay="0" run="true" /> - <point X="144558" Y="107723" Z="-3953" delay="0" run="true" /> - </route> - <route name="knoriks_04" repeat="true" repeatStyle="back"> - <target id="22857" spawnX="142480" spawnY="119635" spawnZ="-3916" /> - <point X="142480" Y="119635" Z="-3921" delay="0" run="true" /> - <point X="142960" Y="117501" Z="-3921" delay="0" run="true" /> - <point X="142026" Y="117331" Z="-3912" delay="0" run="true" /> - <point X="141238" Y="117792" Z="-3912" delay="0" run="true" /> - <point X="140220" Y="119893" Z="-3912" delay="0" run="true" /> - <point X="140697" Y="120780" Z="-3896" delay="0" run="true" /> - <point X="141939" Y="121539" Z="-3921" delay="0" run="true" /> - <point X="143250" Y="121372" Z="-3921" delay="0" run="true" /> - <point X="145334" Y="121799" Z="-3921" delay="0" run="true" /> - <point X="146081" Y="121987" Z="-3921" delay="0" run="true" /> - <point X="146278" Y="121463" Z="-3912" delay="0" run="true" /> - <point X="145785" Y="120344" Z="-3912" delay="0" run="true" /> - </route> - <route name="knoriks_05" repeat="true" repeatStyle="back"> - <target id="22857" spawnX="152585" spawnY="110480" spawnZ="-5524" /> - <point X="152585" Y="110480" Z="-5529" delay="0" run="true" /> - <point X="153524" Y="110822" Z="-5529" delay="0" run="true" /> - <point X="153325" Y="111607" Z="-5529" delay="0" run="true" /> - <point X="150988" Y="111181" Z="-5520" delay="0" run="true" /> - <point X="149511" Y="111160" Z="-5496" delay="0" run="true" /> - <point X="149330" Y="110708" Z="-5448" delay="0" run="true" /> - <point X="150386" Y="109580" Z="-5136" delay="0" run="true" /> - <point X="152942" Y="109299" Z="-5161" delay="0" run="true" /> - <point X="153303" Y="108403" Z="-5152" delay="0" run="true" /> - <point X="152669" Y="107732" Z="-5120" delay="0" run="true" /> - <point X="150735" Y="107365" Z="-4776" delay="0" run="true" /> - <point X="149713" Y="108362" Z="-4536" delay="0" run="true" /> - <point X="148849" Y="108131" Z="-4312" delay="0" run="true" /> - <point X="147699" Y="107247" Z="-4056" delay="0" run="true" /> - <point X="146847" Y="107845" Z="-3872" delay="0" run="true" /> - <point X="146442" Y="109417" Z="-3432" delay="0" run="true" /> - </route> - <route name="knoriks_06" repeat="true" repeatStyle="cycle"> - <target id="22857" spawnX="146901" spawnY="116472" spawnZ="-3698" /> - <point X="146901" Y="116472" Z="-3703" delay="0" run="true" /> - <point X="148652" Y="115744" Z="-3721" delay="0" run="true" /> - <point X="149236" Y="114853" Z="-3725" delay="0" run="true" /> - <point X="148744" Y="112355" Z="-3721" delay="0" run="true" /> - <point X="148104" Y="112099" Z="-3721" delay="0" run="true" /> - <point X="145757" Y="112813" Z="-3721" delay="0" run="true" /> - <point X="144569" Y="114637" Z="-3711" delay="0" run="true" /> - <point X="143071" Y="114050" Z="-3721" delay="0" run="true" /> - <point X="142565" Y="113596" Z="-3725" delay="0" run="true" /> - <point X="141899" Y="114565" Z="-3721" delay="0" run="true" /> - <point X="140915" Y="114253" Z="-3708" delay="0" run="true" /> - <point X="140743" Y="112383" Z="-3721" delay="0" run="true" /> - <point X="140476" Y="111103" Z="-3945" delay="0" run="true" /> - <point X="141182" Y="109756" Z="-3945" delay="0" run="true" /> - <point X="142932" Y="108579" Z="-3945" delay="0" run="true" /> - <point X="142620" Y="107144" Z="-3945" delay="0" run="true" /> - <point X="144119" Y="107449" Z="-3945" delay="0" run="true" /> - <point X="145247" Y="108941" Z="-3945" delay="0" run="true" /> - <point X="147232" Y="109791" Z="-3948" delay="0" run="true" /> - <point X="145501" Y="109010" Z="-3945" delay="0" run="true" /> - <point X="143916" Y="107319" Z="-3949" delay="0" run="true" /> - <point X="142311" Y="107213" Z="-3945" delay="0" run="true" /> - <point X="140700" Y="107297" Z="-3949" delay="0" run="true" /> - <point X="140784" Y="109603" Z="-3945" delay="0" run="true" /> - <point X="140552" Y="111792" Z="-3762" delay="0" run="true" /> - <point X="140845" Y="114262" Z="-3707" delay="0" run="true" /> - <point X="142023" Y="114407" Z="-3721" delay="0" run="true" /> - <point X="142449" Y="113612" Z="-3703" delay="0" run="true" /> - <point X="145190" Y="115247" Z="-3721" delay="0" run="true" /> + <route name="24_21_course1" repeat="true" repeatStyle="back"> + <target id="22857" spawnX="140641" spawnY="114525" spawnZ="-3755" /> + <point X="140604" Y="114508" Z="-3720" delay="0" run="true" /> + <point X="141213" Y="114571" Z="-3720" delay="0" run="true" /> + <point X="142089" Y="114339" Z="-3720" delay="0" run="true" /> + <point X="142576" Y="113686" Z="-3720" delay="0" run="true" /> + <point X="143010" Y="113831" Z="-3720" delay="0" run="true" /> + <point X="143602" Y="114477" Z="-3720" delay="0" run="true" /> + <point X="143991" Y="114774" Z="-3720" delay="0" run="true" /> + <point X="144817" Y="114949" Z="-3720" delay="0" run="true" /> + <point X="145290" Y="115368" Z="-3720" delay="0" run="true" /> + <point X="145585" Y="115841" Z="-3720" delay="0" run="true" /> + <point X="146135" Y="116140" Z="-3720" delay="0" run="true" /> + <point X="146707" Y="116377" Z="-3720" delay="0" run="true" /> + <point X="147285" Y="116135" Z="-3720" delay="0" run="true" /> + <point X="148116" Y="116153" Z="-3720" delay="0" run="true" /> + <point X="148834" Y="115673" Z="-3720" delay="0" run="true" /> + <point X="149253" Y="114841" Z="-3720" delay="0" run="true" /> + <point X="149268" Y="114236" Z="-3720" delay="0" run="true" /> + <point X="149118" Y="113220" Z="-3720" delay="0" run="true" /> + <point X="148658" Y="112282" Z="-3720" delay="0" run="true" /> + <point X="148093" Y="112008" Z="-3720" delay="0" run="true" /> + <point X="147011" Y="112399" Z="-3720" delay="0" run="true" /> + <point X="145848" Y="112771" Z="-3720" delay="0" run="true" /> + <point X="145003" Y="113763" Z="-3720" delay="0" run="true" /> + <point X="145123" Y="114965" Z="-3720" delay="0" run="true" /> + <point X="145672" Y="115854" Z="-3720" delay="0" run="true" /> + <point X="146267" Y="116153" Z="-3720" delay="0" run="true" /> + <point X="146862" Y="116277" Z="-3720" delay="0" run="true" /> + <point X="147254" Y="117077" Z="-3712" delay="0" run="true" /> + <point X="148486" Y="117838" Z="-3712" delay="0" run="true" /> + </route> + <route name="24_21_course2" repeat="true" repeatStyle="back"> + <target id="22857" spawnX="143789" spawnY="110205" spawnZ="-3968" /> + <point X="143820" Y="110172" Z="-3936" delay="0" run="true" /> + <point X="142599" Y="110060" Z="-3944" delay="0" run="true" /> + <point X="142477" Y="110686" Z="-3944" delay="0" run="true" /> + <point X="142736" Y="111263" Z="-3944" delay="0" run="true" /> + <point X="143154" Y="111808" Z="-3944" delay="0" run="true" /> + <point X="143567" Y="112067" Z="-3944" delay="0" run="true" /> + <point X="142814" Y="111870" Z="-3944" delay="0" run="true" /> + <point X="142081" Y="112055" Z="-3800" delay="0" run="true" /> + <point X="141859" Y="112305" Z="-3720" delay="0" run="true" /> + <point X="141448" Y="112739" Z="-3720" delay="0" run="true" /> + <point X="140917" Y="113042" Z="-3720" delay="0" run="true" /> + <point X="140686" Y="112332" Z="-3720" delay="0" run="true" /> + <point X="140641" Y="111953" Z="-3720" delay="0" run="true" /> + <point X="140545" Y="111532" Z="-3840" delay="0" run="true" /> + <point X="140581" Y="110501" Z="-3944" delay="0" run="true" /> + <point X="141167" Y="109649" Z="-3944" delay="0" run="true" /> + <point X="142038" Y="109301" Z="-3944" delay="0" run="true" /> + <point X="142990" Y="108693" Z="-3944" delay="0" run="true" /> + <point X="142849" Y="108131" Z="-3944" delay="0" run="true" /> + <point X="142639" Y="107729" Z="-3944" delay="0" run="true" /> + <point X="142548" Y="107332" Z="-3944" delay="0" run="true" /> + <point X="143270" Y="107225" Z="-3944" delay="0" run="true" /> + <point X="144648" Y="107664" Z="-3944" delay="0" run="true" /> + <point X="144471" Y="108299" Z="-3944" delay="0" run="true" /> + <point X="145009" Y="108670" Z="-3944" delay="0" run="true" /> + <point X="146240" Y="109339" Z="-3944" delay="0" run="true" /> + <point X="147700" Y="109819" Z="-3944" delay="0" run="true" /> + </route> + <route name="24_21_course3" repeat="true" repeatStyle="back"> + <target id="22857" spawnX="146466" spawnY="109789" spawnZ="-3440" /> + <point X="146460" Y="109809" Z="-3424" delay="0" run="true" /> + <point X="146523" Y="109139" Z="-3472" delay="0" run="true" /> + <point X="146565" Y="108198" Z="-3704" delay="0" run="true" /> + <point X="146959" Y="107785" Z="-3920" delay="0" run="true" /> + <point X="147629" Y="107309" Z="-4040" delay="0" run="true" /> + <point X="148344" Y="107544" Z="-4176" delay="0" run="true" /> + <point X="149032" Y="108402" Z="-4352" delay="0" run="true" /> + <point X="149869" Y="108299" Z="-4568" delay="0" run="true" /> + <point X="150297" Y="107596" Z="-4680" delay="0" run="true" /> + <point X="151286" Y="107257" Z="-4872" delay="0" run="true" /> + <point X="152409" Y="107695" Z="-5072" delay="0" run="true" /> + <point X="153554" Y="107857" Z="-5152" delay="0" run="true" /> + <point X="153552" Y="108326" Z="-5152" delay="0" run="true" /> + <point X="153496" Y="108810" Z="-5152" delay="0" run="true" /> + <point X="152927" Y="109267" Z="-5152" delay="0" run="true" /> + <point X="151702" Y="109307" Z="-5152" delay="0" run="true" /> + <point X="151116" Y="109293" Z="-5136" delay="0" run="true" /> + <point X="150287" Y="109522" Z="-5120" delay="0" run="true" /> + <point X="149574" Y="109763" Z="-5224" delay="0" run="true" /> + <point X="149387" Y="110508" Z="-5400" delay="0" run="true" /> + <point X="149404" Y="110880" Z="-5464" delay="0" run="true" /> + <point X="149815" Y="111397" Z="-5504" delay="0" run="true" /> + <point X="151689" Y="111304" Z="-5520" delay="0" run="true" /> + <point X="153164" Y="111658" Z="-5520" delay="0" run="true" /> + <point X="153551" Y="111249" Z="-5520" delay="0" run="true" /> + <point X="153437" Y="110763" Z="-5520" delay="0" run="true" /> + <point X="152339" Y="110422" Z="-5520" delay="0" run="true" /> + </route> + <route name="24_21_course4" repeat="true" repeatStyle="back"> + <target id="22857" spawnX="145482" spawnY="120250" spawnZ="-3944" /> + <point X="145484" Y="120220" Z="-3912" delay="0" run="true" /> + <point X="146262" Y="121372" Z="-3912" delay="0" run="true" /> + <point X="146180" Y="121825" Z="-3912" delay="0" run="true" /> + <point X="145691" Y="121944" Z="-3912" delay="0" run="true" /> + <point X="144585" Y="121464" Z="-3912" delay="0" run="true" /> + <point X="143985" Y="121211" Z="-3904" delay="0" run="true" /> + <point X="143526" Y="121078" Z="-3912" delay="0" run="true" /> + <point X="141770" Y="121528" Z="-3912" delay="0" run="true" /> + <point X="140740" Y="120742" Z="-3896" delay="0" run="true" /> + <point X="140174" Y="119815" Z="-3912" delay="0" run="true" /> + <point X="140492" Y="119201" Z="-3912" delay="0" run="true" /> + <point X="141119" Y="117931" Z="-3912" delay="0" run="true" /> + <point X="142105" Y="117257" Z="-3912" delay="0" run="true" /> + <point X="143028" Y="117334" Z="-3912" delay="0" run="true" /> + <point X="142917" Y="118083" Z="-3904" delay="0" run="true" /> + <point X="142349" Y="118750" Z="-3896" delay="0" run="true" /> + <point X="142659" Y="119882" Z="-3912" delay="0" run="true" /> </route> <!-- Sanctum of the Lords of Dawn --> <route name="iz111_zone01_01" repeat="true" repeatStyle="back"> diff --git a/src/main/java/com/l2jserver/datapack/events/FreyaCelebration/config.xml b/src/main/resources/data/events/FreyaCelebration.xml similarity index 100% rename from src/main/java/com/l2jserver/datapack/events/FreyaCelebration/config.xml rename to src/main/resources/data/events/FreyaCelebration.xml diff --git a/src/main/java/com/l2jserver/datapack/events/GiftOfVitality/config.xml b/src/main/resources/data/events/GiftOfVitality.xml similarity index 100% rename from src/main/java/com/l2jserver/datapack/events/GiftOfVitality/config.xml rename to src/main/resources/data/events/GiftOfVitality.xml diff --git a/src/main/java/com/l2jserver/datapack/events/HeavyMedal/config.xml b/src/main/resources/data/events/HeavyMedal.xml similarity index 100% rename from src/main/java/com/l2jserver/datapack/events/HeavyMedal/config.xml rename to src/main/resources/data/events/HeavyMedal.xml diff --git a/src/main/java/com/l2jserver/datapack/events/LoveYourGatekeeper/config.xml b/src/main/resources/data/events/LoveYourGatekeeper.xml similarity index 100% rename from src/main/java/com/l2jserver/datapack/events/LoveYourGatekeeper/config.xml rename to src/main/resources/data/events/LoveYourGatekeeper.xml diff --git a/src/main/java/com/l2jserver/datapack/events/MasterOfEnchanting/config.xml b/src/main/resources/data/events/MasterOfEnchanting.xml similarity index 100% rename from src/main/java/com/l2jserver/datapack/events/MasterOfEnchanting/config.xml rename to src/main/resources/data/events/MasterOfEnchanting.xml diff --git a/src/main/java/com/l2jserver/datapack/events/TheValentineEvent/config.xml b/src/main/resources/data/events/TheValentineEvent.xml similarity index 100% rename from src/main/java/com/l2jserver/datapack/events/TheValentineEvent/config.xml rename to src/main/resources/data/events/TheValentineEvent.xml diff --git a/src/main/resources/data/scripts.cfg b/src/main/resources/data/scripts.cfg index 9f06aaa2965ad0e4fbfe4e2a391480fd31a9661d..d559409cbc2cbacb0b4c8bd22ea869ab46e0a35b 100644 --- a/src/main/resources/data/scripts.cfg +++ b/src/main/resources/data/scripts.cfg @@ -149,6 +149,8 @@ com/l2jserver/datapack/ai/individual/Ballista.java com/l2jserver/datapack/ai/individual/Beleth.java com/l2jserver/datapack/ai/individual/BlackdaggerWing.java com/l2jserver/datapack/ai/individual/BleedingFly.java +com/l2jserver/datapack/ai/individual/BloodyBerserker.java +com/l2jserver/datapack/ai/individual/BloodyKarinness.java com/l2jserver/datapack/ai/individual/CrimsonHatuOtis.java com/l2jserver/datapack/ai/individual/Core.java com/l2jserver/datapack/ai/individual/DarkWaterDragon.java @@ -162,6 +164,7 @@ com/l2jserver/datapack/ai/individual/EvasGiftBox.java com/l2jserver/datapack/ai/individual/FrightenedRagnaOrc.java com/l2jserver/datapack/ai/individual/Gordon.java com/l2jserver/datapack/ai/individual/GraveRobbers.java +com/l2jserver/datapack/ai/individual/Knoriks.java com/l2jserver/datapack/ai/individual/MuscleBomber.java com/l2jserver/datapack/ai/individual/Orfen.java com/l2jserver/datapack/ai/individual/QueenAnt.java diff --git a/src/main/resources/data/stats/npcs/22800-22899.xml b/src/main/resources/data/stats/npcs/22800-22899.xml index 8f3aef20ded58b5564841d6b98764f60b228b5db..0c7289c28fd4eacd1e1792f55288d1958a04dc20 100644 --- a/src/main/resources/data/stats/npcs/22800-22899.xml +++ b/src/main/resources/data/stats/npcs/22800-22899.xml @@ -4932,7 +4932,6 @@ <skill id="4416" level="6" /> <!--Humanoids --> <skill id="5467" level="1" /> <!--Dark Attacks --> <skill id="5598" level="12" /> <!--Flash Resistance --> - <skill id="6743" level="1" /> <!--Dark Wind --> </skillList> <exCrtEffect>true</exCrtEffect> <ai type="BALANCED" aggroRange="500" clanHelpRange="300" /> diff --git a/src/main/resources/data/stats/skills/06700-06799.xml b/src/main/resources/data/stats/skills/06700-06799.xml index 5d6fa99331ede968c341c530453ad2a874d87c93..336a4177cab2ad53197b342dbe315466cde0e65e 100644 --- a/src/main/resources/data/stats/skills/06700-06799.xml +++ b/src/main/resources/data/stats/skills/06700-06799.xml @@ -592,9 +592,40 @@ </effects> </skill> <skill id="6744" levels="1" name="Dark Storm"> - <!-- Casting Spd. decreases by 90% and Atk. Spd. decreases by 30%. --> - <set name="operateType" val="P" /> - <set name="targetType" val="NONE" /> + <!-- High Five Confirmed --> + <!-- Casting Spd. decreases by 90% and Atk. Spd. decreases by 30%. --> + <set name="abnormalLvl" val="3" /> + <set name="abnormalTime" val="120" /> + <set name="abnormalType" val="CASTING_TIME_UP" /> + <set name="affectRange" val="200" /> + <set name="castRange" val="900" /> + <set name="basicProperty" val="MEN" /> + <set name="effectPoint" val="-10000" /> + <set name="effectRange" val="1200" /> + <set name="attributeType" val="DARK" /> + <set name="attributePower" val="120" /> + <set name="hitTime" val="2000" /> + <set name="isDebuff" val="true" /> + <set name="icon" val="icon.skill1386" /> + <set name="lvlBonusRate" val="2" /> + <set name="magicLvl" val="85" /> + <set name="mpConsume2" val="20" /> + <set name="mpConsume1" val="5" /> + <set name="operateType" val="A2" /> + <set name="reuseDelay" val="1000" /> + <set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" /> + <set name="targetType" val="AREA" /> + <effects> + <effect name="MagicalAttack"> + <param power="200" /> + </effect> + <effect name="Debuff"> + <mul stat="mAtkSpd" val="0.1" /> + </effect> + <effect name="Debuff"> + <mul stat="pAtkSpd" val="0.7" /> + </effect> + </effects> </skill> <skill id="6745" levels="1" name="Dark Space"> <!-- none --> @@ -607,9 +638,26 @@ <set name="targetType" val="NONE" /> </skill> <skill id="6747" levels="1" name="Dark Blade"> - <!-- none --> - <set name="operateType" val="P" /> - <set name="targetType" val="NONE" /> + <!-- High Five Confirmed --> + <set name="castRange" val="60" /> + <set name="effectPoint" val="-10000" /> + <set name="effectRange" val="150" /> + <set name="attributeType" val="DARK" /> + <set name="attributePower" val="120" /> + <set name="hitTime" val="1500" /> + <set name="icon" val="icon.skill1445" /> + <set name="magicLvl" val="85" /> + <set name="mpConsume2" val="80" /> + <set name="operateType" val="A1" /> + <set name="reuseDelay" val="1000" /> + <set name="rideState" val="NONE" /> + <set name="targetType" val="ONE" /> + <effects> + <effect name="PhysicalAttack"> + <param power="11600" /> + <param criticalChance="30" /> + </effect> + </effects> </skill> <skill id="6748" levels="1" name="Stun Attack"> <!-- High Five Confirmed --> diff --git a/src/main/resources/sql/spawnlist.sql b/src/main/resources/sql/spawnlist.sql index 45bddfe42b1bb85b029aae562c35e76c3b77be5e..cb9db56b66726629f08f407a7f2f39a0a905d5a8 100644 --- a/src/main/resources/sql/spawnlist.sql +++ b/src/main/resources/sql/spawnlist.sql @@ -37834,14 +37834,6 @@ INSERT INTO `spawnlist` VALUES ("lair_of_antharas", 1, 22856, 154643, 115046, -5256, 0, 0, 61796, 60, 0, 0, 0), ("lair_of_antharas", 1, 22856, 154752, 116439, -5256, 0, 0, 27708, 60, 0, 0, 0), ("lair_of_antharas", 1, 22856, 154755, 114862, -5256, 0, 0, 57467, 60, 0, 0, 0), --- Knoriks -("lair_of_antharas", 1, 22857, 140633, 114472, -3725, 0, 0, 44315, 300, 0, 0, 0), -("lair_of_antharas", 1, 22857, 147896, 110033, -3941, 0, 0, 50191, 300, 0, 0, 0), -("lair_of_antharas", 1, 22857, 142480, 119635, -3916, 0, 0, 29350, 300, 0, 0, 0), -("lair_of_antharas", 1, 22857, 143007, 108951, -3948, 0, 0, 26923, 300, 0, 0, 0), -("lair_of_antharas", 1, 22857, 152585, 110480, -5524, 0, 0, 17587, 300, 0, 0, 0), -("lair_of_antharas", 1, 22857, 146113, 112674, -3720, 0, 0, 63739, 300, 0, 0, 0), -("lair_of_antharas", 1, 22857, 146901, 116472, -3698, 0, 0, 16515, 300, 0, 0, 0), -- Theodric ("dragon_valley", 1, 30755, 131176, 114676, -3720, 0, 0, 21124, 60, 0, 0, 0), -- Separated Soul