Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: java/com/l2jserver/gameserver/datatables/ItemTable.java
- ===================================================================
- --- java/com/l2jserver/gameserver/datatables/ItemTable.java (revision 4930)
- +++ java/com/l2jserver/gameserver/datatables/ItemTable.java (working copy)
- @@ -374,8 +374,7 @@
- {
- long old = item.getCount();
- item.setCount(0);
- - item.setOwnerId(0);
- - item.setLocation(ItemLocation.VOID);
- + item.setOwnerId(0, ItemLocation.VOID);
- item.setLastChange(L2ItemInstance.REMOVED);
- L2World.getInstance().removeObject(item);
- Index: java/com/l2jserver/gameserver/model/L2ItemInstance.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/L2ItemInstance.java (revision 4930)
- +++ java/com/l2jserver/gameserver/model/L2ItemInstance.java (working copy)
- @@ -45,6 +45,7 @@
- import com.l2jserver.gameserver.network.serverpackets.SpawnItem;
- import com.l2jserver.gameserver.network.serverpackets.StatusUpdate;
- import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
- +import com.l2jserver.gameserver.skills.SkillHolder;
- import com.l2jserver.gameserver.skills.funcs.Func;
- import com.l2jserver.gameserver.templates.item.L2Armor;
- import com.l2jserver.gameserver.templates.item.L2EtcItem;
- @@ -277,7 +278,32 @@
- /**
- * Sets the ownerID of the item
- * @param process : String Identifier of process triggering this action
- + * @param owner_id :
- + * @param creator : L2PcInstance Player requesting the item creation
- + * @param reference : Object Object referencing current action like NPC selling item or previous item in transformation
- + * @param location : Set the item's location to the given one
- + */
- + public void setOwnerId(String process, int owner_id, L2PcInstance creator, Object reference, ItemLocation location)
- + {
- + setLocation(location);
- + setOwnerId(process, owner_id, creator, reference);
- + }
- +
- + /**
- + * Sets the ownerID of the item
- * @param owner_id : int designating the ID of the owner
- + * @param location : Set the item's location to the given one
- + */
- + public void setOwnerId(int owner_id, ItemLocation location)
- + {
- + setLocation(location);
- + setOwnerId(owner_id);
- + }
- +
- + /**
- + * Sets the ownerID of the item
- + * @param process : String Identifier of process triggering this action
- + * @param owner_id : int designating the ID of the owner
- * @param creator : L2PcInstance Player requesting the item creation
- * @param reference : Object Object referencing current action like NPC selling item or previous item in transformation
- */
- @@ -322,9 +348,14 @@
- */
- public void setOwnerId(int owner_id)
- {
- - if (owner_id == _ownerId) return;
- + if (owner_id == _ownerId)
- + return;
- + removeSkillsFromOwner();
- _ownerId = owner_id;
- + if (getLocation() == ItemLocation.INVENTORY)
- + giveSkillsToOwner();
- +
- _storedInDb = false;
- }
- @@ -1951,4 +1982,32 @@
- return enchant;
- }
- +
- + private void giveSkillsToOwner()
- + {
- + if (getItem().isInventorySkill() && getOwnerId() > 0)
- + {
- + L2PcInstance player = L2World.getInstance().getPlayer(getOwnerId());
- +
- + if (player != null)
- + {
- + for (SkillHolder sh : getItem().getSkills())
- + player.addSkill(sh.getSkill());
- + }
- + }
- + }
- +
- + private void removeSkillsFromOwner()
- + {
- + if (getItem().isInventorySkill() && getOwnerId() > 0)
- + {
- + L2PcInstance player = L2World.getInstance().getPlayer(getOwnerId());
- +
- + if (player != null)
- + {
- + for (SkillHolder sh : getItem().getSkills())
- + player.removeSkill(sh.getSkill(), false, true);
- + }
- + }
- + }
- }
- Index: java/com/l2jserver/gameserver/model/itemauction/ItemAuctionInstance.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/itemauction/ItemAuctionInstance.java (revision 4930)
- +++ java/com/l2jserver/gameserver/model/itemauction/ItemAuctionInstance.java (working copy)
- @@ -477,8 +477,7 @@
- }
- else
- {
- - item.setOwnerId(bid.getPlayerObjId());
- - item.setLocation(ItemLocation.WAREHOUSE);
- + item.setOwnerId(bid.getPlayerObjId(), ItemLocation.WAREHOUSE);
- item.updateDatabase();
- L2World.getInstance().removeObject(item);
- Index: java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java (revision 4930)
- +++ java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java (working copy)
- @@ -753,8 +753,7 @@
- return null;
- removeItem(item);
- - item.setOwnerId(process, 0, actor, reference);
- - item.setLocation(ItemLocation.VOID);
- + item.setOwnerId(process, 0, actor, reference, ItemLocation.VOID);
- item.setLastChange(L2ItemInstance.REMOVED);
- item.updateDatabase();
- Index: java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java (revision 4930)
- +++ java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java (working copy)
- @@ -224,8 +224,7 @@
- // If item hasn't be found in inventory, create new one
- else
- {
- - item.setOwnerId(process, getOwnerId(), actor, reference);
- - item.setLocation(getBaseLocation());
- + item.setOwnerId(process, getOwnerId(), actor, reference, getBaseLocation());
- item.setLastChange((L2ItemInstance.ADDED));
- // Add item in inventory
- @@ -280,8 +279,7 @@
- }
- item = ItemTable.getInstance().createItem(process, itemId, template.isStackable() ? count : 1, actor, reference);
- - item.setOwnerId(getOwnerId());
- - item.setLocation(getBaseLocation());
- + item.setOwnerId(getOwnerId(), getBaseLocation());
- item.setLastChange(L2ItemInstance.ADDED);
- // Add item in inventory
- Index: java/com/l2jserver/gameserver/network/clientpackets/RequestPostAttachment.java
- ===================================================================
- --- java/com/l2jserver/gameserver/network/clientpackets/RequestPostAttachment.java (revision 4930)
- +++ java/com/l2jserver/gameserver/network/clientpackets/RequestPostAttachment.java (working copy)
- @@ -228,8 +228,7 @@
- else
- {
- L2ItemInstance paidAdena = ItemTable.getInstance().createItem("PayMail", ADENA_ID, adena, activeChar, null);
- - paidAdena.setOwnerId(msg.getSenderId());
- - paidAdena.setLocation(ItemLocation.INVENTORY);
- + paidAdena.setOwnerId(msg.getSenderId(), ItemLocation.INVENTORY);
- paidAdena.updateDatabase(true);
- L2World.getInstance().removeObject(paidAdena);
- }
- Index: java/com/l2jserver/gameserver/templates/item/L2Item.java
- ===================================================================
- --- java/com/l2jserver/gameserver/templates/item/L2Item.java (revision 4930)
- +++ java/com/l2jserver/gameserver/templates/item/L2Item.java (working copy)
- @@ -184,6 +184,7 @@
- protected int _type1; // needed for item list (inventory)
- protected int _type2; // different lists for armor, weapon, etc
- + protected boolean _isInventorySkill;
- protected Elementals[] _elementals = null;
- protected FuncTemplate[] _funcTemplates;
- protected EffectTemplate[] _effectTemplates;
- @@ -223,6 +224,7 @@
- _depositable = set.getBool("is_depositable", true);
- _questItem = set.getBool("is_questitem", false);
- _freightable = set.getBool("is_freightable", false);
- + _isInventorySkill = set.getBool("is_inventory_skill", false);
- //_immediate_effect - herb
- _ex_immediate_effect = set.getInteger("ex_immediate_effect", 0) > 0;
- @@ -357,6 +359,15 @@
- }
- /**
- + * Returns if the item's skills are added while item is at the player's inventory.
- + * @return boolean
- + */
- + public final boolean isInventorySkill()
- + {
- + return _isInventorySkill;
- + }
- +
- + /**
- * Returns the weight of the item
- * @return int
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement