Sfoglia il codice sorgente

Fix for ClassCastException in L2DecoyInstance

_DS_ 15 anni fa
parent
commit
4e93a4bd93

+ 2 - 2
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2DecoyInstance.java

@@ -23,7 +23,7 @@ import net.sf.l2j.gameserver.model.L2Skill;
 import net.sf.l2j.gameserver.model.actor.L2Character;
 import net.sf.l2j.gameserver.model.actor.L2Decoy;
 import net.sf.l2j.gameserver.model.actor.knownlist.DecoyKnownList;
-import net.sf.l2j.gameserver.skills.l2skills.L2SkillSummon;
+import net.sf.l2j.gameserver.skills.l2skills.L2SkillDecoy;
 import net.sf.l2j.gameserver.taskmanager.DecayTaskManager;
 import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;
 
@@ -38,7 +38,7 @@ public class L2DecoyInstance extends L2Decoy
         super(objectId, template, owner);
         if (skill != null)
         {
-            _totalLifeTime = ((L2SkillSummon)skill).getTotalLifeTime();
+            _totalLifeTime = ((L2SkillDecoy)skill).getTotalLifeTime();
         }
         else
         {

+ 41 - 36
L2_GameServer/java/net/sf/l2j/gameserver/skills/l2skills/L2SkillDecoy.java

@@ -27,40 +27,45 @@ import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;
 
 public class L2SkillDecoy extends L2Skill
 {
-    
-    private int _npcId;
-    
-    public L2SkillDecoy(StatsSet set)
-    {
-        super(set);
-        _npcId = set.getInteger("npcId", 0);
-    }
-    
-    @Override
-    public void useSkill(L2Character caster, L2Object[] targets)
-    {
-        if (caster.isAlikeDead() || !(caster instanceof L2PcInstance))
-            return;
-        
-        if (_npcId == 0)
-            return;
-        
-        L2PcInstance activeChar = (L2PcInstance) caster;
-        
-        if (activeChar.inObserverMode())
-            return;
-        
-        if (activeChar.getPet() != null || activeChar.isMounted())
-            return;
-        
-        L2DecoyInstance Decoy;
-        L2NpcTemplate DecoyTemplate = NpcTable.getInstance().getTemplate(_npcId);
-        Decoy = new L2DecoyInstance(IdFactory.getInstance().getNextId(), DecoyTemplate, activeChar, this);
-        Decoy.setCurrentHp(Decoy.getMaxHp());
-        Decoy.setCurrentMp(Decoy.getMaxMp());
-        Decoy.setHeading(activeChar.getHeading());
-        activeChar.setDecoy(Decoy);
-        L2World.getInstance().storeObject(Decoy);
-        Decoy.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());
-    }
+	private final int _npcId;
+	private final int _summonTotalLifeTime;
+
+	public L2SkillDecoy(StatsSet set)
+	{
+		super(set);
+		_npcId = set.getInteger("npcId", 0);
+		_summonTotalLifeTime= set.getInteger("summonTotalLifeTime", 20000);
+	}
+
+	@Override
+	public void useSkill(L2Character caster, L2Object[] targets)
+	{
+		if (caster.isAlikeDead() || !(caster instanceof L2PcInstance))
+			return;
+
+		if (_npcId == 0)
+			return;
+
+		final L2PcInstance activeChar = (L2PcInstance) caster;
+
+		if (activeChar.inObserverMode())
+			return;
+
+		if (activeChar.getPet() != null || activeChar.isMounted())
+			return;
+
+		L2NpcTemplate DecoyTemplate = NpcTable.getInstance().getTemplate(_npcId);
+		final L2DecoyInstance Decoy = new L2DecoyInstance(IdFactory.getInstance().getNextId(), DecoyTemplate, activeChar, this);
+		Decoy.setCurrentHp(Decoy.getMaxHp());
+		Decoy.setCurrentMp(Decoy.getMaxMp());
+		Decoy.setHeading(activeChar.getHeading());
+		activeChar.setDecoy(Decoy);
+		L2World.getInstance().storeObject(Decoy);
+		Decoy.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());
+	}
+
+	public final int getTotalLifeTime()
+	{
+		return _summonTotalLifeTime;
+	}
 }