v0.14.21 - Show purchasable (buy) items in gearSummary
- logGearSummary() now shows 3 sources: 🟢 equipped, 📦 stored, 🛒 purchasable - Highlights buy items NOT already in armory inventory - Summary: Gear DB: 746 total (7 🟢 equipped, 305 📦 stored, 434 🛒 purchasable) - Works with manual HV.scrapeGear() call on Purchase page
This commit is contained in:
parent
5286f66b3e
commit
229d81b86c
5 changed files with 39 additions and 21 deletions
|
|
@ -1,7 +1,7 @@
|
|||
// ==UserScript==
|
||||
// @name HV Unified
|
||||
// @namespace hvunified
|
||||
// @version 0.14.20
|
||||
// @version 0.14.21
|
||||
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
||||
// @author GaboGG + Hermes
|
||||
// @match *://*.hentaiverse.org/*
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
// CONFIG — default settings
|
||||
// ═══════════════════════════════════════════════════════════════════════
|
||||
|
||||
const VERSION = '0.14.20';
|
||||
const VERSION = '0.14.21';
|
||||
|
||||
const CFG = {
|
||||
// — Battle automation
|
||||
|
|
@ -3312,13 +3312,19 @@ function logGearSummary() {
|
|||
const db = getGearDB();
|
||||
const equipped = db.filter(e => e.source === 'character');
|
||||
const armory = db.filter(e => e.source === 'armory');
|
||||
console.log(`%c[HV] 📦 Gear DB: ${db.length} total (${equipped.length} equipped, ${armory.length} armory)`, 'color:#0f0');
|
||||
const buy = db.filter(e => e.source === 'buy');
|
||||
console.log(`%c[HV] 📦 Gear DB: ${db.length} total (${equipped.length} 🟢 equipped, ${armory.length} 📦 stored, ${buy.length} 🛒 purchasable)`, 'color:#0f0');
|
||||
equipped.forEach(item => {
|
||||
console.log(` 🗡 [${item.slotType}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
});
|
||||
armory.forEach(item => {
|
||||
console.log(` 📦 [${item.category}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
console.log(` 🟢 [${item.slotType}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
});
|
||||
if (buy.length > 0) {
|
||||
const used = new Set(armory.map(i => i.id).concat(equipped.filter(i => i.id).map(i => i.id)));
|
||||
const newOnly = buy.filter(i => !used.has(i.id));
|
||||
console.log(`%c 🛒 ${buy.length} purchasable (${newOnly.length} not in armory)`, 'color:#0f0');
|
||||
newOnly.slice(0, 5).forEach(item => {
|
||||
console.log(` 💰 ${item.name} — ${item.price || '?'}${item.stats ? ' (' + Object.keys(item.stats).length + ' stats)' : ''}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ── Parse tooltip HTML string into structured stats ──
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// ==UserScript==
|
||||
// @name HV Unified
|
||||
// @namespace hvunified
|
||||
// @version 0.14.20
|
||||
// @version 0.14.21
|
||||
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
||||
// @author GaboGG + Hermes
|
||||
// @match *://*.hentaiverse.org/*
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
// CONFIG — default settings
|
||||
// ═══════════════════════════════════════════════════════════════════════
|
||||
|
||||
const VERSION = '0.14.20';
|
||||
const VERSION = '0.14.21';
|
||||
|
||||
const CFG = {
|
||||
// — Battle automation
|
||||
|
|
@ -3312,13 +3312,19 @@ function logGearSummary() {
|
|||
const db = getGearDB();
|
||||
const equipped = db.filter(e => e.source === 'character');
|
||||
const armory = db.filter(e => e.source === 'armory');
|
||||
console.log(`%c[HV] 📦 Gear DB: ${db.length} total (${equipped.length} equipped, ${armory.length} armory)`, 'color:#0f0');
|
||||
const buy = db.filter(e => e.source === 'buy');
|
||||
console.log(`%c[HV] 📦 Gear DB: ${db.length} total (${equipped.length} 🟢 equipped, ${armory.length} 📦 stored, ${buy.length} 🛒 purchasable)`, 'color:#0f0');
|
||||
equipped.forEach(item => {
|
||||
console.log(` 🗡 [${item.slotType}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
});
|
||||
armory.forEach(item => {
|
||||
console.log(` 📦 [${item.category}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
console.log(` 🟢 [${item.slotType}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
});
|
||||
if (buy.length > 0) {
|
||||
const used = new Set(armory.map(i => i.id).concat(equipped.filter(i => i.id).map(i => i.id)));
|
||||
const newOnly = buy.filter(i => !used.has(i.id));
|
||||
console.log(`%c 🛒 ${buy.length} purchasable (${newOnly.length} not in armory)`, 'color:#0f0');
|
||||
newOnly.slice(0, 5).forEach(item => {
|
||||
console.log(` 💰 ${item.name} — ${item.price || '?'}${item.stats ? ' (' + Object.keys(item.stats).length + ' stats)' : ''}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ── Parse tooltip HTML string into structured stats ──
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// CONFIG — default settings
|
||||
// ═══════════════════════════════════════════════════════════════════════
|
||||
|
||||
const VERSION = '0.14.20';
|
||||
const VERSION = '0.14.21';
|
||||
|
||||
const CFG = {
|
||||
// — Battle automation
|
||||
|
|
|
|||
|
|
@ -41,13 +41,19 @@ function logGearSummary() {
|
|||
const db = getGearDB();
|
||||
const equipped = db.filter(e => e.source === 'character');
|
||||
const armory = db.filter(e => e.source === 'armory');
|
||||
console.log(`%c[HV] 📦 Gear DB: ${db.length} total (${equipped.length} equipped, ${armory.length} armory)`, 'color:#0f0');
|
||||
const buy = db.filter(e => e.source === 'buy');
|
||||
console.log(`%c[HV] 📦 Gear DB: ${db.length} total (${equipped.length} 🟢 equipped, ${armory.length} 📦 stored, ${buy.length} 🛒 purchasable)`, 'color:#0f0');
|
||||
equipped.forEach(item => {
|
||||
console.log(` 🗡 [${item.slotType}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
});
|
||||
armory.forEach(item => {
|
||||
console.log(` 📦 [${item.category}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
console.log(` 🟢 [${item.slotType}] ${item.name} (ID: ${item.id}) — ${item.stats ? Object.keys(item.stats).length + ' stats' : 'no stats'}`);
|
||||
});
|
||||
if (buy.length > 0) {
|
||||
const used = new Set(armory.map(i => i.id).concat(equipped.filter(i => i.id).map(i => i.id)));
|
||||
const newOnly = buy.filter(i => !used.has(i.id));
|
||||
console.log(`%c 🛒 ${buy.length} purchasable (${newOnly.length} not in armory)`, 'color:#0f0');
|
||||
newOnly.slice(0, 5).forEach(item => {
|
||||
console.log(` 💰 ${item.name} — ${item.price || '?'}${item.stats ? ' (' + Object.keys(item.stats).length + ' stats)' : ''}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ── Parse tooltip HTML string into structured stats ──
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// ==UserScript==
|
||||
// @name HV Unified
|
||||
// @namespace hvunified
|
||||
// @version 0.14.20
|
||||
// @version 0.14.21
|
||||
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
||||
// @author GaboGG + Hermes
|
||||
// @match *://*.hentaiverse.org/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue