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 @Override
public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void onStart(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if ((effected == null) || effected.isRaid())
{
return;
}
_allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill); _allowedSkills.stream().forEach(effected::addBlockActionsAllowedSkill);
effected.startParalyze(); effected.startParalyze();
// Cancel running skill casters. // Cancel running skill casters.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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