Support for randomWalk and randomAnimation NPC template parameters.

This commit is contained in:
MobiusDev 2018-06-02 00:37:30 +00:00
parent 24bea65710
commit 194a0518bc
34 changed files with 126 additions and 106 deletions

View File

@ -128,7 +128,7 @@ public final class LairOfAntharas extends AbstractNpcAI
mob.setOnKillDelay(0); mob.setOnKillDelay(0);
if ((npc.getId() == DRAGON_GUARD) || (npc.getId() == DRAGON_MAGE)) if ((npc.getId() == DRAGON_GUARD) || (npc.getId() == DRAGON_MAGE))
{ {
mob.setIsNoRndWalk(true); mob.setRandomWalking(false);
startQuestTimer("CHECK_HOME", 10000, npc, null, true); startQuestTimer("CHECK_HOME", 10000, npc, null, true);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@ -232,7 +232,7 @@ public class TarBeetleSpawn implements IGameXmlReader
spawn.setZ(GeoEngine.getInstance().getHeight(location.getX(), location.getY(), location.getZ())); spawn.setZ(GeoEngine.getInstance().getHeight(location.getX(), location.getY(), location.getZ()));
final L2Npc npc = spawn.doSpawn(); final L2Npc npc = spawn.doSpawn();
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
npc.setIsImmobilized(true); npc.setIsImmobilized(true);
npc.setIsInvul(true); npc.setIsInvul(true);
npc.disableCoreAI(true); npc.disableCoreAI(true);

View File

@ -81,7 +81,7 @@ public final class ZealotOfShilen extends AbstractNpcAI
{ {
if (npc.getId() == ZEALOT) if (npc.getId() == ZEALOT)
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
} }
else else
{ {

View File

@ -508,7 +508,7 @@ public class HallOfErosionAttack extends AbstractNpcAI
{ {
if (CommonUtil.contains(NOTMOVE, npc.getId())) if (CommonUtil.contains(NOTMOVE, npc.getId()))
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
npc.setIsImmobilized(true); npc.setIsImmobilized(true);
} }

View File

@ -499,7 +499,7 @@ public class HallOfErosionDefence extends AbstractNpcAI
{ {
if (CommonUtil.contains(NOTMOVE, npc.getId())) if (CommonUtil.contains(NOTMOVE, npc.getId()))
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
npc.setIsImmobilized(true); npc.setIsImmobilized(true);
} }

View File

@ -552,13 +552,13 @@ public class HeartInfinityAttack extends AbstractNpcAI
{ {
if (CommonUtil.contains(NOTMOVE, npc.getId())) if (CommonUtil.contains(NOTMOVE, npc.getId()))
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
npc.setIsImmobilized(true); npc.setIsImmobilized(true);
} }
if (npc.getId() == HOUND) if (npc.getId() == HOUND)
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
npc.setIsImmobilized(true); npc.setIsImmobilized(true);
} }

View File

@ -557,7 +557,7 @@ public class HeartInfinityDefence extends AbstractNpcAI
{ {
if (CommonUtil.contains(NOTMOVE, npc.getId())) if (CommonUtil.contains(NOTMOVE, npc.getId()))
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
npc.setIsImmobilized(true); npc.setIsImmobilized(true);
} }

View File

@ -1141,7 +1141,7 @@ public class SeedOfDestruction extends AbstractNpcAI
world.npcList.put(npc, false); world.npcList.put(npc, false);
} }
npc.setIsImmobilized(TIAT == mob[0] ? true : isImmobilized); npc.setIsImmobilized(TIAT == mob[0] ? true : isImmobilized);
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
if (npc.isAttackable()) if (npc.isAttackable())
{ {
((L2Attackable) npc).setSeeThroughSilentMove(true); ((L2Attackable) npc).setSeeThroughSilentMove(true);
@ -1200,27 +1200,27 @@ public class SeedOfDestruction extends AbstractNpcAI
protected void runThrone(SODWorld world) protected void runThrone(SODWorld world)
{ {
world._portalForCamera = addSpawn(SPAWN_DEVICE, -248781, 206325, -11966, 0, false, 0, false, world.getInstanceId()); world._portalForCamera = addSpawn(SPAWN_DEVICE, -248781, 206325, -11966, 0, false, 0, false, world.getInstanceId());
world._portalForCamera.setIsNoRndWalk(true); world._portalForCamera.setRandomWalking(false);
for (int i = 0; i < 12; i++) for (int i = 0; i < 12; i++)
{ {
final L2Npc npc1 = addSpawn(22543, ONETR[i][0], ONETR[i][1], ONETR[i][2], 16285, false, 0, false, world.getInstanceId()); final L2Npc npc1 = addSpawn(22543, ONETR[i][0], ONETR[i][1], ONETR[i][2], 16285, false, 0, false, world.getInstanceId());
npc1.setIsNoRndWalk(true); npc1.setRandomWalking(false);
world._mags.add(npc1); world._mags.add(npc1);
final L2Npc npc2 = addSpawn(22541, TWOTR[i][0], TWOTR[i][1], TWOTR[i][2], 16285, false, 0, false, world.getInstanceId()); final L2Npc npc2 = addSpawn(22541, TWOTR[i][0], TWOTR[i][1], TWOTR[i][2], 16285, false, 0, false, world.getInstanceId());
npc2.setIsNoRndWalk(true); npc2.setRandomWalking(false);
} }
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ {
final L2Npc npc3 = addSpawn(FRETR[i][0], FRETR[i][1], FRETR[i][2], FRETR[i][3], 16285, false, 0, false, world.getInstanceId()); final L2Npc npc3 = addSpawn(FRETR[i][0], FRETR[i][1], FRETR[i][2], FRETR[i][3], 16285, false, 0, false, world.getInstanceId());
npc3.setIsNoRndWalk(true); npc3.setRandomWalking(false);
final L2Npc npc4 = addSpawn(22536, FORTR[i][0], FORTR[i][1], FORTR[i][2], 16285, false, 0, false, world.getInstanceId()); final L2Npc npc4 = addSpawn(22536, FORTR[i][0], FORTR[i][1], FORTR[i][2], 16285, false, 0, false, world.getInstanceId());
npc4.setIsNoRndWalk(true); npc4.setRandomWalking(false);
final L2Npc npc5 = addSpawn(22537, FIVETR[i][0], FIVETR[i][1], FIVETR[i][2], 16285, false, 0, false, world.getInstanceId()); final L2Npc npc5 = addSpawn(22537, FIVETR[i][0], FIVETR[i][1], FIVETR[i][2], 16285, false, 0, false, world.getInstanceId());
npc5.setIsNoRndWalk(true); npc5.setRandomWalking(false);
} }
if (world.naezds.size() < 1) if (world.naezds.size() < 1)
@ -1228,15 +1228,15 @@ public class SeedOfDestruction extends AbstractNpcAI
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
{ {
final L2Npc npc = addSpawn(NAEZD, NAEZDSPAWNS[i][0], NAEZDSPAWNS[i][1], NAEZDSPAWNS[i][2], NAEZDSPAWNS[i][3], false, 0, false, world.getInstanceId()); final L2Npc npc = addSpawn(NAEZD, NAEZDSPAWNS[i][0], NAEZDSPAWNS[i][1], NAEZDSPAWNS[i][2], NAEZDSPAWNS[i][3], false, 0, false, world.getInstanceId());
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
world.naezds.add(npc); world.naezds.add(npc);
} }
} }
world._MovePeltast = addSpawn(PELTAST, -250403, 207556, -11957, 16383, false, 0, false, world.getInstanceId()); world._MovePeltast = addSpawn(PELTAST, -250403, 207556, -11957, 16383, false, 0, false, world.getInstanceId());
world._MovePeltast.setIsNoRndWalk(true); world._MovePeltast.setRandomWalking(false);
world._priest = addSpawn(PRIEST, -250408, 205862, -11727, 16383, false, 0, false, world.getInstanceId()); world._priest = addSpawn(PRIEST, -250408, 205862, -11727, 16383, false, 0, false, world.getInstanceId());
world._priest.setIsNoRndWalk(true); world._priest.setRandomWalking(false);
} }
@Override @Override
@ -1362,7 +1362,7 @@ public class SeedOfDestruction extends AbstractNpcAI
else if (event.equals("Part10")) else if (event.equals("Part10"))
{ {
world._ChangePortal = addSpawn(ChangePortal, -250402, 206519, -11905, 0, false, 0, false, world.getInstanceId()); world._ChangePortal = addSpawn(ChangePortal, -250402, 206519, -11905, 0, false, 0, false, world.getInstanceId());
world._ChangePortal.setIsNoRndWalk(true); world._ChangePortal.setRandomWalking(false);
world._priest.doCast(SkillData.getInstance().getSkill(5816, 1)); world._priest.doCast(SkillData.getInstance().getSkill(5816, 1));
startQuestTimer("Part11", 300, world._priest, null); startQuestTimer("Part11", 300, world._priest, null);
startQuestTimer("PartUnnamed", 50, world._priest, null); startQuestTimer("PartUnnamed", 50, world._priest, null);
@ -1380,16 +1380,16 @@ public class SeedOfDestruction extends AbstractNpcAI
{ {
cancelQuestTimers("PartUnnamed"); cancelQuestTimers("PartUnnamed");
world._tiat = addSpawn(TIAT, -250400, 207271, -11961, 16285, false, 0, false, world.getInstanceId()); world._tiat = addSpawn(TIAT, -250400, 207271, -11961, 16285, false, 0, false, world.getInstanceId());
world._tiat.setIsNoRndWalk(true); world._tiat.setRandomWalking(false);
world._tiat.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); world._tiat.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
world._naezdTR1 = addSpawn(NAEZD, -250154, 207203, -11970, 33818, false, 0, false, world.getInstanceId()); world._naezdTR1 = addSpawn(NAEZD, -250154, 207203, -11970, 33818, false, 0, false, world.getInstanceId());
world._naezdTR1.setIsNoRndWalk(true); world._naezdTR1.setRandomWalking(false);
world._naezdTR2 = addSpawn(NAEZD, -250209, 206941, -11966, 27379, false, 0, false, world.getInstanceId()); world._naezdTR2 = addSpawn(NAEZD, -250209, 206941, -11966, 27379, false, 0, false, world.getInstanceId());
world._naezdTR2.setIsNoRndWalk(true); world._naezdTR2.setRandomWalking(false);
world._naezdTL1 = addSpawn(NAEZD, -250652, 207203, -11970, 0, false, 0, false, world.getInstanceId()); world._naezdTL1 = addSpawn(NAEZD, -250652, 207203, -11970, 0, false, 0, false, world.getInstanceId());
world._naezdTL1.setIsNoRndWalk(true); world._naezdTL1.setRandomWalking(false);
world._naezdTL2 = addSpawn(NAEZD, -250597, 206941, -11966, 6867, false, 0, false, world.getInstanceId()); world._naezdTL2 = addSpawn(NAEZD, -250597, 206941, -11966, 6867, false, 0, false, world.getInstanceId());
world._naezdTL2.setIsNoRndWalk(true); world._naezdTL2.setRandomWalking(false);
broadcastPacket((new SpecialCamera(world._tiat, 400, 90, 5, 1500, 10000, 13000, 0, 0, 1, 0, 0)), world); broadcastPacket((new SpecialCamera(world._tiat, 400, 90, 5, 1500, 10000, 13000, 0, 0, 1, 0, 0)), world);
startQuestTimer("Part12", 100, world._tiat, null); startQuestTimer("Part12", 100, world._tiat, null);
} }
@ -1591,7 +1591,7 @@ public class SeedOfDestruction extends AbstractNpcAI
{ {
world.naezds.remove(npc); world.naezds.remove(npc);
final L2Attackable mob = (L2Attackable) addSpawn(npc.getId(), npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ(), npc.getSpawn().getHeading(), false, 0, false, world.getInstanceId()); final L2Attackable mob = (L2Attackable) addSpawn(npc.getId(), npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ(), npc.getSpawn().getHeading(), false, 0, false, world.getInstanceId());
mob.setIsNoRndWalk(true); mob.setRandomWalking(false);
mob.setSeeThroughSilentMove(true); mob.setSeeThroughSilentMove(true);
mob.setIsRaidMinion(true); mob.setIsRaidMinion(true);
world.naezds.add(mob); world.naezds.add(mob);

View File

@ -65,7 +65,7 @@ public final class HellboundCore extends AbstractNpcAI
{ {
if (npc.getId() == NAIA) if (npc.getId() == NAIA)
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
} }
else else
{ {

View File

@ -63,7 +63,7 @@ public final class OutpostCaptain extends AbstractNpcAI
@Override @Override
public final String onSpawn(L2Npc npc) public final String onSpawn(L2Npc npc)
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
if (npc.getId() == CAPTAIN) if (npc.getId() == CAPTAIN)
{ {

View File

@ -206,7 +206,7 @@ public final class AnomicFoundry extends AbstractNpcAI
if (npc.getId() == LABORER) if (npc.getId() == LABORER)
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
} }
return super.onSpawn(npc); return super.onSpawn(npc);
} }

View File

@ -834,7 +834,7 @@ public final class TowerOfNaia extends AbstractNpcAI
time = (int) ((distance / npc.getWalkSpeed()) * 1000); time = (int) ((distance / npc.getWalkSpeed()) * 1000);
npc.setWalking(); npc.setWalking();
npc.disableCoreAI(true); npc.disableCoreAI(true);
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(coords[0], coords[1], coords[2], heading)); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(coords[0], coords[1], coords[2], heading));
npc.getSpawn().setX(coords[0]); npc.getSpawn().setX(coords[0]);
npc.getSpawn().setY(coords[1]); npc.getSpawn().setY(coords[1]);

View File

@ -64,7 +64,7 @@ public final class EvasGiftBox extends AbstractNpcAI
@Override @Override
public String onSpawn(L2Npc npc) public String onSpawn(L2Npc npc)
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
((L2Attackable) npc).setOnKillDelay(0); ((L2Attackable) npc).setOnKillDelay(0);
return super.onSpawn(npc); return super.onSpawn(npc);
} }

