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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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"?> <?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd"> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="ChapelGuards"> <spawn name="ChapelGuards" ai="NoRandomActivity">
<parameters> <parameters>
<param name="disableRandomWalk" value="true" /> <param name="disableRandomWalk" value="true" />
</parameters> </parameters>

View File

@@ -550,7 +550,7 @@ public class AttackableAI extends CreatureAI
} }
} }
// Order to the Monster to random walk (1/100) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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 @Override
public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc) public void onSpawnNpc(SpawnTemplate template, SpawnGroup group, Npc npc)
{ {
npc.setRandomAnimation(npc.getParameters().getBoolean("disableRandomAnimation", false)); npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
npc.setRandomWalking(npc.getParameters().getBoolean("disableRandomWalk", false)); final boolean randomWalk = !template.getParameters().getBoolean("disableRandomWalk", false);
if (npc.getSpawn() != null) 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) // 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)) for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.BUFF))
{ {

View File

@@ -218,25 +218,32 @@ public class SpawnData implements IXmlReader
SpawnGroup defaultGroup = null; SpawnGroup defaultGroup = null;
for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) for (Node innerNode = spawnsNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling())
{ {
if ("territories".equalsIgnoreCase(innerNode.getNodeName())) switch (innerNode.getNodeName())
{ {
parseTerritories(innerNode, spawnTemplate.getFile(), spawnTemplate); case "territories":
}
else if ("group".equalsIgnoreCase(innerNode.getNodeName()))
{
parseGroup(innerNode, spawnTemplate);
}
else if ("npc".equalsIgnoreCase(innerNode.getNodeName()))
{
if (defaultGroup == null)
{ {
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);
} }
} }