Fixed FAN & SQUARE effectscope not giving damage to unflagged targets.

Contributed by LLiuKe.
This commit is contained in:
MobiusDevelopment 2021-10-05 14:17:34 +00:00
parent a5d5c38622
commit 616f55bc7f
38 changed files with 152 additions and 76 deletions

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -53,6 +54,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -60,7 +62,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -72,7 +74,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -53,6 +54,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -60,7 +62,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -72,7 +74,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -48,6 +49,7 @@ public class Fan implements IAffectScopeHandler
final double fanHalfAngle = fanAngle / 2; // Half left and half right.
final int affectLimit = skill.getAffectLimit();
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -55,7 +57,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -63,7 +65,7 @@ public class Fan implements IAffectScopeHandler
{
return false;
}
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.AffectScope;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.util.Util;
/**
@ -54,6 +55,7 @@ public class Square implements IAffectScopeHandler
final double sin = Math.sin(-heading);
// Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0);
final Predicate<Creature> filter = c ->
{
@ -61,7 +63,7 @@ public class Square implements IAffectScopeHandler
{
return false;
}
if (c.isDead())
if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{
return false;
}
@ -73,7 +75,7 @@ public class Square implements IAffectScopeHandler
final int yr = (int) (creature.getY() + (xp * sin) + (yp * cos));
if ((xr > rectX) && (xr < (rectX + squareLength)) && (yr > rectY) && (yr < (rectY + squareWidth)))
{
if ((affectObject != null) && !affectObject.checkAffectedObject(creature, c))
if ((c != target) && (affectObject != null) && !affectObject.checkAffectedObject(creature, c))
{
return false;
}