View File

@ -141,7 +141,7 @@ public final class SelMahumSquad extends AbstractNpcAI
npc.setWalking(); npc.setWalking();
npc.setTarget(npc); npc.setTarget(npc);
if (npc.isNoRndWalk()) if (!npc.isRandomWalkingEnabled())
{ {
npc.doCast(SkillData.getInstance().getSkill(6331, 1)); npc.doCast(SkillData.getInstance().getSkill(6331, 1));
npc.setDisplayEffect(MAHUM_EFFECT_SLEEP); npc.setDisplayEffect(MAHUM_EFFECT_SLEEP);
@ -232,9 +232,9 @@ public final class SelMahumSquad extends AbstractNpcAI
} }
case "SCE_CAMPFIRE_START": case "SCE_CAMPFIRE_START":
{ {
if (!receiver.isNoRndWalk() && !receiver.isDead() && (receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId())) if (receiver.isRandomWalkingEnabled() && !receiver.isDead() && (receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId()))
{ {
receiver.setIsNoRndWalk(true); // Moving to fire - i_ai0 = 1 receiver.setRandomWalking(false); // Moving to fire - i_ai0 = 1
receiver.setRunning(); receiver.setRunning();
final Location loc = sender.getPointInRange(100, 200); final Location loc = sender.getPointInRange(100, 200);
loc.setHeading(receiver.getHeading()); loc.setHeading(receiver.getHeading());
@ -253,7 +253,7 @@ public final class SelMahumSquad extends AbstractNpcAI
} }
else if ((receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId())) else if ((receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId()))
{ {
receiver.setIsNoRndWalk(false); receiver.setRandomWalking(true);
receiver.getVariables().remove("BUSY_STATE"); receiver.getVariables().remove("BUSY_STATE");
receiver.setRHandId(THS_Weapon); receiver.setRHandId(THS_Weapon);
startQuestTimer("return_from_fire", 3000, receiver, null); startQuestTimer("return_from_fire", 3000, receiver, null);
@ -264,11 +264,11 @@ public final class SelMahumSquad extends AbstractNpcAI
{ {
if (!receiver.isDead() && (receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && (receiver.getVariables().getInt("BUSY_STATE", 0) == 0) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId())) if (!receiver.isDead() && (receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && (receiver.getVariables().getInt("BUSY_STATE", 0) == 0) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId()))
{ {
if (receiver.isNoRndWalk()) // i_ai0 == 1 if (!receiver.isRandomWalkingEnabled()) // i_ai0 == 1
{ {
receiver.setRHandId(THS_Weapon); receiver.setRHandId(THS_Weapon);
} }
receiver.setIsNoRndWalk(true); // Moving to fire - i_ai0 = 1 receiver.setRandomWalking(false); // Moving to fire - i_ai0 = 1
receiver.getVariables().set("BUSY_STATE", 1); // Eating - i_ai3 = 1 receiver.getVariables().set("BUSY_STATE", 1); // Eating - i_ai3 = 1
receiver.setRunning(); receiver.setRunning();
receiver.broadcastSay(ChatType.NPC_GENERAL, (getRandom(3) < 1) ? NpcStringId.LOOKS_DELICIOUS : NpcStringId.LET_S_GO_EAT); receiver.broadcastSay(ChatType.NPC_GENERAL, (getRandom(3) < 1) ? NpcStringId.LOOKS_DELICIOUS : NpcStringId.LET_S_GO_EAT);
@ -312,7 +312,7 @@ public final class SelMahumSquad extends AbstractNpcAI
public void onMoveFinished(L2Npc npc) public void onMoveFinished(L2Npc npc)
{ {
// NPC moves to fire // NPC moves to fire
if (npc.isNoRndWalk() && (npc.getX() == npc.getVariables().getInt("DESTINATION_X")) && (npc.getY() == npc.getVariables().getInt("DESTINATION_Y"))) if (!npc.isRandomWalkingEnabled() && (npc.getX() == npc.getVariables().getInt("DESTINATION_X")) && (npc.getY() == npc.getVariables().getInt("DESTINATION_Y")))
{ {
npc.setRHandId(OHS_Weapon); npc.setRHandId(OHS_Weapon);
startQuestTimer("fire_arrived", 3000, npc, null); startQuestTimer("fire_arrived", 3000, npc, null);
@ -350,7 +350,7 @@ public final class SelMahumSquad extends AbstractNpcAI
else if (CommonUtil.contains(SQUAD_LEADERS, npc.getId())) else if (CommonUtil.contains(SQUAD_LEADERS, npc.getId()))
{ {
npc.setDisplayEffect(3); npc.setDisplayEffect(3);
npc.setIsNoRndWalk(false); npc.setRandomWalking(true);
} }
return super.onSpawn(npc); return super.onSpawn(npc);
} }
@ -385,7 +385,7 @@ public final class SelMahumSquad extends AbstractNpcAI
{ {
cancelQuestTimer("remove_effects", attacked, null); cancelQuestTimer("remove_effects", attacked, null);
attacked.getVariables().remove("BUSY_STATE"); attacked.getVariables().remove("BUSY_STATE");
attacked.setIsNoRndWalk(false); attacked.setRandomWalking(true);
attacked.setDisplayEffect(MAHUM_EFFECT_NONE); attacked.setDisplayEffect(MAHUM_EFFECT_NONE);
if (attacked.getRightHandItem() == OHS_Weapon) if (attacked.getRightHandItem() == OHS_Weapon)
{ {

View File

@ -75,7 +75,7 @@ public class FairyTrees extends AbstractNpcAI
@Override @Override
public String onSpawn(L2Npc npc) public String onSpawn(L2Npc npc)
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
npc.setIsImmobilized(true); npc.setIsImmobilized(true);
return super.onSpawn(npc); return super.onSpawn(npc);
} }

View File

@ -144,7 +144,7 @@ public final class PrisonGuards extends AbstractNpcAI
} }
else else
{ {
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
cancelQuestTimer("CHECK_HOME", npc, null); cancelQuestTimer("CHECK_HOME", npc, null);
startQuestTimer("CHECK_HOME", 30000, npc, null); startQuestTimer("CHECK_HOME", 30000, npc, null);
} }

View File

@ -304,7 +304,7 @@ public final class DarkCloudMansion extends AbstractInstance
StartRoom.npcList.add(thisnpc); StartRoom.npcList.add(thisnpc);
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
thisnpc = new DMCNpc(); thisnpc = new DMCNpc();
@ -312,7 +312,7 @@ public final class DarkCloudMansion extends AbstractInstance
StartRoom.npcList.add(thisnpc); StartRoom.npcList.add(thisnpc);
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
world.setParameter("StartRoom", StartRoom); world.setParameter("StartRoom", StartRoom);
} }
@ -327,7 +327,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[1], 147217, 180112, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 147217, 180112, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
Hall.npcList.add(thisnpc); Hall.npcList.add(thisnpc);
@ -335,7 +335,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[2], 147217, 180209, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[2], 147217, 180209, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
Hall.npcList.add(thisnpc); Hall.npcList.add(thisnpc);
@ -343,7 +343,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[1], 148521, 180112, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 148521, 180112, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
Hall.npcList.add(thisnpc); Hall.npcList.add(thisnpc);
@ -351,7 +351,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[0], 148521, 180209, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[0], 148521, 180209, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
Hall.npcList.add(thisnpc); Hall.npcList.add(thisnpc);
@ -359,7 +359,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[1], 148525, 180910, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 148525, 180910, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
Hall.npcList.add(thisnpc); Hall.npcList.add(thisnpc);
@ -367,7 +367,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[2], 148435, 180910, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[2], 148435, 180910, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
Hall.npcList.add(thisnpc); Hall.npcList.add(thisnpc);
@ -375,7 +375,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[1], 147242, 180910, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 147242, 180910, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
Hall.npcList.add(thisnpc); Hall.npcList.add(thisnpc);
@ -383,7 +383,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[2], 147242, 180819, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[2], 147242, 180819, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
Hall.npcList.add(thisnpc); Hall.npcList.add(thisnpc);
@ -406,7 +406,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(HG[1], 147842, 179837, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(HG[1], 147842, 179837, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
FirstRoom.npcList.add(thisnpc); FirstRoom.npcList.add(thisnpc);
@ -414,7 +414,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(HG[0], 147711, 179708, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(HG[0], 147711, 179708, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
FirstRoom.npcList.add(thisnpc); FirstRoom.npcList.add(thisnpc);
@ -422,7 +422,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(HG[1], 147842, 179552, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(HG[1], 147842, 179552, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
FirstRoom.npcList.add(thisnpc); FirstRoom.npcList.add(thisnpc);
@ -430,7 +430,7 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(HG[0], 147964, 179708, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(HG[0], 147964, 179708, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
FirstRoom.npcList.add(thisnpc); FirstRoom.npcList.add(thisnpc);
@ -511,37 +511,37 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[1], 148765, 180450, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 148765, 180450, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[2], 148865, 180190, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[2], 148865, 180190, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[1], 148995, 180190, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 148995, 180190, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[0], 149090, 180450, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[0], 149090, 180450, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[1], 148995, 180705, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 148995, 180705, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[2], 148865, 180705, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[2], 148865, 180705, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
world.setParameter("ThirdRoom", ThirdRoom); world.setParameter("ThirdRoom", ThirdRoom);
@ -558,37 +558,37 @@ public final class DarkCloudMansion extends AbstractInstance
thisnpc.npc = addSpawn(BM[1], 148765, 180450, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 148765, 180450, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[2], 148865, 180190, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[2], 148865, 180190, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[1], 148995, 180190, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 148995, 180190, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[0], 149090, 180450, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[0], 149090, 180450, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[1], 148995, 180705, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[1], 148995, 180705, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[2], 148865, 180705, -6117, 0, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BM[2], 148865, 180705, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
} }
ThirdRoom.npcList.add(thisnpc); ThirdRoom.npcList.add(thisnpc);
world.setParameter("ThirdRoom2", ThirdRoom); world.setParameter("ThirdRoom2", ThirdRoom);
@ -665,7 +665,7 @@ public final class DarkCloudMansion extends AbstractInstance
{ {
thisnpc = new DMCNpc(); thisnpc = new DMCNpc();
thisnpc.npc = addSpawn(BS[idx], x, 182145, -6117, 48810, false, 0, false, world.getInstanceId()); thisnpc.npc = addSpawn(BS[idx], x, 182145, -6117, 48810, false, 0, false, world.getInstanceId());
thisnpc.npc.setIsNoRndWalk(true); thisnpc.npc.setRandomWalking(false);
thisnpc.order = idx; thisnpc.order = idx;
thisnpc.status = temp[idx]; thisnpc.status = temp[idx];
thisnpc.count = 0; thisnpc.count = 0;
@ -717,7 +717,7 @@ public final class DarkCloudMansion extends AbstractInstance
npc.golem = addSpawn(mobId, x, y, -6117, 0, false, 0, false, world.getInstanceId()); npc.golem = addSpawn(mobId, x, y, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk) if (noRndWalk)
{ {
npc.golem.setIsNoRndWalk(true); npc.golem.setRandomWalking(false);
} }
} }

View File

@ -681,7 +681,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IGameXm
npcList.add(npc); npcList.add(npc);
world.setParameter("npcList", npcList); world.setParameter("npcList", npcList);
} }
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
if (npc.isInstanceTypes(InstanceType.L2Attackable)) if (npc.isInstanceTypes(InstanceType.L2Attackable))
{ {
((L2Attackable) npc).setSeeThroughSilentMove(true); ((L2Attackable) npc).setSeeThroughSilentMove(true);

View File

@ -684,7 +684,7 @@ public final class Kamaloka extends AbstractInstance
spawn.startRespawn(); spawn.startRespawn();
world.firstRoom.add(spawn); // store mobs spawns world.firstRoom.add(spawn); // store mobs spawns
} }
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
} }
} }
@ -698,7 +698,7 @@ public final class Kamaloka extends AbstractInstance
for (int[] spawn : spawns) for (int[] spawn : spawns)
{ {
npc = addSpawn(npcs[0], spawn[0], spawn[1], spawn[2], 0, false, 0, false, world.getInstanceId()); npc = addSpawn(npcs[0], spawn[0], spawn[1], spawn[2], 0, false, 0, false, world.getInstanceId());
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
world.secondRoom.add(npc.getObjectId()); world.secondRoom.add(npc.getObjectId());
} }
} }
@ -707,7 +707,7 @@ public final class Kamaloka extends AbstractInstance
if (MINIBOSS[index] != null) if (MINIBOSS[index] != null)
{ {
npc = addSpawn(MINIBOSS[index][0], MINIBOSS[index][1], MINIBOSS[index][2], MINIBOSS[index][3], 0, false, 0, false, world.getInstanceId()); npc = addSpawn(MINIBOSS[index][0], MINIBOSS[index][1], MINIBOSS[index][2], MINIBOSS[index][3], 0, false, 0, false, world.getInstanceId());
npc.setIsNoRndWalk(true); npc.setRandomWalking(false);
world.miniBoss = npc.getObjectId(); world.miniBoss = npc.getObjectId();
} }

View File

@ -171,7 +171,7 @@ public final class Q00501_ProofOfClanAlliance extends Quest
{ {
final L2Npc box = addSpawn(npc, getRandom(BOX_OF_ATHREA_1, BOX_OF_ATHREA_5), loc, false, 300000); final L2Npc box = addSpawn(npc, getRandom(BOX_OF_ATHREA_1, BOX_OF_ATHREA_5), loc, false, 300000);
box.disableCoreAI(true); box.disableCoreAI(true);
box.setIsNoRndWalk(true); box.setRandomWalking(false);
} }
htmltext = event; htmltext = event;
} }

View File

@ -279,6 +279,8 @@
<xs:attribute name="targetable" type="xs:boolean" /> <xs:attribute name="targetable" type="xs:boolean" />
<xs:attribute name="undying" type="xs:boolean" /> <xs:attribute name="undying" type="xs:boolean" />
<xs:attribute name="showName" type="xs:boolean" /> <xs:attribute name="showName" type="xs:boolean" />
<xs:attribute name="randomWalk" type="xs:boolean" />
<xs:attribute name="randomAnimation" type="xs:boolean" />
<xs:attribute name="flying" type="xs:boolean" /> <xs:attribute name="flying" type="xs:boolean" />
<xs:attribute name="canMove" type="xs:boolean" /> <xs:attribute name="canMove" type="xs:boolean" />
<xs:attribute name="noSleepMode" type="xs:boolean" /> <xs:attribute name="noSleepMode" type="xs:boolean" />

View File

@ -706,7 +706,7 @@ public class L2AttackableAI extends L2CharacterAI
} }
} }
// Order to the L2MonsterInstance to random walk (1/100) // Order to the L2MonsterInstance to random walk (1/100)
else if ((npc.getSpawn() != null) && (Rnd.nextInt(RANDOM_WALK_RATE) == 0) && !npc.isNoRndWalk()) else if ((npc.getSpawn() != null) && (Rnd.nextInt(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{ {
int x1 = 0; int x1 = 0;
int y1 = 0; int y1 = 0;

View File

@ -328,6 +328,8 @@ public class NpcData implements IGameXmlReader
set.set("talkable", parseBoolean(attrs, "talkable")); set.set("talkable", parseBoolean(attrs, "talkable"));
set.set("undying", parseBoolean(attrs, "undying")); set.set("undying", parseBoolean(attrs, "undying"));
set.set("showName", parseBoolean(attrs, "showName")); set.set("showName", parseBoolean(attrs, "showName"));
set.set("randomWalk", parseBoolean(attrs, "randomWalk"));
set.set("randomAnimation", parseBoolean(attrs, "randomAnimation"));
set.set("flying", parseBoolean(attrs, "flying")); set.set("flying", parseBoolean(attrs, "flying"));
set.set("canMove", parseBoolean(attrs, "canMove")); set.set("canMove", parseBoolean(attrs, "canMove"));
set.set("noSleepMode", parseBoolean(attrs, "noSleepMode")); set.set("noSleepMode", parseBoolean(attrs, "noSleepMode"));

View File

@ -105,8 +105,8 @@ public class NpcPersonalAIData
} }
case "disableRandomWalk": case "disableRandomWalk":
{ {
npc.setIsNoRndWalk((map.get(key) == 1)); npc.setRandomWalking((map.get(key) == 0));
spawn.setIsNoRndWalk((map.get(key) == 1)); spawn.setRandomWalking((map.get(key) == 0));
break; break;
} }
} }

View File

@ -78,7 +78,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
private boolean _doRespawn = true; private boolean _doRespawn = true;
private static List<SpawnListener> _spawnListeners = new CopyOnWriteArrayList<>(); private static List<SpawnListener> _spawnListeners = new CopyOnWriteArrayList<>();
private final Deque<L2Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>(); private final Deque<L2Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>();
private boolean _isNoRndWalk = false; // Is no random walk private boolean _randomWalk = false; // Is random walk
private int _spawnTemplateId = 0; private int _spawnTemplateId = 0;
/** The task launching the function doSpawn() */ /** The task launching the function doSpawn() */
@ -479,12 +479,6 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
npc.setShowSummonAnimation(isSummonSpawn); npc.setShowSummonAnimation(isSummonSpawn);
} }
// Check for certain AI data, overriden in spawnlist
if (_name != null)
{
NpcPersonalAIData.getInstance().initializeNpcParameters(npc, this, _name);
}
return initializeNpcInstance(npc); return initializeNpcInstance(npc);
} }
catch (Exception e) catch (Exception e)
@ -553,7 +547,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
npc.getVariables().getSet().clear(); npc.getVariables().getSet().clear();
} }
// Set is not random walk default value // Set is not random walk default value
npc.setIsNoRndWalk(isNoRndWalk()); npc.setRandomWalking(getRandomWalking());
// Set the heading of the L2NpcInstance (random heading if not defined) // Set the heading of the L2NpcInstance (random heading if not defined)
if (getHeading() == -1) if (getHeading() == -1)
@ -594,6 +588,12 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
notifyNpcSpawned(npc); notifyNpcSpawned(npc);
// Check for overriden by spawnlist AIData
if (_name != null)
{
NpcPersonalAIData.getInstance().initializeNpcParameters(npc, this, _name);
}
_spawnedNpcs.add(npc); _spawnedNpcs.add(npc);
// Increase the current number of L2NpcInstance managed by this L2Spawn // Increase the current number of L2NpcInstance managed by this L2Spawn
@ -710,14 +710,14 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
_location.setInstanceId(instanceId); _location.setInstanceId(instanceId);
} }
public final boolean isNoRndWalk() public final boolean getRandomWalking()
{ {
return _isNoRndWalk; return _randomWalk;
} }
public final void setIsNoRndWalk(boolean value) public final void setRandomWalking(boolean value)
{ {
_isNoRndWalk = value; _randomWalk = value;
} }
public void setSpawnTemplateId(int npcSpawnTemplateId) public void setSpawnTemplateId(int npcSpawnTemplateId)

