Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 35cffa2696 |
+19
-28
@@ -40,30 +40,6 @@ 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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1040,7 +1016,23 @@ export function loadChatData() {
|
|||||||
if (!savedData) {
|
if (!savedData) {
|
||||||
// Reset to defaults if no metadata exists, then try to rebuild from message swipe data below.
|
// Reset to defaults if no metadata exists, then try to rebuild from message swipe data below.
|
||||||
updateExtensionSettings({
|
updateExtensionSettings({
|
||||||
userStats: cloneSerializable(DEFAULT_USER_STATS),
|
userStats: {
|
||||||
|
health: 100,
|
||||||
|
satiety: 100,
|
||||||
|
energy: 100,
|
||||||
|
hygiene: 100,
|
||||||
|
arousal: 0,
|
||||||
|
mood: '😐',
|
||||||
|
conditions: 'None',
|
||||||
|
// Use v2 inventory format for defaults
|
||||||
|
inventory: {
|
||||||
|
version: 2,
|
||||||
|
onPerson: "None",
|
||||||
|
clothing: "None",
|
||||||
|
stored: {},
|
||||||
|
assets: "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
quests: {
|
quests: {
|
||||||
main: "None",
|
main: "None",
|
||||||
optional: []
|
optional: []
|
||||||
@@ -1060,10 +1052,9 @@ export function loadChatData() {
|
|||||||
clearThoughtBasedExpressionPortraits();
|
clearThoughtBasedExpressionPortraits();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore stats — merge with defaults to preserve properties like `equipment`
|
// Restore stats
|
||||||
// that may not exist in older saves
|
|
||||||
if (savedData?.userStats) {
|
if (savedData?.userStats) {
|
||||||
extensionSettings.userStats = mergeWithDefaults(DEFAULT_USER_STATS, savedData.userStats);
|
extensionSettings.userStats = { ...savedData.userStats };
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore classic stats
|
// Restore classic stats
|
||||||
|
|||||||
@@ -525,8 +525,7 @@ 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;
|
||||||
|
|
||||||
// Remove JSON code blocks (v3 format) — primary defense, works regardless of regex script
|
// Note: JSON code blocks are hidden from display by regex script (but preserved in message data)
|
||||||
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 || { items: [], slots: {} };
|
const equipment = extensionSettings.userStats.equipment;
|
||||||
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 || { items: [], slots: {} };
|
const equipment = extensionSettings.userStats.equipment;
|
||||||
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 || { items: [], slots: {} };
|
const equipment = extensionSettings.userStats.equipment;
|
||||||
|
|
||||||
// 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 || { items: [], slots: {} };
|
const equipment = extensionSettings.userStats.equipment;
|
||||||
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 || { items: [], slots: {} };
|
const equipment = extensionSettings.userStats.equipment;
|
||||||
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 || { items: [], slots: {} };
|
const equipment = extensionSettings.userStats.equipment;
|
||||||
|
|
||||||
// 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 || { items: [], slots: {} };
|
const equipment = extensionSettings.userStats.equipment;
|
||||||
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 || { items: [], slots: {} };
|
const equipment = extensionSettings.userStats.equipment;
|
||||||
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, #1e1e2e);
|
background: var(--SmartThemeDialogBgColor);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
width: 90%;
|
width: 90%;
|
||||||
max-width: 420px;
|
max-width: 420px;
|
||||||
|
|||||||
Reference in New Issue
Block a user