Если речь идет про запрет одевания однотипных таликов, имеющих разный itemId, то это решается элементарно
для предметов необходимо ввести к примеру парметр groupId, дать однотипным таликам одну и ту же группу и в проверке возможности одеть талик проверять не только по совпадению по itemId, но и по совпадению groupId.
пример для овероподобных, из метода checkIfCanEquip
Код:
if (targetSlot == ItemTemplate.SLOT_DECO)
{
int count = player.getTalismanCount();
if (count <= 0)
return new SystemMessage(SystemMsg.YOU_CANNOT_WEAR_S1_BECAUSE_YOU_ARE_NOT_WEARING_A_BRACELET).addItemName(itemId);
ItemInstance deco;
int groupId = item.getTemplate().getGroupId();
for (int slot = Inventory.PAPERDOLL_DECO1; slot <= Inventory.PAPERDOLL_DECO6; slot++)
{
deco = player.getInventory().getPaperdollItem(slot);
if (deco != null)
{
if (deco == item)
return null; // талисман уже одет и количество слотов больше нуля
// Проверяем на количество слотов и одинаковые талисманы (одинаковые по ид или находящиеся в одной группе)
if (--count <= 0 || deco.getItemId() == itemId || (groupId > 0 && deco.getTemplate().getGroupId() == groupId))
return new SystemMessage(SystemMsg.YOU_CANNOT_EQUIP_S1_BECAUSE_YOU_DO_NOT_HAVE_ANY_AVAILABLE_SLOTS).addItemName(itemId);
}
}
}