From 1d4142937ae3e01dfda9e6d2a9eaf47aa60e2adf Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 10 May 2019 14:14:40 +0000 Subject: [PATCH] Raidboss changes. Contributed by champzix1. --- .../scripts/ai/bosses/Trasken/Trasken.java | 4 +- .../scripts/ai/bosses/Valakas/Valakas.java | 285 +++++++++--------- .../dist/game/data/stats/npcs/29200-29299.xml | 28 +- .../game/data/stats/skills/04400-04499.xml | 5 + .../game/data/stats/skills/05000-05099.xml | 22 +- .../game/data/stats/skills/14200-14299.xml | 21 +- .../game/data/stats/skills/15200-15299.xml | 100 ++++-- .../game/data/stats/skills/15400-15499.xml | 11 + .../game/data/stats/skills/15500-15599.xml | 32 ++ .../game/data/stats/skills/16100-16199.xml | 19 +- .../scripts/ai/bosses/Trasken/Trasken.java | 4 +- .../scripts/ai/bosses/Valakas/Valakas.java | 285 +++++++++--------- .../dist/game/data/stats/npcs/29200-29299.xml | 28 +- .../game/data/stats/skills/04400-04499.xml | 5 + .../game/data/stats/skills/05000-05099.xml | 22 +- .../game/data/stats/skills/14200-14299.xml | 21 +- .../game/data/stats/skills/15200-15299.xml | 100 ++++-- .../game/data/stats/skills/15400-15499.xml | 11 + .../game/data/stats/skills/15500-15599.xml | 32 ++ .../game/data/stats/skills/16100-16199.xml | 19 +- .../scripts/ai/bosses/Trasken/Trasken.java | 4 +- .../scripts/ai/bosses/Valakas/Valakas.java | 285 +++++++++--------- .../dist/game/data/stats/npcs/03400-03499.xml | 16 +- .../dist/game/data/stats/npcs/29200-29299.xml | 28 +- .../game/data/stats/skills/04400-04499.xml | 5 + .../game/data/stats/skills/05000-05099.xml | 22 +- .../game/data/stats/skills/14200-14299.xml | 21 +- .../game/data/stats/skills/15200-15299.xml | 100 ++++-- .../game/data/stats/skills/15400-15499.xml | 11 + .../game/data/stats/skills/15500-15599.xml | 32 ++ .../game/data/stats/skills/16100-16199.xml | 19 +- .../game/data/stats/skills/16600-16699.xml | 118 +++----- .../game/data/stats/skills/16700-16799.xml | 6 +- .../scripts/ai/bosses/Trasken/Trasken.java | 4 +- .../scripts/ai/bosses/Valakas/Valakas.java | 285 +++++++++--------- .../dist/game/data/stats/npcs/03400-03499.xml | 16 +- .../dist/game/data/stats/npcs/29200-29299.xml | 28 +- .../game/data/stats/skills/04400-04499.xml | 5 + .../game/data/stats/skills/05000-05099.xml | 22 +- .../game/data/stats/skills/14200-14299.xml | 21 +- .../game/data/stats/skills/15200-15299.xml | 100 ++++-- .../game/data/stats/skills/15400-15499.xml | 11 + .../game/data/stats/skills/15500-15599.xml | 32 ++ .../game/data/stats/skills/16100-16199.xml | 19 +- .../game/data/stats/skills/16600-16699.xml | 118 +++----- .../game/data/stats/skills/16700-16799.xml | 6 +- .../scripts/ai/bosses/Trasken/Trasken.java | 4 +- .../scripts/ai/bosses/Valakas/Valakas.java | 285 +++++++++--------- .../dist/game/data/stats/npcs/03400-03499.xml | 16 +- .../dist/game/data/stats/npcs/29200-29299.xml | 28 +- .../game/data/stats/skills/04400-04499.xml | 5 + .../game/data/stats/skills/05000-05099.xml | 22 +- .../game/data/stats/skills/14200-14299.xml | 21 +- .../game/data/stats/skills/15200-15299.xml | 100 ++++-- .../game/data/stats/skills/15400-15499.xml | 11 + .../game/data/stats/skills/15500-15599.xml | 32 ++ .../game/data/stats/skills/15600-15699.xml | 55 +++- .../game/data/stats/skills/16100-16199.xml | 19 +- .../game/data/stats/skills/16600-16699.xml | 118 +++----- .../game/data/stats/skills/16700-16799.xml | 6 +- .../scripts/ai/bosses/Trasken/Trasken.java | 4 +- .../scripts/ai/bosses/Valakas/Valakas.java | 285 +++++++++--------- .../dist/game/data/stats/npcs/03400-03499.xml | 16 +- .../dist/game/data/stats/npcs/29200-29299.xml | 28 +- .../game/data/stats/skills/04400-04499.xml | 5 + .../game/data/stats/skills/05000-05099.xml | 22 +- .../game/data/stats/skills/14200-14299.xml | 21 +- .../game/data/stats/skills/14300-14399.xml | 95 +++--- .../game/data/stats/skills/15200-15299.xml | 100 ++++-- .../game/data/stats/skills/15400-15499.xml | 11 + .../game/data/stats/skills/15500-15599.xml | 32 ++ .../game/data/stats/skills/15600-15699.xml | 55 +++- .../game/data/stats/skills/16100-16199.xml | 19 +- .../game/data/stats/skills/16600-16699.xml | 118 +++----- .../game/data/stats/skills/16700-16799.xml | 6 +- .../game/data/stats/skills/23600-23699.xml | 55 +++- .../game/data/stats/skills/32400-32499.xml | 68 ++++- .../scripts/ai/bosses/Trasken/Trasken.java | 4 +- .../scripts/ai/bosses/Valakas/Valakas.java | 285 +++++++++--------- .../dist/game/data/stats/npcs/03400-03499.xml | 16 +- .../dist/game/data/stats/npcs/25800-25899.xml | 128 ++++---- .../dist/game/data/stats/npcs/25900-25999.xml | 184 +++++------ .../dist/game/data/stats/npcs/26000-26099.xml | 172 +++++------ .../dist/game/data/stats/npcs/26100-26199.xml | 209 ++++++++++--- .../dist/game/data/stats/npcs/29000-29099.xml | 10 + .../dist/game/data/stats/npcs/29100-29199.xml | 24 +- .../dist/game/data/stats/npcs/29200-29299.xml | 28 +- .../dist/game/data/stats/npcs/29300-29399.xml | 148 +++++++-- .../game/data/stats/skills/04100-04199.xml | 158 ++++------ .../game/data/stats/skills/04400-04499.xml | 5 + .../game/data/stats/skills/04600-04699.xml | 262 +++++++--------- .../game/data/stats/skills/05000-05099.xml | 22 +- .../game/data/stats/skills/14200-14299.xml | 21 +- .../game/data/stats/skills/14300-14399.xml | 95 +++--- .../game/data/stats/skills/15200-15299.xml | 100 ++++-- .../game/data/stats/skills/15400-15499.xml | 11 + .../game/data/stats/skills/15500-15599.xml | 32 ++ .../game/data/stats/skills/15600-15699.xml | 55 +++- .../game/data/stats/skills/16100-16199.xml | 19 +- .../game/data/stats/skills/16600-16699.xml | 118 +++----- .../game/data/stats/skills/16700-16799.xml | 6 +- .../game/data/stats/skills/23600-23699.xml | 55 +++- .../game/data/stats/skills/32400-32499.xml | 68 ++++- .../game/data/stats/skills/32700-32799.xml | 125 +++++++- 104 files changed, 3640 insertions(+), 2770 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 9051735a7b..f47966d56b 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -847,7 +847,7 @@ public class Trasken extends AbstractNpcAI { tie_trasken = addSpawn(TAIL_TRASKEN, CENTER_LOCATION, false, 0, true); hp_tail = tie_trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 30000, tie_trasken, null); + startQuestTimer("spawn_rnd", 3000000, tie_trasken, null); break; } case 3: @@ -858,7 +858,7 @@ public class Trasken extends AbstractNpcAI trasken.doCast(SKILL_TRASKEN_UP.getSkill()); hp_trasken = trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 70000, trasken, null); + startQuestTimer("spawn_rnd", 9000000, trasken, null); for (Location loc : Spawn_Larva_1) { addSpawn(LAVRA_1, loc, false, 0, true); diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java index b98df41795..22d2f7812b 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java @@ -16,32 +16,23 @@ */ package ai.bosses.Valakas; -import java.util.ArrayList; -import java.util.List; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.enums.MountType; -import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.StatsSet; -import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.skills.SkillCaster; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.util.Util; import ai.AbstractNpcAI; @@ -54,36 +45,36 @@ public final class Valakas extends AbstractNpcAI // NPC private static final int VALAKAS = 29028; // Skills - private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); + // private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); private static final int VALAKAS_REGENERATION = 4691; - private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - }; - - private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; - - private static final SkillHolder[] VALAKAS_AOE_SKILLS = - { - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4684, 1), // Valakas Dragon Breath - new SkillHolder(4685, 1), // Valakas Tail Stomp - new SkillHolder(4686, 1), // Valakas Tail Stomp - new SkillHolder(4688, 1), // Valakas Stun - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; + // private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // }; + // + // private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; + // + // private static final SkillHolder[] VALAKAS_AOE_SKILLS = + // { + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4684, 1), // Valakas Dragon Breath + // new SkillHolder(4685, 1), // Valakas Tail Stomp + // new SkillHolder(4686, 1), // Valakas Tail Stomp + // new SkillHolder(4688, 1), // Valakas Stun + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; // Locations private static final Location TELEPORT_CUBE_LOCATIONS[] = @@ -114,7 +105,7 @@ public final class Valakas extends AbstractNpcAI private static final byte DEAD = 3; // Valakas has been killed. Entry is locked. // Misc private long _timeTracker = 0; // Time tracker for last attack on Valakas. - private Playable _actualVictim; // Actual target of Valakas. + // private Playable _actualVictim; // Actual target of Valakas. private static ZoneType ZONE; private Valakas() @@ -355,10 +346,10 @@ public final class Valakas extends AbstractNpcAI startQuestTimer("remove_players", 900000, null, null); } - else if (event.equalsIgnoreCase("skill_task")) - { - callSkillAI(npc); - } + // else if (event.equalsIgnoreCase("skill_task")) + // { + // callSkillAI(npc); + // } } else if (event.equalsIgnoreCase("valakas_unlock")) { @@ -373,12 +364,12 @@ public final class Valakas extends AbstractNpcAI return super.onAdvEvent(event, npc, player); } - @Override - public String onSpawn(Npc npc) - { - npc.disableCoreAI(true); - return super.onSpawn(npc); - } + // @Override + // public String onSpawn(Npc npc) + // { + // npc.disableCoreAI(true); + // return super.onSpawn(npc); + // } @Override public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) @@ -449,105 +440,105 @@ public final class Valakas extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - @Override - public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) - { - return null; - } - - private void callSkillAI(Npc npc) - { - if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return; - } - - // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. - if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) - { - _actualVictim = getRandomTarget(npc); - } - - // If result is still null, Valakas will roam. Don't go deeper in skill AI. - if (_actualVictim == null) - { - if (getRandom(10) == 0) - { - final int posX = npc.getX() + getRandom(-1400, 1400); - final int posY = npc.getY() + getRandom(-1400, 1400); - if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); - } - } - return; - } - - final Skill skill = getRandomSkill(npc).getSkill(); - - // Cast the skill or follow the target. - if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - npc.setTarget(_actualVictim); - npc.doCast(skill); - } - else - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); - } - } - - /** - * Pick a random skill.
- * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
- * Lower than 50% HPs, he will begin to use Meteor skill. - * @param npc valakas - * @return a skill holder - */ - private SkillHolder getRandomSkill(Npc npc) - { - final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); - - // Valakas Lava Skin has priority. - if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) - { - return VALAKAS_LAVA_SKIN; - } - - // Valakas will use mass spells if he feels surrounded. - if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) - { - return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; - } - - if (hpRatio > 50) - { - return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; - } - - return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; - } - - /** - * Pickup a random Playable from the zone, deads targets aren't included. - * @param npc - * @return a random Playable. - */ - private Playable getRandomTarget(Npc npc) - { - final List result = new ArrayList<>(); - - World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> - { - if (!obj.isPet() && !obj.isDead()) - { - result.add(obj); - } - }); - - return (result.isEmpty()) ? null : result.get(getRandom(result.size())); - } + // @Override + // public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) + // { + // return null; + // } + // + // private void callSkillAI(Npc npc) + // { + // if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) + // { + // return; + // } + // + // // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. + // if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) + // { + // _actualVictim = getRandomTarget(npc); + // } + // + // // If result is still null, Valakas will roam. Don't go deeper in skill AI. + // if (_actualVictim == null) + // { + // if (getRandom(10) == 0) + // { + // final int posX = npc.getX() + getRandom(-1400, 1400); + // final int posY = npc.getY() + getRandom(-1400, 1400); + // if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); + // } + // } + // return; + // } + // + // final Skill skill = getRandomSkill(npc).getSkill(); + // + // // Cast the skill or follow the target. + // if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + // npc.setTarget(_actualVictim); + // npc.doCast(skill); + // } + // else + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); + // } + // } + // + // /** + // * Pick a random skill.
+ // * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
+ // * Lower than 50% HPs, he will begin to use Meteor skill. + // * @param npc valakas + // * @return a skill holder + // */ + // private SkillHolder getRandomSkill(Npc npc) + // { + // final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); + // + // // Valakas Lava Skin has priority. + // if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) + // { + // return VALAKAS_LAVA_SKIN; + // } + // + // // Valakas will use mass spells if he feels surrounded. + // if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) + // { + // return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; + // } + // + // if (hpRatio > 50) + // { + // return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; + // } + // + // return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; + // } + // + // /** + // * Pickup a random Playable from the zone, deads targets aren't included. + // * @param npc + // * @return a random Playable. + // */ + // private Playable getRandomTarget(Npc npc) + // { + // final List result = new ArrayList<>(); + // + // World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> + // { + // if (!obj.isPet() && !obj.isDead()) + // { + // result.add(obj); + // } + // }); + // + // return (result.isEmpty()) ? null : result.get(getRandom(result.size())); + // } public static void main(String[] args) { diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/npcs/29200-29299.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/npcs/29200-29299.xml index 38d7907428..e3a13a659c 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/npcs/29200-29299.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/npcs/29200-29299.xml @@ -408,8 +408,8 @@ - - + + @@ -489,8 +489,8 @@ - - + + @@ -532,8 +532,8 @@ - - + + @@ -660,8 +660,8 @@ - - + + @@ -930,8 +930,8 @@ - - + + @@ -1778,8 +1778,8 @@ - - + + @@ -1886,8 +1886,8 @@ - - + + diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/04400-04499.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/04400-04499.xml index dcf13f8b4c..b74a27aaf3 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/04400-04499.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/04400-04499.xml @@ -3922,6 +3922,11 @@ 1 P -5 + + + 100 + + 900 diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/05000-05099.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/05000-05099.xml index 1032e106ae..8f9f45b4a8 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/05000-05099.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/05000-05099.xml @@ -3003,25 +3003,21 @@ - 150 - 600 - -1 - 1100 + 2500 + -100 + 2500 EARTH - 180 + 450 8000 - 2 - 99 - A1 - 6000 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 + 300 ENEMY RANGE NOT_FRIEND - - 1084 + + 34255 diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/14200-14299.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/14200-14299.xml index 51da134009..94a9b4e31d 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/14200-14299.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/14200-14299.xml @@ -1232,29 +1232,20 @@ icon.skill0054 A2 - 1 - 1000 + 600 1500 - 1 - -1 + -100 FLY_AWAY - NONE - -5 - 0 - 1400 - 1 - 99 + 600 99 1 - 1 - 200 + 3 true ENEMY - RANGE - NOT_FRIEND + SINGLE - 2000 + 157 200 diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15200-15299.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15200-15299.xml index dc70a7a20e..3b0a7b808d 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15200-15299.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15200-15299.xml @@ -1330,56 +1330,104 @@ icon.skill0100 A2 - 400 + 1 + 10 + STUN + STUN + 600 2500 1000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + SHOCK SELF - SINGLE + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill10549 A2 - 400 + 1 + 30 2500 3000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + 0;0;2500;900 SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + -30 + PER + + + -30 + PER + + - A1 - 2500 - -574 - -5 - 0 - 99 - 1500 + 1 + 10 + STUN + STUN + 1000 + -100 + WIND + 300 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + - A1 - 1800 + A2 + 300 + 2500 2500 - -707 - -5 - 0 + -100 + 2500 + WIND + 300 99 - 1 - SELF - SINGLE + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15400-15499.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15400-15499.xml index 0d2b679c7d..82b6b9b0cf 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15400-15499.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15400-15499.xml @@ -444,10 +444,21 @@ A2 + 1 + 5 + 600 5000 5000 -574 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + A1 diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15500-15599.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15500-15599.xml index dc24d1e9a7..8ff7268b18 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15500-15599.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/15500-15599.xml @@ -879,21 +879,53 @@ icon.skill4108 + 1 + 30 + TURN_FLEE + TURN_FLEE + 600 A2 3000 500 1 -867 true + DERANGEMENT + SELF + POINT_BLANK + NOT_FRIEND + + + + icon.skill0006 + 1 + 5 + STUN + 600 A2 2000 3000 -867 true + PULL + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 600 + + + 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912 + + diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/16100-16199.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/16100-16199.xml index a04b6fb1e0..a7b7a7511d 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/16100-16199.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/16100-16199.xml @@ -28,11 +28,22 @@ icon.skill1167 A1 - 900 - 2000 + 1 + 300 + 40-80 + 300 + 2500 500 - -264 - 1 + -100 + 300 + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 9051735a7b..f47966d56b 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -847,7 +847,7 @@ public class Trasken extends AbstractNpcAI { tie_trasken = addSpawn(TAIL_TRASKEN, CENTER_LOCATION, false, 0, true); hp_tail = tie_trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 30000, tie_trasken, null); + startQuestTimer("spawn_rnd", 3000000, tie_trasken, null); break; } case 3: @@ -858,7 +858,7 @@ public class Trasken extends AbstractNpcAI trasken.doCast(SKILL_TRASKEN_UP.getSkill()); hp_trasken = trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 70000, trasken, null); + startQuestTimer("spawn_rnd", 9000000, trasken, null); for (Location loc : Spawn_Larva_1) { addSpawn(LAVRA_1, loc, false, 0, true); diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java index b98df41795..22d2f7812b 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java @@ -16,32 +16,23 @@ */ package ai.bosses.Valakas; -import java.util.ArrayList; -import java.util.List; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.enums.MountType; -import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.StatsSet; -import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.skills.SkillCaster; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.util.Util; import ai.AbstractNpcAI; @@ -54,36 +45,36 @@ public final class Valakas extends AbstractNpcAI // NPC private static final int VALAKAS = 29028; // Skills - private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); + // private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); private static final int VALAKAS_REGENERATION = 4691; - private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - }; - - private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; - - private static final SkillHolder[] VALAKAS_AOE_SKILLS = - { - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4684, 1), // Valakas Dragon Breath - new SkillHolder(4685, 1), // Valakas Tail Stomp - new SkillHolder(4686, 1), // Valakas Tail Stomp - new SkillHolder(4688, 1), // Valakas Stun - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; + // private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // }; + // + // private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; + // + // private static final SkillHolder[] VALAKAS_AOE_SKILLS = + // { + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4684, 1), // Valakas Dragon Breath + // new SkillHolder(4685, 1), // Valakas Tail Stomp + // new SkillHolder(4686, 1), // Valakas Tail Stomp + // new SkillHolder(4688, 1), // Valakas Stun + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; // Locations private static final Location TELEPORT_CUBE_LOCATIONS[] = @@ -114,7 +105,7 @@ public final class Valakas extends AbstractNpcAI private static final byte DEAD = 3; // Valakas has been killed. Entry is locked. // Misc private long _timeTracker = 0; // Time tracker for last attack on Valakas. - private Playable _actualVictim; // Actual target of Valakas. + // private Playable _actualVictim; // Actual target of Valakas. private static ZoneType ZONE; private Valakas() @@ -355,10 +346,10 @@ public final class Valakas extends AbstractNpcAI startQuestTimer("remove_players", 900000, null, null); } - else if (event.equalsIgnoreCase("skill_task")) - { - callSkillAI(npc); - } + // else if (event.equalsIgnoreCase("skill_task")) + // { + // callSkillAI(npc); + // } } else if (event.equalsIgnoreCase("valakas_unlock")) { @@ -373,12 +364,12 @@ public final class Valakas extends AbstractNpcAI return super.onAdvEvent(event, npc, player); } - @Override - public String onSpawn(Npc npc) - { - npc.disableCoreAI(true); - return super.onSpawn(npc); - } + // @Override + // public String onSpawn(Npc npc) + // { + // npc.disableCoreAI(true); + // return super.onSpawn(npc); + // } @Override public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) @@ -449,105 +440,105 @@ public final class Valakas extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - @Override - public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) - { - return null; - } - - private void callSkillAI(Npc npc) - { - if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return; - } - - // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. - if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) - { - _actualVictim = getRandomTarget(npc); - } - - // If result is still null, Valakas will roam. Don't go deeper in skill AI. - if (_actualVictim == null) - { - if (getRandom(10) == 0) - { - final int posX = npc.getX() + getRandom(-1400, 1400); - final int posY = npc.getY() + getRandom(-1400, 1400); - if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); - } - } - return; - } - - final Skill skill = getRandomSkill(npc).getSkill(); - - // Cast the skill or follow the target. - if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - npc.setTarget(_actualVictim); - npc.doCast(skill); - } - else - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); - } - } - - /** - * Pick a random skill.
- * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
- * Lower than 50% HPs, he will begin to use Meteor skill. - * @param npc valakas - * @return a skill holder - */ - private SkillHolder getRandomSkill(Npc npc) - { - final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); - - // Valakas Lava Skin has priority. - if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) - { - return VALAKAS_LAVA_SKIN; - } - - // Valakas will use mass spells if he feels surrounded. - if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) - { - return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; - } - - if (hpRatio > 50) - { - return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; - } - - return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; - } - - /** - * Pickup a random Playable from the zone, deads targets aren't included. - * @param npc - * @return a random Playable. - */ - private Playable getRandomTarget(Npc npc) - { - final List result = new ArrayList<>(); - - World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> - { - if (!obj.isPet() && !obj.isDead()) - { - result.add(obj); - } - }); - - return (result.isEmpty()) ? null : result.get(getRandom(result.size())); - } + // @Override + // public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) + // { + // return null; + // } + // + // private void callSkillAI(Npc npc) + // { + // if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) + // { + // return; + // } + // + // // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. + // if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) + // { + // _actualVictim = getRandomTarget(npc); + // } + // + // // If result is still null, Valakas will roam. Don't go deeper in skill AI. + // if (_actualVictim == null) + // { + // if (getRandom(10) == 0) + // { + // final int posX = npc.getX() + getRandom(-1400, 1400); + // final int posY = npc.getY() + getRandom(-1400, 1400); + // if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); + // } + // } + // return; + // } + // + // final Skill skill = getRandomSkill(npc).getSkill(); + // + // // Cast the skill or follow the target. + // if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + // npc.setTarget(_actualVictim); + // npc.doCast(skill); + // } + // else + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); + // } + // } + // + // /** + // * Pick a random skill.
+ // * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
+ // * Lower than 50% HPs, he will begin to use Meteor skill. + // * @param npc valakas + // * @return a skill holder + // */ + // private SkillHolder getRandomSkill(Npc npc) + // { + // final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); + // + // // Valakas Lava Skin has priority. + // if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) + // { + // return VALAKAS_LAVA_SKIN; + // } + // + // // Valakas will use mass spells if he feels surrounded. + // if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) + // { + // return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; + // } + // + // if (hpRatio > 50) + // { + // return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; + // } + // + // return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; + // } + // + // /** + // * Pickup a random Playable from the zone, deads targets aren't included. + // * @param npc + // * @return a random Playable. + // */ + // private Playable getRandomTarget(Npc npc) + // { + // final List result = new ArrayList<>(); + // + // World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> + // { + // if (!obj.isPet() && !obj.isDead()) + // { + // result.add(obj); + // } + // }); + // + // return (result.isEmpty()) ? null : result.get(getRandom(result.size())); + // } public static void main(String[] args) { diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/npcs/29200-29299.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/npcs/29200-29299.xml index f2c0b2faac..ccc9d30fec 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/npcs/29200-29299.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/npcs/29200-29299.xml @@ -408,8 +408,8 @@ - - + + @@ -489,8 +489,8 @@ - - + + @@ -532,8 +532,8 @@ - - + + @@ -685,8 +685,8 @@ - - + + @@ -956,8 +956,8 @@ - - + + @@ -1806,8 +1806,8 @@ - - + + @@ -1914,8 +1914,8 @@ - - + + diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/04400-04499.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/04400-04499.xml index 451ea98cef..2f351cbc5f 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/04400-04499.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/04400-04499.xml @@ -3922,6 +3922,11 @@ 1 P -5 + + + 100 + +
900 diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/05000-05099.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/05000-05099.xml index dcc4017d55..9bdfeeffba 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/05000-05099.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/05000-05099.xml @@ -3003,25 +3003,21 @@ - 150 - 600 - -1 - 1100 + 2500 + -100 + 2500 EARTH - 180 + 450 8000 - 2 - 99 - A1 - 6000 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 + 300 ENEMY RANGE NOT_FRIEND - - 1084 + + 34255 diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/14200-14299.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/14200-14299.xml index b4c63e0736..be0c082931 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/14200-14299.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/14200-14299.xml @@ -1232,29 +1232,20 @@ icon.skill0054 A2 - 1 - 1000 + 600 1500 - 1 - -1 + -100 FLY_AWAY - NONE - -5 - 0 - 1400 - 1 - 99 + 600 99 1 - 1 - 200 + 3 true ENEMY - RANGE - NOT_FRIEND + SINGLE - 2000 + 157 200 diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15200-15299.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15200-15299.xml index dc70a7a20e..3b0a7b808d 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15200-15299.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15200-15299.xml @@ -1330,56 +1330,104 @@ icon.skill0100 A2 - 400 + 1 + 10 + STUN + STUN + 600 2500 1000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + SHOCK SELF - SINGLE + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill10549 A2 - 400 + 1 + 30 2500 3000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + 0;0;2500;900 SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + -30 + PER + + + -30 + PER + + - A1 - 2500 - -574 - -5 - 0 - 99 - 1500 + 1 + 10 + STUN + STUN + 1000 + -100 + WIND + 300 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + - A1 - 1800 + A2 + 300 + 2500 2500 - -707 - -5 - 0 + -100 + 2500 + WIND + 300 99 - 1 - SELF - SINGLE + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15400-15499.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15400-15499.xml index 0d2b679c7d..82b6b9b0cf 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15400-15499.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15400-15499.xml @@ -444,10 +444,21 @@ A2 + 1 + 5 + 600 5000 5000 -574 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + A1 diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15500-15599.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15500-15599.xml index ab3170d0ad..9dfdf0049e 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15500-15599.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/15500-15599.xml @@ -879,21 +879,53 @@ icon.skill4108 + 1 + 30 + TURN_FLEE + TURN_FLEE + 600 A2 3000 500 1 -867 true + DERANGEMENT + SELF + POINT_BLANK + NOT_FRIEND + + + + icon.skill0006 + 1 + 5 + STUN + 600 A2 2000 3000 -867 true + PULL + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 600 + + + 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912 + + diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/16100-16199.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/16100-16199.xml index 56427a51fe..4de299e952 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/16100-16199.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/16100-16199.xml @@ -28,11 +28,22 @@ icon.skill1167 A1 - 900 - 2000 + 1 + 300 + 40-80 + 300 + 2500 500 - -264 - 1 + -100 + 300 + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 9051735a7b..f47966d56b 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -847,7 +847,7 @@ public class Trasken extends AbstractNpcAI { tie_trasken = addSpawn(TAIL_TRASKEN, CENTER_LOCATION, false, 0, true); hp_tail = tie_trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 30000, tie_trasken, null); + startQuestTimer("spawn_rnd", 3000000, tie_trasken, null); break; } case 3: @@ -858,7 +858,7 @@ public class Trasken extends AbstractNpcAI trasken.doCast(SKILL_TRASKEN_UP.getSkill()); hp_trasken = trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 70000, trasken, null); + startQuestTimer("spawn_rnd", 9000000, trasken, null); for (Location loc : Spawn_Larva_1) { addSpawn(LAVRA_1, loc, false, 0, true); diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java index b98df41795..22d2f7812b 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java @@ -16,32 +16,23 @@ */ package ai.bosses.Valakas; -import java.util.ArrayList; -import java.util.List; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.enums.MountType; -import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.StatsSet; -import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.skills.SkillCaster; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.util.Util; import ai.AbstractNpcAI; @@ -54,36 +45,36 @@ public final class Valakas extends AbstractNpcAI // NPC private static final int VALAKAS = 29028; // Skills - private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); + // private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); private static final int VALAKAS_REGENERATION = 4691; - private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - }; - - private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; - - private static final SkillHolder[] VALAKAS_AOE_SKILLS = - { - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4684, 1), // Valakas Dragon Breath - new SkillHolder(4685, 1), // Valakas Tail Stomp - new SkillHolder(4686, 1), // Valakas Tail Stomp - new SkillHolder(4688, 1), // Valakas Stun - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; + // private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // }; + // + // private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; + // + // private static final SkillHolder[] VALAKAS_AOE_SKILLS = + // { + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4684, 1), // Valakas Dragon Breath + // new SkillHolder(4685, 1), // Valakas Tail Stomp + // new SkillHolder(4686, 1), // Valakas Tail Stomp + // new SkillHolder(4688, 1), // Valakas Stun + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; // Locations private static final Location TELEPORT_CUBE_LOCATIONS[] = @@ -114,7 +105,7 @@ public final class Valakas extends AbstractNpcAI private static final byte DEAD = 3; // Valakas has been killed. Entry is locked. // Misc private long _timeTracker = 0; // Time tracker for last attack on Valakas. - private Playable _actualVictim; // Actual target of Valakas. + // private Playable _actualVictim; // Actual target of Valakas. private static ZoneType ZONE; private Valakas() @@ -355,10 +346,10 @@ public final class Valakas extends AbstractNpcAI startQuestTimer("remove_players", 900000, null, null); } - else if (event.equalsIgnoreCase("skill_task")) - { - callSkillAI(npc); - } + // else if (event.equalsIgnoreCase("skill_task")) + // { + // callSkillAI(npc); + // } } else if (event.equalsIgnoreCase("valakas_unlock")) { @@ -373,12 +364,12 @@ public final class Valakas extends AbstractNpcAI return super.onAdvEvent(event, npc, player); } - @Override - public String onSpawn(Npc npc) - { - npc.disableCoreAI(true); - return super.onSpawn(npc); - } + // @Override + // public String onSpawn(Npc npc) + // { + // npc.disableCoreAI(true); + // return super.onSpawn(npc); + // } @Override public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) @@ -449,105 +440,105 @@ public final class Valakas extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - @Override - public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) - { - return null; - } - - private void callSkillAI(Npc npc) - { - if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return; - } - - // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. - if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) - { - _actualVictim = getRandomTarget(npc); - } - - // If result is still null, Valakas will roam. Don't go deeper in skill AI. - if (_actualVictim == null) - { - if (getRandom(10) == 0) - { - final int posX = npc.getX() + getRandom(-1400, 1400); - final int posY = npc.getY() + getRandom(-1400, 1400); - if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); - } - } - return; - } - - final Skill skill = getRandomSkill(npc).getSkill(); - - // Cast the skill or follow the target. - if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - npc.setTarget(_actualVictim); - npc.doCast(skill); - } - else - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); - } - } - - /** - * Pick a random skill.
- * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
- * Lower than 50% HPs, he will begin to use Meteor skill. - * @param npc valakas - * @return a skill holder - */ - private SkillHolder getRandomSkill(Npc npc) - { - final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); - - // Valakas Lava Skin has priority. - if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) - { - return VALAKAS_LAVA_SKIN; - } - - // Valakas will use mass spells if he feels surrounded. - if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) - { - return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; - } - - if (hpRatio > 50) - { - return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; - } - - return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; - } - - /** - * Pickup a random Playable from the zone, deads targets aren't included. - * @param npc - * @return a random Playable. - */ - private Playable getRandomTarget(Npc npc) - { - final List result = new ArrayList<>(); - - World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> - { - if (!obj.isPet() && !obj.isDead()) - { - result.add(obj); - } - }); - - return (result.isEmpty()) ? null : result.get(getRandom(result.size())); - } + // @Override + // public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) + // { + // return null; + // } + // + // private void callSkillAI(Npc npc) + // { + // if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) + // { + // return; + // } + // + // // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. + // if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) + // { + // _actualVictim = getRandomTarget(npc); + // } + // + // // If result is still null, Valakas will roam. Don't go deeper in skill AI. + // if (_actualVictim == null) + // { + // if (getRandom(10) == 0) + // { + // final int posX = npc.getX() + getRandom(-1400, 1400); + // final int posY = npc.getY() + getRandom(-1400, 1400); + // if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); + // } + // } + // return; + // } + // + // final Skill skill = getRandomSkill(npc).getSkill(); + // + // // Cast the skill or follow the target. + // if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + // npc.setTarget(_actualVictim); + // npc.doCast(skill); + // } + // else + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); + // } + // } + // + // /** + // * Pick a random skill.
+ // * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
+ // * Lower than 50% HPs, he will begin to use Meteor skill. + // * @param npc valakas + // * @return a skill holder + // */ + // private SkillHolder getRandomSkill(Npc npc) + // { + // final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); + // + // // Valakas Lava Skin has priority. + // if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) + // { + // return VALAKAS_LAVA_SKIN; + // } + // + // // Valakas will use mass spells if he feels surrounded. + // if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) + // { + // return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; + // } + // + // if (hpRatio > 50) + // { + // return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; + // } + // + // return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; + // } + // + // /** + // * Pickup a random Playable from the zone, deads targets aren't included. + // * @param npc + // * @return a random Playable. + // */ + // private Playable getRandomTarget(Npc npc) + // { + // final List result = new ArrayList<>(); + // + // World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> + // { + // if (!obj.isPet() && !obj.isDead()) + // { + // result.add(obj); + // } + // }); + // + // return (result.isEmpty()) ? null : result.get(getRandom(result.size())); + // } public static void main(String[] args) { diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/npcs/03400-03499.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/npcs/03400-03499.xml index 4510cd9644..1b18ffead9 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/npcs/03400-03499.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/npcs/03400-03499.xml @@ -3247,8 +3247,8 @@ - - + + @@ -3481,8 +3481,8 @@ - - + + @@ -3589,8 +3589,8 @@ - - + + @@ -3692,8 +3692,8 @@ - - + + diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/npcs/29200-29299.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/npcs/29200-29299.xml index 5c5908ed43..91a64e2c63 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/npcs/29200-29299.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/npcs/29200-29299.xml @@ -408,8 +408,8 @@ - - + + @@ -489,8 +489,8 @@ - - + + @@ -532,8 +532,8 @@ - - + + @@ -685,8 +685,8 @@ - - + + @@ -956,8 +956,8 @@ - - + + @@ -1806,8 +1806,8 @@ - - + + @@ -1914,8 +1914,8 @@ - - + + diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/04400-04499.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/04400-04499.xml index abc97495d3..2769fbdd93 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/04400-04499.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/04400-04499.xml @@ -3935,6 +3935,11 @@ 1 P -5 + + + 100 + +
900 diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/05000-05099.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/05000-05099.xml index 48f9d23580..e3faf9e477 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/05000-05099.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/05000-05099.xml @@ -3003,25 +3003,21 @@ - 150 - 600 - -1 - 1100 + 2500 + -100 + 2500 EARTH - 180 + 450 8000 - 2 - 99 - A1 - 6000 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 + 300 ENEMY RANGE NOT_FRIEND - - 1084 + + 34255 diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/14200-14299.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/14200-14299.xml index a6b7f19a69..af72cc87de 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/14200-14299.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/14200-14299.xml @@ -1232,29 +1232,20 @@ icon.skill0054 A2 - 1 - 1000 + 600 1500 - 1 - -1 + -100 FLY_AWAY - NONE - -5 - 0 - 1400 - 1 - 99 + 600 99 1 - 1 - 200 + 3 true ENEMY - RANGE - NOT_FRIEND + SINGLE - 2000 + 157 200 diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15200-15299.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15200-15299.xml index 42ab9e311b..3d605972cf 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15200-15299.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15200-15299.xml @@ -1330,56 +1330,104 @@ icon.skill0100 A2 - 400 + 1 + 10 + STUN + STUN + 600 2500 1000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + SHOCK SELF - SINGLE + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill10549 A2 - 400 + 1 + 30 2500 3000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + 0;0;2500;900 SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + -30 + PER + + + -30 + PER + + - A1 - 2500 - -574 - -5 - 0 - 99 - 1500 + 1 + 10 + STUN + STUN + 1000 + -100 + WIND + 300 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + - A1 - 1800 + A2 + 300 + 2500 2500 - -707 - -5 - 0 + -100 + 2500 + WIND + 300 99 - 1 - SELF - SINGLE + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15400-15499.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15400-15499.xml index 0d2b679c7d..82b6b9b0cf 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15400-15499.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15400-15499.xml @@ -444,10 +444,21 @@ A2 + 1 + 5 + 600 5000 5000 -574 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + A1 diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15500-15599.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15500-15599.xml index ab3170d0ad..9dfdf0049e 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15500-15599.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/15500-15599.xml @@ -879,21 +879,53 @@ icon.skill4108 + 1 + 30 + TURN_FLEE + TURN_FLEE + 600 A2 3000 500 1 -867 true + DERANGEMENT + SELF + POINT_BLANK + NOT_FRIEND + + + + icon.skill0006 + 1 + 5 + STUN + 600 A2 2000 3000 -867 true + PULL + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 600 + + + 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912 + + diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16100-16199.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16100-16199.xml index ff88912fb5..1afaf9e3ad 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16100-16199.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16100-16199.xml @@ -28,11 +28,22 @@ icon.skill1167 A1 - 900 - 2000 + 1 + 300 + 40-80 + 300 + 2500 500 - -264 - 1 + -100 + 300 + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16600-16699.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16600-16699.xml index 7a46316aa3..2c0fdef9ad 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16600-16699.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16600-16699.xml @@ -206,25 +206,19 @@ 1 10 PARALYZE - 150 PARALYZE - 10 2500 2500 - 200 3000 500 - 10000 - 2 - -52 - 0 + -100 PARALYZE ENEMY SINGLE true - 1500 + 157 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -237,20 +231,17 @@ A1 true 40-80 - 2500 - 900 - 10 + 600 1000 500 - -52 - 2500 + -100 SELF POINT_BLANK NOT_FRIEND true - - 1500 + + 34255 @@ -259,21 +250,14 @@ icon.skill1275 A2 5 - 2 - 200 - true - -1 + 5 40-80 - 900 - 20000 + 600 KNOCKDOWN KNOCKDOWN - 0 - 10 1000 500 - -52 - 2500 + -100 KNOCKDOWN SELF POINT_BLANK @@ -281,7 +265,7 @@ true - 1500 + 157 600 @@ -297,18 +281,11 @@ A2 5 30 - 200 - true - -1 40-80 - 900 - 20000 - 0 - 10 + 600 2000 500 - -52 - 2500 + -100 GIANT_WEAKNESS SELF POINT_BLANK @@ -316,7 +293,7 @@ true - 1500 + 157 30 @@ -368,22 +345,16 @@ icon.skill1172 A2 - 1200 + 2500 2000 - -52 - 1 - 10 + -100 1 10 40-80 PARALYZE PARALYZE - 150 - 900 - 1200 - 10000 - 2 - 0 + 300 + 2500 PARALYZE ENEMY RANGE @@ -391,7 +362,7 @@ true - 100000 + 34255 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -402,23 +373,20 @@ A1 - true 45-45 - 200 - 1200 - 400 - 10 + 2500 + 300 3000 500 - -1349 - 1200 + -100 + 2500 ENEMY RANGE NOT_FRIEND true - 1500 + 157 250 @@ -431,26 +399,21 @@ icon.skill16614 A2 - SELF - 1200 + 2500 3000 - -52 - 1 - 10 - 10000 + -100 + 2500 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY SINGLE - 200 + 512 1 @@ -587,19 +550,20 @@ A1 2500 5000 - -696 - 1 - 10000 - 200 - 12 + -100 + 300 2500 ENEMY - SINGLE + RANGE NOT_FRIEND true - 1500 + 157 + + + 512 + 1 @@ -607,23 +571,17 @@ icon.skll10094 A2 - SELF 2500 2500 - 900 + 300 2500 40-80 - -438 - 1 - 10 - 10000 + -100 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY RANGE @@ -634,7 +592,7 @@ 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 - 1500 + 157 -50 diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16700-16799.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16700-16799.xml index 5a13c515d8..2b6dc7c791 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16700-16799.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/16700-16799.xml @@ -389,15 +389,15 @@ A1 - -1 + 600 1500 - 1 -100 + 600 ENEMY SINGLE - 100000 + 34255 diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 9051735a7b..f47966d56b 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -847,7 +847,7 @@ public class Trasken extends AbstractNpcAI { tie_trasken = addSpawn(TAIL_TRASKEN, CENTER_LOCATION, false, 0, true); hp_tail = tie_trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 30000, tie_trasken, null); + startQuestTimer("spawn_rnd", 3000000, tie_trasken, null); break; } case 3: @@ -858,7 +858,7 @@ public class Trasken extends AbstractNpcAI trasken.doCast(SKILL_TRASKEN_UP.getSkill()); hp_trasken = trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 70000, trasken, null); + startQuestTimer("spawn_rnd", 9000000, trasken, null); for (Location loc : Spawn_Larva_1) { addSpawn(LAVRA_1, loc, false, 0, true); diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java index b98df41795..22d2f7812b 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java @@ -16,32 +16,23 @@ */ package ai.bosses.Valakas; -import java.util.ArrayList; -import java.util.List; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.enums.MountType; -import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.StatsSet; -import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.skills.SkillCaster; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.util.Util; import ai.AbstractNpcAI; @@ -54,36 +45,36 @@ public final class Valakas extends AbstractNpcAI // NPC private static final int VALAKAS = 29028; // Skills - private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); + // private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); private static final int VALAKAS_REGENERATION = 4691; - private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - }; - - private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; - - private static final SkillHolder[] VALAKAS_AOE_SKILLS = - { - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4684, 1), // Valakas Dragon Breath - new SkillHolder(4685, 1), // Valakas Tail Stomp - new SkillHolder(4686, 1), // Valakas Tail Stomp - new SkillHolder(4688, 1), // Valakas Stun - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; + // private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // }; + // + // private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; + // + // private static final SkillHolder[] VALAKAS_AOE_SKILLS = + // { + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4684, 1), // Valakas Dragon Breath + // new SkillHolder(4685, 1), // Valakas Tail Stomp + // new SkillHolder(4686, 1), // Valakas Tail Stomp + // new SkillHolder(4688, 1), // Valakas Stun + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; // Locations private static final Location TELEPORT_CUBE_LOCATIONS[] = @@ -114,7 +105,7 @@ public final class Valakas extends AbstractNpcAI private static final byte DEAD = 3; // Valakas has been killed. Entry is locked. // Misc private long _timeTracker = 0; // Time tracker for last attack on Valakas. - private Playable _actualVictim; // Actual target of Valakas. + // private Playable _actualVictim; // Actual target of Valakas. private static ZoneType ZONE; private Valakas() @@ -355,10 +346,10 @@ public final class Valakas extends AbstractNpcAI startQuestTimer("remove_players", 900000, null, null); } - else if (event.equalsIgnoreCase("skill_task")) - { - callSkillAI(npc); - } + // else if (event.equalsIgnoreCase("skill_task")) + // { + // callSkillAI(npc); + // } } else if (event.equalsIgnoreCase("valakas_unlock")) { @@ -373,12 +364,12 @@ public final class Valakas extends AbstractNpcAI return super.onAdvEvent(event, npc, player); } - @Override - public String onSpawn(Npc npc) - { - npc.disableCoreAI(true); - return super.onSpawn(npc); - } + // @Override + // public String onSpawn(Npc npc) + // { + // npc.disableCoreAI(true); + // return super.onSpawn(npc); + // } @Override public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) @@ -449,105 +440,105 @@ public final class Valakas extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - @Override - public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) - { - return null; - } - - private void callSkillAI(Npc npc) - { - if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return; - } - - // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. - if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) - { - _actualVictim = getRandomTarget(npc); - } - - // If result is still null, Valakas will roam. Don't go deeper in skill AI. - if (_actualVictim == null) - { - if (getRandom(10) == 0) - { - final int posX = npc.getX() + getRandom(-1400, 1400); - final int posY = npc.getY() + getRandom(-1400, 1400); - if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); - } - } - return; - } - - final Skill skill = getRandomSkill(npc).getSkill(); - - // Cast the skill or follow the target. - if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - npc.setTarget(_actualVictim); - npc.doCast(skill); - } - else - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); - } - } - - /** - * Pick a random skill.
- * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
- * Lower than 50% HPs, he will begin to use Meteor skill. - * @param npc valakas - * @return a skill holder - */ - private SkillHolder getRandomSkill(Npc npc) - { - final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); - - // Valakas Lava Skin has priority. - if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) - { - return VALAKAS_LAVA_SKIN; - } - - // Valakas will use mass spells if he feels surrounded. - if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) - { - return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; - } - - if (hpRatio > 50) - { - return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; - } - - return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; - } - - /** - * Pickup a random Playable from the zone, deads targets aren't included. - * @param npc - * @return a random Playable. - */ - private Playable getRandomTarget(Npc npc) - { - final List result = new ArrayList<>(); - - World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> - { - if (!obj.isPet() && !obj.isDead()) - { - result.add(obj); - } - }); - - return (result.isEmpty()) ? null : result.get(getRandom(result.size())); - } + // @Override + // public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) + // { + // return null; + // } + // + // private void callSkillAI(Npc npc) + // { + // if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) + // { + // return; + // } + // + // // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. + // if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) + // { + // _actualVictim = getRandomTarget(npc); + // } + // + // // If result is still null, Valakas will roam. Don't go deeper in skill AI. + // if (_actualVictim == null) + // { + // if (getRandom(10) == 0) + // { + // final int posX = npc.getX() + getRandom(-1400, 1400); + // final int posY = npc.getY() + getRandom(-1400, 1400); + // if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); + // } + // } + // return; + // } + // + // final Skill skill = getRandomSkill(npc).getSkill(); + // + // // Cast the skill or follow the target. + // if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + // npc.setTarget(_actualVictim); + // npc.doCast(skill); + // } + // else + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); + // } + // } + // + // /** + // * Pick a random skill.
+ // * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
+ // * Lower than 50% HPs, he will begin to use Meteor skill. + // * @param npc valakas + // * @return a skill holder + // */ + // private SkillHolder getRandomSkill(Npc npc) + // { + // final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); + // + // // Valakas Lava Skin has priority. + // if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) + // { + // return VALAKAS_LAVA_SKIN; + // } + // + // // Valakas will use mass spells if he feels surrounded. + // if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) + // { + // return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; + // } + // + // if (hpRatio > 50) + // { + // return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; + // } + // + // return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; + // } + // + // /** + // * Pickup a random Playable from the zone, deads targets aren't included. + // * @param npc + // * @return a random Playable. + // */ + // private Playable getRandomTarget(Npc npc) + // { + // final List result = new ArrayList<>(); + // + // World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> + // { + // if (!obj.isPet() && !obj.isDead()) + // { + // result.add(obj); + // } + // }); + // + // return (result.isEmpty()) ? null : result.get(getRandom(result.size())); + // } public static void main(String[] args) { diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/npcs/03400-03499.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/npcs/03400-03499.xml index 4510cd9644..1b18ffead9 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/npcs/03400-03499.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/npcs/03400-03499.xml @@ -3247,8 +3247,8 @@ - - + + @@ -3481,8 +3481,8 @@ - - + + @@ -3589,8 +3589,8 @@ - - + + @@ -3692,8 +3692,8 @@ - - + + diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/npcs/29200-29299.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/npcs/29200-29299.xml index 9f054c4c3a..753adf8830 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/npcs/29200-29299.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/npcs/29200-29299.xml @@ -408,8 +408,8 @@ - - + + @@ -489,8 +489,8 @@ - - + + @@ -532,8 +532,8 @@ - - + + @@ -685,8 +685,8 @@ - - + + @@ -991,8 +991,8 @@ - - + + @@ -1876,8 +1876,8 @@ - - + + @@ -1984,8 +1984,8 @@ - - + + diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/04400-04499.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/04400-04499.xml index c314fff4c7..9806f0a553 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/04400-04499.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/04400-04499.xml @@ -3935,6 +3935,11 @@ 1 P -5 + + + 100 + +
900 diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/05000-05099.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/05000-05099.xml index 4e848ff314..1c6e2b9c3b 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/05000-05099.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/05000-05099.xml @@ -3003,25 +3003,21 @@ - 150 - 600 - -1 - 1100 + 2500 + -100 + 2500 EARTH - 180 + 450 8000 - 2 - 99 - A1 - 6000 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 + 300 ENEMY RANGE NOT_FRIEND - - 1084 + + 34255 diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/14200-14299.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/14200-14299.xml index b4c63e0736..be0c082931 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/14200-14299.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/14200-14299.xml @@ -1232,29 +1232,20 @@ icon.skill0054 A2 - 1 - 1000 + 600 1500 - 1 - -1 + -100 FLY_AWAY - NONE - -5 - 0 - 1400 - 1 - 99 + 600 99 1 - 1 - 200 + 3 true ENEMY - RANGE - NOT_FRIEND + SINGLE - 2000 + 157 200 diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15200-15299.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15200-15299.xml index 2391d5420f..26c036ada6 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15200-15299.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15200-15299.xml @@ -1330,56 +1330,104 @@ icon.skill0100 A2 - 400 + 1 + 10 + STUN + STUN + 600 2500 1000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + SHOCK SELF - SINGLE + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill10549 A2 - 400 + 1 + 30 2500 3000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + 0;0;2500;900 SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + -30 + PER + + + -30 + PER + + - A1 - 2500 - -574 - -5 - 0 - 99 - 1500 + 1 + 10 + STUN + STUN + 1000 + -100 + WIND + 300 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + - A1 - 1800 + A2 + 300 + 2500 2500 - -707 - -5 - 0 + -100 + 2500 + WIND + 300 99 - 1 - SELF - SINGLE + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15400-15499.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15400-15499.xml index 0ffe920648..4e3558a117 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15400-15499.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15400-15499.xml @@ -444,10 +444,21 @@ A2 + 1 + 5 + 600 5000 5000 -574 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + A1 diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15500-15599.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15500-15599.xml index 2de1fb0a0c..cd1580c66a 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15500-15599.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/15500-15599.xml @@ -939,21 +939,53 @@ icon.skill4108 + 1 + 30 + TURN_FLEE + TURN_FLEE + 600 A2 3000 500 1 -867 true + DERANGEMENT + SELF + POINT_BLANK + NOT_FRIEND + + + + icon.skill0006 + 1 + 5 + STUN + 600 A2 2000 3000 -867 true + PULL + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 600 + + + 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912 + + diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16100-16199.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16100-16199.xml index 597c44918b..5c0c1a63ff 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16100-16199.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16100-16199.xml @@ -28,11 +28,22 @@ icon.skill1167 A1 - 900 - 2000 + 1 + 300 + 40-80 + 300 + 2500 500 - -264 - 1 + -100 + 300 + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16600-16699.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16600-16699.xml index 3f616b2c2a..b3c46ed56d 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16600-16699.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16600-16699.xml @@ -206,25 +206,19 @@ 1 10 PARALYZE - 150 PARALYZE - 10 2500 2500 - 200 3000 500 - 10000 - 2 - -52 - 0 + -100 PARALYZE ENEMY SINGLE true - 1500 + 157 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -237,20 +231,17 @@ A1 true 40-80 - 2500 - 900 - 10 + 600 1000 500 - -52 - 2500 + -100 SELF POINT_BLANK NOT_FRIEND true - - 1500 + + 34255 @@ -259,21 +250,14 @@ icon.skill1275 A2 5 - 2 - 200 - true - -1 + 5 40-80 - 900 - 20000 + 600 KNOCKDOWN KNOCKDOWN - 0 - 10 1000 500 - -52 - 2500 + -100 KNOCKDOWN SELF POINT_BLANK @@ -281,7 +265,7 @@ true - 1500 + 157 600 @@ -297,18 +281,11 @@ A2 5 30 - 200 - true - -1 40-80 - 900 - 20000 - 0 - 10 + 600 2000 500 - -52 - 2500 + -100 GIANT_WEAKNESS SELF POINT_BLANK @@ -316,7 +293,7 @@ true - 1500 + 157 30 @@ -368,22 +345,16 @@ icon.skill1172 A2 - 1200 + 2500 2000 - -52 - 1 - 10 + -100 1 10 40-80 PARALYZE PARALYZE - 150 - 900 - 1200 - 10000 - 2 - 0 + 300 + 2500 PARALYZE ENEMY RANGE @@ -391,7 +362,7 @@ true - 100000 + 34255 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -402,23 +373,20 @@ A1 - true 45-45 - 200 - 1200 - 400 - 10 + 2500 + 300 3000 500 - -1349 - 1200 + -100 + 2500 ENEMY RANGE NOT_FRIEND true - 1500 + 157 250 @@ -431,26 +399,21 @@ icon.skill16614 A2 - SELF - 1200 + 2500 3000 - -52 - 1 - 10 - 10000 + -100 + 2500 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY SINGLE - 200 + 512 1 @@ -587,19 +550,20 @@ A1 2500 5000 - -696 - 1 - 10000 - 200 - 12 + -100 + 300 2500 ENEMY - SINGLE + RANGE NOT_FRIEND true - 1500 + 157 + + + 512 + 1 @@ -607,23 +571,17 @@ icon.skll10094 A2 - SELF 2500 2500 - 900 + 300 2500 40-80 - -438 - 1 - 10 - 10000 + -100 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY RANGE @@ -634,7 +592,7 @@ 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 - 1500 + 157 -50 diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16700-16799.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16700-16799.xml index 1d14ef2f3f..e6caa81a5d 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16700-16799.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/16700-16799.xml @@ -389,15 +389,15 @@ A1 - -1 + 600 1500 - 1 -100 + 600 ENEMY SINGLE - 100000 + 34255 diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 9051735a7b..f47966d56b 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -847,7 +847,7 @@ public class Trasken extends AbstractNpcAI { tie_trasken = addSpawn(TAIL_TRASKEN, CENTER_LOCATION, false, 0, true); hp_tail = tie_trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 30000, tie_trasken, null); + startQuestTimer("spawn_rnd", 3000000, tie_trasken, null); break; } case 3: @@ -858,7 +858,7 @@ public class Trasken extends AbstractNpcAI trasken.doCast(SKILL_TRASKEN_UP.getSkill()); hp_trasken = trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 70000, trasken, null); + startQuestTimer("spawn_rnd", 9000000, trasken, null); for (Location loc : Spawn_Larva_1) { addSpawn(LAVRA_1, loc, false, 0, true); diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java index b98df41795..22d2f7812b 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java @@ -16,32 +16,23 @@ */ package ai.bosses.Valakas; -import java.util.ArrayList; -import java.util.List; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.enums.MountType; -import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.StatsSet; -import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.skills.SkillCaster; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.util.Util; import ai.AbstractNpcAI; @@ -54,36 +45,36 @@ public final class Valakas extends AbstractNpcAI // NPC private static final int VALAKAS = 29028; // Skills - private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); + // private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); private static final int VALAKAS_REGENERATION = 4691; - private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - }; - - private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; - - private static final SkillHolder[] VALAKAS_AOE_SKILLS = - { - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4684, 1), // Valakas Dragon Breath - new SkillHolder(4685, 1), // Valakas Tail Stomp - new SkillHolder(4686, 1), // Valakas Tail Stomp - new SkillHolder(4688, 1), // Valakas Stun - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; + // private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // }; + // + // private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; + // + // private static final SkillHolder[] VALAKAS_AOE_SKILLS = + // { + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4684, 1), // Valakas Dragon Breath + // new SkillHolder(4685, 1), // Valakas Tail Stomp + // new SkillHolder(4686, 1), // Valakas Tail Stomp + // new SkillHolder(4688, 1), // Valakas Stun + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; // Locations private static final Location TELEPORT_CUBE_LOCATIONS[] = @@ -114,7 +105,7 @@ public final class Valakas extends AbstractNpcAI private static final byte DEAD = 3; // Valakas has been killed. Entry is locked. // Misc private long _timeTracker = 0; // Time tracker for last attack on Valakas. - private Playable _actualVictim; // Actual target of Valakas. + // private Playable _actualVictim; // Actual target of Valakas. private static ZoneType ZONE; private Valakas() @@ -355,10 +346,10 @@ public final class Valakas extends AbstractNpcAI startQuestTimer("remove_players", 900000, null, null); } - else if (event.equalsIgnoreCase("skill_task")) - { - callSkillAI(npc); - } + // else if (event.equalsIgnoreCase("skill_task")) + // { + // callSkillAI(npc); + // } } else if (event.equalsIgnoreCase("valakas_unlock")) { @@ -373,12 +364,12 @@ public final class Valakas extends AbstractNpcAI return super.onAdvEvent(event, npc, player); } - @Override - public String onSpawn(Npc npc) - { - npc.disableCoreAI(true); - return super.onSpawn(npc); - } + // @Override + // public String onSpawn(Npc npc) + // { + // npc.disableCoreAI(true); + // return super.onSpawn(npc); + // } @Override public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) @@ -449,105 +440,105 @@ public final class Valakas extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - @Override - public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) - { - return null; - } - - private void callSkillAI(Npc npc) - { - if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return; - } - - // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. - if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) - { - _actualVictim = getRandomTarget(npc); - } - - // If result is still null, Valakas will roam. Don't go deeper in skill AI. - if (_actualVictim == null) - { - if (getRandom(10) == 0) - { - final int posX = npc.getX() + getRandom(-1400, 1400); - final int posY = npc.getY() + getRandom(-1400, 1400); - if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); - } - } - return; - } - - final Skill skill = getRandomSkill(npc).getSkill(); - - // Cast the skill or follow the target. - if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - npc.setTarget(_actualVictim); - npc.doCast(skill); - } - else - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); - } - } - - /** - * Pick a random skill.
- * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
- * Lower than 50% HPs, he will begin to use Meteor skill. - * @param npc valakas - * @return a skill holder - */ - private SkillHolder getRandomSkill(Npc npc) - { - final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); - - // Valakas Lava Skin has priority. - if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) - { - return VALAKAS_LAVA_SKIN; - } - - // Valakas will use mass spells if he feels surrounded. - if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) - { - return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; - } - - if (hpRatio > 50) - { - return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; - } - - return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; - } - - /** - * Pickup a random Playable from the zone, deads targets aren't included. - * @param npc - * @return a random Playable. - */ - private Playable getRandomTarget(Npc npc) - { - final List result = new ArrayList<>(); - - World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> - { - if (!obj.isPet() && !obj.isDead()) - { - result.add(obj); - } - }); - - return (result.isEmpty()) ? null : result.get(getRandom(result.size())); - } + // @Override + // public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) + // { + // return null; + // } + // + // private void callSkillAI(Npc npc) + // { + // if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) + // { + // return; + // } + // + // // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. + // if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) + // { + // _actualVictim = getRandomTarget(npc); + // } + // + // // If result is still null, Valakas will roam. Don't go deeper in skill AI. + // if (_actualVictim == null) + // { + // if (getRandom(10) == 0) + // { + // final int posX = npc.getX() + getRandom(-1400, 1400); + // final int posY = npc.getY() + getRandom(-1400, 1400); + // if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); + // } + // } + // return; + // } + // + // final Skill skill = getRandomSkill(npc).getSkill(); + // + // // Cast the skill or follow the target. + // if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + // npc.setTarget(_actualVictim); + // npc.doCast(skill); + // } + // else + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); + // } + // } + // + // /** + // * Pick a random skill.
+ // * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
+ // * Lower than 50% HPs, he will begin to use Meteor skill. + // * @param npc valakas + // * @return a skill holder + // */ + // private SkillHolder getRandomSkill(Npc npc) + // { + // final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); + // + // // Valakas Lava Skin has priority. + // if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) + // { + // return VALAKAS_LAVA_SKIN; + // } + // + // // Valakas will use mass spells if he feels surrounded. + // if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) + // { + // return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; + // } + // + // if (hpRatio > 50) + // { + // return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; + // } + // + // return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; + // } + // + // /** + // * Pickup a random Playable from the zone, deads targets aren't included. + // * @param npc + // * @return a random Playable. + // */ + // private Playable getRandomTarget(Npc npc) + // { + // final List result = new ArrayList<>(); + // + // World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> + // { + // if (!obj.isPet() && !obj.isDead()) + // { + // result.add(obj); + // } + // }); + // + // return (result.isEmpty()) ? null : result.get(getRandom(result.size())); + // } public static void main(String[] args) { diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/npcs/03400-03499.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/npcs/03400-03499.xml index 71086e2f3b..6f48e77ad6 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/npcs/03400-03499.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/npcs/03400-03499.xml @@ -3247,8 +3247,8 @@ - - + + @@ -3481,8 +3481,8 @@ - - + + @@ -3589,8 +3589,8 @@ - - + + @@ -3692,8 +3692,8 @@ - - + + diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/npcs/29200-29299.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/npcs/29200-29299.xml index def2ff4f6b..96502610f2 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/npcs/29200-29299.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/npcs/29200-29299.xml @@ -408,8 +408,8 @@ - - + + @@ -489,8 +489,8 @@ - - + + @@ -532,8 +532,8 @@ - - + + @@ -685,8 +685,8 @@ - - + + @@ -991,8 +991,8 @@ - - + + @@ -1876,8 +1876,8 @@ - - + + @@ -1984,8 +1984,8 @@ - - + + diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/04400-04499.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/04400-04499.xml index e4b2bc9942..cd59674ae8 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/04400-04499.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/04400-04499.xml @@ -3935,6 +3935,11 @@ 1 P -5 + + + 100 + +
900 diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/05000-05099.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/05000-05099.xml index 5c98cedf33..233e807a77 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/05000-05099.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/05000-05099.xml @@ -3003,25 +3003,21 @@ - 150 - 600 - -1 - 1100 + 2500 + -100 + 2500 EARTH - 180 + 450 8000 - 2 - 99 - A1 - 6000 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 + 300 ENEMY RANGE NOT_FRIEND - - 1084 + + 34255 diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/14200-14299.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/14200-14299.xml index e8e8686e9e..df9cc02f8e 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/14200-14299.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/14200-14299.xml @@ -1232,29 +1232,20 @@ icon.skill0054 A2 - 1 - 1000 + 600 1500 - 1 - -1 + -100 FLY_AWAY - NONE - -5 - 0 - 1400 - 1 - 99 + 600 99 1 - 1 - 200 + 3 true ENEMY - RANGE - NOT_FRIEND + SINGLE - 2000 + 157 200 diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15200-15299.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15200-15299.xml index edc5f12926..d0345a104a 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15200-15299.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15200-15299.xml @@ -1330,56 +1330,104 @@ icon.skill0100 A2 - 400 + 1 + 10 + STUN + STUN + 600 2500 1000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + SHOCK SELF - SINGLE + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill10549 A2 - 400 + 1 + 30 2500 3000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + 0;0;2500;900 SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + -30 + PER + + + -30 + PER + + - A1 - 2500 - -574 - -5 - 0 - 99 - 1500 + 1 + 10 + STUN + STUN + 1000 + -100 + WIND + 300 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + - A1 - 1800 + A2 + 300 + 2500 2500 - -707 - -5 - 0 + -100 + 2500 + WIND + 300 99 - 1 - SELF - SINGLE + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15400-15499.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15400-15499.xml index 3fd80e052e..622c3a6405 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15400-15499.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15400-15499.xml @@ -444,10 +444,21 @@ A2 + 1 + 5 + 600 5000 5000 -574 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + A1 diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15500-15599.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15500-15599.xml index bf515c3aa1..6f8b7cd3fc 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15500-15599.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15500-15599.xml @@ -939,21 +939,53 @@ icon.skill4108 + 1 + 30 + TURN_FLEE + TURN_FLEE + 600 A2 3000 500 1 -867 true + DERANGEMENT + SELF + POINT_BLANK + NOT_FRIEND + + + + icon.skill0006 + 1 + 5 + STUN + 600 A2 2000 3000 -867 true + PULL + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 600 + + + 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912 + + diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15600-15699.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15600-15699.xml index 7f5630eed4..86a6c1c89a 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15600-15699.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/15600-15699.xml @@ -4,11 +4,22 @@ icon.skill1275 A1 + 300 300 1500 1000 - -867 - 5000 + -100 + 300 + WIND + 300 + ENEMY + RANGE + NOT_FRIEND + + + 34255 + + @@ -90,13 +101,11 @@ icon.skill0003 A1 - 40 + 600 2000 -100 + 600 500 - ATTACK - 6000 - 5 ENEMY SINGLE @@ -108,7 +117,7 @@ 1000 2000 4000 - 6000 + 50000 @@ -130,8 +139,7 @@ 6000 -100 500 - 300 - 30000 + 600 SELF POINT_BLANK NOT_FRIEND @@ -144,7 +152,7 @@ 12000 14000 16000 - 18000 + 50000 @@ -156,8 +164,7 @@ 6000 -100 500 - 800 - 30000 + 600 SELF POINT_BLANK NOT_FRIEND @@ -170,7 +177,7 @@ 16000 18000 20000 - 22000 + 50000 @@ -394,6 +401,10 @@ icon.skillboss P + 99 + + + @@ -1215,11 +1226,25 @@ icon.skill1422 A2 - 2000 + 2500 500 - 1 + 1 + 30 + 300 + 300 + 300 + 40-80 -100 true + ENEMY + RANGE + NOT_FRIEND + + + -20 + PER + + diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16100-16199.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16100-16199.xml index 5fe878dadc..6935bac7a2 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16100-16199.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16100-16199.xml @@ -28,11 +28,22 @@ icon.skill1167 A1 - 900 - 2000 + 1 + 300 + 40-80 + 300 + 2500 500 - -264 - 1 + -100 + 300 + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16600-16699.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16600-16699.xml index 5c1663ea6f..4625284029 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16600-16699.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16600-16699.xml @@ -206,25 +206,19 @@ 1 10 PARALYZE - 150 PARALYZE - 10 2500 2500 - 200 3000 500 - 10000 - 2 - -52 - 0 + -100 PARALYZE ENEMY SINGLE true - 1500 + 157 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -237,20 +231,17 @@ A1 true 40-80 - 2500 - 900 - 10 + 600 1000 500 - -52 - 2500 + -100 SELF POINT_BLANK NOT_FRIEND true - - 1500 + + 34255 @@ -259,21 +250,14 @@ icon.skill1275 A2 5 - 2 - 200 - true - -1 + 5 40-80 - 900 - 20000 + 600 KNOCKDOWN KNOCKDOWN - 0 - 10 1000 500 - -52 - 2500 + -100 KNOCKDOWN SELF POINT_BLANK @@ -281,7 +265,7 @@ true - 1500 + 157 600 @@ -297,18 +281,11 @@ A2 5 30 - 200 - true - -1 40-80 - 900 - 20000 - 0 - 10 + 600 2000 500 - -52 - 2500 + -100 GIANT_WEAKNESS SELF POINT_BLANK @@ -316,7 +293,7 @@ true - 1500 + 157 30 @@ -368,22 +345,16 @@ icon.skill1172 A2 - 1200 + 2500 2000 - -52 - 1 - 10 + -100 1 10 40-80 PARALYZE PARALYZE - 150 - 900 - 1200 - 10000 - 2 - 0 + 300 + 2500 PARALYZE ENEMY RANGE @@ -391,7 +362,7 @@ true - 100000 + 34255 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -402,23 +373,20 @@ A1 - true 45-45 - 200 - 1200 - 400 - 10 + 2500 + 300 3000 500 - -1349 - 1200 + -100 + 2500 ENEMY RANGE NOT_FRIEND true - 1500 + 157 250 @@ -431,26 +399,21 @@ icon.skill16614 A2 - SELF - 1200 + 2500 3000 - -52 - 1 - 10 - 10000 + -100 + 2500 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY SINGLE - 200 + 512 1 @@ -587,19 +550,20 @@ A1 2500 5000 - -696 - 1 - 10000 - 200 - 12 + -100 + 300 2500 ENEMY - SINGLE + RANGE NOT_FRIEND true - 1500 + 157 + + + 512 + 1 @@ -607,23 +571,17 @@ icon.skll10094 A2 - SELF 2500 2500 - 900 + 300 2500 40-80 - -438 - 1 - 10 - 10000 + -100 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY RANGE @@ -634,7 +592,7 @@ 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 - 1500 + 157 -50 diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16700-16799.xml b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16700-16799.xml index cd30dfc96a..dec1265a0c 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16700-16799.xml +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/stats/skills/16700-16799.xml @@ -389,15 +389,15 @@ A1 - -1 + 600 1500 - 1 -100 + 600 ENEMY SINGLE - 100000 + 34255 diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 9051735a7b..f47966d56b 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -847,7 +847,7 @@ public class Trasken extends AbstractNpcAI { tie_trasken = addSpawn(TAIL_TRASKEN, CENTER_LOCATION, false, 0, true); hp_tail = tie_trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 30000, tie_trasken, null); + startQuestTimer("spawn_rnd", 3000000, tie_trasken, null); break; } case 3: @@ -858,7 +858,7 @@ public class Trasken extends AbstractNpcAI trasken.doCast(SKILL_TRASKEN_UP.getSkill()); hp_trasken = trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 70000, trasken, null); + startQuestTimer("spawn_rnd", 9000000, trasken, null); for (Location loc : Spawn_Larva_1) { addSpawn(LAVRA_1, loc, false, 0, true); diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java index b98df41795..22d2f7812b 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java @@ -16,32 +16,23 @@ */ package ai.bosses.Valakas; -import java.util.ArrayList; -import java.util.List; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.enums.MountType; -import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.StatsSet; -import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.skills.SkillCaster; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.util.Util; import ai.AbstractNpcAI; @@ -54,36 +45,36 @@ public final class Valakas extends AbstractNpcAI // NPC private static final int VALAKAS = 29028; // Skills - private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); + // private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); private static final int VALAKAS_REGENERATION = 4691; - private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - }; - - private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; - - private static final SkillHolder[] VALAKAS_AOE_SKILLS = - { - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4684, 1), // Valakas Dragon Breath - new SkillHolder(4685, 1), // Valakas Tail Stomp - new SkillHolder(4686, 1), // Valakas Tail Stomp - new SkillHolder(4688, 1), // Valakas Stun - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; + // private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // }; + // + // private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; + // + // private static final SkillHolder[] VALAKAS_AOE_SKILLS = + // { + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4684, 1), // Valakas Dragon Breath + // new SkillHolder(4685, 1), // Valakas Tail Stomp + // new SkillHolder(4686, 1), // Valakas Tail Stomp + // new SkillHolder(4688, 1), // Valakas Stun + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; // Locations private static final Location TELEPORT_CUBE_LOCATIONS[] = @@ -114,7 +105,7 @@ public final class Valakas extends AbstractNpcAI private static final byte DEAD = 3; // Valakas has been killed. Entry is locked. // Misc private long _timeTracker = 0; // Time tracker for last attack on Valakas. - private Playable _actualVictim; // Actual target of Valakas. + // private Playable _actualVictim; // Actual target of Valakas. private static ZoneType ZONE; private Valakas() @@ -355,10 +346,10 @@ public final class Valakas extends AbstractNpcAI startQuestTimer("remove_players", 900000, null, null); } - else if (event.equalsIgnoreCase("skill_task")) - { - callSkillAI(npc); - } + // else if (event.equalsIgnoreCase("skill_task")) + // { + // callSkillAI(npc); + // } } else if (event.equalsIgnoreCase("valakas_unlock")) { @@ -373,12 +364,12 @@ public final class Valakas extends AbstractNpcAI return super.onAdvEvent(event, npc, player); } - @Override - public String onSpawn(Npc npc) - { - npc.disableCoreAI(true); - return super.onSpawn(npc); - } + // @Override + // public String onSpawn(Npc npc) + // { + // npc.disableCoreAI(true); + // return super.onSpawn(npc); + // } @Override public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) @@ -449,105 +440,105 @@ public final class Valakas extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - @Override - public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) - { - return null; - } - - private void callSkillAI(Npc npc) - { - if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return; - } - - // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. - if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) - { - _actualVictim = getRandomTarget(npc); - } - - // If result is still null, Valakas will roam. Don't go deeper in skill AI. - if (_actualVictim == null) - { - if (getRandom(10) == 0) - { - final int posX = npc.getX() + getRandom(-1400, 1400); - final int posY = npc.getY() + getRandom(-1400, 1400); - if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); - } - } - return; - } - - final Skill skill = getRandomSkill(npc).getSkill(); - - // Cast the skill or follow the target. - if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - npc.setTarget(_actualVictim); - npc.doCast(skill); - } - else - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); - } - } - - /** - * Pick a random skill.
- * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
- * Lower than 50% HPs, he will begin to use Meteor skill. - * @param npc valakas - * @return a skill holder - */ - private SkillHolder getRandomSkill(Npc npc) - { - final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); - - // Valakas Lava Skin has priority. - if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) - { - return VALAKAS_LAVA_SKIN; - } - - // Valakas will use mass spells if he feels surrounded. - if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) - { - return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; - } - - if (hpRatio > 50) - { - return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; - } - - return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; - } - - /** - * Pickup a random Playable from the zone, deads targets aren't included. - * @param npc - * @return a random Playable. - */ - private Playable getRandomTarget(Npc npc) - { - final List result = new ArrayList<>(); - - World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> - { - if (!obj.isPet() && !obj.isDead()) - { - result.add(obj); - } - }); - - return (result.isEmpty()) ? null : result.get(getRandom(result.size())); - } + // @Override + // public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) + // { + // return null; + // } + // + // private void callSkillAI(Npc npc) + // { + // if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) + // { + // return; + // } + // + // // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. + // if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) + // { + // _actualVictim = getRandomTarget(npc); + // } + // + // // If result is still null, Valakas will roam. Don't go deeper in skill AI. + // if (_actualVictim == null) + // { + // if (getRandom(10) == 0) + // { + // final int posX = npc.getX() + getRandom(-1400, 1400); + // final int posY = npc.getY() + getRandom(-1400, 1400); + // if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); + // } + // } + // return; + // } + // + // final Skill skill = getRandomSkill(npc).getSkill(); + // + // // Cast the skill or follow the target. + // if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + // npc.setTarget(_actualVictim); + // npc.doCast(skill); + // } + // else + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); + // } + // } + // + // /** + // * Pick a random skill.
+ // * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
+ // * Lower than 50% HPs, he will begin to use Meteor skill. + // * @param npc valakas + // * @return a skill holder + // */ + // private SkillHolder getRandomSkill(Npc npc) + // { + // final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); + // + // // Valakas Lava Skin has priority. + // if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) + // { + // return VALAKAS_LAVA_SKIN; + // } + // + // // Valakas will use mass spells if he feels surrounded. + // if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) + // { + // return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; + // } + // + // if (hpRatio > 50) + // { + // return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; + // } + // + // return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; + // } + // + // /** + // * Pickup a random Playable from the zone, deads targets aren't included. + // * @param npc + // * @return a random Playable. + // */ + // private Playable getRandomTarget(Npc npc) + // { + // final List result = new ArrayList<>(); + // + // World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> + // { + // if (!obj.isPet() && !obj.isDead()) + // { + // result.add(obj); + // } + // }); + // + // return (result.isEmpty()) ? null : result.get(getRandom(result.size())); + // } public static void main(String[] args) { diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/npcs/03400-03499.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/npcs/03400-03499.xml index 30dbd3028f..b5bd1754fe 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/npcs/03400-03499.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/npcs/03400-03499.xml @@ -3247,8 +3247,8 @@ - - + + @@ -3481,8 +3481,8 @@ - - + + @@ -3589,8 +3589,8 @@ - - + + @@ -3692,8 +3692,8 @@ - - + + diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/npcs/29200-29299.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/npcs/29200-29299.xml index f17aaca0c6..df9c2c0be8 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/npcs/29200-29299.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/npcs/29200-29299.xml @@ -408,8 +408,8 @@ - - + + @@ -489,8 +489,8 @@ - - + + @@ -532,8 +532,8 @@ - - + + @@ -685,8 +685,8 @@ - - + + @@ -991,8 +991,8 @@ - - + + @@ -1876,8 +1876,8 @@ - - + + @@ -1984,8 +1984,8 @@ - - + + diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/04400-04499.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/04400-04499.xml index b72f11a346..8e098f97c7 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/04400-04499.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/04400-04499.xml @@ -3935,6 +3935,11 @@ 1 P -5 + + + 100 + +
900 diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/05000-05099.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/05000-05099.xml index dd487a5d89..5792df05be 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/05000-05099.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/05000-05099.xml @@ -3003,25 +3003,21 @@ - 150 - 600 - -1 - 1100 + 2500 + -100 + 2500 EARTH - 180 + 450 8000 - 2 - 99 - A1 - 6000 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 + 300 ENEMY RANGE NOT_FRIEND - - 1084 + + 34255 diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/14200-14299.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/14200-14299.xml index 642061ce56..a91097f71d 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/14200-14299.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/14200-14299.xml @@ -1232,29 +1232,20 @@ icon.skill0054 A2 - 1 - 1000 + 600 1500 - 1 - -1 + -100 FLY_AWAY - NONE - -5 - 0 - 1400 - 1 - 99 + 600 99 1 - 1 - 200 + 3 true ENEMY - RANGE - NOT_FRIEND + SINGLE - 2000 + 157 200 diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/14300-14399.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/14300-14399.xml index b4e8bc2bc3..279a5f79e9 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/14300-14399.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/14300-14399.xml @@ -915,21 +915,16 @@ icon.skill1167 A2 - 500 500 1 - -1 + -100 POISON POISON - NONE - -5 - 0 - 1000 99 3 30 POISON - 200 + 600 DOT_POISON true SELF @@ -969,59 +964,59 @@ icon.skill0773 A1 - 2000 - -686 - -5 - 0 - 2500 + -100 99 - 0;0;2000;600 10000 - TARGET + 0;0;2500;600 + SELF SQUARE NOT_FRIEND + + + 34255 + + icon.skill0036 A1 - -1 - -5 - 0 + -100 99 - 1200 - 0;0;900;0 - 10000 - SELF - RING_RANGE - NOT_FRIEND - - - icon.skill0036 - A1 - -1 - -5 - 0 - 99 - 900 + 600 10000 SELF POINT_BLANK NOT_FRIEND + + + 34255 + + + + + icon.skill0036 + A1 + -100 + 99 + 600 + 10000 + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + icon.skill1167 A2 - 500 10000 - 1 - -1 POISON POISON - NONE - -5 - 0 - 1000 + 600 99 3 30 @@ -1029,10 +1024,11 @@ DOT_POISON true SELF - SINGLE + POINT_BLANK + NOT_FRIEND - 1 + 512 5 @@ -1666,29 +1662,22 @@ A2 600 2500 - 2000 - 1 - -1 + -100 ROOT_MAGICALLY - NONE - -5 - 0 - 1100 - 2 - 80 + 600 97 1 - 5 + 10 HOLD 300 ROOT true - ENEMY_ONLY + ENEMY RANGE NOT_FRIEND - 1000 + 157 diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15200-15299.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15200-15299.xml index e01a727b52..02e23957a4 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15200-15299.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15200-15299.xml @@ -1330,56 +1330,104 @@ icon.skill0100 A2 - 400 + 1 + 10 + STUN + STUN + 600 2500 1000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + SHOCK SELF - SINGLE + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill10549 A2 - 400 + 1 + 30 2500 3000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + 0;0;2500;900 SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + -30 + PER + + + -30 + PER + + - A1 - 2500 - -574 - -5 - 0 - 99 - 1500 + 1 + 10 + STUN + STUN + 1000 + -100 + WIND + 300 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + - A1 - 1800 + A2 + 300 + 2500 2500 - -707 - -5 - 0 + -100 + 2500 + WIND + 300 99 - 1 - SELF - SINGLE + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15400-15499.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15400-15499.xml index 3fd80e052e..622c3a6405 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15400-15499.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15400-15499.xml @@ -444,10 +444,21 @@ A2 + 1 + 5 + 600 5000 5000 -574 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + A1 diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15500-15599.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15500-15599.xml index 3c81908347..614f30bc22 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15500-15599.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15500-15599.xml @@ -939,21 +939,53 @@ icon.skill4108 + 1 + 30 + TURN_FLEE + TURN_FLEE + 600 A2 3000 500 1 -867 true + DERANGEMENT + SELF + POINT_BLANK + NOT_FRIEND + + + + icon.skill0006 + 1 + 5 + STUN + 600 A2 2000 3000 -867 true + PULL + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 600 + + + 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912 + + diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15600-15699.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15600-15699.xml index ad85493b35..c49ed95458 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15600-15699.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/15600-15699.xml @@ -4,11 +4,22 @@ icon.skill1275 A1 + 300 300 1500 1000 - -867 - 5000 + -100 + 300 + WIND + 300 + ENEMY + RANGE + NOT_FRIEND + + + 34255 + + @@ -90,13 +101,11 @@ icon.skill0003 A1 - 40 + 600 2000 -100 + 600 500 - ATTACK - 6000 - 5 ENEMY SINGLE @@ -108,7 +117,7 @@ 1000 2000 4000 - 6000 + 50000 @@ -130,8 +139,7 @@ 6000 -100 500 - 300 - 30000 + 600 SELF POINT_BLANK NOT_FRIEND @@ -144,7 +152,7 @@ 12000 14000 16000 - 18000 + 50000 @@ -156,8 +164,7 @@ 6000 -100 500 - 800 - 30000 + 600 SELF POINT_BLANK NOT_FRIEND @@ -170,7 +177,7 @@ 16000 18000 20000 - 22000 + 50000 @@ -394,6 +401,10 @@ icon.skillboss P + 99 + + + @@ -1215,11 +1226,25 @@ icon.skill1422 A2 - 2000 + 2500 500 - 1 + 1 + 30 + 300 + 300 + 300 + 40-80 -100 true + ENEMY + RANGE + NOT_FRIEND + + + -20 + PER + + diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16100-16199.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16100-16199.xml index 67d9023e22..3abaccbb7e 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16100-16199.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16100-16199.xml @@ -28,11 +28,22 @@ icon.skill1167 A1 - 900 - 2000 + 1 + 300 + 40-80 + 300 + 2500 500 - -264 - 1 + -100 + 300 + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16600-16699.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16600-16699.xml index 67dd7dc01d..03878c6d7d 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16600-16699.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16600-16699.xml @@ -206,25 +206,19 @@ 1 10 PARALYZE - 150 PARALYZE - 10 2500 2500 - 200 3000 500 - 10000 - 2 - -52 - 0 + -100 PARALYZE ENEMY SINGLE true - 1500 + 157 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -237,20 +231,17 @@ A1 true 40-80 - 2500 - 900 - 10 + 600 1000 500 - -52 - 2500 + -100 SELF POINT_BLANK NOT_FRIEND true - - 1500 + + 34255 @@ -259,21 +250,14 @@ icon.skill1275 A2 5 - 2 - 200 - true - -1 + 5 40-80 - 900 - 20000 + 600 KNOCKDOWN KNOCKDOWN - 0 - 10 1000 500 - -52 - 2500 + -100 KNOCKDOWN SELF POINT_BLANK @@ -281,7 +265,7 @@ true - 1500 + 157 600 @@ -297,18 +281,11 @@ A2 5 30 - 200 - true - -1 40-80 - 900 - 20000 - 0 - 10 + 600 2000 500 - -52 - 2500 + -100 GIANT_WEAKNESS SELF POINT_BLANK @@ -316,7 +293,7 @@ true - 1500 + 157 30 @@ -368,22 +345,16 @@ icon.skill1172 A2 - 1200 + 2500 2000 - -52 - 1 - 10 + -100 1 10 40-80 PARALYZE PARALYZE - 150 - 900 - 1200 - 10000 - 2 - 0 + 300 + 2500 PARALYZE ENEMY RANGE @@ -391,7 +362,7 @@ true - 100000 + 34255 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -402,23 +373,20 @@ A1 - true 45-45 - 200 - 1200 - 400 - 10 + 2500 + 300 3000 500 - -1349 - 1200 + -100 + 2500 ENEMY RANGE NOT_FRIEND true - 1500 + 157 250 @@ -431,26 +399,21 @@ icon.skill16614 A2 - SELF - 1200 + 2500 3000 - -52 - 1 - 10 - 10000 + -100 + 2500 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY SINGLE - 200 + 512 1 @@ -587,19 +550,20 @@ A1 2500 5000 - -696 - 1 - 10000 - 200 - 12 + -100 + 300 2500 ENEMY - SINGLE + RANGE NOT_FRIEND true - 1500 + 157 + + + 512 + 1 @@ -607,23 +571,17 @@ icon.skll10094 A2 - SELF 2500 2500 - 900 + 300 2500 40-80 - -438 - 1 - 10 - 10000 + -100 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY RANGE @@ -634,7 +592,7 @@ 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 - 1500 + 157 -50 diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16700-16799.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16700-16799.xml index aded63f545..96828e40c0 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16700-16799.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/16700-16799.xml @@ -389,15 +389,15 @@
A1 - -1 + 600 1500 - 1 -100 + 600 ENEMY SINGLE - 100000 + 34255 diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/23600-23699.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/23600-23699.xml index 0ff8bc064d..554b206f91 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/23600-23699.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/23600-23699.xml @@ -785,37 +785,68 @@ A1 - 1 - 600 + 100 1500 800 - 10000 - -700 - 1 + -100 + 100 + ENEMY + SINGLE + + + 34255 + + icon.skill0096 A2 - 1 + 1 + 10 + 40-80 + 600 3000 500 - 10000 - 1 -100 true + SELF + POINT_BLANK + NOT_FRIEND + + + 157 + + + 512 + 1 + + icon.skill1092 A2 - 1 + 1 + 10 + 40-80 + 600 6000 800 - 10000 - 1 - -700 + -100 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 512 + 1 + + diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/32400-32499.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/32400-32499.xml index 911daafe75..28b537262a 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/32400-32499.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/skills/32400-32499.xml @@ -418,6 +418,19 @@ A1 + 40-80 + 600 + 2000 + -100 + 3500 + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + @@ -440,12 +453,63 @@ icon.skill10266 - A1 + 1 + 30 + ROOT_MAGICALLY + ROOT + 40-80 + 600 + 2000 + -100 + 5500 + true + A2 + HOLD + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill1072 - A1 + 1 + 30 + POISON + POISON + 40-80 + 600 + 2000 + -100 + 5500 + true + A2 + POISON + SELF + POINT_BLANK + NOT_FRIEND + + + 157 + + + 512 + 1 + + + -20 + PER + + + -20 + PER + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java index 9051735a7b..f47966d56b 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Trasken/Trasken.java @@ -847,7 +847,7 @@ public class Trasken extends AbstractNpcAI { tie_trasken = addSpawn(TAIL_TRASKEN, CENTER_LOCATION, false, 0, true); hp_tail = tie_trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 30000, tie_trasken, null); + startQuestTimer("spawn_rnd", 3000000, tie_trasken, null); break; } case 3: @@ -858,7 +858,7 @@ public class Trasken extends AbstractNpcAI trasken.doCast(SKILL_TRASKEN_UP.getSkill()); hp_trasken = trasken.getCurrentHp(); - startQuestTimer("spawn_rnd", 70000, trasken, null); + startQuestTimer("spawn_rnd", 9000000, trasken, null); for (Location loc : Spawn_Larva_1) { addSpawn(LAVRA_1, loc, false, 0, true); diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java index b98df41795..22d2f7812b 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Valakas/Valakas.java @@ -16,32 +16,23 @@ */ package ai.bosses.Valakas; -import java.util.ArrayList; -import java.util.List; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.enums.MountType; -import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.StatsSet; -import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.skills.SkillCaster; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.util.Util; import ai.AbstractNpcAI; @@ -54,36 +45,36 @@ public final class Valakas extends AbstractNpcAI // NPC private static final int VALAKAS = 29028; // Skills - private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); + // private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); private static final int VALAKAS_REGENERATION = 4691; - private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - }; - - private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = - { - new SkillHolder(4681, 1), // Valakas Trample - new SkillHolder(4682, 1), // Valakas Trample - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; - - private static final SkillHolder[] VALAKAS_AOE_SKILLS = - { - new SkillHolder(4683, 1), // Valakas Dragon Breath - new SkillHolder(4684, 1), // Valakas Dragon Breath - new SkillHolder(4685, 1), // Valakas Tail Stomp - new SkillHolder(4686, 1), // Valakas Tail Stomp - new SkillHolder(4688, 1), // Valakas Stun - new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. - new SkillHolder(4690, 1), // Valakas Meteor Storm - }; + // private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // }; + // + // private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = + // { + // new SkillHolder(4681, 1), // Valakas Trample + // new SkillHolder(4682, 1), // Valakas Trample + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; + // + // private static final SkillHolder[] VALAKAS_AOE_SKILLS = + // { + // new SkillHolder(4683, 1), // Valakas Dragon Breath + // new SkillHolder(4684, 1), // Valakas Dragon Breath + // new SkillHolder(4685, 1), // Valakas Tail Stomp + // new SkillHolder(4686, 1), // Valakas Tail Stomp + // new SkillHolder(4688, 1), // Valakas Stun + // new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. + // new SkillHolder(4690, 1), // Valakas Meteor Storm + // }; // Locations private static final Location TELEPORT_CUBE_LOCATIONS[] = @@ -114,7 +105,7 @@ public final class Valakas extends AbstractNpcAI private static final byte DEAD = 3; // Valakas has been killed. Entry is locked. // Misc private long _timeTracker = 0; // Time tracker for last attack on Valakas. - private Playable _actualVictim; // Actual target of Valakas. + // private Playable _actualVictim; // Actual target of Valakas. private static ZoneType ZONE; private Valakas() @@ -355,10 +346,10 @@ public final class Valakas extends AbstractNpcAI startQuestTimer("remove_players", 900000, null, null); } - else if (event.equalsIgnoreCase("skill_task")) - { - callSkillAI(npc); - } + // else if (event.equalsIgnoreCase("skill_task")) + // { + // callSkillAI(npc); + // } } else if (event.equalsIgnoreCase("valakas_unlock")) { @@ -373,12 +364,12 @@ public final class Valakas extends AbstractNpcAI return super.onAdvEvent(event, npc, player); } - @Override - public String onSpawn(Npc npc) - { - npc.disableCoreAI(true); - return super.onSpawn(npc); - } + // @Override + // public String onSpawn(Npc npc) + // { + // npc.disableCoreAI(true); + // return super.onSpawn(npc); + // } @Override public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) @@ -449,105 +440,105 @@ public final class Valakas extends AbstractNpcAI return super.onKill(npc, killer, isSummon); } - @Override - public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) - { - return null; - } - - private void callSkillAI(Npc npc) - { - if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return; - } - - // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. - if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) - { - _actualVictim = getRandomTarget(npc); - } - - // If result is still null, Valakas will roam. Don't go deeper in skill AI. - if (_actualVictim == null) - { - if (getRandom(10) == 0) - { - final int posX = npc.getX() + getRandom(-1400, 1400); - final int posY = npc.getY() + getRandom(-1400, 1400); - if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); - } - } - return; - } - - final Skill skill = getRandomSkill(npc).getSkill(); - - // Cast the skill or follow the target. - if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - npc.setTarget(_actualVictim); - npc.doCast(skill); - } - else - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); - } - } - - /** - * Pick a random skill.
- * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
- * Lower than 50% HPs, he will begin to use Meteor skill. - * @param npc valakas - * @return a skill holder - */ - private SkillHolder getRandomSkill(Npc npc) - { - final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); - - // Valakas Lava Skin has priority. - if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) - { - return VALAKAS_LAVA_SKIN; - } - - // Valakas will use mass spells if he feels surrounded. - if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) - { - return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; - } - - if (hpRatio > 50) - { - return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; - } - - return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; - } - - /** - * Pickup a random Playable from the zone, deads targets aren't included. - * @param npc - * @return a random Playable. - */ - private Playable getRandomTarget(Npc npc) - { - final List result = new ArrayList<>(); - - World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> - { - if (!obj.isPet() && !obj.isDead()) - { - result.add(obj); - } - }); - - return (result.isEmpty()) ? null : result.get(getRandom(result.size())); - } + // @Override + // public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) + // { + // return null; + // } + // + // private void callSkillAI(Npc npc) + // { + // if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType)) + // { + // return; + // } + // + // // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. + // if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0)) + // { + // _actualVictim = getRandomTarget(npc); + // } + // + // // If result is still null, Valakas will roam. Don't go deeper in skill AI. + // if (_actualVictim == null) + // { + // if (getRandom(10) == 0) + // { + // final int posX = npc.getX() + getRandom(-1400, 1400); + // final int posY = npc.getY() + getRandom(-1400, 1400); + // if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld())) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0)); + // } + // } + // return; + // } + // + // final Skill skill = getRandomSkill(npc).getSkill(); + // + // // Cast the skill or follow the target. + // if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + // npc.setTarget(_actualVictim); + // npc.doCast(skill); + // } + // else + // { + // npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); + // } + // } + // + // /** + // * Pick a random skill.
+ // * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.
+ // * Lower than 50% HPs, he will begin to use Meteor skill. + // * @param npc valakas + // * @return a skill holder + // */ + // private SkillHolder getRandomSkill(Npc npc) + // { + // final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); + // + // // Valakas Lava Skin has priority. + // if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId())) + // { + // return VALAKAS_LAVA_SKIN; + // } + // + // // Valakas will use mass spells if he feels surrounded. + // if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20) + // { + // return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; + // } + // + // if (hpRatio > 50) + // { + // return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; + // } + // + // return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; + // } + // + // /** + // * Pickup a random Playable from the zone, deads targets aren't included. + // * @param npc + // * @return a random Playable. + // */ + // private Playable getRandomTarget(Npc npc) + // { + // final List result = new ArrayList<>(); + // + // World.getInstance().forEachVisibleObject(npc, Playable.class, obj -> + // { + // if (!obj.isPet() && !obj.isDead()) + // { + // result.add(obj); + // } + // }); + // + // return (result.isEmpty()) ? null : result.get(getRandom(result.size())); + // } public static void main(String[] args) { diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/03400-03499.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/03400-03499.xml index 263019eb47..f4ce0703ae 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/03400-03499.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/03400-03499.xml @@ -3247,8 +3247,8 @@ - - + + @@ -3481,8 +3481,8 @@ - - + + @@ -3589,8 +3589,8 @@ - - + + @@ -3692,8 +3692,8 @@ - - + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/25800-25899.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/25800-25899.xml index 897334f67d..191603e3f6 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/25800-25899.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/25800-25899.xml @@ -11,8 +11,8 @@ - - + + @@ -168,8 +168,8 @@ - - + + @@ -1352,8 +1352,8 @@ - - + + @@ -1484,8 +1484,8 @@ - - + + @@ -2113,8 +2113,8 @@ - - + + @@ -2185,8 +2185,8 @@ - - + + @@ -2248,8 +2248,8 @@ - - + + @@ -2319,8 +2319,8 @@ - - + + @@ -2388,8 +2388,8 @@ - - + + @@ -2502,8 +2502,8 @@ - - + + @@ -2606,8 +2606,8 @@ - - + + @@ -2711,8 +2711,8 @@ - - + + @@ -2790,8 +2790,8 @@ - - + + @@ -2851,8 +2851,8 @@ - - + + @@ -3009,8 +3009,8 @@ - - + + @@ -3282,8 +3282,8 @@ - - + + @@ -3355,8 +3355,8 @@ - - + + @@ -3411,8 +3411,8 @@ - - + + @@ -3464,8 +3464,8 @@ - - + + @@ -3622,8 +3622,8 @@ - - + + @@ -4042,8 +4042,8 @@ - - + + @@ -4134,8 +4134,8 @@ - - + + @@ -4313,8 +4313,8 @@ - - + + @@ -4442,8 +4442,8 @@ - - + + @@ -4571,8 +4571,8 @@ - - + + @@ -4703,8 +4703,8 @@ - - + + @@ -4833,8 +4833,8 @@ - - + + @@ -4962,8 +4962,8 @@ - - + + @@ -5091,8 +5091,8 @@ - - + + @@ -5286,8 +5286,8 @@ - - + + @@ -5442,8 +5442,8 @@ - - + + @@ -5656,8 +5656,8 @@ - - + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/25900-25999.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/25900-25999.xml index e414667b8c..e089b700e4 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/25900-25999.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/25900-25999.xml @@ -42,8 +42,8 @@ - - + + @@ -151,8 +151,8 @@ - - + + @@ -937,8 +937,8 @@ - - + + @@ -1056,15 +1056,16 @@ FEMALE - + - - + + + @@ -1147,15 +1148,16 @@ FEMALE - + - - + + + @@ -1238,15 +1240,16 @@ FEMALE - + - - + + + @@ -1328,15 +1331,16 @@ FEMALE - - - + + + + @@ -1421,8 +1425,8 @@ - - + + @@ -1521,8 +1525,8 @@ - - + + @@ -1692,8 +1696,8 @@ - - + + @@ -1921,8 +1925,8 @@ - - + + @@ -2047,8 +2051,8 @@ - - + + @@ -2168,8 +2172,8 @@ - - + + @@ -2297,8 +2301,8 @@ - - + + @@ -2406,8 +2410,8 @@ - - + + @@ -2515,8 +2519,8 @@ - - + + @@ -2624,8 +2628,8 @@ - - + + @@ -2733,8 +2737,8 @@ - - + + @@ -2842,8 +2846,8 @@ - - + + @@ -3096,8 +3100,8 @@ - - + + @@ -3205,8 +3209,8 @@ - - + + @@ -3314,8 +3318,8 @@ - - + + @@ -3423,8 +3427,8 @@ - - + + @@ -3532,8 +3536,8 @@ - - + + @@ -3641,8 +3645,8 @@ - - + + @@ -3894,8 +3898,8 @@ - - + + @@ -4006,8 +4010,8 @@ - - + + @@ -4118,8 +4122,8 @@ - - + + @@ -4230,8 +4234,8 @@ - - + + @@ -4342,8 +4346,8 @@ - - + + @@ -4455,8 +4459,8 @@ - - + + @@ -4715,8 +4719,8 @@ - - + + @@ -4827,8 +4831,8 @@ - - + + @@ -4939,8 +4943,8 @@ - - + + @@ -5051,8 +5055,8 @@ - - + + @@ -5163,8 +5167,8 @@ - - + + @@ -5275,8 +5279,8 @@ - - + + @@ -5531,8 +5535,8 @@ - - + + @@ -5638,8 +5642,8 @@ - - + + @@ -5740,8 +5744,8 @@ - - + + @@ -5847,8 +5851,8 @@ - - + + @@ -5953,8 +5957,8 @@ - - + + @@ -6059,8 +6063,8 @@ - - + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/26000-26099.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/26000-26099.xml index e3f4aab179..beeb9c5c32 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/26000-26099.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/26000-26099.xml @@ -14,8 +14,8 @@ - - + + @@ -119,8 +119,8 @@ - - + + @@ -222,8 +222,8 @@ - - + + @@ -326,8 +326,8 @@ - - + + @@ -430,8 +430,8 @@ - - + + @@ -533,8 +533,8 @@ - - + + @@ -788,8 +788,8 @@ - - + + @@ -895,8 +895,8 @@ - - + + @@ -1001,8 +1001,8 @@ - - + + @@ -1108,8 +1108,8 @@ - - + + @@ -1214,8 +1214,8 @@ - - + + @@ -1321,8 +1321,8 @@ - - + + @@ -1575,8 +1575,8 @@ - - + + @@ -1685,8 +1685,8 @@ - - + + @@ -1794,8 +1794,8 @@ - - + + @@ -1904,8 +1904,8 @@ - - + + @@ -2013,8 +2013,8 @@ - - + + @@ -2122,8 +2122,8 @@ - - + + @@ -2369,8 +2369,8 @@ - - + + @@ -2469,8 +2469,8 @@ - - + + @@ -2570,8 +2570,8 @@ - - + + @@ -2671,8 +2671,8 @@ - - + + @@ -2772,8 +2772,8 @@ - - + + @@ -2873,8 +2873,8 @@ - - + + @@ -3917,8 +3917,8 @@ - - + + @@ -4016,8 +4016,8 @@ - - + + @@ -4114,8 +4114,8 @@ - - + + @@ -4212,8 +4212,8 @@ - - + + @@ -4310,8 +4310,8 @@ - - + + @@ -4408,8 +4408,8 @@ - - + + @@ -4664,8 +4664,8 @@ - - + + @@ -4768,8 +4768,8 @@ - - + + @@ -4872,8 +4872,8 @@ - - + + @@ -4976,8 +4976,8 @@ - - + + @@ -5079,8 +5079,8 @@ - - + + @@ -5182,8 +5182,8 @@ - - + + @@ -5438,8 +5438,8 @@ - - + + @@ -5546,8 +5546,8 @@ - - + + @@ -5652,8 +5652,8 @@ - - + + @@ -5759,8 +5759,8 @@ - - + + @@ -5865,8 +5865,8 @@ - - + + @@ -5971,8 +5971,8 @@ - - + + @@ -6269,8 +6269,8 @@ - - + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/26100-26199.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/26100-26199.xml index a818a8efa1..762b8b7c8c 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/26100-26199.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/26100-26199.xml @@ -66,8 +66,8 @@ - - + + @@ -240,8 +240,8 @@ - - + + @@ -340,8 +340,8 @@ - - + + @@ -406,8 +406,8 @@ - - + + @@ -523,8 +523,8 @@ - - + + @@ -559,8 +559,8 @@ - - + + @@ -595,8 +595,8 @@ - - + + @@ -631,8 +631,8 @@ - - + + @@ -733,8 +733,8 @@ - - + + @@ -801,8 +801,8 @@ - - + + @@ -920,8 +920,8 @@ - - + + @@ -1020,8 +1020,8 @@ - - + + @@ -1086,8 +1086,8 @@ - - + + @@ -1202,8 +1202,8 @@ - - + + @@ -1331,8 +1331,8 @@ - - + + @@ -1460,8 +1460,8 @@ - - + + @@ -1606,6 +1606,7 @@ + @@ -1625,6 +1626,9 @@ + + + @@ -2129,6 +2133,10 @@ + + + + @@ -2335,8 +2343,8 @@ - - + + @@ -2368,8 +2376,12 @@ - - + + + + + + @@ -2398,10 +2410,11 @@ - - + + - + + @@ -2656,8 +2669,12 @@ - - + + + + + + @@ -2879,10 +2896,11 @@ - - + + - + + @@ -3050,10 +3068,11 @@ - - + + - + + @@ -3226,6 +3245,10 @@ + + + + @@ -3320,6 +3343,10 @@ + + + + @@ -3414,6 +3441,10 @@ + + + + @@ -3508,6 +3539,10 @@ + + + + @@ -3678,6 +3713,10 @@ + + + + @@ -3772,6 +3811,10 @@ + + + + @@ -3866,6 +3909,10 @@ + + + + @@ -3960,6 +4007,10 @@ + + + + @@ -4140,6 +4191,10 @@ + + + + @@ -4234,6 +4289,10 @@ + + + + @@ -4328,6 +4387,10 @@ + + + + @@ -4423,6 +4486,10 @@ + + + + @@ -4592,6 +4659,10 @@ + + + + @@ -4686,6 +4757,10 @@ + + + + @@ -4780,6 +4855,10 @@ + + + + @@ -4874,6 +4953,10 @@ + + + + @@ -5041,6 +5124,12 @@ FEMALE + + + + + + @@ -5110,8 +5199,8 @@ - - + + @@ -5182,6 +5271,12 @@ FEMALE + + + + + + @@ -5246,6 +5341,12 @@ FEMALE + + + + + + @@ -5310,6 +5411,12 @@ FEMALE + + + + + + @@ -5370,6 +5477,10 @@ + + + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29000-29099.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29000-29099.xml index 65a072c0ec..94a1eb7db3 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29000-29099.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29000-29099.xml @@ -1179,6 +1179,11 @@ + + + + + 21 true @@ -3348,6 +3353,11 @@ + + + + + 14 true diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29100-29199.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29100-29199.xml index e90d2a60e2..a70be91611 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29100-29199.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29100-29199.xml @@ -4079,8 +4079,8 @@ - - + + @@ -4158,8 +4158,8 @@ - - + + @@ -4200,8 +4200,8 @@ - - + + @@ -4326,8 +4326,8 @@ - - + + @@ -4469,8 +4469,8 @@ - - + + @@ -4600,8 +4600,8 @@ - - + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29200-29299.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29200-29299.xml index 37e1d62892..240f000ddd 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29200-29299.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29200-29299.xml @@ -401,8 +401,8 @@ - - + + @@ -482,8 +482,8 @@ - - + + @@ -525,8 +525,8 @@ - - + + @@ -671,8 +671,8 @@ - - + + @@ -956,8 +956,8 @@ - - + + @@ -1823,8 +1823,8 @@ - - + + @@ -1946,8 +1946,8 @@ - - + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29300-29399.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29300-29399.xml index fd4d6d4585..409cd75251 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29300-29399.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/npcs/29300-29399.xml @@ -5,8 +5,8 @@ MALE - - + + @@ -161,17 +161,17 @@ - + GIANT MALE - + - - + + @@ -182,16 +182,19 @@ + + + - + GIANT MALE - + @@ -201,14 +204,19 @@ - - + + + + + + + @@ -225,12 +233,13 @@ + - - + + @@ -238,6 +247,13 @@ + + + + + + + @@ -666,6 +682,7 @@ + @@ -680,6 +697,10 @@ + + + + @@ -690,6 +711,7 @@ + @@ -786,6 +808,10 @@ + + + + @@ -796,6 +822,7 @@ + @@ -1035,6 +1062,10 @@ + + + + 300 true @@ -1362,6 +1393,10 @@ + + + + 500 @@ -1376,6 +1411,9 @@ + + + true @@ -1474,12 +1512,16 @@ MALE - - + + + + + + 480 @@ -1504,12 +1546,16 @@ MALE - - + + + + + + 630 @@ -1531,16 +1577,27 @@ DIVINE MALE - - + + + + + + + 630 + + + + + + true @@ -2008,6 +2065,10 @@ + + + + 560 @@ -2025,6 +2086,7 @@ + true @@ -2123,12 +2185,16 @@ MALE - - + + + + + + 480 @@ -2153,12 +2219,16 @@ MALE - - + + + + + + 630 @@ -2180,16 +2250,27 @@ DIVINE MALE - - + + + + + + + 630 + + + + + + true @@ -3237,13 +3318,18 @@ MALE - + + + + + + @@ -3257,9 +3343,16 @@ + + + + + + + @@ -3471,6 +3564,11 @@ + + + + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04100-04199.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04100-04199.xml index b5eff97c27..736b571067 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04100-04199.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04100-04199.xml @@ -353,28 +353,25 @@ icon.skill4106 1 - 9 + 10 STUN STUN - 1100 + 600 2000 -100 - FIRE - 180 + EARTH + 450 6000 true - 99 + 110 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - NONE - -5 SHOCK SELF POINT_BLANK NOT_FRIEND - 28600 + 34255 @@ -383,33 +380,25 @@ icon.skill4107 1 - 9 - FLY_AWAY + 10 + STUN STUN - 1500 3000 -100 - FIRE - 180 - 0;180;1500;400 + EARTH + 450 + 0;180;1500;600 3000 true - 99 + 110 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - NONE - -5 - 1.5 SHOCK SELF - SQUARE_PB + SQUARE NOT_FRIEND - 28600 - - - 600 + 34255 @@ -421,25 +410,16 @@ 30 TURN_FLEE TURN_FLEE - 90 - 400 - MAGIC - 600 + 600 2700 -100 - 1100 - FIRE - 180 2300 true - 1 - 99 + 110 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 DERANGEMENT - ENEMY_ONLY - RANGE + SELF + POINT_BLANK NOT_FRIEND @@ -452,93 +432,78 @@ 1 120 ANTARAS_DEBUFF - 90 - 850 - MAGIC + 600 1200 -100 - 0;0;850;850 2800 true - 1 - 99 + 110 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - 2 DERANGEMENT SELF - SQUARE_PB + POINT_BLANK NOT_FRIEND - -15 + -30 PER - -15 + -30 PER - -50 + -30 PER - -40 + -30 PER - -40 + -30 PER - -19 - DIFF + -30 + PER - -19 - DIFF + -30 + PER - -25 + -30 PER - -25 + -30 PER - 10 + -30 PER - 1200 - - 500 - 1000 - 2700 -100 - - 1000 - 1500 - - FIRE - 180 - 0;0;1200;300 + EARTH + 450 + 0;0;1500;600 2300 - 99 - A1 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - ENEMY + 110 + A2 + SELF SQUARE NOT_FRIEND - - 650 + + + 10000 + 34255 + @@ -549,28 +514,24 @@ 120 TURN_STONE FLESH_STONE - 50 - 700 - MAGIC - 1000 + 300 + 2500 1800 -100 - 1500 + 2500 EARTH - 20 + 450 3200 true 1 99 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - ENEMY_ONLY + ENEMY RANGE NOT_FRIEND - 10 + 34255 @@ -580,24 +541,22 @@ - 100 - 50 + 300 + 300 800 -100 - 400 + 300 FIRE - 180 + 450 2200 99 A1 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 ENEMY RANGE NOT_FRIEND - 57200 + 34255 @@ -988,15 +947,10 @@ icon.skillboss - 99 P - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 - - 80 - diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04400-04499.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04400-04499.xml index 075b58596d..d4f4260695 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04400-04499.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04400-04499.xml @@ -3935,6 +3935,11 @@ 1 P -5 + + + 100 + + 900 diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04600-04699.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04600-04699.xml index 80679c7e46..8d1a05a817 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04600-04699.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/04600-04699.xml @@ -4688,87 +4688,69 @@ icon.skillboss - 99 P - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 - - -8 - 1 - 30 + 300 PD_UP_SPECIAL 3300 - -1 A2 - NONE - -5 - -1 + 110 TARGET SINGLE - 900 + 100 PER - 900 + 100 PER - 250 - 50 + 300 + 300 1500 -100 - 400 + 300 FIRE - 180 - 0;15;250;160 + 450 1000 - 99 + 110 A1 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - VALAKAS ENEMY - SQUARE + RANGE NOT_FRIEND - 30416 - 10 + 34255 - 250 - 50 + 300 + 300 1500 -100 - 400 + 300 FIRE - 180 - 0;-15;250;160 + 450 1000 - 99 + 110 A1 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - VALAKAS ENEMY - SQUARE + RANGE NOT_FRIEND - 30416 - 10 + 34255 @@ -4776,36 +4758,27 @@ icon.skill4683 1 - 10 + 30 DRAGON_BREATH - 80 - 1200 - MAGIC - 600 2000 -100 - 1100 FIRE - 180 - 0;0;1200;35 + 450 3000 true - 2 - 99 + 110 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - -100;100 - ENEMY - FAN + 0;0;2500;900 + SELF + SQUARE NOT_FRIEND - - 648 + + 34255 - 216 - 3 + 512 + 1 @@ -4813,122 +4786,124 @@ icon.skill4683 1 - 10 + 30 DRAGON_BREATH - 80 - 1700 - MAGIC - 900 2000 -100 - 1400 FIRE - 180 - 0;0;1700;160 + 450 3000 true - 2 - 99 + 110 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - 100;300 - ENEMY + 0;0;2500;900 + SELF SQUARE NOT_FRIEND - - 648 + + 34255 - 216 - 3 + 512 + 1 - 1000 + 1 + 10 + STUN + STUN 1000 -100 FIRE - 180 - 0;180;1000;120 + 450 + 0;180;1500;600 3000 - 99 - A1 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 + SHOCK SELF - SQUARE_PB + SQUARE NOT_FRIEND - 48391 - 10 + 34255 + - 500 + 1 + 10 + STUN + STUN + 1000 -100 FIRE - 180 - 0;180;500;120 - 99 - A1 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - 0 + 450 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK SELF - SQUARE_PB + SQUARE NOT_FRIEND - - 157 + + 34255 + + 1 + 10 + STUN + STUN + 1000 + -100 + FIRE + 450 + 0;180;1500;600 3000 - 99 - A1 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - TARGET - SINGLE + 110 + A2 + SHOCK + SELF + SQUARE + NOT_FRIEND + + + 34255 + + + icon.skill4688 1 - 9 - FLY_AWAY - 80 - 250 - PHYSICAL - 3000 + 10 + STUN + STUN + 1000 -100 FIRE - 180 - 0;180;250;500 + 450 + 0;180;1500;600 3000 - true - 1 - 99 + 110 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 SHOCK SELF - SQUARE_PB + SQUARE NOT_FRIEND - 27849 - 10 - - - 600 + 34255 @@ -4940,36 +4915,13 @@ 30 TURN_FLEE TURN_FLEE - - 80 - -1 - - 1000 - - MAGIC - NONE - - - 2000 - 0 - + 600 + 2000 -100 - FIRE - 180 - - 3000 - 0 - + 3000 true - - 1 - 0 - - 99 + 110 A2 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 - -100;300 DERANGEMENT SELF POINT_BLANK @@ -4980,22 +4932,20 @@ - 300 + 600 2000 -100 FIRE - 180 + 450 8000 - 99 - A1 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 SELF - BALAKAS_SCOPE + POINT_BLANK NOT_FRIEND - - 1084 + + 34255 diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/05000-05099.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/05000-05099.xml index dff9bb8b45..a5bb478acf 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/05000-05099.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/05000-05099.xml @@ -3003,25 +3003,21 @@ - 150 - 600 - -1 - 1100 + 2500 + -100 + 2500 EARTH - 180 + 450 8000 - 2 - 99 - A1 - 6000 - TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT - -5 + 110 + A2 + 300 ENEMY RANGE NOT_FRIEND - - 1084 + + 34255 diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/14200-14299.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/14200-14299.xml index 642061ce56..a91097f71d 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/14200-14299.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/14200-14299.xml @@ -1232,29 +1232,20 @@ icon.skill0054 A2 - 1 - 1000 + 600 1500 - 1 - -1 + -100 FLY_AWAY - NONE - -5 - 0 - 1400 - 1 - 99 + 600 99 1 - 1 - 200 + 3 true ENEMY - RANGE - NOT_FRIEND + SINGLE - 2000 + 157 200 diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/14300-14399.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/14300-14399.xml index 515c8e1360..ef0a2e9c08 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/14300-14399.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/14300-14399.xml @@ -915,21 +915,16 @@ icon.skill1167 A2 - 500 500 1 - -1 + -100 POISON POISON - NONE - -5 - 0 - 1000 99 3 30 POISON - 200 + 600 DOT_POISON true SELF @@ -969,59 +964,59 @@ icon.skill0773 A1 - 2000 - -686 - -5 - 0 - 2500 + -100 99 - 0;0;2000;600 10000 - TARGET + 0;0;2500;600 + SELF SQUARE NOT_FRIEND + + + 34255 + + icon.skill0036 A1 - -1 - -5 - 0 + -100 99 - 1200 - 0;0;900;0 - 10000 - SELF - RING_RANGE - NOT_FRIEND - - - icon.skill0036 - A1 - -1 - -5 - 0 - 99 - 900 + 600 10000 SELF POINT_BLANK NOT_FRIEND + + + 34255 + + + + + icon.skill0036 + A1 + -100 + 99 + 600 + 10000 + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + icon.skill1167 A2 - 500 10000 - 1 - -1 POISON POISON - NONE - -5 - 0 - 1000 + 600 99 3 30 @@ -1029,10 +1024,11 @@ DOT_POISON true SELF - SINGLE + POINT_BLANK + NOT_FRIEND - 1 + 512 5 @@ -1666,29 +1662,22 @@ A2 600 2500 - 2000 - 1 - -1 + -100 ROOT_MAGICALLY - NONE - -5 - 0 - 1100 - 2 - 80 + 600 97 1 - 5 + 10 HOLD 300 ROOT true - ENEMY_ONLY + ENEMY RANGE NOT_FRIEND - 1000 + 157 diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15200-15299.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15200-15299.xml index f7eb496279..b1e60fb276 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15200-15299.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15200-15299.xml @@ -1343,56 +1343,104 @@ icon.skill0100 A2 - 400 + 1 + 10 + STUN + STUN + 600 2500 1000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + SHOCK SELF - SINGLE + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill10549 A2 - 400 + 1 + 30 2500 3000 - -574 - -5 - 0 + -100 + WIND + 300 99 true + 0;0;2500;900 SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + -30 + PER + + + -30 + PER + + - A1 - 2500 - -574 - -5 - 0 - 99 - 1500 + 1 + 10 + STUN + STUN + 1000 + -100 + WIND + 300 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK SELF - SINGLE + SQUARE + NOT_FRIEND + + + 34255 + + + - A1 - 1800 + A2 + 300 + 2500 2500 - -707 - -5 - 0 + -100 + 2500 + WIND + 300 99 - 1 - SELF - SINGLE + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15400-15499.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15400-15499.xml index 56bc171033..53e890c58c 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15400-15499.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15400-15499.xml @@ -444,10 +444,21 @@ A2 + 1 + 5 + 600 5000 5000 -574 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + A1 diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15500-15599.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15500-15599.xml index 3a1abed743..27a80a0fc7 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15500-15599.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15500-15599.xml @@ -939,21 +939,53 @@ icon.skill4108 + 1 + 30 + TURN_FLEE + TURN_FLEE + 600 A2 3000 500 1 -867 true + DERANGEMENT + SELF + POINT_BLANK + NOT_FRIEND + + + + icon.skill0006 + 1 + 5 + STUN + 600 A2 2000 3000 -867 true + PULL + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 600 + + + 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912 + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15600-15699.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15600-15699.xml index e0fe0e4306..609429406e 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15600-15699.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/15600-15699.xml @@ -4,11 +4,22 @@ icon.skill1275 A1 + 300 300 1500 1000 - -867 - 5000 + -100 + 300 + WIND + 300 + ENEMY + RANGE + NOT_FRIEND + + + 34255 + + @@ -90,13 +101,11 @@ icon.skill0003 A1 - 40 + 600 2000 -100 + 600 500 - ATTACK - 6000 - 5 ENEMY SINGLE @@ -108,7 +117,7 @@ 1000 2000 4000 - 6000 + 50000 @@ -130,8 +139,7 @@ 6000 -100 500 - 300 - 30000 + 600 SELF POINT_BLANK NOT_FRIEND @@ -144,7 +152,7 @@ 12000 14000 16000 - 18000 + 50000 @@ -156,8 +164,7 @@ 6000 -100 500 - 800 - 30000 + 600 SELF POINT_BLANK NOT_FRIEND @@ -170,7 +177,7 @@ 16000 18000 20000 - 22000 + 50000 @@ -394,6 +401,10 @@ icon.skillboss P + 99 + + + @@ -1215,11 +1226,25 @@ icon.skill1422 A2 - 2000 + 2500 500 - 1 + 1 + 30 + 300 + 300 + 300 + 40-80 -100 true + ENEMY + RANGE + NOT_FRIEND + + + -20 + PER + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16100-16199.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16100-16199.xml index f38ef49843..071d8fbdd1 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16100-16199.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16100-16199.xml @@ -28,11 +28,22 @@ icon.skill1167 A1 - 900 - 2000 + 1 + 300 + 40-80 + 300 + 2500 500 - -264 - 1 + -100 + 300 + ENEMY + RANGE + NOT_FRIEND + + + 157 + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16600-16699.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16600-16699.xml index 8da1d1a1f7..2b8f764eee 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16600-16699.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16600-16699.xml @@ -206,25 +206,19 @@ 1 10 PARALYZE - 150 PARALYZE - 10 2500 2500 - 200 3000 500 - 10000 - 2 - -52 - 0 + -100 PARALYZE ENEMY SINGLE true - 1500 + 157 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -237,20 +231,17 @@ A1 true 40-80 - 2500 - 900 - 10 + 600 1000 500 - -52 - 2500 + -100 SELF POINT_BLANK NOT_FRIEND true - - 1500 + + 34255 @@ -259,21 +250,14 @@ icon.skill1275 A2 5 - 2 - 200 - true - -1 + 5 40-80 - 900 - 20000 + 600 KNOCKDOWN KNOCKDOWN - 0 - 10 1000 500 - -52 - 2500 + -100 KNOCKDOWN SELF POINT_BLANK @@ -281,7 +265,7 @@ true - 1500 + 157 600 @@ -297,18 +281,11 @@ A2 5 30 - 200 - true - -1 40-80 - 900 - 20000 - 0 - 10 + 600 2000 500 - -52 - 2500 + -100 GIANT_WEAKNESS SELF POINT_BLANK @@ -316,7 +293,7 @@ true - 1500 + 157 30 @@ -368,22 +345,16 @@ icon.skill1172 A2 - 1200 + 2500 2000 - -52 - 1 - 10 + -100 1 10 40-80 PARALYZE PARALYZE - 150 - 900 - 1200 - 10000 - 2 - 0 + 300 + 2500 PARALYZE ENEMY RANGE @@ -391,7 +362,7 @@ true - 100000 + 34255 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 @@ -402,23 +373,20 @@ A1 - true 45-45 - 200 - 1200 - 400 - 10 + 2500 + 300 3000 500 - -1349 - 1200 + -100 + 2500 ENEMY RANGE NOT_FRIEND true - 1500 + 157 250 @@ -431,26 +399,21 @@ icon.skill16614 A2 - SELF - 1200 + 2500 3000 - -52 - 1 - 10 - 10000 + -100 + 2500 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY SINGLE - 200 + 512 1 @@ -587,19 +550,20 @@ A1 2500 5000 - -696 - 1 - 10000 - 200 - 12 + -100 + 300 2500 ENEMY - SINGLE + RANGE NOT_FRIEND true - 1500 + 157 + + + 512 + 1 @@ -607,23 +571,17 @@ icon.skll10094 A2 - SELF 2500 2500 - 900 + 300 2500 40-80 - -438 - 1 - 10 - 10000 + -100 1 30 PARALYZE - 150 PARALYZE true - 0 PARALYZE ENEMY RANGE @@ -634,7 +592,7 @@ 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516 - 1500 + 157 -50 diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16700-16799.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16700-16799.xml index bccd34e1e5..5eff878c51 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16700-16799.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/16700-16799.xml @@ -389,15 +389,15 @@ A1 - -1 + 600 1500 - 1 -100 + 600 ENEMY SINGLE - 100000 + 34255 diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/23600-23699.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/23600-23699.xml index 7a8c770fbb..6e37757bdb 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/23600-23699.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/23600-23699.xml @@ -785,37 +785,68 @@ A1 - 1 - 600 + 100 1500 800 - 10000 - -700 - 1 + -100 + 100 + ENEMY + SINGLE + + + 34255 + + icon.skill0096 A2 - 1 + 1 + 10 + 40-80 + 600 3000 500 - 10000 - 1 -100 true + SELF + POINT_BLANK + NOT_FRIEND + + + 157 + + + 512 + 1 + + icon.skill1092 A2 - 1 + 1 + 10 + 40-80 + 600 6000 800 - 10000 - 1 - -700 + -100 true + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + 512 + 1 + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/32400-32499.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/32400-32499.xml index 911daafe75..28b537262a 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/32400-32499.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/32400-32499.xml @@ -418,6 +418,19 @@ A1 + 40-80 + 600 + 2000 + -100 + 3500 + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + @@ -440,12 +453,63 @@ icon.skill10266 - A1 + 1 + 30 + ROOT_MAGICALLY + ROOT + 40-80 + 600 + 2000 + -100 + 5500 + true + A2 + HOLD + SELF + POINT_BLANK + NOT_FRIEND + + + 34255 + + + icon.skill1072 - A1 + 1 + 30 + POISON + POISON + 40-80 + 600 + 2000 + -100 + 5500 + true + A2 + POISON + SELF + POINT_BLANK + NOT_FRIEND + + + 157 + + + 512 + 1 + + + -20 + PER + + + -20 + PER + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/32700-32799.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/32700-32799.xml index b0410f2525..76fba9c194 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/32700-32799.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/skills/32700-32799.xml @@ -27,7 +27,24 @@ + 300 + 300 + 1500 + -100 + 300 + WATER + 450 + 1000 + 110 A1 + ENEMY + RANGE + NOT_FRIEND + + + 34255 + + @@ -68,12 +85,54 @@ icon.skill32713 - A1 + 1 + 10 + STUN + STUN + 1000 + -100 + WATER + 450 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK + SELF + SQUARE + NOT_FRIEND + + + 34255 + + + icon.skill32713 - A1 + 1 + 10 + STUN + STUN + 1000 + -100 + WATER + 450 + 0;180;1500;600 + 3000 + 110 + A2 + SHOCK + SELF + SQUARE + NOT_FRIEND + + + 34255 + + + @@ -83,12 +142,64 @@ icon.skill32716 - A1 + A2 + 1 + 30 + 2500 + 3000 + -100 + WATER + 450 + 110 + true + 0;0;2500;900 + SELF + SQUARE + NOT_FRIEND + + + 34255 + + + 512 + 1 + + icon.skill32717 - A1 + 1 + 30 + TURN_FLEE + TURN_FLEE + 600 + 2000 + -100 + 3000 + true + 110 + A2 + DERANGEMENT + SELF + POINT_BLANK + NOT_FRIEND + + + + + -30 + PER + + + -30 + PER + + + 512 + 1 + + @@ -131,7 +242,11 @@ icon.skillboss - A1 + P + 110 + + +