That is from EquipmentRequest.parseEquipment.
Code:
String descId = matcher.group(1) != null ? matcher.group(2) : "";
String name = matcher.group(3).trim();
int itemId = ItemDatabase.getItemIdFromDescription(descId);
AdventureResult item;
if (slot == EquipmentManager.HOLSTER || EquipmentDatabase.contains(itemId)) {
item = ItemPool.get(itemId);
} else {
RequestLogger.printLine("Found unknown equipped item: \"" + name + "\" descid = " + descId);
"ittah bittah hookah" descid = 279445768
That is correct. I assume ItemDatabase.getItemIdFromDescription(descId); returned 4519.
What is EquipmentDatabase.contains(itemId)?
Code:
public static final boolean contains(final int itemId) {
return itemId > 0 && EquipmentDatabase.statRequirements.get(itemId) != null;
}
Since when do familiar items have stat requirements?
There are no familiar items in equipment.txt.
Hmm. Didn't we have a recent change regarding EquipmentDatabase.statRequirements?
Yes. PR #865 changed:
Code:
private static final StringArray statRequirements = new StringArray();
to this:
Code:
private static final Map<Integer, String> statRequirements = new HashMap<>();
Maybe EquipmentRequest.parseEquipment should make an exception for both the "holster" slot and the "familiar item" slot.
Or maybe EquipmentDatabase.contains could have a better method which doesn't depend only on equipment which is in equipment.txt.
(Maybe we should have a DebugDatabase method which will look at all items and verify that every "equipment" item except for slots that do not have equipment requirements is in equipment.txt?)