diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index bdeaac7bbd..a958e26322 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; +import org.l2jmobius.gameserver.model.skills.Skill; /** * Call Skill effect implementation. @@ -46,6 +47,13 @@ public class CallSkill extends AbstractEffect @Override public void onStart(BuffInfo info) { + // Prevent infinite loop. + final Skill skill = info.getSkill(); + if ((skill != null) && (skill.getId() == _skill.getSkillId()) && (skill.getLevel() == _skill.getSkillLevel())) + { + return; + } + info.getEffector().makeTriggerCast(_skill.getSkill(), info.getEffected(), true); } } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index bdeaac7bbd..a958e26322 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.BuffInfo; +import org.l2jmobius.gameserver.model.skills.Skill; /** * Call Skill effect implementation. @@ -46,6 +47,13 @@ public class CallSkill extends AbstractEffect @Override public void onStart(BuffInfo info) { + // Prevent infinite loop. + final Skill skill = info.getSkill(); + if ((skill != null) && (skill.getId() == _skill.getSkillId()) && (skill.getLevel() == _skill.getSkillLevel())) + { + return; + } + info.getEffector().makeTriggerCast(_skill.getSkill(), info.getEffected(), true); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java index 9e356ff8f3..e133690b6b 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/CallSkill.java @@ -86,6 +86,12 @@ public class CallSkill extends AbstractEffect if (triggerSkill != null) { + // Prevent infinite loop. + if ((skill.getId() == triggerSkill.getId()) && (skill.getLevel() == triggerSkill.getLevel())) + { + return; + } + SkillCaster.triggerCast(effector, effected, triggerSkill); } else