From 38f572343f535875473c3020fd311e33572164d2 Mon Sep 17 00:00:00 2001
From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Tue, 7 Nov 2017 21:27:10 +0000
Subject: [PATCH] Addition of HellBind effect handler.
---
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../handlers/effecthandlers/HellBind.java | 127 ++++++++++++++++++
.../game/data/stats/skills/documentation.txt | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../handlers/effecthandlers/HellBind.java | 127 ++++++++++++++++++
.../game/data/stats/skills/documentation.txt | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../handlers/effecthandlers/HellBind.java | 127 ++++++++++++++++++
.../game/data/stats/skills/documentation.txt | 1 +
9 files changed, 387 insertions(+)
create mode 100644 L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
create mode 100644 L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
create mode 100644 L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java
index ef89f06b28..e0d9996551 100644
--- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -156,6 +156,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("HealEffect", HealEffect::new);
EffectHandler.getInstance().registerHandler("HealOverTime", HealOverTime::new);
EffectHandler.getInstance().registerHandler("HealPercent", HealPercent::new);
+ EffectHandler.getInstance().registerHandler("HellBind", HellBind::new);
EffectHandler.getInstance().registerHandler("Hide", Hide::new);
EffectHandler.getInstance().registerHandler("HitNumber", HitNumber::new);
EffectHandler.getInstance().registerHandler("Hp", Hp::new);
diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HellBind.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
new file mode 100644
index 0000000000..6fd155b947
--- /dev/null
+++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
@@ -0,0 +1,127 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package handlers.effecthandlers;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.l2jmobius.gameserver.ai.CtrlEvent;
+import com.l2jmobius.gameserver.enums.CategoryType;
+import com.l2jmobius.gameserver.enums.Race;
+import com.l2jmobius.gameserver.model.L2World;
+import com.l2jmobius.gameserver.model.StatsSet;
+import com.l2jmobius.gameserver.model.actor.L2Character;
+import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jmobius.gameserver.model.base.ClassId;
+import com.l2jmobius.gameserver.model.effects.AbstractEffect;
+import com.l2jmobius.gameserver.model.effects.L2EffectType;
+import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
+import com.l2jmobius.gameserver.model.skills.BuffInfo;
+import com.l2jmobius.gameserver.model.skills.Skill;
+import com.l2jmobius.gameserver.network.serverpackets.ExAlterSkillRequest;
+
+/**
+ * @author Mobius
+ */
+public final class HellBind extends AbstractEffect
+{
+ // skill data
+ private static final Map _chainedAirSkills = new HashMap<>(36);
+ {
+ _chainedAirSkills.put(ClassId.SIGEL_PHOENIX_KNIGHT, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_HELL_KNIGHT, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_EVA_TEMPLAR, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_SHILLIEN_TEMPLAR, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DUELIST, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DREADNOUGHT, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_TITAN, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_GRAND_KHAVATARI, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_MAESTRO, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DOOMBRINGER, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_ADVENTURER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_WIND_RIDER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_GHOST_HUNTER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_FORTUNE_SEEKER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_SAGITTARIUS, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_MOONLIGHT_SENTINEL, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_GHOST_SENTINEL, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_TRICKSTER, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_ARCHMAGE, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_SOULTAKER, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_MYSTIC_MUSE, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_STORM_SCREAMER, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_SOUL_HOUND, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_HIEROPHANT, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_SWORD_MUSE, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_SPECTRAL_DANCER, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_DOMINATOR, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_DOOMCRYER, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_ARCANA_LORD, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_ELEMENTAL_MASTER, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_SPECTRAL_MASTER, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_CARDINAL, 11999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_EVA_SAINT, 11999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_SHILLIEN_SAINT, 11999); // Heavy Hit
+ }
+
+ public HellBind(StatsSet params)
+ {
+ }
+
+ @Override
+ public boolean isInstant()
+ {
+ return false;
+ }
+
+ @Override
+ public L2EffectType getEffectType()
+ {
+ return L2EffectType.KNOCK;
+ }
+
+ @Override
+ public void continuousInstant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
+ {
+ hellBind(effector, effected);
+ }
+
+ @Override
+ public void onExit(BuffInfo info)
+ {
+ if (!info.getEffected().isPlayer())
+ {
+ info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_THINK);
+ }
+ }
+
+ public void hellBind(L2Character effector, L2Character effected)
+ {
+ for (L2PcInstance nearbyPlayer : L2World.getInstance().getVisibleObjects(effected, L2PcInstance.class, 1200))
+ {
+ if (nearbyPlayer.getRace() == Race.ERTHEIA)
+ {
+ continue;
+ }
+ if ((nearbyPlayer.getTarget() == effected) && nearbyPlayer.isInCategory(CategoryType.AWAKEN_GROUP) && !nearbyPlayer.isAlterSkillActive())
+ {
+ final int chainSkill = _chainedAirSkills.get(nearbyPlayer.getClassId());
+ nearbyPlayer.sendPacket(new ExAlterSkillRequest(nearbyPlayer, chainSkill, chainSkill, 5));
+ }
+ }
+ }
+}
diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/documentation.txt
index ff6f429781..8dc9d51304 100644
--- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/documentation.txt
@@ -126,6 +126,7 @@ HealEffect: Increases the amount of HP received.
Heal: Increases current HP by a given amount.
HealOverTime: Increases current HP by a given amount over time.
HealPercent: Increases current HP by a given percentage amount.
+HellBind: Used by hellbind chain skills. (l2jmobius)
Hide: Hide effect.
HitNumber: Polearm attack max hit creatures.
HpByLevel: recovers certain amount of HP, but current implementation is wrong... final amount should be computed from skill power and character level difference
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java
index ef89f06b28..e0d9996551 100644
--- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -156,6 +156,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("HealEffect", HealEffect::new);
EffectHandler.getInstance().registerHandler("HealOverTime", HealOverTime::new);
EffectHandler.getInstance().registerHandler("HealPercent", HealPercent::new);
+ EffectHandler.getInstance().registerHandler("HellBind", HellBind::new);
EffectHandler.getInstance().registerHandler("Hide", Hide::new);
EffectHandler.getInstance().registerHandler("HitNumber", HitNumber::new);
EffectHandler.getInstance().registerHandler("Hp", Hp::new);
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HellBind.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
new file mode 100644
index 0000000000..6fd155b947
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
@@ -0,0 +1,127 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package handlers.effecthandlers;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.l2jmobius.gameserver.ai.CtrlEvent;
+import com.l2jmobius.gameserver.enums.CategoryType;
+import com.l2jmobius.gameserver.enums.Race;
+import com.l2jmobius.gameserver.model.L2World;
+import com.l2jmobius.gameserver.model.StatsSet;
+import com.l2jmobius.gameserver.model.actor.L2Character;
+import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jmobius.gameserver.model.base.ClassId;
+import com.l2jmobius.gameserver.model.effects.AbstractEffect;
+import com.l2jmobius.gameserver.model.effects.L2EffectType;
+import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
+import com.l2jmobius.gameserver.model.skills.BuffInfo;
+import com.l2jmobius.gameserver.model.skills.Skill;
+import com.l2jmobius.gameserver.network.serverpackets.ExAlterSkillRequest;
+
+/**
+ * @author Mobius
+ */
+public final class HellBind extends AbstractEffect
+{
+ // skill data
+ private static final Map _chainedAirSkills = new HashMap<>(36);
+ {
+ _chainedAirSkills.put(ClassId.SIGEL_PHOENIX_KNIGHT, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_HELL_KNIGHT, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_EVA_TEMPLAR, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_SHILLIEN_TEMPLAR, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DUELIST, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DREADNOUGHT, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_TITAN, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_GRAND_KHAVATARI, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_MAESTRO, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DOOMBRINGER, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_ADVENTURER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_WIND_RIDER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_GHOST_HUNTER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_FORTUNE_SEEKER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_SAGITTARIUS, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_MOONLIGHT_SENTINEL, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_GHOST_SENTINEL, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_TRICKSTER, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_ARCHMAGE, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_SOULTAKER, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_MYSTIC_MUSE, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_STORM_SCREAMER, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_SOUL_HOUND, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_HIEROPHANT, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_SWORD_MUSE, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_SPECTRAL_DANCER, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_DOMINATOR, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_DOOMCRYER, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_ARCANA_LORD, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_ELEMENTAL_MASTER, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_SPECTRAL_MASTER, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_CARDINAL, 11999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_EVA_SAINT, 11999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_SHILLIEN_SAINT, 11999); // Heavy Hit
+ }
+
+ public HellBind(StatsSet params)
+ {
+ }
+
+ @Override
+ public boolean isInstant()
+ {
+ return false;
+ }
+
+ @Override
+ public L2EffectType getEffectType()
+ {
+ return L2EffectType.KNOCK;
+ }
+
+ @Override
+ public void continuousInstant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
+ {
+ hellBind(effector, effected);
+ }
+
+ @Override
+ public void onExit(BuffInfo info)
+ {
+ if (!info.getEffected().isPlayer())
+ {
+ info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_THINK);
+ }
+ }
+
+ public void hellBind(L2Character effector, L2Character effected)
+ {
+ for (L2PcInstance nearbyPlayer : L2World.getInstance().getVisibleObjects(effected, L2PcInstance.class, 1200))
+ {
+ if (nearbyPlayer.getRace() == Race.ERTHEIA)
+ {
+ continue;
+ }
+ if ((nearbyPlayer.getTarget() == effected) && nearbyPlayer.isInCategory(CategoryType.AWAKEN_GROUP) && !nearbyPlayer.isAlterSkillActive())
+ {
+ final int chainSkill = _chainedAirSkills.get(nearbyPlayer.getClassId());
+ nearbyPlayer.sendPacket(new ExAlterSkillRequest(nearbyPlayer, chainSkill, chainSkill, 5));
+ }
+ }
+ }
+}
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/documentation.txt
index ff6f429781..8dc9d51304 100644
--- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/documentation.txt
@@ -126,6 +126,7 @@ HealEffect: Increases the amount of HP received.
Heal: Increases current HP by a given amount.
HealOverTime: Increases current HP by a given amount over time.
HealPercent: Increases current HP by a given percentage amount.
+HellBind: Used by hellbind chain skills. (l2jmobius)
Hide: Hide effect.
HitNumber: Polearm attack max hit creatures.
HpByLevel: recovers certain amount of HP, but current implementation is wrong... final amount should be computed from skill power and character level difference
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java
index ef89f06b28..e0d9996551 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -156,6 +156,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("HealEffect", HealEffect::new);
EffectHandler.getInstance().registerHandler("HealOverTime", HealOverTime::new);
EffectHandler.getInstance().registerHandler("HealPercent", HealPercent::new);
+ EffectHandler.getInstance().registerHandler("HellBind", HellBind::new);
EffectHandler.getInstance().registerHandler("Hide", Hide::new);
EffectHandler.getInstance().registerHandler("HitNumber", HitNumber::new);
EffectHandler.getInstance().registerHandler("Hp", Hp::new);
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HellBind.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
new file mode 100644
index 0000000000..6fd155b947
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HellBind.java
@@ -0,0 +1,127 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package handlers.effecthandlers;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.l2jmobius.gameserver.ai.CtrlEvent;
+import com.l2jmobius.gameserver.enums.CategoryType;
+import com.l2jmobius.gameserver.enums.Race;
+import com.l2jmobius.gameserver.model.L2World;
+import com.l2jmobius.gameserver.model.StatsSet;
+import com.l2jmobius.gameserver.model.actor.L2Character;
+import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jmobius.gameserver.model.base.ClassId;
+import com.l2jmobius.gameserver.model.effects.AbstractEffect;
+import com.l2jmobius.gameserver.model.effects.L2EffectType;
+import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
+import com.l2jmobius.gameserver.model.skills.BuffInfo;
+import com.l2jmobius.gameserver.model.skills.Skill;
+import com.l2jmobius.gameserver.network.serverpackets.ExAlterSkillRequest;
+
+/**
+ * @author Mobius
+ */
+public final class HellBind extends AbstractEffect
+{
+ // skill data
+ private static final Map _chainedAirSkills = new HashMap<>(36);
+ {
+ _chainedAirSkills.put(ClassId.SIGEL_PHOENIX_KNIGHT, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_HELL_KNIGHT, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_EVA_TEMPLAR, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.SIGEL_SHILLIEN_TEMPLAR, 10249); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DUELIST, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DREADNOUGHT, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_TITAN, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_GRAND_KHAVATARI, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_MAESTRO, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.TYRR_DOOMBRINGER, 10499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_ADVENTURER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_WIND_RIDER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_GHOST_HUNTER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.OTHELL_FORTUNE_SEEKER, 10749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_SAGITTARIUS, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_MOONLIGHT_SENTINEL, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_GHOST_SENTINEL, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.YUL_TRICKSTER, 10999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_ARCHMAGE, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_SOULTAKER, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_MYSTIC_MUSE, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_STORM_SCREAMER, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.FEOH_SOUL_HOUND, 11247); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_HIEROPHANT, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_SWORD_MUSE, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_SPECTRAL_DANCER, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_DOMINATOR, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.ISS_DOOMCRYER, 11749); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_ARCANA_LORD, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_ELEMENTAL_MASTER, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.WYNN_SPECTRAL_MASTER, 11499); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_CARDINAL, 11999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_EVA_SAINT, 11999); // Heavy Hit
+ _chainedAirSkills.put(ClassId.AEORE_SHILLIEN_SAINT, 11999); // Heavy Hit
+ }
+
+ public HellBind(StatsSet params)
+ {
+ }
+
+ @Override
+ public boolean isInstant()
+ {
+ return false;
+ }
+
+ @Override
+ public L2EffectType getEffectType()
+ {
+ return L2EffectType.KNOCK;
+ }
+
+ @Override
+ public void continuousInstant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
+ {
+ hellBind(effector, effected);
+ }
+
+ @Override
+ public void onExit(BuffInfo info)
+ {
+ if (!info.getEffected().isPlayer())
+ {
+ info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_THINK);
+ }
+ }
+
+ public void hellBind(L2Character effector, L2Character effected)
+ {
+ for (L2PcInstance nearbyPlayer : L2World.getInstance().getVisibleObjects(effected, L2PcInstance.class, 1200))
+ {
+ if (nearbyPlayer.getRace() == Race.ERTHEIA)
+ {
+ continue;
+ }
+ if ((nearbyPlayer.getTarget() == effected) && nearbyPlayer.isInCategory(CategoryType.AWAKEN_GROUP) && !nearbyPlayer.isAlterSkillActive())
+ {
+ final int chainSkill = _chainedAirSkills.get(nearbyPlayer.getClassId());
+ nearbyPlayer.sendPacket(new ExAlterSkillRequest(nearbyPlayer, chainSkill, chainSkill, 5));
+ }
+ }
+ }
+}
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/documentation.txt
index ff6f429781..8dc9d51304 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/documentation.txt
@@ -126,6 +126,7 @@ HealEffect: Increases the amount of HP received.
Heal: Increases current HP by a given amount.
HealOverTime: Increases current HP by a given amount over time.
HealPercent: Increases current HP by a given percentage amount.
+HellBind: Used by hellbind chain skills. (l2jmobius)
Hide: Hide effect.
HitNumber: Polearm attack max hit creatures.
HpByLevel: recovers certain amount of HP, but current implementation is wrong... final amount should be computed from skill power and character level difference