Jelajahi Sumber

Core support for talisman decrease mana on skill use.

JIV 15 tahun lalu
induk
melakukan
4e2bec76df

+ 17 - 2
L2_GameServer/java/com/l2jserver/gameserver/model/L2ItemInstance.java

@@ -1098,12 +1098,27 @@ public final class L2ItemInstance extends L2Object
 	 * @param forces a new consumption task if item is equipped
 	 */
 	public void decreaseMana(boolean resetConsumingMana)
+	{
+		decreaseMana(resetConsumingMana, 1);
+	}
+	
+	/**
+	 * Decreases the mana of this shadow item,
+	 * sends a inventory update
+	 * schedules a new consumption task if non is running
+	 * optionally one could force a new task
+	 * @param forces a new consumption task if item is equipped
+	 * @param count how much mana decrease
+	 */
+	public void decreaseMana(boolean resetConsumingMana, int count)
 	{
 		if (!isShadowItem())
 			return;
 
-		if (_mana > 0)
-			_mana--;
+		if (_mana - count >= 0)
+			_mana -= count;
+		else
+			_mana = 0;
 
 		if (_storedInDb)
 			_storedInDb = false;

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/L2Skill.java

@@ -280,7 +280,7 @@ public abstract class L2Skill implements IChanceSkillTrigger
     {
         _id = set.getInteger("skill_id");
         _level = set.getInteger("level");
-        _refId = set.getInteger("referenceId", set.getInteger("itemConsumeId", 0));
+        _refId = set.getInteger("referenceId", 0);
         _displayId = set.getInteger("displayId", _id);
         _name = set.getString("name");
         _operateType = set.getEnum("operateType", SkillOpType.class);

+ 14 - 0
L2_GameServer/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -39,6 +39,7 @@ import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.ai.L2AttackableAI;
 import com.l2jserver.gameserver.ai.L2CharacterAI;
 import com.l2jserver.gameserver.datatables.DoorTable;
+import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.datatables.MapRegionTable;
 import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.datatables.MapRegionTable.TeleportWhereType;
@@ -110,6 +111,7 @@ import com.l2jserver.gameserver.skills.l2skills.L2SkillSummon;
 import com.l2jserver.gameserver.taskmanager.AttackStanceTaskManager;
 import com.l2jserver.gameserver.templates.chars.L2CharTemplate;
 import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
+import com.l2jserver.gameserver.templates.item.L2Item;
 import com.l2jserver.gameserver.templates.item.L2Weapon;
 import com.l2jserver.gameserver.templates.item.L2WeaponType;
 import com.l2jserver.gameserver.templates.skills.L2EffectType;
@@ -1842,6 +1844,18 @@ public abstract class L2Character extends L2Object
 					return;
 				}
 			}
+			
+			//reduce talisman mana on skill use
+			if (skill.getReferenceItemId() > 0
+					&& ItemTable.getInstance().getTemplate(skill.getReferenceItemId()).getBodyPart() == L2Item.SLOT_DECO)
+				for (L2ItemInstance item : getInventory().getItemsByItemId(skill.getReferenceItemId()))
+				{
+					if (item.isEquipped())
+					{
+						item.decreaseMana(false, skill.getReuseDelay() / 60000);
+						break;
+					}
+				}
 		}
 
 		// Before start AI Cast Broadcast Fly Effect is Need