Fixed monster drift parameters.

This commit is contained in:
MobiusDevelopment 2023-03-29 00:46:28 +03:00
parent 3db795f51d
commit a2e46381a3
91 changed files with 767 additions and 559 deletions

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards">
<spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters>
<param name="disableRandomWalk" value="true" />
</parameters>

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}

View File

@ -34,11 +34,12 @@ public class NoRandomActivity extends AbstractNpcAI
@Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false));
if (npc.getSpawn() != null)
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
npc.setRandomWalking(randomWalk);
if ((npc.getSpawn() != null))
{
npc.getSpawn().setRandomWalking(!npc.getParameters().getBoolean("disableRandomWalk", false));
npc.getSpawn().setRandomWalking(randomWalk);
}
}

View File

@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
}
}
// Order to the Monster to random walk (1/100)
else if ((npc.getSpawn() != null) && npc.getSpawn().getRandomWalking() && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
else if ((npc.getSpawn() != null) && (Rnd.get(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{

View File

@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{
if ("territories".equalsIgnoreCase(innerNode.getNodeName()))
switch (innerNode.getNodeName())
{
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
case "territories":
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate);
break;
}
case "group":
{
parseGroup(innerNode, spawnTemplate);
break;
}
case "npc":
{
if (defaultGroup == null)
{
defaultGroup = new SpawnGroup(StatSet.EMPTY_STATSET);
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
break;
}
case "parameters":
{
parseParameters(innerNode, spawnTemplate);
break;
}
parseNpc(innerNode, spawnTemplate, defaultGroup);
}
else if ("parameters".equalsIgnoreCase(innerNode.getNodeName()))
{
parseParameters(spawnsNode, spawnTemplate);
}
}