/* * 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 . */ package com.l2jserver.gameserver.model; import java.util.ArrayList; import java.util.List; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.itemcontainer.Inventory; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; /** * @author Luno */ public final class L2ArmorSet { private int _chestId; private final List _legs; private final List _head; private final List _gloves; private final List _feet; private final List _shield; private final List _skills; private final List _shieldSkills; private final List _enchant6Skill; private int _con; private int _dex; private int _str; private int _men; private int _wit; private int _int; public L2ArmorSet() { _legs = new ArrayList<>(); _head = new ArrayList<>(); _gloves = new ArrayList<>(); _feet = new ArrayList<>(); _shield = new ArrayList<>(); _skills = new ArrayList<>(); _shieldSkills = new ArrayList<>(); _enchant6Skill = new ArrayList<>(); } public void addChest(int id) { _chestId = id; } public void addLegs(int id) { _legs.add(id); } public void addHead(int id) { _head.add(id); } public void addGloves(int id) { _gloves.add(id); } public void addFeet(int id) { _feet.add(id); } public void addShield(int id) { _shield.add(id); } public void addSkill(SkillHolder holder) { _skills.add(holder); } public void addShieldSkill(SkillHolder holder) { _shieldSkills.add(holder); } public void addEnchant6Skill(SkillHolder holder) { _enchant6Skill.add(holder); } public void addCon(int val) { _con = val; } public void addDex(int val) { _dex = val; } public void addStr(int val) { _str = val; } public void addMen(int val) { _men = val; } public void addWit(int val) { _wit = val; } public void addInt(int val) { _int = val; } /** * 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(_chestId, legs, head, gloves, feet); } public boolean containAll(int chest, int legs, int head, int gloves, int feet) { if (_chestId != 0 &&_chestId != chest) return false; if (!_legs.isEmpty() && !_legs.contains(legs)) return false; if (!_head.isEmpty() && !_head.contains(head)) return false; if (!_gloves.isEmpty() && !_gloves.contains(gloves)) return false; if (!_feet.isEmpty() && !_feet.contains(feet)) return false; return true; } public boolean containItem(int slot, int itemId) { switch (slot) { case Inventory.PAPERDOLL_CHEST: return _chestId == itemId; case Inventory.PAPERDOLL_LEGS: return _legs.contains(itemId); case Inventory.PAPERDOLL_HEAD: return _head.contains(itemId); case Inventory.PAPERDOLL_GLOVES: return _gloves.contains(itemId); case Inventory.PAPERDOLL_FEET: return _feet.contains(itemId); default: return false; } } public int getChestId() { return _chestId; } public List getSkills() { return _skills; } public boolean containShield(L2PcInstance player) { Inventory inv = player.getInventory(); L2ItemInstance shieldItem = inv.getPaperdollItem(Inventory.PAPERDOLL_LHAND); return (shieldItem != null && _shield.contains(Integer.valueOf(shieldItem.getItemId()))); } public boolean containShield(int shield_id) { if (_shield.isEmpty()) return false; return _shield.contains(Integer.valueOf(shield_id)); } public List getShieldSkillId() { return _shieldSkills; } public List getEnchant6skillId() { return _enchant6Skill; } /** * @param player * @return true if all parts of set are enchanted to +6 or more */ 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 == null || chestItem.getEnchantLevel() < 6) return false; if (!_legs.isEmpty() && (legsItem == null || legsItem.getEnchantLevel() < 6)) return false; if (!_gloves.isEmpty() && (glovesItem == null || glovesItem.getEnchantLevel() < 6)) return false; if (!_head.isEmpty() && (headItem == null || headItem.getEnchantLevel() < 6)) return false; if (!_feet.isEmpty() && (feetItem == null || feetItem.getEnchantLevel() < 6)) return false; return true; } public int getCON() { return _con; } public int getDEX() { return _dex; } public int getSTR() { return _str; } public int getMEN() { return _men; } public int getWIT() { return _wit; } public int getINT() { return _int; } }