forked from MagicBane/Server
item_defense_rating, item_bulk_factor and item_primary_attr are Item-only fields, not on CObjectTemplate, so their consumers read engine.parsers.objects.ItemTemplate._items by templateID, like the RuneTemplate and DeedTemplate consumers. The primary attr checks compare with == because the cache template leaves the attr null (legacy: None) on non-weapons. Parity (offline, scripts/p14.py, 7586 templates): 0 differences in item_defense_rating, item_bulk_factor and item_primary_attr. Every DB ARMOR and WEAPON template is in the ITEM folder, so both sides gate these fields on the same templates. No value changes expected. JSON-Refactor-Plan Task 1.4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>