Read item skill requirements from the cache template

validForSkills, isShield, the guard attack rating and the NPC vendor skill
filter read getItemSkillReq. Offline parity (p15d.py, 7586 rows): 0
differences. No template lists "Cloth" in item_skill_req and none has more
than one entry, so file order vs HashMap order is moot.

Value changes: none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MagicBotandClaude Opus 5.5 committed 2026-10-19 14:28:32 -04:00
1 parent 5b3c511b55
commit 7abc63ffc3
3 files changed
+9 -9

No files matched your search

+5 -5
View File
@@ -71,12 +71,12 @@ public enum ItemManager {
CharacterSkill characterSkill;
if (item.template.item_skill_required.isEmpty())
if (item.template.cacheTemplate.getItemSkillReq().isEmpty())
return true;
for (String skillRequired : item.template.item_skill_required.keySet()) {
for (String skillRequired : item.template.cacheTemplate.getItemSkillReq().keySet()) {
int required_value = item.template.item_skill_required.get(skillRequired);
int required_value = item.template.cacheTemplate.getItemSkillReq().get(skillRequired);
characterSkill = skills.get(skillRequired);
if (characterSkill == null)
@@ -108,7 +108,7 @@ public enum ItemManager {
public static boolean isShield(Item item) {
if (item.template.item_skill_required.containsKey("Block"))
if (item.template.cacheTemplate.getItemSkillReq().containsKey("Block"))
return true;
return false;
@@ -116,7 +116,7 @@ public enum ItemManager {
public static boolean isShield(ItemTemplate template) {
if (template.item_skill_required.containsKey("Block"))
if (template.cacheTemplate.getItemSkillReq().containsKey("Block"))
return true;
return false;
+2 -2
View File
@@ -362,9 +362,9 @@ public enum NPCManager {
int strength = guard.getStatStrCurrent();
int baseAtr = guard.mobBase.getAttackRating();
if (guard.charItemManager.equipped.get(mbEnums.EquipSlotType.RHELD) != null)
guard.atrHandOne = baseAtr + (int) ((strength * 0.5f) + ((int) guard.charItemManager.equipped.get(mbEnums.EquipSlotType.RHELD).template.item_skill_required.values().toArray()[0] * 4) + ((int) guard.charItemManager.equipped.get(mbEnums.EquipSlotType.RHELD).template.item_skill_required.values().toArray()[0] * 3));
guard.atrHandOne = baseAtr + (int) ((strength * 0.5f) + ((int) guard.charItemManager.equipped.get(mbEnums.EquipSlotType.RHELD).template.cacheTemplate.getItemSkillReq().values().toArray()[0] * 4) + ((int) guard.charItemManager.equipped.get(mbEnums.EquipSlotType.RHELD).template.cacheTemplate.getItemSkillReq().values().toArray()[0] * 3));
else if (guard.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD) != null && !ItemManager.isShield(guard.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD).template))
guard.atrHandTwo = baseAtr + (int) ((strength * 0.5f) + ((int) guard.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD).template.item_skill_required.values().toArray()[0] * 4) + ((int) guard.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD).template.item_skill_required.values().toArray()[0] * 3));
guard.atrHandTwo = baseAtr + (int) ((strength * 0.5f) + ((int) guard.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD).template.cacheTemplate.getItemSkillReq().values().toArray()[0] * 4) + ((int) guard.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD).template.cacheTemplate.getItemSkillReq().values().toArray()[0] * 3));
else
guard.atrHandOne = baseAtr;
}
+2 -2
View File
@@ -966,8 +966,8 @@ public class NPC extends AbstractCharacter {
for (Integer itemID : fullItemList) {
itemTemplate = ItemTemplate.templates.get(itemID);
if (itemTemplate.item_skill_required.values().iterator().hasNext())
skillRequired = itemTemplate.item_skill_required.values().iterator().next();
if (itemTemplate.cacheTemplate.getItemSkillReq().values().iterator().hasNext())
skillRequired = itemTemplate.cacheTemplate.getItemSkillReq().values().iterator().next();
boolean exclude = skillRequired == 0 && ItemTemplate.templates.get(itemID).cacheTemplate.getItemType().equals(ItemType.WEAPON);
if (skillRequired <= maxSkill && !exclude)