Prevent raidboss exploiting by using disabling skills.

This commit is contained in:
MobiusDevelopment
2019-03-16 14:01:08 +00:00
parent 65217291d0
commit 985f2c9f42
66 changed files with 374 additions and 44 deletions

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -150,6 +150,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -150,6 +150,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -150,6 +150,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -150,6 +150,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -150,6 +150,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -150,6 +150,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -150,6 +150,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -102,6 +102,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -102,6 +102,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -102,6 +102,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}

View File

@@ -60,6 +60,11 @@ public final class BlockActions extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze();
// Cancel running skill casters.

View File

@@ -54,10 +54,14 @@ public final class Fear extends AbstractEffect
@Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{
final L2Character creature = effected;
return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && //
!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || //
(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON)));
if ((effected == null) || effected.isRaid())
{
return false;
}
return effected.isPlayer() || effected.isSummon() || (effected.isAttackable() //
&& !((effected instanceof L2DefenderInstance) || (effected instanceof L2FortCommanderInstance) //
|| (effected instanceof L2SiegeFlagInstance) || (effected.getTemplate().getRace() == Race.SIEGE_WEAPON)));
}
@Override

View File

@@ -102,6 +102,11 @@ public final class KnockBack extends AbstractEffect
private void knockBack(L2Character effector, L2Character effected)
{
if ((effected == null) || effected.isRaid())
{
return;
}
final double radians = Math.toRadians(Util.calculateAngleFrom(effector, effected));
final int x = (int) (effected.getX() + (_distance * Math.cos(radians)));
final int y = (int) (effected.getY() + (_distance * Math.sin(radians)));

View File

@@ -49,6 +49,11 @@ public final class Mute extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.abortCast();
effected.getAI().notifyEvent(CtrlEvent.EVT_MUTED);
}

View File

@@ -61,6 +61,12 @@ public final class PullBack extends AbstractEffect
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// Prevent pulling raids.
if ((effected == null) || effected.isRaid())
{
return;
}
// Prevent pulling NPCs.
if (!effected.isPlayable() && !effected.isMonster())
{

View File

@@ -59,6 +59,11 @@ public final class Root extends AbstractEffect
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
if ((effected == null) || effected.isRaid())
{
return;
}
effected.stopMove(null);
effected.getAI().notifyEvent(CtrlEvent.EVT_ROOTED);
}