Fix for passive effect disabling monsters.

This commit is contained in:
MobiusDev 2019-01-24 13:49:01 +00:00
parent e57da86a58
commit 83b42bef7b
30 changed files with 110 additions and 180 deletions

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,

View File

@ -19,11 +19,12 @@ package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Passive effect implementation. * Passive effect implementation.
* @author Adry_85 * @author Mobius
*/ */
public final class Passive extends AbstractEffect public final class Passive extends AbstractEffect
{ {
@ -31,25 +32,15 @@ public final class Passive extends AbstractEffect
{ {
} }
@Override
public long getEffectFlags()
{
return EffectFlag.PASSIVE.getMask();
}
@Override @Override
public boolean canStart(L2Character effector, L2Character effected, Skill skill) public boolean canStart(L2Character effector, L2Character effected, Skill skill)
{ {
return effected.isAttackable(); return effected.isAttackable();
} }
@Override
public void onStart(L2Character effector, L2Character effected, Skill skill)
{
effected.abortAttack();
effected.abortCast();
effected.disableAllSkills();
effected.setIsImmobilized(true);
}
@Override
public void onExit(L2Character effector, L2Character effected, Skill skill)
{
effected.enableAllSkills();
effected.setIsImmobilized(false);
}
} }

View File

@ -23,6 +23,7 @@ import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.effects.EffectFlag;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.MinionList; import com.l2jmobius.gameserver.util.MinionList;
@ -100,7 +101,7 @@ public class L2MonsterInstance extends L2Attackable
@Override @Override
public boolean isAggressive() public boolean isAggressive()
{ {
return getTemplate().isAggressive(); return getTemplate().isAggressive() && !isAffected(EffectFlag.PASSIVE);
} }
@Override @Override

View File

@ -32,6 +32,7 @@ public enum EffectFlag
MUTED, MUTED,
PSYCHICAL_MUTED, PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED, PSYCHICAL_ATTACK_MUTED,
PASSIVE,
DISARMED, DISARMED,
ROOTED, ROOTED,
BLOCK_ACTIONS, BLOCK_ACTIONS,