Fix Equipment modal and json filter

This commit is contained in:
2026-07-03 11:53:35 +02:00
parent 130998105a
commit 9720a7befe
5 changed files with 35 additions and 10 deletions
+24
View File
@@ -40,6 +40,30 @@ const DEFAULT_USER_STATS = {
clothing: "None",
stored: {},
assets: "None"
},
equipment: {
items: [],
slots: {
helmet: null,
ring1: null,
ring2: null,
ring3: null,
ring4: null,
ring5: null,
ring6: null,
ring7: null,
ring8: null,
ring9: null,
ring10: null,
necklace: null,
bodyArmor: null,
pants: null,
shoes: null,
gloves: null,
accessory1: null,
accessory2: null,
accessory3: null
}
}
};
+2 -1
View File
@@ -525,7 +525,8 @@ export async function onMessageReceived(data) {
// Remove the tracker code blocks from the visible message
let cleanedMessage = responseText;
// Note: JSON code blocks are hidden from display by regex script (but preserved in message data)
// Remove JSON code blocks (v3 format) — primary defense, works regardless of regex script
cleanedMessage = cleanedMessage.replace(/```(?:json|markdown)?\s*[\s\S]*?```/gim, '');
// Remove old text format code blocks (legacy support)
cleanedMessage = cleanedMessage.replace(/```[^`]*?Stats\s*\n\s*---[^`]*?```\s*/gi, '');
+7 -7
View File
@@ -77,7 +77,7 @@ function generateItemId() {
* Updates lastGeneratedData and committedTrackerData to include current equipment state
*/
function updateEquipmentData() {
const equipment = extensionSettings.userStats.equipment;
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
const currentData = lastGeneratedData.userStats || committedTrackerData.userStats;
if (currentData) {
@@ -153,7 +153,7 @@ export function showCreateModal() {
* @param {string} itemId - ID of the item to edit
*/
export function showEditModal(itemId) {
const equipment = extensionSettings.userStats.equipment;
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
const item = equipment.items.find(i => i.id === itemId);
if (!item) return;
@@ -363,7 +363,7 @@ export function saveEquipmentItem() {
stats[attr] = Math.max(1, Math.min(20, val));
});
const equipment = extensionSettings.userStats.equipment;
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
// Migrate old types (ring1-ring10 -> ring, accessory1-3 -> accessory)
migrateItemTypes(equipment.items);
@@ -423,7 +423,7 @@ export function saveEquipmentItem() {
* @param {string} itemId - ID of the item to equip
*/
export function equipItem(itemId) {
const equipment = extensionSettings.userStats.equipment;
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
const item = equipment.items.find(i => i.id === itemId);
if (!item) return;
@@ -454,7 +454,7 @@ export function equipItem(itemId) {
* @param {string} slotId - The slot to unequip from
*/
export function unequipItem(slotId) {
const equipment = extensionSettings.userStats.equipment;
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
const item = equipment.items.find(i => i.slot === slotId);
if (item) {
item.slot = null;
@@ -473,7 +473,7 @@ export function unequipItem(slotId) {
* @param {string} itemId - ID of the item to delete
*/
export function deleteItem(itemId) {
const equipment = extensionSettings.userStats.equipment;
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
// Unequip if currently equipped
const item = equipment.items.find(i => i.id === itemId);
@@ -497,7 +497,7 @@ export function deleteItem(itemId) {
* @returns {Object} Map of attribute ID to total bonus value
*/
export function getEquipmentBonuses() {
const equipment = extensionSettings.userStats.equipment;
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
const bonuses = {};
const items = equipment.items || [];
+1 -1
View File
@@ -64,7 +64,7 @@ function renderSlot(slotDef, item) {
* @returns {string} Complete HTML for the equipment section
*/
function generateEquipmentHTML() {
const equipment = extensionSettings.userStats.equipment;
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
const slots = equipment.slots || {};
const items = equipment.items || [];
+1 -1
View File
@@ -12183,7 +12183,7 @@ body.documentstyle .rpg-inline-thoughts {
}
.rpg-equipment-modal-content {
background: var(--SmartThemeDialogBgColor);
background: var(--SmartThemeDialogBgColor, #1e1e2e);
border-radius: 8px;
width: 90%;
max-width: 420px;