Improved Wastelands AI.

This commit is contained in:
MobiusDev 2017-09-15 14:59:37 +00:00
parent 74f3eab7e6
commit 0ab1ae825b
3 changed files with 21 additions and 18 deletions

View File

@ -24,6 +24,7 @@ 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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.FriendlyNpcInstance; import com.l2jmobius.gameserver.model.actor.instance.FriendlyNpcInstance;
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType; import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType; import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
@ -128,14 +129,14 @@ public final class Wastelands extends AbstractNpcAI
if (attackId > 0) if (attackId > 0)
{ {
//@formatter:off //@formatter:off
final L2Npc monster = L2World.getInstance().getVisibleObjects(guard, L2Npc.class, 1000) final L2MonsterInstance monster = L2World.getInstance().getVisibleObjects(guard, L2MonsterInstance.class, 1000)
.stream() .stream()
.filter(obj -> (obj.getId() == attackId)) .filter(obj -> (obj.getId() == attackId))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
//@formatter:on //@formatter:on
if (monster != null) if ((monster != null) && !guard.isInCombat())
{ {
guard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack guard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack
monster.reduceCurrentHp(1, guard, null); monster.reduceCurrentHp(1, guard, null);
@ -149,7 +150,7 @@ public final class Wastelands extends AbstractNpcAI
if (guard.getId() == SCHUAZEN) if (guard.getId() == SCHUAZEN)
{ {
//@formatter:off //@formatter:off
final FriendlyNpcInstance decoGuard = (FriendlyNpcInstance) L2World.getInstance().getVisibleObjects(guard, L2Npc.class, 500) final FriendlyNpcInstance decoGuard = L2World.getInstance().getVisibleObjects(guard, FriendlyNpcInstance.class, 500)
.stream() .stream()
.filter(obj -> (obj.getId() == DECO_GUARD2)) .filter(obj -> (obj.getId() == DECO_GUARD2))
.findFirst() .findFirst()
@ -158,7 +159,7 @@ public final class Wastelands extends AbstractNpcAI
if (decoGuard != null) if (decoGuard != null)
{ {
decoGuard.reduceCurrentHp(0, monster, null); // TODO: Find better way for attack decoGuard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack
monster.reduceCurrentHp(1, decoGuard, null); monster.reduceCurrentHp(1, decoGuard, null);
decoGuard.setCanStopAttackByTime(false); decoGuard.setCanStopAttackByTime(false);
decoGuard.setIsInvul(true); decoGuard.setIsInvul(true);
@ -167,7 +168,7 @@ public final class Wastelands extends AbstractNpcAI
} }
else else
{ {
startQuestTimer("START_ATTACK", 250, guard, null); startQuestTimer("START_ATTACK", 5000, guard, null);
} }
} }
break; break;
@ -202,7 +203,7 @@ public final class Wastelands extends AbstractNpcAI
{ {
final int guardId = npc.getId() == REGENERATED_KANILOV ? JOEL : SCHUAZEN; final int guardId = npc.getId() == REGENERATED_KANILOV ? JOEL : SCHUAZEN;
//@formatter:off //@formatter:off
final FriendlyNpcInstance guard = (FriendlyNpcInstance) L2World.getInstance().getVisibleObjects(npc, L2Npc.class, 500) final FriendlyNpcInstance guard = L2World.getInstance().getVisibleObjects(npc, FriendlyNpcInstance.class, 500)
.stream() .stream()
.filter(obj -> (obj.getId() == guardId)) .filter(obj -> (obj.getId() == guardId))
.findFirst() .findFirst()

View File

@ -24,6 +24,7 @@ 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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.FriendlyNpcInstance; import com.l2jmobius.gameserver.model.actor.instance.FriendlyNpcInstance;
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType; import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType; import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
@ -128,14 +129,14 @@ public final class Wastelands extends AbstractNpcAI
if (attackId > 0) if (attackId > 0)
{ {
//@formatter:off //@formatter:off
final L2Npc monster = L2World.getInstance().getVisibleObjects(guard, L2Npc.class, 1000) final L2MonsterInstance monster = L2World.getInstance().getVisibleObjects(guard, L2MonsterInstance.class, 1000)
.stream() .stream()
.filter(obj -> (obj.getId() == attackId)) .filter(obj -> (obj.getId() == attackId))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
//@formatter:on //@formatter:on
if (monster != null) if ((monster != null) && !guard.isInCombat())
{ {
guard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack guard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack
monster.reduceCurrentHp(1, guard, null); monster.reduceCurrentHp(1, guard, null);
@ -149,7 +150,7 @@ public final class Wastelands extends AbstractNpcAI
if (guard.getId() == SCHUAZEN) if (guard.getId() == SCHUAZEN)
{ {
//@formatter:off //@formatter:off
final FriendlyNpcInstance decoGuard = (FriendlyNpcInstance) L2World.getInstance().getVisibleObjects(guard, L2Npc.class, 500) final FriendlyNpcInstance decoGuard = L2World.getInstance().getVisibleObjects(guard, FriendlyNpcInstance.class, 500)
.stream() .stream()
.filter(obj -> (obj.getId() == DECO_GUARD2)) .filter(obj -> (obj.getId() == DECO_GUARD2))
.findFirst() .findFirst()
@ -158,7 +159,7 @@ public final class Wastelands extends AbstractNpcAI
if (decoGuard != null) if (decoGuard != null)
{ {
decoGuard.reduceCurrentHp(0, monster, null); // TODO: Find better way for attack decoGuard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack
monster.reduceCurrentHp(1, decoGuard, null); monster.reduceCurrentHp(1, decoGuard, null);
decoGuard.setCanStopAttackByTime(false); decoGuard.setCanStopAttackByTime(false);
decoGuard.setIsInvul(true); decoGuard.setIsInvul(true);
@ -167,7 +168,7 @@ public final class Wastelands extends AbstractNpcAI
} }
else else
{ {
startQuestTimer("START_ATTACK", 250, guard, null); startQuestTimer("START_ATTACK", 5000, guard, null);
} }
} }
break; break;
@ -202,7 +203,7 @@ public final class Wastelands extends AbstractNpcAI
{ {
final int guardId = npc.getId() == REGENERATED_KANILOV ? JOEL : SCHUAZEN; final int guardId = npc.getId() == REGENERATED_KANILOV ? JOEL : SCHUAZEN;
//@formatter:off //@formatter:off
final FriendlyNpcInstance guard = (FriendlyNpcInstance) L2World.getInstance().getVisibleObjects(npc, L2Npc.class, 500) final FriendlyNpcInstance guard = L2World.getInstance().getVisibleObjects(npc, FriendlyNpcInstance.class, 500)
.stream() .stream()
.filter(obj -> (obj.getId() == guardId)) .filter(obj -> (obj.getId() == guardId))
.findFirst() .findFirst()

View File

@ -24,6 +24,7 @@ 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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.FriendlyNpcInstance; import com.l2jmobius.gameserver.model.actor.instance.FriendlyNpcInstance;
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType; import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType; import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
@ -128,14 +129,14 @@ public final class Wastelands extends AbstractNpcAI
if (attackId > 0) if (attackId > 0)
{ {
//@formatter:off //@formatter:off
final L2Npc monster = L2World.getInstance().getVisibleObjects(guard, L2Npc.class, 1000) final L2MonsterInstance monster = L2World.getInstance().getVisibleObjects(guard, L2MonsterInstance.class, 1000)
.stream() .stream()
.filter(obj -> (obj.getId() == attackId)) .filter(obj -> (obj.getId() == attackId))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
//@formatter:on //@formatter:on
if (monster != null) if ((monster != null) && !guard.isInCombat())
{ {
guard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack guard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack
monster.reduceCurrentHp(1, guard, null); monster.reduceCurrentHp(1, guard, null);
@ -149,7 +150,7 @@ public final class Wastelands extends AbstractNpcAI
if (guard.getId() == SCHUAZEN) if (guard.getId() == SCHUAZEN)
{ {
//@formatter:off //@formatter:off
final FriendlyNpcInstance decoGuard = (FriendlyNpcInstance) L2World.getInstance().getVisibleObjects(guard, L2Npc.class, 500) final FriendlyNpcInstance decoGuard = L2World.getInstance().getVisibleObjects(guard, FriendlyNpcInstance.class, 500)
.stream() .stream()
.filter(obj -> (obj.getId() == DECO_GUARD2)) .filter(obj -> (obj.getId() == DECO_GUARD2))
.findFirst() .findFirst()
@ -158,7 +159,7 @@ public final class Wastelands extends AbstractNpcAI
if (decoGuard != null) if (decoGuard != null)
{ {
decoGuard.reduceCurrentHp(0, monster, null); // TODO: Find better way for attack decoGuard.reduceCurrentHp(1, monster, null); // TODO: Find better way for attack
monster.reduceCurrentHp(1, decoGuard, null); monster.reduceCurrentHp(1, decoGuard, null);
decoGuard.setCanStopAttackByTime(false); decoGuard.setCanStopAttackByTime(false);
decoGuard.setIsInvul(true); decoGuard.setIsInvul(true);
@ -167,7 +168,7 @@ public final class Wastelands extends AbstractNpcAI
} }
else else
{ {
startQuestTimer("START_ATTACK", 250, guard, null); startQuestTimer("START_ATTACK", 5000, guard, null);
} }
} }
break; break;
@ -202,7 +203,7 @@ public final class Wastelands extends AbstractNpcAI
{ {
final int guardId = npc.getId() == REGENERATED_KANILOV ? JOEL : SCHUAZEN; final int guardId = npc.getId() == REGENERATED_KANILOV ? JOEL : SCHUAZEN;
//@formatter:off //@formatter:off
final FriendlyNpcInstance guard = (FriendlyNpcInstance) L2World.getInstance().getVisibleObjects(npc, L2Npc.class, 500) final FriendlyNpcInstance guard = L2World.getInstance().getVisibleObjects(npc, FriendlyNpcInstance.class, 500)
.stream() .stream()
.filter(obj -> (obj.getId() == guardId)) .filter(obj -> (obj.getId() == guardId))
.findFirst() .findFirst()