Improved L2DefenderInstance beneficial magic targeting.

This commit is contained in:
MobiusDev
2017-11-12 02:33:38 +00:00
parent 2df83af9f6
commit a7fdaaf2fd
5 changed files with 90 additions and 50 deletions

View File

@@ -182,25 +182,33 @@ public class L2DefenderInstance extends L2Attackable
if (!skill.isBad()) if (!skill.isBad())
{ {
L2Character target = this; L2Character target = this;
double lowestHpValue = Double.MAX_VALUE;
for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange())) for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange()))
{ {
if (nearby == this) if ((nearby == null) || nearby.isDead())
{ {
continue; continue;
} }
if (nearby instanceof L2DefenderInstance) if (nearby instanceof L2DefenderInstance)
{ {
target = nearby; final double targetHp = nearby.getCurrentHp();
} if (lowestHpValue > targetHp)
if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
final Castle castle = getCastle();
final Fort fortress = getFort();
final int activeSiegeId = (fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0));
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(activeSiegeId))
{ {
target = nearby; target = nearby;
lowestHpValue = targetHp;
}
}
else if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(getScriptValue()))
{
final double targetHp = nearby.getCurrentHp();
if (lowestHpValue > targetHp)
{
target = nearby;
lowestHpValue = targetHp;
}
} }
} }
} }

View File

@@ -182,25 +182,33 @@ public class L2DefenderInstance extends L2Attackable
if (!skill.isBad()) if (!skill.isBad())
{ {
L2Character target = this; L2Character target = this;
double lowestHpValue = Double.MAX_VALUE;
for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange())) for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange()))
{ {
if (nearby == this) if ((nearby == null) || nearby.isDead())
{ {
continue; continue;
} }
if (nearby instanceof L2DefenderInstance) if (nearby instanceof L2DefenderInstance)
{ {
target = nearby; final double targetHp = nearby.getCurrentHp();
} if (lowestHpValue > targetHp)
if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
final Castle castle = getCastle();
final Fort fortress = getFort();
final int activeSiegeId = (fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0));
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(activeSiegeId))
{ {
target = nearby; target = nearby;
lowestHpValue = targetHp;
}
}
else if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(getScriptValue()))
{
final double targetHp = nearby.getCurrentHp();
if (lowestHpValue > targetHp)
{
target = nearby;
lowestHpValue = targetHp;
}
} }
} }
} }

View File

@@ -182,25 +182,33 @@ public class L2DefenderInstance extends L2Attackable
if (!skill.isBad()) if (!skill.isBad())
{ {
L2Character target = this; L2Character target = this;
double lowestHpValue = Double.MAX_VALUE;
for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange())) for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange()))
{ {
if (nearby == this) if ((nearby == null) || nearby.isDead())
{ {
continue; continue;
} }
if (nearby instanceof L2DefenderInstance) if (nearby instanceof L2DefenderInstance)
{ {
target = nearby; final double targetHp = nearby.getCurrentHp();
} if (lowestHpValue > targetHp)
if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
final Castle castle = getCastle();
final Fort fortress = getFort();
final int activeSiegeId = (fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0));
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(activeSiegeId))
{ {
target = nearby; target = nearby;
lowestHpValue = targetHp;
}
}
else if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(getScriptValue()))
{
final double targetHp = nearby.getCurrentHp();
if (lowestHpValue > targetHp)
{
target = nearby;
lowestHpValue = targetHp;
}
} }
} }
} }

View File

@@ -182,25 +182,33 @@ public class L2DefenderInstance extends L2Attackable
if (!skill.isBad()) if (!skill.isBad())
{ {
L2Character target = this; L2Character target = this;
double lowestHpValue = Double.MAX_VALUE;
for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange())) for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange()))
{ {
if (nearby == this) if ((nearby == null) || nearby.isDead())
{ {
continue; continue;
} }
if (nearby instanceof L2DefenderInstance) if (nearby instanceof L2DefenderInstance)
{ {
target = nearby; final double targetHp = nearby.getCurrentHp();
} if (lowestHpValue > targetHp)
if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
final Castle castle = getCastle();
final Fort fortress = getFort();
final int activeSiegeId = (fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0));
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(activeSiegeId))
{ {
target = nearby; target = nearby;
lowestHpValue = targetHp;
}
}
else if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(getScriptValue()))
{
final double targetHp = nearby.getCurrentHp();
if (lowestHpValue > targetHp)
{
target = nearby;
lowestHpValue = targetHp;
}
} }
} }
} }

View File

@@ -182,25 +182,33 @@ public class L2DefenderInstance extends L2Attackable
if (!skill.isBad()) if (!skill.isBad())
{ {
L2Character target = this; L2Character target = this;
double lowestHpValue = Double.MAX_VALUE;
for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange())) for (L2Character nearby : L2World.getInstance().getVisibleObjects(this, L2Character.class, skill.getCastRange()))
{ {
if (nearby == this) if ((nearby == null) || nearby.isDead())
{ {
continue; continue;
} }
if (nearby instanceof L2DefenderInstance) if (nearby instanceof L2DefenderInstance)
{ {
target = nearby; final double targetHp = nearby.getCurrentHp();
} if (lowestHpValue > targetHp)
if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
final Castle castle = getCastle();
final Fort fortress = getFort();
final int activeSiegeId = (fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0));
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(activeSiegeId))
{ {
target = nearby; target = nearby;
lowestHpValue = targetHp;
}
}
else if (nearby.isPlayer())
{
final L2PcInstance player = (L2PcInstance) nearby;
if ((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(getScriptValue()))
{
final double targetHp = nearby.getCurrentHp();
if (lowestHpValue > targetHp)
{
target = nearby;
lowestHpValue = targetHp;
}
} }
} }
} }