Support for randomWalk and randomAnimation NPC template parameters.
This commit is contained in:
@@ -706,7 +706,7 @@ public class L2AttackableAI extends L2CharacterAI
|
||||
}
|
||||
}
|
||||
// Order to the L2MonsterInstance to random walk (1/100)
|
||||
else if ((npc.getSpawn() != null) && (Rnd.nextInt(RANDOM_WALK_RATE) == 0) && !npc.isNoRndWalk())
|
||||
else if ((npc.getSpawn() != null) && (Rnd.nextInt(RANDOM_WALK_RATE) == 0) && npc.isRandomWalkingEnabled())
|
||||
{
|
||||
int x1 = 0;
|
||||
int y1 = 0;
|
||||
|
@@ -328,6 +328,8 @@ public class NpcData implements IGameXmlReader
|
||||
set.set("talkable", parseBoolean(attrs, "talkable"));
|
||||
set.set("undying", parseBoolean(attrs, "undying"));
|
||||
set.set("showName", parseBoolean(attrs, "showName"));
|
||||
set.set("randomWalk", parseBoolean(attrs, "randomWalk"));
|
||||
set.set("randomAnimation", parseBoolean(attrs, "randomAnimation"));
|
||||
set.set("flying", parseBoolean(attrs, "flying"));
|
||||
set.set("canMove", parseBoolean(attrs, "canMove"));
|
||||
set.set("noSleepMode", parseBoolean(attrs, "noSleepMode"));
|
||||
|
@@ -105,8 +105,8 @@ public class NpcPersonalAIData
|
||||
}
|
||||
case "disableRandomWalk":
|
||||
{
|
||||
npc.setIsNoRndWalk((map.get(key) == 1));
|
||||
spawn.setIsNoRndWalk((map.get(key) == 1));
|
||||
npc.setRandomWalking((map.get(key) == 0));
|
||||
spawn.setRandomWalking((map.get(key) == 0));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -78,7 +78,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
private boolean _doRespawn = true;
|
||||
private static List<SpawnListener> _spawnListeners = new CopyOnWriteArrayList<>();
|
||||
private final Deque<L2Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>();
|
||||
private boolean _isNoRndWalk = false; // Is no random walk
|
||||
private boolean _randomWalk = false; // Is random walk
|
||||
private int _spawnTemplateId = 0;
|
||||
|
||||
/** The task launching the function doSpawn() */
|
||||
@@ -479,12 +479,6 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
npc.setShowSummonAnimation(isSummonSpawn);
|
||||
}
|
||||
|
||||
// Check for certain AI data, overriden in spawnlist
|
||||
if (_name != null)
|
||||
{
|
||||
NpcPersonalAIData.getInstance().initializeNpcParameters(npc, this, _name);
|
||||
}
|
||||
|
||||
return initializeNpcInstance(npc);
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -553,7 +547,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
npc.getVariables().getSet().clear();
|
||||
}
|
||||
// Set is not random walk default value
|
||||
npc.setIsNoRndWalk(isNoRndWalk());
|
||||
npc.setRandomWalking(getRandomWalking());
|
||||
|
||||
// Set the heading of the L2NpcInstance (random heading if not defined)
|
||||
if (getHeading() == -1)
|
||||
@@ -594,6 +588,12 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
|
||||
notifyNpcSpawned(npc);
|
||||
|
||||
// Check for overriden by spawnlist AIData
|
||||
if (_name != null)
|
||||
{
|
||||
NpcPersonalAIData.getInstance().initializeNpcParameters(npc, this, _name);
|
||||
}
|
||||
|
||||
_spawnedNpcs.add(npc);
|
||||
|
||||
// Increase the current number of L2NpcInstance managed by this L2Spawn
|
||||
@@ -710,14 +710,14 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
_location.setInstanceId(instanceId);
|
||||
}
|
||||
|
||||
public final boolean isNoRndWalk()
|
||||
public final boolean getRandomWalking()
|
||||
{
|
||||
return _isNoRndWalk;
|
||||
return _randomWalk;
|
||||
}
|
||||
|
||||
public final void setIsNoRndWalk(boolean value)
|
||||
public final void setRandomWalking(boolean value)
|
||||
{
|
||||
_isNoRndWalk = value;
|
||||
_randomWalk = value;
|
||||
}
|
||||
|
||||
public void setSpawnTemplateId(int npcSpawnTemplateId)
|
||||
|
@@ -192,7 +192,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
private boolean _isParalyzed = false;
|
||||
private boolean _isPendingRevive = false;
|
||||
private boolean _isRunning = false;
|
||||
private boolean _isNoRndWalk = false; // Is no random walk
|
||||
protected boolean _showSummonAnimation = false;
|
||||
protected boolean _isTeleporting = false;
|
||||
private boolean _isInvul = false;
|
||||
@@ -2634,16 +2633,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
_lastSkillCast = skill;
|
||||
}
|
||||
|
||||
public final boolean isNoRndWalk()
|
||||
{
|
||||
return _isNoRndWalk;
|
||||
}
|
||||
|
||||
public final void setIsNoRndWalk(boolean value)
|
||||
{
|
||||
_isNoRndWalk = value;
|
||||
}
|
||||
|
||||
public final boolean isAfraid()
|
||||
{
|
||||
return isAffected(EffectFlag.FEAR);
|
||||
|
@@ -134,6 +134,7 @@ public class L2Npc extends L2Character
|
||||
private static final int MINIMUM_SOCIAL_INTERVAL = 6000;
|
||||
/** Support for random animation switching */
|
||||
private boolean _isRandomAnimationEnabled = true;
|
||||
private boolean _isRandomWalkingEnabled = true;
|
||||
private boolean _isTalkable = getTemplate().isTalkable();
|
||||
private final boolean _isFakePlayer = getTemplate().isFakePlayer();
|
||||
|
||||
@@ -311,6 +312,16 @@ public class L2Npc extends L2Character
|
||||
return !isFakePlayer() && _isRandomAnimationEnabled;
|
||||
}
|
||||
|
||||
public void setRandomWalking(boolean enabled)
|
||||
{
|
||||
_isRandomWalkingEnabled = enabled;
|
||||
}
|
||||
|
||||
public boolean isRandomWalkingEnabled()
|
||||
{
|
||||
return _isRandomWalkingEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NpcStat getStat()
|
||||
{
|
||||
@@ -1303,6 +1314,8 @@ public class L2Npc extends L2Character
|
||||
_soulshotamount = getTemplate().getSoulShot();
|
||||
_spiritshotamount = getTemplate().getSpiritShot();
|
||||
_killingBlowWeaponId = 0;
|
||||
_isRandomAnimationEnabled = getTemplate().isRandomAnimationEnabled();
|
||||
_isRandomWalkingEnabled = getTemplate().isRandomWalkEnabled();
|
||||
|
||||
if (isTeleporting())
|
||||
{
|
||||
|
@@ -37,7 +37,7 @@ public final class L2ChestInstance extends L2MonsterInstance
|
||||
{
|
||||
super(template);
|
||||
setInstanceType(InstanceType.L2ChestInstance);
|
||||
setIsNoRndWalk(true);
|
||||
setRandomWalking(false);
|
||||
_specialDrop = false;
|
||||
}
|
||||
|
||||
|
@@ -56,7 +56,7 @@ public final class L2GrandBossInstance extends L2MonsterInstance
|
||||
@Override
|
||||
public void onSpawn()
|
||||
{
|
||||
setIsNoRndWalk(true);
|
||||
setRandomWalking(false);
|
||||
super.onSpawn();
|
||||
}
|
||||
|
||||
|
@@ -73,7 +73,7 @@ public class L2GuardInstance extends L2Attackable
|
||||
@Override
|
||||
public void onSpawn()
|
||||
{
|
||||
setIsNoRndWalk(true);
|
||||
setRandomWalking(false);
|
||||
super.onSpawn();
|
||||
|
||||
getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
|
||||
|
@@ -104,7 +104,7 @@ public class L2MonsterInstance extends L2Attackable
|
||||
{
|
||||
if (getLeader() != null)
|
||||
{
|
||||
setIsNoRndWalk(true);
|
||||
setRandomWalking(false);
|
||||
setIsRaidMinion(getLeader().isRaid());
|
||||
getLeader().getMinionList().onMinionSpawn(this);
|
||||
}
|
||||
|
@@ -55,7 +55,7 @@ public class L2RaidBossInstance extends L2MonsterInstance
|
||||
@Override
|
||||
public void onSpawn()
|
||||
{
|
||||
setIsNoRndWalk(true);
|
||||
setRandomWalking(false);
|
||||
super.onSpawn();
|
||||
}
|
||||
|
||||
|
@@ -73,6 +73,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
|
||||
private boolean _talkable;
|
||||
private boolean _undying;
|
||||
private boolean _showName;
|
||||
private boolean _randomWalk;
|
||||
private boolean _randomAnimation;
|
||||
private boolean _flying;
|
||||
private boolean _fakePlayer;
|
||||
private boolean _fakePlayerTalkable;
|
||||
@@ -144,6 +146,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
|
||||
_talkable = set.getBoolean("talkable", true);
|
||||
_undying = set.getBoolean("undying", true);
|
||||
_showName = set.getBoolean("showName", true);
|
||||
_randomWalk = set.getBoolean("randomWalk", !_type.equals("L2Guard"));
|
||||
_randomAnimation = set.getBoolean("randomAnimation", true);
|
||||
_flying = set.getBoolean("flying", false);
|
||||
_fakePlayer = set.getBoolean("fakePlayer", false);
|
||||
_fakePlayerTalkable = set.getBoolean("fakePlayerTalkable", true);
|
||||
@@ -367,6 +371,16 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
|
||||
return _showName;
|
||||
}
|
||||
|
||||
public boolean isRandomWalkEnabled()
|
||||
{
|
||||
return _randomWalk;
|
||||
}
|
||||
|
||||
public boolean isRandomAnimationEnabled()
|
||||
{
|
||||
return _randomAnimation;
|
||||
}
|
||||
|
||||
public boolean isFlying()
|
||||
{
|
||||
return _flying;
|
||||
|
@@ -436,7 +436,7 @@ public final class Instance
|
||||
spawnDat.setHeading(set.getInt("heading"));
|
||||
spawnDat.setRespawnDelay(set.getInt("respawn"), set.getInt("respawnRandom"));
|
||||
spawnDat.setInstanceId(getId());
|
||||
spawnDat.setIsNoRndWalk(set.getBoolean("allowRandomWalk"));
|
||||
spawnDat.setRandomWalking(set.getBoolean("allowRandomWalk"));
|
||||
final L2Npc spawned = spawnDat.doSpawn();
|
||||
if ((set.getInt("delay") >= 0) && (spawned instanceof L2Attackable))
|
||||
{
|
||||
|
Reference in New Issue
Block a user