Adapting Appearance Stone system from L2jServer.
This commit is contained in:
@@ -358,6 +358,7 @@ public abstract class Inventory extends ItemContainer
|
||||
|
||||
if (itemSkill != null)
|
||||
{
|
||||
itemSkill.setReferenceItemId(item.getId());
|
||||
player.addSkill(itemSkill, false);
|
||||
|
||||
if (itemSkill.isActive())
|
||||
@@ -454,7 +455,6 @@ public abstract class Inventory extends ItemContainer
|
||||
|
||||
if (itemSkill != null)
|
||||
{
|
||||
itemSkill.setReferenceItemId(item.getId());
|
||||
player.addSkill(itemSkill, false);
|
||||
|
||||
if (itemSkill.isActive())
|
||||
@@ -644,6 +644,16 @@ public abstract class Inventory extends ItemContainer
|
||||
}
|
||||
}
|
||||
|
||||
final L2ArmorSet visualArmorSet = ArmorSetsData.getInstance().getSet(chestItem.getVisualId());
|
||||
if ((visualArmorSet != null) && visualArmorSet.isVisual())
|
||||
{
|
||||
int pieces = visualArmorSet.getVisualPiecesCount(player);
|
||||
if (pieces >= visualArmorSet.getMinimumPieces())
|
||||
{
|
||||
addSkills(player, item, visualArmorSet.getSkills(), visualArmorSet.getPiecesCount(player));
|
||||
}
|
||||
}
|
||||
|
||||
if (update)
|
||||
{
|
||||
player.sendSkillList();
|
||||
@@ -687,6 +697,11 @@ public abstract class Inventory extends ItemContainer
|
||||
{
|
||||
remove = true;
|
||||
}
|
||||
|
||||
if (removeArmorsetBonus(player, ArmorSetsData.getInstance().getSet(item.getVisualId())))
|
||||
{
|
||||
remove = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -697,7 +712,7 @@ public abstract class Inventory extends ItemContainer
|
||||
}
|
||||
|
||||
final L2ArmorSet armorSet = ArmorSetsData.getInstance().getSet(chestItem.getId());
|
||||
if (armorSet != null)
|
||||
if ((armorSet != null) && !armorSet.isVisual())
|
||||
{
|
||||
if (armorSet.containItem(slot, item.getId())) // removed part of set
|
||||
{
|
||||
@@ -720,6 +735,25 @@ public abstract class Inventory extends ItemContainer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final L2ArmorSet visualArmorSet = ArmorSetsData.getInstance().getSet(chestItem.getVisualId());
|
||||
if ((visualArmorSet != null) && visualArmorSet.isVisual())
|
||||
{
|
||||
if (visualArmorSet.containItem(slot, item.getVisualId())) // removed part of set
|
||||
{
|
||||
if (removeArmorsetBonus(player, visualArmorSet))
|
||||
{
|
||||
remove = true;
|
||||
}
|
||||
}
|
||||
else if (visualArmorSet.containShield(item.getVisualId())) // removed shield
|
||||
{
|
||||
if (removeShieldSkills(player, visualArmorSet.getShieldSkills()))
|
||||
{
|
||||
remove = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (remove)
|
||||
@@ -1788,7 +1822,7 @@ public abstract class Inventory extends ItemContainer
|
||||
public void restore()
|
||||
{
|
||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement statement = con.prepareStatement("SELECT object_id, item_id, count, enchant_level, loc, loc_data, custom_type1, custom_type2, mana_left, time, appearance_id, appearance_time FROM items WHERE owner_id=? AND (loc=? OR loc=?) ORDER BY loc_data"))
|
||||
PreparedStatement statement = con.prepareStatement("SELECT object_id, item_id, count, enchant_level, loc, loc_data, custom_type1, custom_type2, mana_left, time FROM items WHERE owner_id=? AND (loc=? OR loc=?) ORDER BY loc_data"))
|
||||
{
|
||||
statement.setInt(1, getOwnerId());
|
||||
statement.setString(2, getBaseLocation().name());
|
||||
|
@@ -40,6 +40,7 @@ import com.l2jserver.gameserver.model.events.impl.character.player.inventory.OnP
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.inventory.OnPlayerItemTransfer;
|
||||
import com.l2jserver.gameserver.model.items.L2Item;
|
||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jserver.gameserver.model.variables.ItemVariables;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExAdenaInvenCount;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExUserInfoInvenWeight;
|
||||
@@ -880,7 +881,7 @@ public class PcInventory extends Inventory
|
||||
{
|
||||
int[][] paperdoll = new int[33][4];
|
||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement statement2 = con.prepareStatement("SELECT object_id,item_id,loc_data,enchant_level,appearance_id FROM items WHERE owner_id=? AND loc='PAPERDOLL'"))
|
||||
PreparedStatement statement2 = con.prepareStatement("SELECT object_id,item_id,loc_data,enchant_level FROM items WHERE owner_id=? AND loc='PAPERDOLL'"))
|
||||
{
|
||||
statement2.setInt(1, objectId);
|
||||
try (ResultSet invdata = statement2.executeQuery())
|
||||
@@ -888,13 +889,11 @@ public class PcInventory extends Inventory
|
||||
while (invdata.next())
|
||||
{
|
||||
int slot = invdata.getInt("loc_data");
|
||||
final ItemVariables vars = new ItemVariables(invdata.getInt("object_id"));
|
||||
paperdoll[slot][0] = invdata.getInt("object_id");
|
||||
paperdoll[slot][1] = invdata.getInt("item_id");
|
||||
paperdoll[slot][2] = invdata.getInt("enchant_level");
|
||||
paperdoll[slot][3] = invdata.getInt("appearance_id");
|
||||
/*
|
||||
* if (slot == Inventory.PAPERDOLL_RHAND) { paperdoll[Inventory.PAPERDOLL_RHAND][0] = invdata.getInt("object_id"); paperdoll[Inventory.PAPERDOLL_RHAND][1] = invdata.getInt("item_id"); paperdoll[Inventory.PAPERDOLL_RHAND][2] = invdata.getInt("enchant_level"); }
|
||||
*/
|
||||
paperdoll[slot][3] = vars.getInt(ItemVariables.VISUAL_ID, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user