fix: correct weapon ObjectClass IDs (1, 9, 31 not 6, 7, 8)

DECAL ObjectClass enum: MeleeWeapon=1, MissileWeapon=9, WandStaffOrb=31.
The weapon_only filter was using Food=6, Money=7, Misc=8 — completely
wrong classes. Also removed max_damage>0 requirement so weapons show
even before combat stats are populated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-04-08 17:35:09 +02:00
parent 1e9dffb65b
commit 35a11d0cf1

View file

@ -3238,9 +3238,9 @@ async def search_items(
# Jewelry: ObjectClass 4 (Jewelry) - rings, bracelets, necklaces, amulets
conditions.append("object_class = 4")
elif weapon_only:
# Weapons: ObjectClass 6 (MeleeWeapon), 7 (MissileWeapon), 8 (Caster) with max_damage > 0
# Weapons: ObjectClass 1 (MeleeWeapon), 9 (MissileWeapon), 31 (WandStaffOrb)
conditions.append(
"(object_class IN (6, 7, 8) AND COALESCE(max_damage, 0) > 0)"
"object_class IN (1, 9, 31)"
)
elif clothing_only:
# Clothing: ObjectClass 3 (Clothing) - shirts and pants only, exclude cloaks and robes