/*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If
* not, see <http://www.gnu.org/licenses/>.
*/
package silentium.gameserver.model;
import silentium.gameserver.model.actor.instance.L2PcInstance;
import silentium.gameserver.model.itemcontainer.Inventory;
/**
* @author Luno
*/
public final class L2ArmorSet
{
private final int _chest;
private final int _legs;
private final int _head;
private final int _gloves;
private final int _feet;
private final int _skillId;
private final int _shield;
private final int _shieldSkillId;
private final int _enchant6Skill;
public L2ArmorSet(int chest, int legs, int head, int gloves, int feet, int skill_id, int shield, int shield_skill_id, int enchant6skill)
{
_chest = chest;
_legs = legs;
_head = head;
_gloves = gloves;
_feet = feet;
_skillId = skill_id;
_shield = shield;
_shieldSkillId = shield_skill_id;
_enchant6Skill = enchant6skill;
}
/**
* Checks if player have equipped all items from set (not checking shield)
*
* @param player
* whose inventory is being checked
* @return True if player equips whole set
*/
public boolean containAll(L2PcInstance player)
{
Inventory inv = player.getInventory();
L2ItemInstance legsItem = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
L2ItemInstance headItem = inv.getPaperdollItem(Inventory.PAPERDOLL_HEAD);
L2ItemInstance glovesItem = inv.getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
L2ItemInstance feetItem = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
int legs = 0;
int head = 0;
int gloves = 0;
int feet = 0;
if (legsItem != null)
legs = legsItem.getItemId();
if (headItem != null)
head = headItem.getItemId();
if (glovesItem != null)
gloves = glovesItem.getItemId();
if (feetItem != null)
feet = feetItem.getItemId();
return containAll(_chest, legs, head, gloves, feet);
}
public boolean containAll(int chest, int legs, int head, int gloves, int feet)
{
if (_chest != 0 && _chest != chest)
return false;
if (_legs != 0 && _legs != legs)
return false;
if (_head != 0 && _head != head)
return false;
if (_gloves != 0 && _gloves != gloves)
return false;
if (_feet != 0 && _feet != feet)
return false;
return true;
}
public boolean containItem(int slot, int itemId)
{
switch (slot)
{
case Inventory.PAPERDOLL_CHEST:
return _chest == itemId;
case Inventory.PAPERDOLL_LEGS:
return _legs == itemId;
case Inventory.PAPERDOLL_HEAD:
return _head == itemId;
case Inventory.PAPERDOLL_GLOVES:
return _gloves == itemId;
case Inventory.PAPERDOLL_FEET:
return _feet == itemId;
default:
return false;
}
}
public int getSkillId()
{
return _skillId;
}
public boolean containShield(L2PcInstance player)
{
Inventory inv = player.getInventory();
L2ItemInstance shieldItem = inv.getPaperdollItem(Inventory.PAPERDOLL_LHAND);
if (shieldItem != null && shieldItem.getItemId() == _shield)
return true;
return false;
}
public boolean containShield(int shield_id)
{
if (_shield == 0)
return false;
return _shield == shield_id;
}
public int getShieldSkillId()
{
return _shieldSkillId;
}
public int getEnchant6skillId()
{
return _enchant6Skill;
}
/**
* Checks if all parts of set are enchanted to +6 or more
*
* @param player
* @return
*/
public boolean isEnchanted6(L2PcInstance player)
{
// Player don't have full set
if (!containAll(player))
return false;
Inventory inv = player.getInventory();
L2ItemInstance chestItem = inv.getPaperdollItem(Inventory.PAPERDOLL_CHEST);
L2ItemInstance legsItem = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
L2ItemInstance headItem = inv.getPaperdollItem(Inventory.PAPERDOLL_HEAD);
L2ItemInstance glovesItem = inv.getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
L2ItemInstance feetItem = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
if (chestItem.getEnchantLevel() < 6)
return false;
if (_legs != 0 && legsItem.getEnchantLevel() < 6)
return false;
if (_gloves != 0 && glovesItem.getEnchantLevel() < 6)
return false;
if (_head != 0 && headItem.getEnchantLevel() < 6)
return false;
if (_feet != 0 && feetItem.getEnchantLevel() < 6)
return false;
return true;
}
}