Improvements for Compelling skill effect.

Contributed by Fakee.
This commit is contained in:
MobiusDevelopment 2022-09-08 11:33:44 +00:00
parent a5f69d06cd
commit aab13005e1
24 changed files with 696 additions and 168 deletions

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }

View File

@ -16,6 +16,7 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@ -40,20 +41,41 @@ public class Compelling extends AbstractEffect
} }
@Override @Override
public boolean isInstant() public boolean canStart(Creature effector, Creature effected, Skill skill)
{ {
return true; if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return false;
}
return effected.isPlayable() || effected.isAttackable();
} }
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void onStart(Creature effector, Creature effected, Skill skill, Item item)
{ {
// Prevent compelling raids and town NPCs. effected.getAI().notifyEvent(CtrlEvent.EVT_AFRAID);
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable())) compellingAction(effector, effected);
}
@Override
public boolean onActionTime(Creature effector, Creature effected, Skill skill, Item item)
{
compellingAction(null, effected);
return false;
}
@Override
public void onExit(Creature effector, Creature effected, Skill skill)
{
if (!effected.isPlayer())
{ {
return; effected.getAI().notifyEvent(CtrlEvent.EVT_THINK);
} }
}
private void compellingAction(Creature effector, Creature effected)
{
effected.setRunning(); effected.setRunning();
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation()); effected.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, effector.getLocation());
} }