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);
if ((npc.getId() == DRAGON_GUARD) || (npc.getId() == DRAGON_MAGE))
{
mob.setIsNoRndWalk(true);
mob.setRandomWalking(false);
startQuestTimer("CHECK_HOME", 10000, npc, null, true);
}
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()));
final L2Npc npc = spawn.doSpawn();
npc.setIsNoRndWalk(true);
npc.setRandomWalking(false);
npc.setIsImmobilized(true);
npc.setIsInvul(true);
npc.disableCoreAI(true);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1141,7 +1141,7 @@ public class SeedOfDestruction extends AbstractNpcAI
world.npcList.put(npc, false);
}
npc.setIsImmobilized(TIAT == mob[0] ? true : isImmobilized);
npc.setIsNoRndWalk(true);
npc.setRandomWalking(false);
if (npc.isAttackable())
{
((L2Attackable) npc).setSeeThroughSilentMove(true);
@ -1200,27 +1200,27 @@ public class SeedOfDestruction extends AbstractNpcAI
protected void runThrone(SODWorld world)
{
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++)
{
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);
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++)
{
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());
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());
npc5.setIsNoRndWalk(true);
npc5.setRandomWalking(false);
}
if (world.naezds.size() < 1)
@ -1228,15 +1228,15 @@ public class SeedOfDestruction extends AbstractNpcAI
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());
npc.setIsNoRndWalk(true);
npc.setRandomWalking(false);
world.naezds.add(npc);
}
}
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.setIsNoRndWalk(true);
world._priest.setRandomWalking(false);
}
@Override
@ -1362,7 +1362,7 @@ public class SeedOfDestruction extends AbstractNpcAI
else if (event.equals("Part10"))
{
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));
startQuestTimer("Part11", 300, world._priest, null);
startQuestTimer("PartUnnamed", 50, world._priest, null);
@ -1380,16 +1380,16 @@ public class SeedOfDestruction extends AbstractNpcAI
{
cancelQuestTimers("PartUnnamed");
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._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.setIsNoRndWalk(true);
world._naezdTR2.setRandomWalking(false);
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.setIsNoRndWalk(true);
world._naezdTL2.setRandomWalking(false);
broadcastPacket((new SpecialCamera(world._tiat, 400, 90, 5, 1500, 10000, 13000, 0, 0, 1, 0, 0)), world);
startQuestTimer("Part12", 100, world._tiat, null);
}
@ -1591,7 +1591,7 @@ public class SeedOfDestruction extends AbstractNpcAI
{
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());
mob.setIsNoRndWalk(true);
mob.setRandomWalking(false);
mob.setSeeThroughSilentMove(true);
mob.setIsRaidMinion(true);
world.naezds.add(mob);

View File

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

View File

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

View File

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

View File

@ -834,7 +834,7 @@ public final class TowerOfNaia extends AbstractNpcAI
time = (int) ((distance / npc.getWalkSpeed()) * 1000);
npc.setWalking();
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.getSpawn().setX(coords[0]);
npc.getSpawn().setY(coords[1]);

View File

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

View File

@ -141,7 +141,7 @@ public final class SelMahumSquad extends AbstractNpcAI
npc.setWalking();
npc.setTarget(npc);
if (npc.isNoRndWalk())
if (!npc.isRandomWalkingEnabled())
{
npc.doCast(SkillData.getInstance().getSkill(6331, 1));
npc.setDisplayEffect(MAHUM_EFFECT_SLEEP);
@ -232,9 +232,9 @@ public final class SelMahumSquad extends AbstractNpcAI
}
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();
final Location loc = sender.getPointInRange(100, 200);
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()))
{
receiver.setIsNoRndWalk(false);
receiver.setRandomWalking(true);
receiver.getVariables().remove("BUSY_STATE");
receiver.setRHandId(THS_Weapon);
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.isNoRndWalk()) // i_ai0 == 1
if (!receiver.isRandomWalkingEnabled()) // i_ai0 == 1
{
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.setRunning();
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)
{
// 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);
startQuestTimer("fire_arrived", 3000, npc, null);
@ -350,7 +350,7 @@ public final class SelMahumSquad extends AbstractNpcAI
else if (CommonUtil.contains(SQUAD_LEADERS, npc.getId()))
{
npc.setDisplayEffect(3);
npc.setIsNoRndWalk(false);
npc.setRandomWalking(true);
}
return super.onSpawn(npc);
}
@ -385,7 +385,7 @@ public final class SelMahumSquad extends AbstractNpcAI
{
cancelQuestTimer("remove_effects", attacked, null);
attacked.getVariables().remove("BUSY_STATE");
attacked.setIsNoRndWalk(false);
attacked.setRandomWalking(true);
attacked.setDisplayEffect(MAHUM_EFFECT_NONE);
if (attacked.getRightHandItem() == OHS_Weapon)
{

View File

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

View File

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

View File

@ -304,7 +304,7 @@ public final class DarkCloudMansion extends AbstractInstance
StartRoom.npcList.add(thisnpc);
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
thisnpc = new DMCNpc();
@ -312,7 +312,7 @@ public final class DarkCloudMansion extends AbstractInstance
StartRoom.npcList.add(thisnpc);
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[2], 148865, 180190, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[1], 148995, 180190, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[0], 149090, 180450, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[1], 148995, 180705, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[2], 148865, 180705, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
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());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[2], 148865, 180190, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[1], 148995, 180190, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[0], 149090, 180450, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[1], 148995, 180705, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
thisnpc.npc = addSpawn(BM[2], 148865, 180705, -6117, 0, false, 0, false, world.getInstanceId());
if (noRndWalk)
{
thisnpc.npc.setIsNoRndWalk(true);
thisnpc.npc.setRandomWalking(false);
}
ThirdRoom.npcList.add(thisnpc);
world.setParameter("ThirdRoom2", ThirdRoom);
@ -665,7 +665,7 @@ public final class DarkCloudMansion extends AbstractInstance
{
thisnpc = new DMCNpc();
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.status = temp[idx];
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());
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);
world.setParameter("npcList", npcList);
}
npc.setIsNoRndWalk(true);
npc.setRandomWalking(false);
if (npc.isInstanceTypes(InstanceType.L2Attackable))
{
((L2Attackable) npc).setSeeThroughSilentMove(true);

View File

@ -684,7 +684,7 @@ public final class Kamaloka extends AbstractInstance
spawn.startRespawn();
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)
{
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());
}
}
@ -707,7 +707,7 @@ public final class Kamaloka extends AbstractInstance
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.setIsNoRndWalk(true);
npc.setRandomWalking(false);
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);
box.disableCoreAI(true);
box.setIsNoRndWalk(true);
box.setRandomWalking(false);
}
htmltext = event;
}

View File

@ -279,6 +279,8 @@
<xs:attribute name="targetable" type="xs:boolean" />
<xs:attribute name="undying" 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="canMove" 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)
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 y1 = 0;

View File

@ -328,6 +328,8 @@ public class NpcData implements IGameXmlReader
set.set("talkable", parseBoolean(attrs, "talkable"));
set.set("undying", parseBoolean(attrs, "undying"));
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("canMove", parseBoolean(attrs, "canMove"));
set.set("noSleepMode", parseBoolean(attrs, "noSleepMode"));

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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