// Global caches for resolved features to keep getters fast const _featureCache = new Map(); /** * Scans the Daggerheart system config for any weapon features starting with "Ikonis:". * These are treated as available augments for our slot system. */ export function getAugments() { // We get the resolved features from CONFIG.DH.ITEM which includes system + homebrew const allFeatures = CONFIG.DH.ITEM.allWeaponFeatures() || {}; const augments = []; for (const [id, feature] of Object.entries(allFeatures)) { const name = feature.label || feature.name || ""; if (name.startsWith("Ikonis:")) { let desc = feature.description || ""; // Replace common line-breaking tags with actual newlines before stripping desc = desc.replace(/<\/p>|/gi, '\n'); desc = desc.replace(/<[^>]*>?/gm, '').trim(); const lines = desc.split('\n').map(l => l.trim()).filter(l => l.length > 0); const costLine = lines.find(l => l.toLowerCase().startsWith("cost:")); const effectLine = lines.find(l => !l.toLowerCase().startsWith("cost:")); augments.push({ id: id, name: name.replace("Ikonis:", "").trim(), fullName: name, img: feature.img || "systems/daggerheart/assets/icons/documents/items/chip.svg", effect: effectLine || "Native Feature", cost: costLine || "" }); } } return augments; } export function getSlotCount(item) { const flags = item.getFlag('dh-ikonis') || {}; if (typeof flags.slotOverride === "number") return flags.slotOverride; let tier = item.system?.tier?.value; if (tier === undefined) tier = item.system?.tier; const tierNum = parseInt(tier) || 1; const settingKey = `slotsTier${tierNum}`; try { return game.settings.get('dh-ikonis', settingKey); } catch (e) { return tierNum >= 2 ? 3 : 2; } } /** * Patches the system's weapon data preparation to handle slot counts. */ export function patchIkonisLogic() { // Current slot logic is handled via getSlotCount in the sheet context } /** * Placeholder for character patching - no longer needed for virtual items */ export function patchDhCharacter(DhCharacter) { // Injection is deprecated in favor of native weapon features } export function patchDHWeapon() { // Future: Add damage type override logic here }