Kelsidavis-WoWee/tools/editor/cli_item_materials_catalog.hpp

13 lines
239 B
C++
Raw Normal View History

feat(editor): add WMAT (Item Material) open catalog format Open replacement for Blizzard's Material.dbc plus the Material and SheatheType fields in ItemDisplayInfo.dbc. Defines the material categorization that items reference (Cloth / Leather / Mail / Plate / Wood / Steel / Crystal / Ethereal / etc), each with its own foley sound (played on item use), impact sound (played on drop / hit), weight category, and material-property flags (IsBreakable / IsMagical / IsFlammable / IsConductive / IsHolyCharged / IsCursed). The engine plays a sword's metallic clang from impactSoundId when it hits a stone wall, but a cloth tabard makes no such sound — the difference is exactly the material assigned by this catalog. Every armor and weapon item in WIT references a materialId here. Twelve materialKind values cover the standard armor classes (Cloth/Leather/Mail/Plate/Hide), structural materials (Wood / Stone / Metal), and special categories (Liquid / Organic / Crystal / Ethereal). Three weight tiers (Light / Medium / Heavy) control encumbrance UI hints. Cross-references back to WSND (foleySoundId / impactSoundId reference WSND sound entries) and forward to WIT (item entries reference materialId here). Three preset emitters: --gen-mat (5 armor materials matching WoW's armor classes), --gen-mat-weapon (5 weapon materials from breakable+flammable Wood through enchanted endgame steel), --gen-mat-magical (4 magical materials with special flags including the IsHolyCharged anti-undead property). Validation enforces id+name presence, materialKind 0..11, weightCategory 0..2, no duplicate ids; warns on: - IsHolyCharged + IsCursed both set (engine picks one, typically IsCursed wins) - Plate kind that's not Heavy weight (canonical violation) - Cloth kind that's not Light weight (canonical violation) Wired through the cross-format table; WMAT appears automatically in all 11 cross-format utilities. Format count 75 -> 76; CLI flag count 943 -> 948.
2026-05-09 22:14:44 -07:00
#pragma once
namespace wowee {
namespace editor {
namespace cli {
bool handleItemMaterialsCatalog(int& i, int argc, char** argv,
int& outRc);
} // namespace cli
} // namespace editor
} // namespace wowee