Fix Equipment modal and json filter
This commit is contained in:
@@ -40,6 +40,30 @@ const DEFAULT_USER_STATS = {
|
|||||||
clothing: "None",
|
clothing: "None",
|
||||||
stored: {},
|
stored: {},
|
||||||
assets: "None"
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -525,7 +525,8 @@ export async function onMessageReceived(data) {
|
|||||||
// Remove the tracker code blocks from the visible message
|
// Remove the tracker code blocks from the visible message
|
||||||
let cleanedMessage = responseText;
|
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)
|
// Remove old text format code blocks (legacy support)
|
||||||
cleanedMessage = cleanedMessage.replace(/```[^`]*?Stats\s*\n\s*---[^`]*?```\s*/gi, '');
|
cleanedMessage = cleanedMessage.replace(/```[^`]*?Stats\s*\n\s*---[^`]*?```\s*/gi, '');
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ function generateItemId() {
|
|||||||
* Updates lastGeneratedData and committedTrackerData to include current equipment state
|
* Updates lastGeneratedData and committedTrackerData to include current equipment state
|
||||||
*/
|
*/
|
||||||
function updateEquipmentData() {
|
function updateEquipmentData() {
|
||||||
const equipment = extensionSettings.userStats.equipment;
|
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
|
||||||
const currentData = lastGeneratedData.userStats || committedTrackerData.userStats;
|
const currentData = lastGeneratedData.userStats || committedTrackerData.userStats;
|
||||||
|
|
||||||
if (currentData) {
|
if (currentData) {
|
||||||
@@ -153,7 +153,7 @@ export function showCreateModal() {
|
|||||||
* @param {string} itemId - ID of the item to edit
|
* @param {string} itemId - ID of the item to edit
|
||||||
*/
|
*/
|
||||||
export function showEditModal(itemId) {
|
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);
|
const item = equipment.items.find(i => i.id === itemId);
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
|
|
||||||
@@ -363,7 +363,7 @@ export function saveEquipmentItem() {
|
|||||||
stats[attr] = Math.max(1, Math.min(20, val));
|
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)
|
// Migrate old types (ring1-ring10 -> ring, accessory1-3 -> accessory)
|
||||||
migrateItemTypes(equipment.items);
|
migrateItemTypes(equipment.items);
|
||||||
@@ -423,7 +423,7 @@ export function saveEquipmentItem() {
|
|||||||
* @param {string} itemId - ID of the item to equip
|
* @param {string} itemId - ID of the item to equip
|
||||||
*/
|
*/
|
||||||
export function equipItem(itemId) {
|
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);
|
const item = equipment.items.find(i => i.id === itemId);
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
|
|
||||||
@@ -454,7 +454,7 @@ export function equipItem(itemId) {
|
|||||||
* @param {string} slotId - The slot to unequip from
|
* @param {string} slotId - The slot to unequip from
|
||||||
*/
|
*/
|
||||||
export function unequipItem(slotId) {
|
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);
|
const item = equipment.items.find(i => i.slot === slotId);
|
||||||
if (item) {
|
if (item) {
|
||||||
item.slot = null;
|
item.slot = null;
|
||||||
@@ -473,7 +473,7 @@ export function unequipItem(slotId) {
|
|||||||
* @param {string} itemId - ID of the item to delete
|
* @param {string} itemId - ID of the item to delete
|
||||||
*/
|
*/
|
||||||
export function deleteItem(itemId) {
|
export function deleteItem(itemId) {
|
||||||
const equipment = extensionSettings.userStats.equipment;
|
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
|
||||||
|
|
||||||
// Unequip if currently equipped
|
// Unequip if currently equipped
|
||||||
const item = equipment.items.find(i => i.id === itemId);
|
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
|
* @returns {Object} Map of attribute ID to total bonus value
|
||||||
*/
|
*/
|
||||||
export function getEquipmentBonuses() {
|
export function getEquipmentBonuses() {
|
||||||
const equipment = extensionSettings.userStats.equipment;
|
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
|
||||||
const bonuses = {};
|
const bonuses = {};
|
||||||
const items = equipment.items || [];
|
const items = equipment.items || [];
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ function renderSlot(slotDef, item) {
|
|||||||
* @returns {string} Complete HTML for the equipment section
|
* @returns {string} Complete HTML for the equipment section
|
||||||
*/
|
*/
|
||||||
function generateEquipmentHTML() {
|
function generateEquipmentHTML() {
|
||||||
const equipment = extensionSettings.userStats.equipment;
|
const equipment = extensionSettings.userStats?.equipment || { items: [], slots: {} };
|
||||||
const slots = equipment.slots || {};
|
const slots = equipment.slots || {};
|
||||||
const items = equipment.items || [];
|
const items = equipment.items || [];
|
||||||
|
|
||||||
|
|||||||
@@ -12183,7 +12183,7 @@ body.documentstyle .rpg-inline-thoughts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.rpg-equipment-modal-content {
|
.rpg-equipment-modal-content {
|
||||||
background: var(--SmartThemeDialogBgColor);
|
background: var(--SmartThemeDialogBgColor, #1e1e2e);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
width: 90%;
|
width: 90%;
|
||||||
max-width: 420px;
|
max-width: 420px;
|
||||||
|
|||||||
Reference in New Issue
Block a user