Adapting Appearance Stone system from L2jServer.

This commit is contained in:
mobius
2015-02-25 17:57:47 +00:00
parent a3c6227823
commit 7068b969e5
41 changed files with 2830 additions and 717 deletions

View File

@@ -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());

View File

@@ -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);
}
}
}