View File

@ -192,7 +192,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
private boolean _isParalyzed = false; private boolean _isParalyzed = false;
private boolean _isPendingRevive = false; private boolean _isPendingRevive = false;
private boolean _isRunning = false; private boolean _isRunning = false;
private boolean _isNoRndWalk = false; // Is no random walk
protected boolean _showSummonAnimation = false; protected boolean _showSummonAnimation = false;
protected boolean _isTeleporting = false; protected boolean _isTeleporting = false;
private boolean _isInvul = false; private boolean _isInvul = false;
@ -2634,16 +2633,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
_lastSkillCast = skill; _lastSkillCast = skill;
} }
public final boolean isNoRndWalk()
{
return _isNoRndWalk;
}
public final void setIsNoRndWalk(boolean value)
{
_isNoRndWalk = value;
}
public final boolean isAfraid() public final boolean isAfraid()
{ {
return isAffected(EffectFlag.FEAR); return isAffected(EffectFlag.FEAR);

View File

@ -134,6 +134,7 @@ public class L2Npc extends L2Character
private static final int MINIMUM_SOCIAL_INTERVAL = 6000; private static final int MINIMUM_SOCIAL_INTERVAL = 6000;
/** Support for random animation switching */ /** Support for random animation switching */
private boolean _isRandomAnimationEnabled = true; private boolean _isRandomAnimationEnabled = true;
private boolean _isRandomWalkingEnabled = true;
private boolean _isTalkable = getTemplate().isTalkable(); private boolean _isTalkable = getTemplate().isTalkable();
private final boolean _isFakePlayer = getTemplate().isFakePlayer(); private final boolean _isFakePlayer = getTemplate().isFakePlayer();
@ -311,6 +312,16 @@ public class L2Npc extends L2Character
return !isFakePlayer() && _isRandomAnimationEnabled; return !isFakePlayer() && _isRandomAnimationEnabled;
} }
public void setRandomWalking(boolean enabled)
{
_isRandomWalkingEnabled = enabled;
}
public boolean isRandomWalkingEnabled()
{
return _isRandomWalkingEnabled;
}
@Override @Override
public NpcStat getStat() public NpcStat getStat()
{ {
@ -1303,6 +1314,8 @@ public class L2Npc extends L2Character
_soulshotamount = getTemplate().getSoulShot(); _soulshotamount = getTemplate().getSoulShot();
_spiritshotamount = getTemplate().getSpiritShot(); _spiritshotamount = getTemplate().getSpiritShot();
_killingBlowWeaponId = 0; _killingBlowWeaponId = 0;
_isRandomAnimationEnabled = getTemplate().isRandomAnimationEnabled();
_isRandomWalkingEnabled = getTemplate().isRandomWalkEnabled();
if (isTeleporting()) if (isTeleporting())
{ {

View File

@ -37,7 +37,7 @@ public final class L2ChestInstance extends L2MonsterInstance
{ {
super(template); super(template);
setInstanceType(InstanceType.L2ChestInstance); setInstanceType(InstanceType.L2ChestInstance);
setIsNoRndWalk(true); setRandomWalking(false);
_specialDrop = false; _specialDrop = false;
} }

View File

@ -56,7 +56,7 @@ public final class L2GrandBossInstance extends L2MonsterInstance
@Override @Override
public void onSpawn() public void onSpawn()
{ {
setIsNoRndWalk(true); setRandomWalking(false);
super.onSpawn(); super.onSpawn();
} }

View File

@ -73,7 +73,7 @@ public class L2GuardInstance extends L2Attackable
@Override @Override
public void onSpawn() public void onSpawn()
{ {
setIsNoRndWalk(true); setRandomWalking(false);
super.onSpawn(); super.onSpawn();
getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE); getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);

View File

@ -104,7 +104,7 @@ public class L2MonsterInstance extends L2Attackable
{ {
if (getLeader() != null) if (getLeader() != null)
{ {
setIsNoRndWalk(true); setRandomWalking(false);
setIsRaidMinion(getLeader().isRaid()); setIsRaidMinion(getLeader().isRaid());
getLeader().getMinionList().onMinionSpawn(this); getLeader().getMinionList().onMinionSpawn(this);
} }

View File

@ -55,7 +55,7 @@ public class L2RaidBossInstance extends L2MonsterInstance
@Override @Override
public void onSpawn() public void onSpawn()
{ {
setIsNoRndWalk(true); setRandomWalking(false);
super.onSpawn(); super.onSpawn();
} }

View File

@ -73,6 +73,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
private boolean _talkable; private boolean _talkable;
private boolean _undying; private boolean _undying;
private boolean _showName; private boolean _showName;
private boolean _randomWalk;
private boolean _randomAnimation;
private boolean _flying; private boolean _flying;
private boolean _fakePlayer; private boolean _fakePlayer;
private boolean _fakePlayerTalkable; private boolean _fakePlayerTalkable;
@ -144,6 +146,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
_talkable = set.getBoolean("talkable", true); _talkable = set.getBoolean("talkable", true);
_undying = set.getBoolean("undying", true); _undying = set.getBoolean("undying", true);
_showName = set.getBoolean("showName", true); _showName = set.getBoolean("showName", true);
_randomWalk = set.getBoolean("randomWalk", !_type.equals("L2Guard"));
_randomAnimation = set.getBoolean("randomAnimation", true);
_flying = set.getBoolean("flying", false); _flying = set.getBoolean("flying", false);
_fakePlayer = set.getBoolean("fakePlayer", false); _fakePlayer = set.getBoolean("fakePlayer", false);
_fakePlayerTalkable = set.getBoolean("fakePlayerTalkable", true); _fakePlayerTalkable = set.getBoolean("fakePlayerTalkable", true);
@ -367,6 +371,16 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
return _showName; return _showName;
} }
public boolean isRandomWalkEnabled()
{
return _randomWalk;
}
public boolean isRandomAnimationEnabled()
{
return _randomAnimation;
}
public boolean isFlying() public boolean isFlying()
{ {
return _flying; return _flying;

View File

@ -436,7 +436,7 @@ public final class Instance
spawnDat.setHeading(set.getInt("heading")); spawnDat.setHeading(set.getInt("heading"));
spawnDat.setRespawnDelay(set.getInt("respawn"), set.getInt("respawnRandom")); spawnDat.setRespawnDelay(set.getInt("respawn"), set.getInt("respawnRandom"));
spawnDat.setInstanceId(getId()); spawnDat.setInstanceId(getId());
spawnDat.setIsNoRndWalk(set.getBoolean("allowRandomWalk")); spawnDat.setRandomWalking(set.getBoolean("allowRandomWalk"));
final L2Npc spawned = spawnDat.doSpawn(); final L2Npc spawned = spawnDat.doSpawn();
if ((set.getInt("delay") >= 0) && (spawned instanceof L2Attackable)) if ((set.getInt("delay") >= 0) && (spawned instanceof L2Attackable))
{ {