Prevent CallSkill effect infinite loop.

This commit is contained in:
MobiusDevelopment
2021-11-10 22:15:32 +00:00
parent df6675d77f
commit 926f9f2555
23 changed files with 142 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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