Explorar el Código

Support for canMove column in NpcAiData. Set 1 to disable movement. Format + cleanup.

JIV hace 15 años
padre
commit
d2070f7d8f

+ 428 - 438
L2_GameServer/java/com/l2jserver/gameserver/model/L2NpcAIData.java

@@ -18,7 +18,6 @@
  */
 package com.l2jserver.gameserver.model;
 
-
 import javolution.util.FastList;
 
 /**
@@ -31,35 +30,33 @@ import javolution.util.FastList;
  * 
  */
 
-
 // This Data is for NPC Attributes and AI relate stuffs...
 // Still need to finish...Update later...
-
 public class L2NpcAIData
 {
 	
 	//Basic AI
-    private int _primary_attack;
-    private int _skill_chance;
-    private int _canMove;
-    private int _soulshot;
-    private int _spiritshot;
-    private int _soulshotchance;
-    private int _spiritshotchance;
-    private int _ischaos;
-    private String _clan;
-    private String _enemyClan;
-    private int _enemyRange;
-    //private int _baseShldRate;
-    //private int _baseShldDef;
-    private int _dodge;
-    private int _longrangeskill;
-    private int _shortrangeskill;
-    private int _longrangechance;
-    private int _shortrangechance;
-    private int _switchrangechance;
-    
-    //Skill AI
+	private int _primary_attack;
+	private int _skill_chance;
+	private int _canMove;
+	private int _soulshot;
+	private int _spiritshot;
+	private int _soulshotchance;
+	private int _spiritshotchance;
+	private int _ischaos;
+	private String _clan;
+	private String _enemyClan;
+	private int _enemyRange;
+	//private int _baseShldRate;
+	//private int _baseShldDef;
+	private int _dodge;
+	private int _longrangeskill;
+	private int _shortrangeskill;
+	private int _longrangechance;
+	private int _shortrangechance;
+	private int _switchrangechance;
+	
+	//Skill AI
 	public FastList<L2Skill> _buffskills;
 	public FastList<L2Skill> _negativeskills;
 	public FastList<L2Skill> _debuffskills;
@@ -77,543 +74,536 @@ public class L2NpcAIData
 	public FastList<L2Skill> _cotskills;
 	public FastList<L2Skill> _universalskills;
 	public FastList<L2Skill> _manaskills;
-    
-
-	private FastList<L2NpcAIData> npcAIdata;
 	
-	public void NpcData()
-	{	
-		npcAIdata = new FastList<L2NpcAIData>(0);
+	//--------------------------------------------------------------------------------------------------------------
+	//Setting....
+	//--------------------------------------------------------------------------------------------------------------
+	public void setPrimaryAttack(int primaryattack)
+	{
+		
+		_primary_attack = primaryattack;
+		
+	}
+	
+	public void setSkillChance(int skill_chance)
+	{
+		
+		_skill_chance = skill_chance;
+		
+	}
+	
+	public void setCanMove(int canMove)
+	{
+		
+		_canMove = canMove;
+		
+	}
+	
+	public void setSoulShot(int soulshot)
+	{
+		
+		_soulshot = soulshot;
+		
+	}
+	
+	public void setSpiritShot(int spiritshot)
+	{
+		
+		_spiritshot = spiritshot;
+		
+	}
+	
+	public void setSoulShotChance(int soulshotchance)
+	{
+		
+		_soulshotchance = soulshotchance;
+		
+	}
+	
+	public void setSpiritShotChance(int spiritshotchance)
+	{
+		
+		_spiritshotchance = spiritshotchance;
+		
+	}
+	
+	public void setShortRangeSkill(int shortrangeskill)
+	{
+		
+		_shortrangeskill = shortrangeskill;
+		
+	}
+	
+	public void setShortRangeChance(int shortrangechance)
+	{
+		
+		_shortrangechance = shortrangechance;
+		
+	}
+	
+	public void setLongRangeSkill(int longrangeskill)
+	{
+		
+		_longrangeskill = longrangeskill;
+		
+	}
+	
+	public void setLongRangeChance(int longrangechance)
+	{
+		
+		_shortrangechance = longrangechance;
+		
+	}
+	
+	public void setSwitchRangeChance(int switchrangechance)
+	{
+		
+		_switchrangechance = switchrangechance;
+		
+	}
+	
+	public void setIsChaos(int ischaos)
+	{
+		_ischaos = ischaos;
+		
+	}
+	
+	public void setClan(String clan)
+	{
+		
+		_clan = clan;
+		
+	}
+	
+	public void setEnemyClan(String enemyClan)
+	{
+		
+		_enemyClan = enemyClan;
+		
+	}
+	
+	public void setEnemyRange(int enemyRange)
+	{
+		
+		_enemyRange = enemyRange;
+		
+	}
+	
+	public void setDodge(int dodge)
+	{
+		_dodge = dodge;
+	}
+	
+	/*
+	
+	public void setBaseShldRate (int baseShldRate)
+	{
+		
+		_baseShldRate = baseShldRate;
+		
+	}
+	
+	public void setBaseShldDef (int baseShldDef)
+	{
+		
+		_baseShldDef = baseShldDef;
 		
 	}
+	*/
 
-	public FastList<L2NpcAIData> getAIData()
-	{
-		return npcAIdata;
-	}	
-    public void addNpcData(L2NpcAIData npcdatatable)
-	{
-    	
-    	npcAIdata.add(npcdatatable);
-    	
-	}
-    
-    
-    
-    
-    
-    
-    
-    
-    //--------------------------------------------------------------------------------------------------------------
-    //Setting....
-    //--------------------------------------------------------------------------------------------------------------
-    public void setPrimaryAttack (int primaryattack)
-    {
-    	
-    	_primary_attack = primaryattack;
-    	
-    }
-	
-    public void setSkillChance (int skill_chance)
-    {
-    	
-    	_skill_chance = skill_chance ;
-    	
-    }
-    
-    public void setCanMove (int canMove)
-    {
-    	
-    	_canMove = canMove ;
-    	
-    }
-    
-    public void setSoulShot (int soulshot)
-    {
-    	
-    	_soulshot = soulshot;
-    	
-    }
-    
-    public void setSpiritShot (int spiritshot)
-    {
-    	
-    	_spiritshot = spiritshot;
-    	
-    }
-    
-    public void setSoulShotChance (int soulshotchance)
-    {
-    	
-    	_soulshotchance = soulshotchance;
-    	
-    }
-    
-    public void setSpiritShotChance (int spiritshotchance)
-    {
-    	
-    	_spiritshotchance = spiritshotchance;
-    	
-    }
-    
-    public void setShortRangeSkill (int shortrangeskill)
-    {
-        
-        _shortrangeskill = shortrangeskill;
-        
-    }
-    
-    public void setShortRangeChance (int shortrangechance)
-    {
-        
-        _shortrangechance = shortrangechance;
-        
-    }
-    
-    public void setLongRangeSkill (int longrangeskill)
-    {
-        
-        _longrangeskill = longrangeskill;
-        
-    }
-    
-    public void setLongRangeChance (int longrangechance)
-    {
-        
-        _shortrangechance = longrangechance;
-        
-    }
-    
-    public void setSwitchRangeChance (int switchrangechance)
-    {
-        
-        _switchrangechance = switchrangechance;
-        
-    }
-    
-    public void setIsChaos (int ischaos)
-    {
-    	_ischaos = ischaos;
-    	
-    }
-    public void setClan (String clan)
-    {
-    	
-    	_clan = clan;
-    	
-    }
-    
-    public void setEnemyClan (String enemyClan)
-    {
-    	
-    	_enemyClan = enemyClan;
-    	
-    }
-    
-    public void setEnemyRange (int enemyRange)
-    {
-    	
-    	_enemyRange = enemyRange;
-    	
-    }
-    
-    public void setDodge (int dodge)
-    {
-    	_dodge = dodge;
-    }
-    
-    /*
-    
-    public void setBaseShldRate (int baseShldRate)
-    {
-    	
-    	_baseShldRate = baseShldRate;
-    	
-    }
-    
-    public void setBaseShldDef (int baseShldDef)
-    {
-    	
-    	_baseShldDef = baseShldDef;
-    	
-    }
-    */
-    
-    
-    
-    //--------------------------------------------------------------------------------------------------------------
-    //Data Recall....
-    //--------------------------------------------------------------------------------------------------------------
-    public int getPrimaryAttack ()
-    {
-    	
-    	return _primary_attack;
-    	
-    }
-	
-    public int getSkillChance ()
-    {
-    	
-    	return _skill_chance;
-    	
-    }
-    
-    public int getCanMove ()
-    {
-    	
-    	return _canMove;
-    	
-    }
-    
-    public int getSoulShot ()
-    {
-    	
-    	return _soulshot;
-    	
-    }
-    
-    public int getSpiritShot ()
-    {
-    	
-    	return _spiritshot;
-    	
-    }
-    
-    public int getSoulShotChance()
-    {
-    	
-    	return _soulshotchance;
-    	
-    }
-    
-    public int getSpiritShotChance()
-    {
-    	
-    	return _spiritshotchance;
-    	
-    }
-    public int getShortRangeSkill()
-    {
-        
-        return _shortrangeskill;
-        
-    }
-    public int getShortRangeChance()
-    {
-        
-        return _shortrangechance;
-        
-    }
-    public int getLongRangeSkill()
-    {
-        
-        return _longrangeskill;
-        
-    }
-    public int getLongRangeChance()
-    {
-        
-        return _longrangechance;
-        
-    }
-    public int getSwitchRangeChance()
-    {
-        
-        return _switchrangechance;
-        
-    }
-    public int getIsChaos ()
-    {
-        
-    	return _ischaos;
-    	
-    }
-    public String getClan()
-    {
-    	
-    	return _clan;
-    	
-    }
-    public String getEnemyClan ()
-    {
-    	
-    	return _enemyClan;
-    	
-    }
-    
-    public int getEnemyRange ()
-    {
-    	
-    	return _enemyRange;
-    	
-    }
-    
-    public int getDodge()
-    {
-    	
-    	return _dodge;
-    	
-    }
-    
-    /*
-    
-    public int getBaseShldRate ()
-    {
-    	
-    	return _baseShldRate;
-    	
-    }
-    
-    public int getBaseShldDef ()
-    {
-    	
-    	return _baseShldDef;
-    	
-    }
-    */
-    
+	//--------------------------------------------------------------------------------------------------------------
+	//Data Recall....
+	//--------------------------------------------------------------------------------------------------------------
+	public int getPrimaryAttack()
+	{
+		
+		return _primary_attack;
+		
+	}
+	
+	public int getSkillChance()
+	{
+		
+		return _skill_chance;
+		
+	}
+	
+	public int getCanMove()
+	{
+		
+		return _canMove;
+		
+	}
+	
+	public int getSoulShot()
+	{
+		
+		return _soulshot;
+		
+	}
+	
+	public int getSpiritShot()
+	{
+		
+		return _spiritshot;
+		
+	}
+	
+	public int getSoulShotChance()
+	{
+		
+		return _soulshotchance;
+		
+	}
+	
+	public int getSpiritShotChance()
+	{
+		
+		return _spiritshotchance;
+		
+	}
+	
+	public int getShortRangeSkill()
+	{
+		
+		return _shortrangeskill;
+		
+	}
+	
+	public int getShortRangeChance()
+	{
+		
+		return _shortrangechance;
+		
+	}
+	
+	public int getLongRangeSkill()
+	{
+		
+		return _longrangeskill;
+		
+	}
+	
+	public int getLongRangeChance()
+	{
+		
+		return _longrangechance;
+		
+	}
+	
+	public int getSwitchRangeChance()
+	{
+		
+		return _switchrangechance;
+		
+	}
+	
+	public int getIsChaos()
+	{
+		
+		return _ischaos;
+		
+	}
+	
+	public String getClan()
+	{
+		
+		return _clan;
+		
+	}
+	
+	public String getEnemyClan()
+	{
+		
+		return _enemyClan;
+		
+	}
+	
+	public int getEnemyRange()
+	{
+		
+		return _enemyRange;
+		
+	}
+	
+	public int getDodge()
+	{
+		
+		return _dodge;
+		
+	}
+	
+	/*
+	
+	public int getBaseShldRate ()
+	{
+		
+		return _baseShldRate;
+		
+	}
+	
+	public int getBaseShldDef ()
+	{
+		
+		return _baseShldDef;
+		
+	}
+	*/
 
-    
-    
-    public void addBuffSkill(L2Skill skill)
+	public void addBuffSkill(L2Skill skill)
 	{
 		if (_buffskills == null)
 			_buffskills = new FastList<L2Skill>();
-			_buffskills.add(skill);
+		_buffskills.add(skill);
 	}
-    
-    public void addHealSkill(L2Skill skill)
+	
+	public void addHealSkill(L2Skill skill)
 	{
 		if (_healskills == null)
 			_healskills = new FastList<L2Skill>();
-			_healskills.add(skill);
+		_healskills.add(skill);
 	}
-    
-    public void addResSkill(L2Skill skill)
+	
+	public void addResSkill(L2Skill skill)
 	{
 		if (_resskills == null)
 			_resskills = new FastList<L2Skill>();
-			_resskills.add(skill);
+		_resskills.add(skill);
 	}
 	
-    public void addAtkSkill(L2Skill skill)
+	public void addAtkSkill(L2Skill skill)
 	{
 		if (_atkskills == null)
 			_atkskills = new FastList<L2Skill>();
-			_atkskills.add(skill);
+		_atkskills.add(skill);
 	}
-
-    public void addDebuffSkill(L2Skill skill)
+	
+	public void addDebuffSkill(L2Skill skill)
 	{
 		if (_debuffskills == null)
 			_debuffskills = new FastList<L2Skill>();
-			_debuffskills.add(skill);
+		_debuffskills.add(skill);
 	}
-    
-    public void addRootSkill(L2Skill skill)
+	
+	public void addRootSkill(L2Skill skill)
 	{
 		if (_rootskills == null)
 			_rootskills = new FastList<L2Skill>();
-			_rootskills.add(skill);
+		_rootskills.add(skill);
 	}
-    
-    public void addSleepSkill(L2Skill skill)
+	
+	public void addSleepSkill(L2Skill skill)
 	{
 		if (_sleepskills == null)
 			_sleepskills = new FastList<L2Skill>();
-			_sleepskills.add(skill);
+		_sleepskills.add(skill);
 	}
-    
-    public void addStunSkill(L2Skill skill)
+	
+	public void addStunSkill(L2Skill skill)
 	{
 		if (_stunskills == null)
 			_stunskills = new FastList<L2Skill>();
-			_stunskills.add(skill);
+		_stunskills.add(skill);
 	}
-    
-    public void addParalyzeSkill(L2Skill skill)
+	
+	public void addParalyzeSkill(L2Skill skill)
 	{
 		if (_paralyzeskills == null)
 			_paralyzeskills = new FastList<L2Skill>();
-			_paralyzeskills.add(skill);
+		_paralyzeskills.add(skill);
 	}
-    
-    public void addFloatSkill(L2Skill skill)
+	
+	public void addFloatSkill(L2Skill skill)
 	{
 		if (_floatskills == null)
 			_floatskills = new FastList<L2Skill>();
-			_floatskills.add(skill);
+		_floatskills.add(skill);
 	}
-    
-    public void addFossilSkill(L2Skill skill)
+	
+	public void addFossilSkill(L2Skill skill)
 	{
 		if (_fossilskills == null)
 			_fossilskills = new FastList<L2Skill>();
-			_fossilskills.add(skill);
+		_fossilskills.add(skill);
 	}
-    
-    public void addNegativeSkill(L2Skill skill)
+	
+	public void addNegativeSkill(L2Skill skill)
 	{
 		if (_negativeskills == null)
 			_negativeskills = new FastList<L2Skill>();
-			_negativeskills.add(skill);
+		_negativeskills.add(skill);
 	}
-    
-    public void addImmobiliseSkill(L2Skill skill)
+	
+	public void addImmobiliseSkill(L2Skill skill)
 	{
 		if (_immobiliseskills == null)
 			_immobiliseskills = new FastList<L2Skill>();
-			_immobiliseskills.add(skill);
+		_immobiliseskills.add(skill);
 	}
-    
-    public void addDOTSkill(L2Skill skill)
+	
+	public void addDOTSkill(L2Skill skill)
 	{
 		if (_dotskills == null)
 			_dotskills = new FastList<L2Skill>();
-			_dotskills.add(skill);
+		_dotskills.add(skill);
 	}
-    
-    public void addUniversalSkill(L2Skill skill)
+	
+	public void addUniversalSkill(L2Skill skill)
 	{
 		if (_universalskills == null)
 			_universalskills = new FastList<L2Skill>();
-			_universalskills.add(skill);
+		_universalskills.add(skill);
 	}
-    
-    public void addCOTSkill(L2Skill skill)
+	
+	public void addCOTSkill(L2Skill skill)
 	{
 		if (_cotskills == null)
 			_cotskills = new FastList<L2Skill>();
-			_cotskills.add(skill);
+		_cotskills.add(skill);
 	}
-    
-    public void addManaHealSkill(L2Skill skill)
+	
+	public void addManaHealSkill(L2Skill skill)
 	{
 		if (_manaskills == null)
 			_manaskills = new FastList<L2Skill>();
-			_manaskills.add(skill);
+		_manaskills.add(skill);
 	}
-    
-    
-    //--------------------------------------------------------------------
-    public boolean hasBuffSkill()
+	
+	//--------------------------------------------------------------------
+	public boolean hasBuffSkill()
 	{
-		if (_buffskills != null && _buffskills.size()>0)
+		if (_buffskills != null && _buffskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    public boolean hasHealSkill()
+	
+	public boolean hasHealSkill()
 	{
-		if (_healskills != null && _healskills.size()>0)
+		if (_healskills != null && _healskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasResSkill()
+	
+	public boolean hasResSkill()
 	{
-		if (_resskills != null && _resskills.size()>0)
+		if (_resskills != null && _resskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
 	
-    public boolean hasAtkSkill()
+	public boolean hasAtkSkill()
 	{
-		if (_atkskills != null && _atkskills.size()>0)
+		if (_atkskills != null && _atkskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-
-    public boolean hasDebuffSkill()
+	
+	public boolean hasDebuffSkill()
 	{
-		if (_debuffskills != null && _debuffskills.size()>0)
+		if (_debuffskills != null && _debuffskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasRootSkill()
+	
+	public boolean hasRootSkill()
 	{
-		if (_rootskills != null && _rootskills.size()>0)
+		if (_rootskills != null && _rootskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasSleepSkill()
+	
+	public boolean hasSleepSkill()
 	{
-		if (_sleepskills != null && _sleepskills.size()>0)
+		if (_sleepskills != null && _sleepskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasStunSkill()
+	
+	public boolean hasStunSkill()
 	{
-		if (_stunskills != null && _stunskills.size()>0)
+		if (_stunskills != null && _stunskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasParalyzeSkill()
+	
+	public boolean hasParalyzeSkill()
 	{
-		if (_paralyzeskills != null && _paralyzeskills.size()>0)
+		if (_paralyzeskills != null && _paralyzeskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasFloatSkill()
+	
+	public boolean hasFloatSkill()
 	{
-		if (_floatskills != null && _floatskills.size()>0)
+		if (_floatskills != null && _floatskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasFossilSkill()
+	
+	public boolean hasFossilSkill()
 	{
-		if (_fossilskills != null && _fossilskills.size()>0)
+		if (_fossilskills != null && _fossilskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasNegativeSkill()
+	
+	public boolean hasNegativeSkill()
 	{
-		if (_negativeskills != null && _negativeskills.size()>0)
+		if (_negativeskills != null && _negativeskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasImmobiliseSkill()
+	
+	public boolean hasImmobiliseSkill()
 	{
-		if (_immobiliseskills != null && _immobiliseskills.size()>0)
+		if (_immobiliseskills != null && _immobiliseskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasDOTSkill()
+	
+	public boolean hasDOTSkill()
 	{
-		if (_dotskills != null && _dotskills.size()>0)
+		if (_dotskills != null && _dotskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasUniversalSkill()
+	
+	public boolean hasUniversalSkill()
 	{
-		if (_universalskills != null && _universalskills.size()>0)
+		if (_universalskills != null && _universalskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasCOTSkill()
+	
+	public boolean hasCOTSkill()
 	{
-		if (_cotskills != null && _cotskills.size()>0)
+		if (_cotskills != null && _cotskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    public boolean hasManaHealSkill()
+	
+	public boolean hasManaHealSkill()
 	{
-		if (_manaskills != null && _manaskills.size()>0)
+		if (_manaskills != null && _manaskills.size() > 0)
 			return true;
-		else return false;
+		else
+			return false;
 	}
-    
-    
-}
+	
+}

+ 273 - 264
L2_GameServer/java/com/l2jserver/gameserver/model/actor/L2Npc.java

@@ -158,271 +158,271 @@ public class L2Npc extends L2Character
 	private double _currentCollisionHeight; // used for npc grow effect skills
 	private double _currentCollisionRadius; // used for npc grow effect skills
 	
-    public boolean _soulshotcharged = false;
-    public boolean _spiritshotcharged = false;
-    private int _soulshotamount = 0;
-    private int _spiritshotamount = 0;
-    public boolean _ssrecharged = true;
-    public boolean _spsrecharged = true;
-    
+	public boolean _soulshotcharged = false;
+	public boolean _spiritshotcharged = false;
+	private int _soulshotamount = 0;
+	private int _spiritshotamount = 0;
+	public boolean _ssrecharged = true;
+	public boolean _spsrecharged = true;
+	
 	//AI Recall
-    public int getSoulShot()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getSoulShot();
-
-    }
-    public int getSpiritShot()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getSpiritShot();
-
-    }
-    public int getSoulShotChance()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getSoulShotChance();
-
-    }
-
-    public int getSpiritShotChance()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getSpiritShotChance();
-
-    }
-    
-    public boolean useSoulShot()
-    {
-    	if(_soulshotcharged)
-    		return true;
-    	if(_ssrecharged)
-    	{
-    		_soulshotamount = getSoulShot();
-    		_ssrecharged = false;
-    	}
-    	else if (_soulshotamount>0)
-    	{
-        	if (Rnd.get(100) <= getSoulShotChance())
-        	{
-        		_soulshotamount = _soulshotamount - 1;
-        		 Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillUse(this, this, 2154, 1, 0, 0), 360000);
-        		_soulshotcharged = true;
-        	}
-    	}
-    	else return false;
-
-    	return _soulshotcharged;
-    }
-    public boolean useSpiritShot()
-    {
-    	
-    	if(_spiritshotcharged)
-    		return true;
-    	else
-    	{
-        	//_spiritshotcharged = false;
-	    	if(_spsrecharged)
-	    	{
-	    		_spiritshotamount = getSpiritShot();
-	    		_spsrecharged = false;
-	    	}
-	    	else if (_spiritshotamount>0)
-	    	{
-	        	if (Rnd.get(100) <= getSpiritShotChance())
-	        	{
-	        		_spiritshotamount = _spiritshotamount - 1;
-	    			Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillUse(this, this, 2061, 1, 0, 0), 360000);
-	        		_spiritshotcharged = true;
-	        	}    		
-	    	}
-	    	else return false;
-    	}
-
-    	return _spiritshotcharged;
-    }
-    public int getEnemyRange()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getEnemyRange();
-
-    }
-    
-    
-    
-    public String getEnemyClan()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null || AI.getEnemyClan() == null || "".equals(AI.getEnemyClan()))
-    			return "none";
-    		else
-    		return AI.getEnemyClan();
-
-    }
-    
-    public String getClan()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null || AI.getClan() == null || "".equals(AI.getClan()))
-    			return "none";
-    		else
-    		return AI.getClan();
-
-    }
-    
- // GET THE PRIMARY ATTACK
-    public int getPrimaryAttack()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getPrimaryAttack();
-
-    }
-    
-    public int getSkillChance()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 20;
-    		else
-    		return AI.getSkillChance();
-
-    }
-    
-    public int getCanMove()
-    {
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getCanMove();
-
-    }
-    public int getIsChaos()
-    {
-    	
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getIsChaos();
-
-    }
-    
-    public int getCanDodge()
-    {
-    	
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getDodge();
-
-    }
-    public int getSSkillChance()
-    {
-    	
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getShortRangeChance();
-
-    }
-    public int getLSkillChance()
-    {
-    	
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getLongRangeChance();
-
-    }
-    public int getSwitchRangeChance()
-    {
-    	
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null)
-    			return 0;
-    		else
-    		return AI.getSwitchRangeChance();
-
-    }
-    
-    public boolean hasLSkill()
-    {
-    	
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null || AI.getLongRangeSkill() == 0)
-    			return false;
-    		else
-    		return true;
-
-    }
-    
-    public boolean hasSSkill()
-    {
-    	
-    	L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
-    	L2NpcAIData AI = npcData.getAIDataStatic();
-
-    		if (AI == null || AI.getShortRangeSkill() == 0)
-    			return false;
-    		else
-    		return true;
-
-    }
-    
+	public int getSoulShot()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getSoulShot();
+		
+	}
+	public int getSpiritShot()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getSpiritShot();
+		
+	}
+	public int getSoulShotChance()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getSoulShotChance();
+		
+	}
+	
+	public int getSpiritShotChance()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getSpiritShotChance();
+		
+	}
+	
+	public boolean useSoulShot()
+	{
+		if(_soulshotcharged)
+			return true;
+		if(_ssrecharged)
+		{
+			_soulshotamount = getSoulShot();
+			_ssrecharged = false;
+		}
+		else if (_soulshotamount>0)
+		{
+			if (Rnd.get(100) <= getSoulShotChance())
+			{
+				_soulshotamount = _soulshotamount - 1;
+				Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillUse(this, this, 2154, 1, 0, 0), 360000);
+				_soulshotcharged = true;
+			}
+		}
+		else return false;
+		
+		return _soulshotcharged;
+	}
+	public boolean useSpiritShot()
+	{
+		
+		if(_spiritshotcharged)
+			return true;
+		else
+		{
+			//_spiritshotcharged = false;
+			if(_spsrecharged)
+			{
+				_spiritshotamount = getSpiritShot();
+				_spsrecharged = false;
+			}
+			else if (_spiritshotamount>0)
+			{
+				if (Rnd.get(100) <= getSpiritShotChance())
+				{
+					_spiritshotamount = _spiritshotamount - 1;
+					Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillUse(this, this, 2061, 1, 0, 0), 360000);
+					_spiritshotcharged = true;
+				}
+			}
+			else return false;
+		}
+		
+		return _spiritshotcharged;
+	}
+	public int getEnemyRange()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getEnemyRange();
+		
+	}
+	
+	public String getEnemyClan()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null || AI.getEnemyClan() == null || "".equals(AI.getEnemyClan()))
+			return "none";
+		else
+			return AI.getEnemyClan();
+	}
+	
+	public String getClan()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null || AI.getClan() == null || "".equals(AI.getClan()))
+			return "none";
+		else
+			return AI.getClan();
+		
+	}
+	
+	// GET THE PRIMARY ATTACK
+	public int getPrimaryAttack()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getPrimaryAttack();
+		
+	}
+	
+	public int getSkillChance()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 20;
+		else
+			return AI.getSkillChance();
+		
+	}
+	
+	public int getCanMove()
+	{
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getCanMove();
+	}
+	
+	public int getIsChaos()
+	{
+		
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getIsChaos();
+		
+	}
+	
+	public int getCanDodge()
+	{
+		
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getDodge();
+		
+	}
+	
+	public int getSSkillChance()
+	{
+		
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getShortRangeChance();
+		
+	}
+	
+	public int getLSkillChance()
+	{
+		
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getLongRangeChance();
+		
+	}
+	
+	public int getSwitchRangeChance()
+	{
+		
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null)
+			return 0;
+		else
+			return AI.getSwitchRangeChance();
+		
+	}
+	
+	public boolean hasLSkill()
+	{
+		
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null || AI.getLongRangeSkill() == 0)
+			return false;
+		else
+			return true;
+		
+	}
+	
+	public boolean hasSSkill()
+	{
+		
+		L2NpcTemplate npcData = NpcTable.getInstance().getTemplate(this.getTemplate().npcId);
+		L2NpcAIData AI = npcData.getAIDataStatic();
+		
+		if (AI == null || AI.getShortRangeSkill() == 0)
+			return false;
+		else
+			return true;
+		
+	}
+	
 	public FastList<L2Skill> getLrangeSkill()
 	{
 		FastList<L2Skill> skilldata = new FastList <L2Skill>();
@@ -3030,4 +3030,13 @@ public class L2Npc extends L2Character
 			_log.log(Level.SEVERE, "", e);
 		}
 	}
+	
+	/* (non-Javadoc)
+	 * @see com.l2jserver.gameserver.model.actor.L2Character#isMovementDisabled()
+	 */
+	@Override
+	public boolean isMovementDisabled()
+	{
+		return super.isMovementDisabled() || getCanMove() > 0;
+	}
 }