Advertisement
Nik

Item skills at Inventory

Nik
Sep 25th, 2011
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.97 KB | None | 0 0
  1. Index: java/com/l2jserver/gameserver/model/L2ItemInstance.java
  2. ===================================================================
  3. --- java/com/l2jserver/gameserver/model/L2ItemInstance.java (revision 4930)
  4. +++ java/com/l2jserver/gameserver/model/L2ItemInstance.java (working copy)
  5. @@ -45,6 +45,7 @@
  6.  import com.l2jserver.gameserver.network.serverpackets.SpawnItem;
  7.  import com.l2jserver.gameserver.network.serverpackets.StatusUpdate;
  8.  import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
  9. +import com.l2jserver.gameserver.skills.SkillHolder;
  10.  import com.l2jserver.gameserver.skills.funcs.Func;
  11.  import com.l2jserver.gameserver.templates.item.L2Armor;
  12.  import com.l2jserver.gameserver.templates.item.L2EtcItem;
  13. @@ -322,9 +323,13 @@
  14.      */
  15.     public void setOwnerId(int owner_id)
  16.     {
  17. -       if (owner_id == _ownerId) return;
  18. +       if (owner_id == _ownerId)
  19. +           return;
  20.        
  21. +       removeSkillsFromOwner();
  22.         _ownerId = owner_id;
  23. +       giveSkillsToOwner();
  24. +      
  25.         _storedInDb = false;
  26.     }
  27.    
  28. @@ -1951,4 +1956,32 @@
  29.        
  30.         return enchant;
  31.     }
  32. +  
  33. +   private void giveSkillsToOwner()
  34. +   {
  35. +       if (getItem().isInventorySkill() && getOwnerId() > 0)
  36. +       {
  37. +           L2PcInstance player = L2World.getInstance().getPlayer(getOwnerId());
  38. +          
  39. +           if (player != null)
  40. +           {
  41. +               for (SkillHolder sh : getItem().getSkills())
  42. +                   player.addSkill(sh.getSkill());
  43. +           }
  44. +       }
  45. +   }
  46. +  
  47. +   private void removeSkillsFromOwner()
  48. +   {
  49. +       if (getItem().isInventorySkill() && getOwnerId() > 0)
  50. +       {
  51. +           L2PcInstance player = L2World.getInstance().getPlayer(getOwnerId());
  52. +          
  53. +           if (player != null)
  54. +           {
  55. +               for (SkillHolder sh : getItem().getSkills())
  56. +                   player.removeSkill(sh.getSkill(), false, true);
  57. +           }
  58. +       }
  59. +   }
  60.  }
  61. Index: java/com/l2jserver/gameserver/templates/item/L2Item.java
  62. ===================================================================
  63. --- java/com/l2jserver/gameserver/templates/item/L2Item.java    (revision 4930)
  64. +++ java/com/l2jserver/gameserver/templates/item/L2Item.java    (working copy)
  65. @@ -184,6 +184,7 @@
  66.    
  67.     protected int _type1; // needed for item list (inventory)
  68.     protected int _type2; // different lists for armor, weapon, etc
  69. +   protected boolean _isInventorySkill;
  70.     protected Elementals[] _elementals = null;
  71.     protected FuncTemplate[] _funcTemplates;
  72.     protected EffectTemplate[] _effectTemplates;
  73. @@ -223,6 +224,7 @@
  74.         _depositable = set.getBool("is_depositable", true);
  75.         _questItem = set.getBool("is_questitem", false);
  76.         _freightable = set.getBool("is_freightable", false);
  77. +       _isInventorySkill = set.getBool("is_inventory_skill", false);
  78.        
  79.         //_immediate_effect - herb
  80.         _ex_immediate_effect = set.getInteger("ex_immediate_effect", 0) > 0;
  81. @@ -357,6 +359,15 @@
  82.     }
  83.    
  84.     /**
  85. +    * Returns if the item's skills are added while item is at the player's inventory.
  86. +    * @return boolean
  87. +    */
  88. +   public final boolean isInventorySkill()
  89. +   {
  90. +       return _isInventorySkill;
  91. +   }
  92. +  
  93. +   /**
  94.      * Returns the weight of the item
  95.      * @return int
  96.      */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement