Advertisement
Nik

Item skills at Inventory

Nik
Sep 25th, 2011
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 7.92 KB | None | 0 0
  1. Index: java/com/l2jserver/gameserver/datatables/ItemTable.java
  2. ===================================================================
  3. --- java/com/l2jserver/gameserver/datatables/ItemTable.java (revision 4930)
  4. +++ java/com/l2jserver/gameserver/datatables/ItemTable.java (working copy)
  5. @@ -374,8 +374,7 @@
  6.         {
  7.             long old = item.getCount();
  8.             item.setCount(0);
  9. -           item.setOwnerId(0);
  10. -           item.setLocation(ItemLocation.VOID);
  11. +           item.setOwnerId(0, ItemLocation.VOID);
  12.             item.setLastChange(L2ItemInstance.REMOVED);
  13.            
  14.             L2World.getInstance().removeObject(item);
  15. Index: java/com/l2jserver/gameserver/model/L2ItemInstance.java
  16. ===================================================================
  17. --- java/com/l2jserver/gameserver/model/L2ItemInstance.java (revision 4930)
  18. +++ java/com/l2jserver/gameserver/model/L2ItemInstance.java (working copy)
  19. @@ -45,6 +45,7 @@
  20.  import com.l2jserver.gameserver.network.serverpackets.SpawnItem;
  21.  import com.l2jserver.gameserver.network.serverpackets.StatusUpdate;
  22.  import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
  23. +import com.l2jserver.gameserver.skills.SkillHolder;
  24.  import com.l2jserver.gameserver.skills.funcs.Func;
  25.  import com.l2jserver.gameserver.templates.item.L2Armor;
  26.  import com.l2jserver.gameserver.templates.item.L2EtcItem;
  27. @@ -277,7 +278,32 @@
  28.     /**
  29.      * Sets the ownerID of the item
  30.      * @param process : String Identifier of process triggering this action
  31. +    * @param owner_id :
  32. +    * @param creator : L2PcInstance Player requesting the item creation
  33. +    * @param reference : Object Object referencing current action like NPC selling item or previous item in transformation
  34. +    * @param location : Set the item's location to the given one
  35. +    */
  36. +   public void setOwnerId(String process, int owner_id, L2PcInstance creator, Object reference, ItemLocation location)
  37. +   {
  38. +       setLocation(location);
  39. +       setOwnerId(process, owner_id, creator, reference);
  40. +   }
  41. +  
  42. +   /**
  43. +    * Sets the ownerID of the item
  44.      * @param owner_id : int designating the ID of the owner
  45. +    * @param location : Set the item's location to the given one
  46. +    */
  47. +   public void setOwnerId(int owner_id, ItemLocation location)
  48. +   {
  49. +       setLocation(location);
  50. +       setOwnerId(owner_id);
  51. +   }
  52. +  
  53. +   /**
  54. +    * Sets the ownerID of the item
  55. +    * @param process : String Identifier of process triggering this action
  56. +    * @param owner_id : int designating the ID of the owner
  57.      * @param creator : L2PcInstance Player requesting the item creation
  58.      * @param reference : Object Object referencing current action like NPC selling item or previous item in transformation
  59.      */
  60. @@ -322,9 +348,14 @@
  61.      */
  62.     public void setOwnerId(int owner_id)
  63.     {
  64. -       if (owner_id == _ownerId) return;
  65. +       if (owner_id == _ownerId)
  66. +           return;
  67.        
  68. +       removeSkillsFromOwner();
  69.         _ownerId = owner_id;
  70. +       if (getLocation() == ItemLocation.INVENTORY)
  71. +           giveSkillsToOwner();
  72. +      
  73.         _storedInDb = false;
  74.     }
  75.    
  76. @@ -1951,4 +1982,32 @@
  77.        
  78.         return enchant;
  79.     }
  80. +  
  81. +   private void giveSkillsToOwner()
  82. +   {
  83. +       if (getItem().isInventorySkill() && getOwnerId() > 0)
  84. +       {
  85. +           L2PcInstance player = L2World.getInstance().getPlayer(getOwnerId());
  86. +          
  87. +           if (player != null)
  88. +           {
  89. +               for (SkillHolder sh : getItem().getSkills())
  90. +                   player.addSkill(sh.getSkill());
  91. +           }
  92. +       }
  93. +   }
  94. +  
  95. +   private void removeSkillsFromOwner()
  96. +   {
  97. +       if (getItem().isInventorySkill() && getOwnerId() > 0)
  98. +       {
  99. +           L2PcInstance player = L2World.getInstance().getPlayer(getOwnerId());
  100. +          
  101. +           if (player != null)
  102. +           {
  103. +               for (SkillHolder sh : getItem().getSkills())
  104. +                   player.removeSkill(sh.getSkill(), false, true);
  105. +           }
  106. +       }
  107. +   }
  108.  }
  109. Index: java/com/l2jserver/gameserver/model/itemauction/ItemAuctionInstance.java
  110. ===================================================================
  111. --- java/com/l2jserver/gameserver/model/itemauction/ItemAuctionInstance.java    (revision 4930)
  112. +++ java/com/l2jserver/gameserver/model/itemauction/ItemAuctionInstance.java    (working copy)
  113. @@ -477,8 +477,7 @@
  114.             }
  115.             else
  116.             {
  117. -               item.setOwnerId(bid.getPlayerObjId());
  118. -               item.setLocation(ItemLocation.WAREHOUSE);
  119. +               item.setOwnerId(bid.getPlayerObjId(), ItemLocation.WAREHOUSE);
  120.                 item.updateDatabase();
  121.                 L2World.getInstance().removeObject(item);
  122.                
  123. Index: java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java
  124. ===================================================================
  125. --- java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java    (revision 4930)
  126. +++ java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java    (working copy)
  127. @@ -753,8 +753,7 @@
  128.                 return null;
  129.            
  130.             removeItem(item);
  131. -           item.setOwnerId(process, 0, actor, reference);
  132. -           item.setLocation(ItemLocation.VOID);
  133. +           item.setOwnerId(process, 0, actor, reference, ItemLocation.VOID);
  134.             item.setLastChange(L2ItemInstance.REMOVED);
  135.            
  136.             item.updateDatabase();
  137. Index: java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java
  138. ===================================================================
  139. --- java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java    (revision 4930)
  140. +++ java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java    (working copy)
  141. @@ -224,8 +224,7 @@
  142.         // If item hasn't be found in inventory, create new one
  143.         else
  144.         {
  145. -           item.setOwnerId(process, getOwnerId(), actor, reference);
  146. -           item.setLocation(getBaseLocation());
  147. +           item.setOwnerId(process, getOwnerId(), actor, reference, getBaseLocation());
  148.             item.setLastChange((L2ItemInstance.ADDED));
  149.            
  150.             // Add item in inventory
  151. @@ -280,8 +279,7 @@
  152.                 }
  153.                
  154.                 item = ItemTable.getInstance().createItem(process, itemId, template.isStackable() ? count : 1, actor, reference);
  155. -               item.setOwnerId(getOwnerId());
  156. -               item.setLocation(getBaseLocation());
  157. +               item.setOwnerId(getOwnerId(), getBaseLocation());
  158.                 item.setLastChange(L2ItemInstance.ADDED);
  159.                
  160.                 // Add item in inventory
  161. Index: java/com/l2jserver/gameserver/network/clientpackets/RequestPostAttachment.java
  162. ===================================================================
  163. --- java/com/l2jserver/gameserver/network/clientpackets/RequestPostAttachment.java  (revision 4930)
  164. +++ java/com/l2jserver/gameserver/network/clientpackets/RequestPostAttachment.java  (working copy)
  165. @@ -228,8 +228,7 @@
  166.             else
  167.             {
  168.                 L2ItemInstance paidAdena = ItemTable.getInstance().createItem("PayMail", ADENA_ID, adena, activeChar, null);
  169. -               paidAdena.setOwnerId(msg.getSenderId());
  170. -               paidAdena.setLocation(ItemLocation.INVENTORY);
  171. +               paidAdena.setOwnerId(msg.getSenderId(), ItemLocation.INVENTORY);
  172.                 paidAdena.updateDatabase(true);
  173.                 L2World.getInstance().removeObject(paidAdena);
  174.             }
  175. Index: java/com/l2jserver/gameserver/templates/item/L2Item.java
  176. ===================================================================
  177. --- java/com/l2jserver/gameserver/templates/item/L2Item.java    (revision 4930)
  178. +++ java/com/l2jserver/gameserver/templates/item/L2Item.java    (working copy)
  179. @@ -184,6 +184,7 @@
  180.    
  181.     protected int _type1; // needed for item list (inventory)
  182.     protected int _type2; // different lists for armor, weapon, etc
  183. +   protected boolean _isInventorySkill;
  184.     protected Elementals[] _elementals = null;
  185.     protected FuncTemplate[] _funcTemplates;
  186.     protected EffectTemplate[] _effectTemplates;
  187. @@ -223,6 +224,7 @@
  188.         _depositable = set.getBool("is_depositable", true);
  189.         _questItem = set.getBool("is_questitem", false);
  190.         _freightable = set.getBool("is_freightable", false);
  191. +       _isInventorySkill = set.getBool("is_inventory_skill", false);
  192.        
  193.         //_immediate_effect - herb
  194.         _ex_immediate_effect = set.getInteger("ex_immediate_effect", 0) > 0;
  195. @@ -357,6 +359,15 @@
  196.     }
  197.    
  198.     /**
  199. +    * Returns if the item's skills are added while item is at the player's inventory.
  200. +    * @return boolean
  201. +    */
  202. +   public final boolean isInventorySkill()
  203. +   {
  204. +       return _isInventorySkill;
  205. +   }
  206. +  
  207. +   /**
  208.      * Returns the weight of the item
  209.      * @return int
  210.      */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement